A.11 组合逻辑实例一:解码器
什么是解码器?
根据输入编码进行解码,解码输出的bit位中只有一个与其余位不一样。这里默认为2-4解码器。
输入select | 输出z |
---|---|
00 | 1110 |
01 | 1101 |
10 | 1011 |
11 | 0111 |
设计模块
//文件路径:a.11/src/decoder.v
module decoder(enable,select,z); //声明模块名以及端口列表
parameter SELECT_WIDTH = 2; //指定输入端select的位宽参数,该参数可以通过例化进行传递
localparam Z_WIDTH = (1 << SELECT_WIDTH);//根据SELECT_WIDTH参数来计算出本地参数
//即输出端位宽
input enable; //解码的使能端口,只有为1的时候才开始解码
input[SELECT_WIDTH-1:0] select; //输入的待解码的选择端口
output reg [Z_WIDTH-1:0] z; //输出结果的端口
always@(enable or select or z)begin //用于解码的组合逻辑,只要敏感列表中的信号变化就重新计算输出结果
if(enable)
z = ({Z_WIDTH{1'b1}} ^ (1 <