- 五种硬件抽象级模型
开关级,门级,寄存器传输级RTL,算法级,系统级; - 端口默认wire类型,不能将input设为reg类型(必须wire)
- 组合逻辑用阻塞赋值,时序逻辑用非阻塞赋值,同一个模块中不要既用阻塞又用非阻塞。。。。 组合电路无记忆,无时钟,无反馈。
- 组合逻辑(数据流建模) assign wireVar=inputVar; 当右边变化了左边立马变化。
assign持续赋值,使用阻塞方式(=而非<=),assign左边必须是wire类型; assign和always是并行的。
assigning statement reflects wire connections. - 模块调用时允许(内外两个)位宽不匹配,一般仿真器会给出警告。
- 模块调用允许端口保持未连接的状态。如调试端口可保持未连接。
- 在Verilog module中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。 在同一module中这三者出现的先后顺序没有关系。
- 连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。
- `define、parameter、localparam区别
define:作用 -> 常用于定义常量可以跨模块、跨文件;
范围 -> 整个工程;
parameter: 作用 -> 常用于模块间参数传递;
范围 -> 本module内有效的定义;
localparam 作用 -> 常用于状态机的参数定义;
范围 -> 本module内有效的定义,不可用于参数传递
always@()语句的意思是always模块中的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行。
11. FPGA使用外部晶振提供全局时钟(连接到FPGA的全局时钟资源),使用存储配置芯片存储FPGA程序,上电后再写入FPGA中。
12. Verilog整数是32位,如: var = 12; 等价于:var = 32’d12; parameter 定义的参数也是32bit;
Verilog位宽有自动调节机制。
13. reg型保持最后一次赋值,而wire型需要被持续驱动;
14. if(a+b<24) 和 if(a<24-b) 是完全不一样的,综合出不同电路;
15. DCM(DigitalClockManager)即基础时钟管理模块,是基于Xilinx的FPGA普遍采用的DLL(DelayLockLoop)模块,在时钟管理与控制方面,DCM功能更加强大,使用更加灵活
主要功能: 分频和倍频;去skew;全局时钟;电平转换。
16.
(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,reg,integer,default,for,function,and,nand,or,nor,xor,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。
(2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。
(3)有些工具支持有些工具不支持的结构:casex,casez,real,disable,forever,arrays,memories,repeat,task,while。
17. memory型 : reg[n-1:0] 存储器名[m-1:0]; 不可直接赋值。
reg[15:0] mem[7:0];
18. 若&,|,^运算只有一个操作数,则称为缩减运算。
如 wire[3:0] v = 4’b0101; |v = v[3]|v[2]|v[1]|v[0]; bit by bit。
19. 位拼接:{1’b1,3{a},b};
20. **对于组合电路,应该包含所有的输入信号。 always @()**
21. 当模块只有一条语句时,定界符begin end可以省略。
22. 对于组合电路,一般采用电平触发;对于时序电路,一般采用时钟边沿触发。