Verilog快速入门
(1) 四选一多路器
(2)异步复位的串联T触发器
(3)奇偶校验
(4)移位运算与乘法
(5)位拆分与运算
(6)使用子模块实现三输入数的大小比较
(7)4位数值比较器电路
(8)4bit超前进位加法器电路
(9)优先编码器电路①
(10)用优先编码器①实现键盘编码电路
(11)8线-3线优先编码器
(12)使用8线-3线优先编码器实现16线-4线优先编码器
(13)用3-8译码器实现全减器
(14)使用3-8译码器①实现逻辑函数
(15)数据选择器实现逻辑函数
(16)状态机
(17)ROM的简单实现
(18)边沿检测
优先编码器电路①
一、题目描述
二、解析与代码
//优先编码器电路1
//电路的优先顺序是,从9到1,高级到低级
//9个输入端:I端,4个输出端:Y端,低电平有效。
//输入端从9到1有效输入,输出端从9到1进行输出
module encoder_0(
input [8:0] I_n,
output reg [3:0] Y_n
);
always@(*) begin
casez(I_n)
//case语句的其他两种形式,即casex和casez,这用来处理比较过程中的不必考虑的情况
//casez语句用来处理不考虑高阻值z的比较过程,即状态z在case语句中不会被视为正常的z状态
//casex语句则将高阻值和不定值都视为不必关心的情况
//所谓不必关心的情况,即在表达式进行比较时,不降该位的状态考虑在内。
//这样,在case语句表达式进行比较时,就可灵活设置对信号的某些位进行比较
9'b1_1111_1111:Y_n=4'b1111;
9'b0_????_????:Y_n=4'b0110; //其中?,被视为高阻状态,casez中视为不必考虑的状态
9'b1_0???_????:Y_n=4'b0111;
9'b1_10??_????:Y_n=4'b1000;
9'b1_110?_????:Y_n=4'b1001;
9'b1_1110_????:Y_n=4'b1010;
9'b1_1111_0???:Y_n=4'b1011;
9'b1_1111_10??:Y_n=4'b1100;
9'b1_1111_110?:Y_n=4'b1101;
9'b1_1111_1110:Y_n=4'b1110;
default:Y_n=4'b0000;
endcase
end
endmodule
//备注:关于case,casez和casex的用法,简单地说,三者可以综合。
//case进行全等匹配,casez忽略?或z对应的位进行匹配,case忽略z、?或z对应的位进行匹配