※ 参考书:Verilog HDL 数字设计与综合(第二版)(本科教学版)
- 字符串:必须在一行内写完。不可以包含回车。
- module中的input和output与函数值传递不同。物理意义是相连。接口的内与外是不同的,也各自有各自的要求。
- 惯性延迟:当输入的脉冲信号宽度小于延迟时,该信号变化(即脉冲)对输出不起任何作用。
- x&&0 → x,不是0。
- initial与always之后的语句块(begin-end)中均为顺序执行。#延迟参数均是相对于上一条语句的相对时间。区别见表格:
initial | always |
---|---|
只执行一次 | 循环执行 |
不可综合 | 可综合 |
- 连续赋值语句需要标识符assign,表示的是一种连接关系,时刻是active的,参量的变换一直会及时反映的左值。过程赋值语句只是一次性赋值。
- 隐式连续赋值中,在定义变量同时确定链接关系,没有使用assign关键字,注意一定与过程性赋值有所区分!!!
- 非阻塞赋值语句:
- 总体的时间延迟仍旧受之前的阻塞语句影响。
- 写在一起的所有非阻塞赋值语句并行走,对顺序不敏感。
- 执行瞬间,仿真器现将所有语句右值存储,之后根据时间调度运算赋值。因而使用的均为“旧值”。
- 例子详见课本81页下。
- 电平跳变:
- posedge:0→x,z,1;x,z→1。即脱离0或者到达1。
- negedge:1→x,z,0;x,z→0。即脱离1或者到达0。
- case语句与C语言中的switch语句并不完全相同:
- 是case-endcase。
- 每个case语句块最后不需要写break;也无法完成顺延执行的功能。
- 但可以实现多种case执行同一个语句块,用“,”隔开。
- 总线为inout并赋值z时,表示悬挂, 读取该总线值为z,没有数据;但是与驱动源连接时,该总线可以被赋值为驱动源值,并可以将值赋给reg等。见P158上。
- 可综合原则8条:
- 时序电路建模时,使用非阻塞赋值。
- 锁存器电路建模时,用非阻塞赋值。
- 用always块建立组合逻辑模型时,用阻塞赋值。
- 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
- 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
- 不要在一个以上的always块中为同一个变量赋值。
- 用$strobe系统任务来显示用非阻塞赋值的变量值。
- 在赋值时不要使用延迟(包括#0)。
网友评论