基于SparkRoad的《Verilog数字系统设计教程·第三版(夏宇闻)》学习(4)——第3章

思考题:

1.模块由几个部分组成?

描述接口、描述逻辑功能两部分组成。

2.端口分为几种?

3种,输入口、输出口、输入/输出口。

3.为什么端口要说明信号的位宽?

不说明信号位宽可能会在信号发生改变时发生错误,不容易看出接收信号的数据宽度,很难进行数据处理。

4.能否说模块相当于电路图中的功能模块,端口相当于功能模块的引脚?

可以,每个模块都有特定功能,功能的实现必须依靠具体电路,端口是信号传递通道,相当于功能模块引脚。

5.模块中的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会影响功能的描述?

assign语句声明、实例元件、always块。出现顺序不影响功能描述。

6.这几类描述中的哪一种直接与电路结构有关?

实例元件直接与电路结构相关。

7.最基本的Verilog变量有哪几种类型?

wire、reg、memory。

8.reg型和wire型变量的差别是什么?

reg型是寄存器变量,相当于存储单元;wire型是线型变量,相当于物理连线。根本性差别在于reg型保持最后一次的赋值,wire型需要持续的驱动。

9.由连续赋值语句(assign)赋值的变量是否能是reg类型的?

不能,左侧必须是线网型数据(wire)。

10.在always模块中被赋值的变量能否是wire类型的?如果不能是wire类型的,那么必须是什么类型的?它们表示的一定是实际的寄存器吗?

always块中被赋值变量不能是wire型,必须是reg型,表示的不一定是实际的寄存器。

11.参数类型的变量有什么用处?

可以提高程序的可读性和可维护性。

12.Verilog语法规定的参数传递和重新定义功能有什么直接的应用价值?

可以用于定义延迟时间和变量宽度。

13.逻辑比较运算符小于等于“<=”和非阻塞赋值“<=”的表示是完全一样的,为什么Verilog在语句解释和编译时不会搞错?

逻辑比较时<=两边是两个操作数,是双目运算符;在非阻塞赋值时<=右边是操作数,是单目运算符。

14.是否可以说实例引用的描述实际就是严格意义上的电路结构描述?

不能,实例引用的描述是在门级电路上描述,和严格意义的电路结构仍有差距。

posted @ 2023-05-22 18:45  江左子固  阅读(13)  评论(0编辑  收藏  举报