多路同步串口的FPGA傳輸實(shí)現
DSP同步串口傳輸時(shí)序如圖2所示,當frame為1時(shí),串行數據有效,當frame為0時(shí),一幀數據傳輸結束。本例中DSP傳輸的一幀數據為32bit。
本文引用地址:http://dyxdggzs.com/article/106466.htmFPGA內部采用異步FIFO解決DSP時(shí)鐘頻率和FPGA時(shí)鐘頻率不匹配的問(wèn)題,寫(xiě)時(shí)鐘由DSP輸出的同步時(shí)鐘信號提供,時(shí)鐘頻率為60MHz;讀時(shí)鐘由FPGA的鎖相環(huán)PLL時(shí)鐘提供,PLL輸出時(shí)鐘頻率為100MHz。
接收模塊
由于DSP的8個(gè)同步串口同時(shí)寫(xiě)入,FPGA數據接收模塊一共有8個(gè),每個(gè)模塊接收到的數據都存放在一個(gè)特定的FIFO中,將其稱(chēng)之為R_FIFO。
DSP輸出信號為frame,clk,data,FPGA以DSP同步串口的輸出時(shí)鐘clk作為采集數據的時(shí)鐘。系統上電結束后,FPGA等待ARM發(fā)送接收允許指令,接收允許后,FPGA就可以開(kāi)始接收數據。
當frame信號為高,FPGA即開(kāi)始接收從DSP發(fā)送的串行數據,在每個(gè)dsp_clk的上升沿讀取一個(gè)bit的數據,之后將數據轉入移位寄存器中。FPGA引入一個(gè)模塊,時(shí)刻監測frame的下降沿,當frame下降時(shí),即表示一個(gè)字的數據發(fā)送完畢,移位寄存器的數據放入R_FIFO的數據輸入口,將R_FIFO的寫(xiě)使能置高,向R_FIFO發(fā)出寫(xiě)入請求,寫(xiě)入此時(shí)的數據至R_FIFO中,依次循環(huán)。當R_FIFO中的數據個(gè)數不為0時(shí),即向FPGA的發(fā)送模塊發(fā)送請求。
發(fā)送模塊
接收模塊接收到DSP同步串口數據后,即通過(guò)reg與answer信號與FPGA數據發(fā)送模塊之間進(jìn)行數據傳輸,如圖3所示。
評論