異步FIFO在FPGA與DSP通信中的運用
2 DSP端數據接收
TI公司的TMS320C6000系列DSP均提供EMIFA接口,本文利用EMIFA接口實現FPGA向DSP傳輸數據,實現兩者硬件連接的電路如圖2所示。本文引用地址:http://yuyingmama.com.cn/article/156394.htm

其中,EMIFA的16位數據端與FIFO的Rdata端相連以便接收FPGA發(fā)來的數據,GPI04_13,GPI04_12,GPI04_15這3個通用IO口用來接收或輸出相應的握手信號。EMA_WE與FIFO的讀使能端相連,EMA_CS與FIFO的讀時鐘相連。

圖3所示為DSP的EMIFA口讀取數據的時序圖,從圖中可以看出,每一次讀數據操作均以EMA_CS(EMIFA使能信號)下降沿開始,以EMA_CS的上升沿結束。同時,因為是讀取操作,EMA_WE(EMA讀寫控制信號,低為寫,高為讀)始終為高電平,EMA_OE(EMA輸出使能信號,低有效)在數據讀取時刻為低電平。所以,將EMA_CS連至FIFO的Rclk端,恰好實現DSP讀取一次數據,FIFO更新一個數據,而EMA_WE可作為FIFO的讀使能信號。
3 仿真結果與結論
本文設計了數據寬度為16位,深度為2 048的FIFO,并使用Verilog語言編寫了FIFO模塊和與DSP的接口模塊,利用該FIFO,FPGA實現了將數據1~65 535傳遞給DSP。在Quartus II軟件下進行仿真得到的結果如圖4所示。

由圖4可以看出,在rst變?yōu)楦唠娖揭院螅現PGA在Wclk的上升沿依次將數據寫入FIFO中,寫指針也從0開始逐次增1。在收到DSP發(fā)來的gp15(啟動數據發(fā)送信號)有效后,在讀時鐘Rclk的上升沿,FPGA將數據從1開始逐次輸出到Rada端,供DSP讀取。DSP端在配置好EMIFA口后,編寫的相應接收程序,正確接收到了從0~65 535這65 536個數據。
為實現FPGA與DSP之間的數據通信,本文提出了利用異步FIFO的方法,采用格雷碼和兩級D觸發(fā)器同步的方法降低了亞穩(wěn)態(tài)現象出現的概率。同時,給出了FPGA和DSP實現數據通信的硬件連接電路。經驗證,利用異步FIFO的方法,能夠穩(wěn)定可靠地從FPGA中傳輸數據給DSP。














評論