1、如何理解数字电路中的时序逻辑和组合逻辑?
答:组合逻辑的特点是任意时刻的输出只取决于这一时刻的输入,而与电路原来
的状态无关。而时序逻辑的特点是任意时刻的输出不仅取决于这一时刻的输入,
而且与电路原来的状态有关。
2、阻塞赋值和非阻塞赋值有什么区别?
答:阻塞赋值使用“=”运算符,语句块中执行阻塞赋值部分在该赋值语句执行
完后其值立马发生改变,赋值语句执行完,才能执行下条语句。非阻塞赋值使用
“>=”运算符,语句块中执行非阻塞赋值部分的值需要等到块语句执行结束才
会完成此次赋值,块内语句所得值不能立马被赋值语句使用。
3、#0 有什么作用?
答:#0 称为显性零延迟,由于可综合 RTL 代码需要映射成门级电路,是具有时
延的,为了描述没有定义延迟电路信号产生和送达的先后顺序,需要在 verilog
中引入#0 去描述它,有时为特意表现触发时间的先后,避免逻辑的混乱,会加
入#0 语句描述。
4、verilog 中描述 static 和 automatic 的区别及默认位置
答:static 变量在整个仿真时间内存在,static 变量只会在仿真开始时进行一次初
始化;而 automatic 变量是随时调用随时产生,生命周期较短,每次调用时就会
执行初始化。static 变量是静态分配的,被存放在静态储存区,automatic 变量被
存储在堆栈中。
5、
Q1:A 变量是数据宽度为 8 的非合并数组;B 变量是一个数组宽度为 2,数据宽
度为 8 的合并数组;C 变量是一个数组宽度为 2,数据位宽 8 位的非合并数组;
D 变量是数组宽度为 8 位,元素索引类型为 bit 的关联数组。初始值均为 0。
Q2:A={16`h1234};B=16`h1234;C={{16h’12},{16`h34}};D=`{16`h1234}