欢迎光临散文网 会员登陆 & 注册

HDLBits (153) — 4 位移位寄存器和向下计数器

2022-06-06 18:38 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Exams/review2015_shiftcount

这是一系列的五个练习中的第一部分,这些练习由几个较小的电路构建一个复杂的计数器。 相关的整体设计,请参阅 the final exercise

构建一个四位移位寄存器,该寄存器也用作向下计数器。 当 shift_ena 为 1 时,数据首先移入最高有效位。当 count_ena 为 1 时,当前在移位寄存器中的数字递减。由于整个系统不会同时使用 shift_ena 和 count_ena,所以电路无需关注两个控制输入都为 1 的情况。(这主要意味着哪种情况优先级更高并不重要)。

题目

答案

输出波形

移位模式

计数模式

非阻塞赋值属于并行执行语句,即下一条语句的执行和当前语句的执行是同时进行的,它不会阻塞位于同一个语句块中后面语句的执行。非阻塞赋值语句使用小于等于号 <= 作为赋值符。

条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。如果 if 条件每次执行的语句只有一条,那么可以不使用 begin 与 end 关键字。但如果是 if-if-else 的形式,即便执行语句只有一条,不使用 begin 与 end 关键字也会引起歧义。当然,编译器一般按照就近原则,使 else 与最近的一个 if(例子中第二个 if)相对应。但显然这样的写法是不规范且不安全的。所以条件语句中加入 begin 与 and 关键字就是一个很好的习惯。

参考内容:

4.2 Verilog 过程赋值 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-process-assign.html

4.5 Verilog 条件语句 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-condition-statement.html


HDLBits (153) — 4 位移位寄存器和向下计数器的评论 (共 条)

分享到微博请遵守国家法律