《Verilog数字系统设计教程》(第4版)第6章思考题及答案

1.怎么理解initial语句只执行一次的概念?
在仿真开始时,initial语句只执行一次,但initial语句里面的语句可能不只执行一次。因为如果是while循环,虽然initial语句是执行一次,但只要是进了while循环,则会执行到仿真结束。
2.在initial语句引导的过程块中是否可以有循环语句?如果可以,是否与思考题1,互相矛盾?
可以,并不互相矛盾。initial语句确实是只执行了一次,但并不意味着initial语句过程中就不能是循环语句,两者并不矛盾。
3.怎么理解由always语句引导的过程块是不断活动的?
always语句的过程块是不断活动的,在仿真过程中always块始终在循环的活动着,检查always语句后面的信号是否发生相应改变,这是always活动的实质,如果always语句后面没有检查的信号则将会进入一个循环,将会使仿真器锁死。
4.不断活动与不断执行有什么不同?
不断活动是always语句不断活动检查是否满足条件(如某个信号发生改变),不断执行时always语句引导的过程中的语句不断的执行着。
5.怎么理解沿触发和电平触发的不同?
沿触发是发生在某个信号在上升沿或下降沿到来时,触发执行过程块。电平触发是在某个信号发生改变时就会触发执行过程块。
6.是不是可以说沿触发是有间隔的,在一定的时间区间里只需要注意有限的点,而电平触发却需要注意无穷多个点?
不是。沿触发是信号的上升沿或下降沿进行触发,而电平触发是在某个信号发生改变时触发,并不需要注意无穷多个点。
7.沿触发的always块和电平触发的always块各表示什么类型的逻辑电路的行为?为什么?
沿触发的always块常表示时序逻辑电路,因为其和时序有很大关系。电平触发的always块常表示组合逻辑电路,因为其只和电平有关。
8.简单叙述任务和函数的不同点。
(1)函数只能与主模块共用同一个仿真时间单元,而任务可以定义自己的仿真时间单位。
(2)函数不能启动任务,而任务能启动其它任务和函数。
(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。
(4)函数返回一个值,而任务则不返回值。
9.简单叙述 d i s p l a y display、 write和$strobe的不同点。
d i s p l a y display自动地在输出后进行换行, write则不进行自动换行,其它都非常相似。如果许多其它语句与 d i s p l a y display任务在同一个时间单位执行,那么这些语句与 display任务的执行顺序是不确定的。如果使用$strobe,该语句总是在同时刻的其它赋值语句执行完成之后执行。

10.简单叙述Verilog1364-2001版语法规定的电平敏感列表的简化写法。
关键词“or”也可以用“,”来代替。
11.如何在Verilog测试模块中,利用文件的读写产生预订格式的信号,并记录有测试价值的信号?
Verilog提供了系统任务来选择要转储的模块实例或模块实例信号(dumpvars),选择VCR文件的名称( d u m p f i l e dumpfile),选择转储过程的起点和终点( dumppon,$dumppoff),选择生成检测点(Sdunpall)。

发布了38 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45270982/article/details/94359610