Verilog语法小结(1)
- 逻辑综合忽略延时信息
比如”# 10 a = 1’b1;”在逻辑综合的时候会将延时信息忽略。
2. always语句的规则:重复执行always后的语句
如果always后接”@(posedge clk)”,当执行到这时,always语句块的进程被挂起来,直到满足”posedge clk”条件,执行always块中的语句。然后always块会马上重复执行,到”@(posedge clk)”又被挂机,等待被激活
3. reg变量不代表映射成寄存器,而是在仿真时需要保存值
众所周知,在过程语句中的左值都要是reg类型,但其并不一定会被映射成寄存器。这个寄存器变量的实际意义是在仿真的时候保持它的值,就是寄存器变量在仿真时占据一定的内存空间。
1 |
|
当a,b的值不变的时候,c的值也不会变,那么就需要保存c的值,所以c定义成reg寄存器变量。
4. 过程连续赋值
assign - deassign:对寄存器变量强制赋值和放开
force-release: 对寄存器和线网进行强制赋值和放开
1 |
|
- 模块例化时端口属性
与input相连的可以是线网也可以是寄存器类型。
与output相连的一定是线网
与inout相连,输入从一个线网来,输出驱动到一个线网
case 和if –else建模是无优先级的
连续赋值
wire在定义的时候可以给赋值,这里算连续赋值,与assign相同。
1
wire tmp = data_i;
- 在描述仿真激励的时候可以使用for循环,但是在RTL级编码时要慎用for
综合工具会将for循环展开为所有变量情况的行为,每个变量独立占用寄存器资源,不利于硬件资源的复用。
相反,如果有些硬件资源确实不能复用的话,用for循环会增加代码的可读性。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!