文章目录
- 四选一多路输出器
- verilog case 语句
- verilog 代码
- testbench 代码
- 仿真波形
- 问题小结
四选一多路输出器
制作一个四选一的多路选择器,要求输出定义上为线网类型
状态转换:
d0 00
d1 01
d2 10
d3 11
verilog case 语句
case(expression)
condition1: xxx;
condition2: xxx;
...
conditionn: xxx;
default: xxx;
endcase
case 的使用注意点:
- 要在
always
块里使用,如果是用always块描述组合逻辑,注意括号里的敏感变量列表都是电平触发,并且赋值时都要用阻塞赋值“=
”; always
块里的变量必须声明成reg类型,当然声明成reg
类型不代表一定会综合成寄存器,只是语法要求always
块里要这样;always
块描述组合逻辑时,用*
可以代表所有always
块内敏感信号;- 分支条件要写全,最好补齐
default
缺省条件,不然在组合逻辑中可能会由于条件不全导致出现锁存器Latch;
verilog 代码
testbench 代码
仿真波形
从波形图中可以看到 :
当sel
为 0,out
输出的值是d0
;
当sel
为 1,out
输出的值是d1
;
当sel
为 2,out
输出的值是d2
;
当sel
为 3,out
输出的值是d3
,
问题小结
在写testbench 的时候遇到了下面问题:
问题是由于在 testbench 中对out 输出进行了赋值导致的。
推荐阅读:
https://www.bilibili.com/read/cv16177638/#reply109597547536