1.parameter,localparam,define的区别
define 定义的常量作用范围是整个工程,使用是需要加 ' 。
parameter 作用范围为整个模块,使用是直接用常量名。 并且可以通过例化改变变量的值。
localparam 作用范围,使用方法同上。不能通过例化改变变量的值。
2. 阻塞赋值和非阻塞
1.是否能立即使用:阻塞赋值能立即使用,非阻塞赋值不能。
2.结束方式:阻塞赋值完成,过程块结束。过程块结束非阻塞赋值结束。
3.是否会阻塞其他语句: 阻塞赋值语句会阻塞下面的语句执行。
4.阻塞赋值长用于时序电路,非阻塞赋值用于组合逻辑电路。
3.$strobe $display $wirte $monitor
区别:
$display $wirte 都用来显示变量的值,区别dispaly 会加/n 换行符
$strobe 在当前时刻的末尾进行变量输出打印。
$monitor 对输出变量的值进行监视,但是任意时刻只能有一个模块调用moniot。所以需要配合monitoron monitoroff 一起使用。
透明锁存器
在always 块中所有的信号都必须有明确的值,即在赋值表达式右端参与赋值的信号都必须在敏感列表中列出来。
没有列出的信号会在综合时隐含的产生一个透明锁存器,应为要保存值的变化,等待过程块被触发。
RAM FIFO
RAM分为单口和双口,区别就是单口是一组信号与地址线。双口是两组信号与地址线。
双口RAM和伪双口RAM的区别是,一个是两个口都能进行同时读写,另一个是一个口读一个口写。
FIFO为伪双口类型。
位宽深度
reg [FIFO_WIDTH-1:0] memory[A_MAX-1:0];
中断极性
中断极性:如果中断边沿触发分为上升沿和下降沿,如果中断是电平触发分为高电平和低电平。