
上QQ阅读APP看书,第一时间看更新
4.1 优先编码器
优先编码器是数字电路中的常用逻辑电路,这里所说的编码是对输入通道的编码。优先编码器对所有的输入通道进行了优先级排队,允许多个输入通道上同时有有效信号,而只对优先级最高的有效输入通道进行编码,产生编码输出信号,对优先级低的有效通道则不进行编码。优先编码器的功能用FPGA实现起来非常方便,假设我们需要设计如表4-1所示的4线-2线优先编码器,其中cs为片选端,ex为扩展输出端。当cs为0时,编码器不工作,输出全部为1;当cs为1时,编码器工作,ex输出为0,out[1..0]输出为优先级最高的有效输入通道号的原码。
表4-1 4线-2线优先编码器功能表

从行为描述的角度看,输出信号的获得取决于输入信号,因此可以把输入信号看作判断条件,通过对条件的判断获得输出值。在VHDL语言中能够实现条件判断功能的语句很多,例如条件信号赋值语句、选择信号赋值语句、case语句、if语句等。另一个需要满足的功能就是输入信号有优先级之分,即判断条件有优先级。在上述VHDL语句中,if语句对条件的判断有优先级,先判断的条件优先级最高,因此我们可以考虑用if语句实现对电路的设计。设计程序如例4.1所示。
【例4.1】if语句实现的优先编码器。

为了验证其功能的正确性,我们写出如下的testbench文件:

其在ModelSim下的功能仿真波形如图4-1所示,由图中可以看出d_i(3)的优先级最高,d_i(0)的优先级最低,功能符合设计要求。

图4-1 优先编码器仿真波形图