同步FIFO与异步FIFO

同步FIFO是用来做数据缓存,之前的设计一直将自己绕进了一个死循环,认为要想往外边读取FIFO,就必须先检测FIFO的空满标志,但实际上,对于同步FIFO,如果是同步fifo深度设置成128,你存100个以后再开始读,永远不可能出现空满。因为写入和读取的速度是一样的。两边时钟也一样,位宽也一样怎么可能出现空满。

FIFO核读写不需要指定地址,只要读、写使能信号打开,时钟到来,数据就可以读出和写入。

需要注意的问题是:

1、读时钟和写时钟必须一直存在,不可间断性的提供,否则会造成FIFO无法正常工作

2、读FIFO时钟要和读数据的赋值端的时钟是一个时钟

3、写FIFO的时钟要和将要写的数据的时钟是一个时钟

4、注意满标志和空标志的使用,禁止在FIFO满的情况下写FIFO,禁止在空的时候读FIFO,否则会出现错误

FPGA与上位机之间通过串口发送和接受数据的过程:

 接收参数的过程:

1.rxd_en有效

2.如果数据准备好了temp《=rdata,rxd_en无效,否则等待

3.延时326*20ns后开始第二个参数的发送

发送参数过程:

1、tdata《= 要传输的数据,txd_en有效,

2、如果传输完成等待651*20ns,txd_en无效,开始传输下一个数,否则等待直到传输完成

原文地址:https://www.cnblogs.com/Dinging006/p/8283661.html