优先编码器
题目描述
8-3优先编码器的功能表
`timescale 1ns/1nsmodule encoder_83(input [7:0] I ,input EI ,output wire [2:0] Y ,output wire GS ,output wire EO
);reg [2:0]Y_reg;reg GS_reg;reg EO_reg;always@(*)beginif(EI == 1'b0)beginY_reg = 3'b0;GS_reg = 1'b0;EO_reg = 1'b0;endelse begincasez(I) //casex(I)8'b0000_0000:beginY_reg = 3'b0;GS_reg = 1'b0;EO_reg = 1'b1;end8'b1???_????:beginY_reg = 3'b111;GS_reg = 1'b1;EO_reg = 1'b0;end8'b01??_????:beginY_reg = 3'b110;GS_reg = 1'b1;EO_reg = 1'b0;end8'b001?_????:beginY_reg = 3'b101;GS_reg = 1'b1;EO_reg = 1'b0;end8'b0001_????:beginY_reg = 3'b100;GS_reg = 1'b1;EO_reg = 1'b0;end8'b0000_1???:beginY_reg = 3'b011;GS_reg = 1'b1;EO_reg = 1'b0;end8'b0000_01??:beginY_reg = 3'b010;GS_reg = 1'b1;EO_reg = 1'b0;end8'b0000_001?:beginY_reg = 3'b001;GS_reg = 1'b1;EO_reg = 1'b0;end8'b0000_0001:beginY_reg = 3'b000;GS_reg = 1'b1;EO_reg = 1'b0;enddefault:beginY_reg = 3'b0;GS_reg = 1'b0;EO_reg = 1'b0;endendcaseendendassign Y = Y_reg;assign GS = GS_reg;assign EO = EO_reg;
endmodule
知识点
case,casex,casez的真值表
在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。
在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。
在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。
1)一般经常使用到的是casez语句,最好少用casex
2)case/casez/casex其实都是可综合的
3)在电路中,可以用?来表示无关值的z
4)case的描述,匹配都是从上到下进行的