之前的十道题是Verilog的基础语法,我觉得必须掌握,但是到了第二部分这个组合逻辑这些题突然有点小恶心,所以说这块的题我就选择性的做了,我会做什么样的题呢?
里边涉及到重要的知识点的题我还会拿出来分享的。
首先看一下case、casex、casez对应的真值表

在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。
在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。
在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。
下表是某优先编码器的真值表。
①请用Verilog实现此优先编码器

无
无
input [8:0] I_n
output reg [3:0] Y_n
通过题目给出的真值表,依次写出对应的输入输出即可(注意高低位)。
`timescale 1ns/1ns
module encoder_0(
input [8:0] I_n ,
output reg [3:0] Y_n
);
always @(*)begin
casez(I_n)
9'b111111111 : Y_n = 4'b1111;
9'b0zzzzzzzz : Y_n = 4'b0110;
9'b10zzzzzzz : Y_n = 4'b0111;
9'b110zzzzzz : Y_n = 4'b1000;
9'b1110zzzzz : Y_n = 4'b1001;
9'b11110zzzz : Y_n = 4'b1010;
9'b111110zzz : Y_n = 4'b1011;
9'b1111110zz : Y_n = 4'b1100;
9'b11111110z : Y_n = 4'b1101;
9'b111111110 : Y_n = 4'b1110;
default : Y_n = 4'b1111;
endcase
end
endmodule
待更。。。
待更。。。
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得收藏+评论!!!