《Verilog数字系统设计教程》(第4版)第4章思考题及答案
程序员文章站
2024-03-26 08:38:41
...
1.逻辑运算符与按位逻辑运算符有什么不同,它们各在什么场合使用?
用逻辑运算符运算时是两个操作数进行逻辑运算,而按位逻辑运算符是两个操作数对应的每一位进行逻辑运算。逻辑运算符多用于条件的判断,按位逻辑运算符用于信号的运算和检测。
2.指出两种逻辑等式运算符的不同点,解释书上的真值表。
两种逻辑运算符有很大的区别。“===” 要求两个比较数完全一样,无论高阻还是未知,只要每位完全相同即可。 “= =”只有在两个操作数每位都已知(即0或1),在这种前提下两个操作数每位相同结果才为真,如果不是在这个前提那么其结果始终未x。
3.拼接符的作用是什么?为什么说合理地使用拼接符可以提高程序的可读性和可维护性?拼接符表示的操作其物理意义是什么?
拼接符的作用是把两个或多个信号的某些位拼接起来进行运算操作。因为借助拼接符可以用一个符号名来表示由多位信号组成的复杂信号。其物理意义是将多个信号结合成一个信号。
4.如果都不带时间延迟,阻塞和非阻塞赋值有什么不同?举例说明它们的不同点?
阻塞和非阻塞赋值的区别在阻塞是顺序执行而非阻塞是并行执行。
以下面的语句举例
非阻塞赋值
[email protected](posedge clk)
begin
b<=a;
c<=b;
end
阻塞赋值
[email protected](posedge clk)
begin
b=a;
c=b;
end
两种不同的赋值方式结果也是不同的。非阻塞赋值b<=a;c<=b;两条语句是同时执行的,而阻塞赋值b=a;c=b;两条语句先执行b=a后执行c=b。
5.举例说明顺序块和并行块的不同。
begin
#50 r=‘h35;
#50 r=‘hE2;
#50 r=‘h00;
#50 r=‘hF7;
#50 ->end_wave;
end
fork
#50 r=‘h35;
#100 r=‘hE2;
#150 r=‘h00;
#200 r=‘hF7;
#250 ->end_wave;
join
上面两个块执行起来效果是完全一样的,第一个模块是按顺序执行,而第二个模块是每个语句同时执行的。
6.如果在顺序块中,前面有一条语句是无限循环,下面的语句能否进行?
下面的语句不能执行。
7.如果在并行块中,发生上述情况,会如何呢?
下面的语句可以执行。