FPGA信号亚稳态解决方案

2019-08-13  本文已影响0人  zhang_402d

1、模块之间的连接用 wire 型变量。

2、输入必须为 wire ,输出可以为 wire 也可以为  reg 型变量。

3、时序电路中,判断赋值,结果会在下一周期输出。如图1。

FPGA信号亚稳态解决方案

图1 

4、always块中,只有if不会生成锁存器。

5、if会生成查找表。

6、组合逻辑在电平触发时才会生成锁存器。

7、(|write_start)==1'b0      按位或,只要write_start 的某一位为1,则结果为1,只有全为0,则结果为0,这样可以节约资源。

8、在 testbench 中可以强制改变某一信号的值,使用 force 语句。eg: 在 initial 中,在 41280 ns 时将 read_cnt 赋值为  2  (force 例化顶层模块名字.信号名字),如图2:

FPGA信号亚稳态解决方案

图 2  强制改变仿真时某一信号的值

9、ModelSim 中,状态机内的状态名可以在 run.do 文件中让其转化出来,定义一个 virtual type 类型的结构体,如图3:注: virtual type 后面和 virtual_new_signal 前面需要有空格。

FPGA信号亚稳态解决方案

图3  在ModelSim中将状态显示出来

10、敏感列表内是电平出发才可以产生 latch,敏感列表内的变量不全,赋值符号右边的变量必须放在敏感列表内,作为判断条件的变量一定要放到敏感列表内。逻辑判断必须有 else 结束赋值, case 要有 default 赋值。

11、串并转换,最简单的是位拼接。

12、带宽=数据总线比特位宽 * 总线同步时钟频率。

13、差分转单端信号,单端信号转差分信号。

14、时钟走线走金线,到达寄存器的延时相同,shew小。计数分频的时钟不能用于触发触发器,计数分频到达寄存器的延时不相同,但可以使用标志位来控制。

15、a = 4`b1111 && 4'b0011= 1 逻辑与

a = 4`b1111 & 4'b0011= 4`b0011 按位与

16、寄存器在时钟上升沿到来时立刻将时钟上升沿前一点数据输出,如果数据上升沿和时钟上升沿同时时,数据会下一拍输出。

17、跨时钟域打拍操作必须时钟目标时钟域。

FPGA信号亚稳态解决方案 FPGA信号亚稳态解决方案 FPGA信号亚稳态解决方案

同频异相

FPGA信号亚稳态解决方案 FPGA信号亚稳态解决方案

双buffer作用:1. 跨时钟域; 2. 完成数据位宽转换; 3. 完成数据缓冲。

RAM可以重复读,FIFO只能读一次,如果有可能读错数据使用RAM。

FPGA信号亚稳态解决方案
上一篇下一篇

猜你喜欢

热点阅读