同步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無效,開始傳輸下一個數,否則等待直到傳輸完成