- 深入理解FPGA电子系统设计:基于Quartus Prime与VHDL的Altera FPGA设计
- 李莉
- 568字
- 2021-04-01 01:36:18
4.1 优先编码器
优先编码器是数字电路中的常用逻辑电路,这里所说的编码是对输入通道的编码。优先编码器对所有的输入通道进行了优先级排队,允许多个输入通道上同时有有效信号,而只对优先级最高的有效输入通道进行编码,产生编码输出信号,对优先级低的有效通道则不进行编码。优先编码器的功能用FPGA实现起来非常方便,假设我们需要设计如表4-1所示的4线-2线优先编码器,其中cs为片选端,ex为扩展输出端。当cs为0时,编码器不工作,输出全部为1;当cs为1时,编码器工作,ex输出为0,out[1..0]输出为优先级最高的有效输入通道号的原码。
表4-1 4线-2线优先编码器功能表
![](https://epubservercos.yuewen.com/A3A866/18225431901802806/epubprivate/OEBPS/Images/Figure-T94_27812.jpg?sign=1739117160-vBMxbJ5Y53bGKbfFAAmB3qZEFznISy4S-0-facc05e37a881e289d3902458cb17654)
从行为描述的角度看,输出信号的获得取决于输入信号,因此可以把输入信号看作判断条件,通过对条件的判断获得输出值。在VHDL语言中能够实现条件判断功能的语句很多,例如条件信号赋值语句、选择信号赋值语句、case语句、if语句等。另一个需要满足的功能就是输入信号有优先级之分,即判断条件有优先级。在上述VHDL语句中,if语句对条件的判断有优先级,先判断的条件优先级最高,因此我们可以考虑用if语句实现对电路的设计。设计程序如例4.1所示。
【例4.1】if语句实现的优先编码器。
![](https://epubservercos.yuewen.com/A3A866/18225431901802806/epubprivate/OEBPS/Images/Figure-P95_28213.jpg?sign=1739117160-sSHwtdkeRgI0J7BxZa8Uf8lJHNSEh785-0-195bf860ce58ce8cefd8e4167886174a)
为了验证其功能的正确性,我们写出如下的testbench文件:
![](https://epubservercos.yuewen.com/A3A866/18225431901802806/epubprivate/OEBPS/Images/Figure-P96_28215.jpg?sign=1739117160-0O0UMsb4yh9SAfLfohQvVtDPSgDKWhwk-0-f9b4c4ba3e58f68af996d7a0a118b4d6)
其在ModelSim下的功能仿真波形如图4-1所示,由图中可以看出d_i(3)的优先级最高,d_i(0)的优先级最低,功能符合设计要求。
![](https://epubservercos.yuewen.com/A3A866/18225431901802806/epubprivate/OEBPS/Images/Figure-P96_7187.jpg?sign=1739117160-EdEr36mHlcIZypHy8Ptxf4f8byByfHr7-0-149e5a783bf8246e3f14cfb94ac755e9)
图4-1 优先编码器仿真波形图