基于FPGA的高速串行傳輸系統的設計
圖4 操作時(shí)序
當S_LOAD置為低且nP_LOAD置為高之后,數據在S_CLOCK的上升沿處寄存在緩沖器中,在S_LOAD的下降沿處將數據鎖存到寄存器M,N中。
由于A(yíng)URORA光纖通信的輸出時(shí)鐘頻率設定的是125 MHz,結合硬件電路的設計,硬件晶振的頻率為20 MHz,因此選擇M值為000011001(25),N的值為10(4),故時(shí)鐘芯片的時(shí)鐘輸出頻率為:
時(shí)鐘控制模塊的實(shí)測時(shí)鐘信號如圖5所示。
圖5 實(shí)測時(shí)鐘信號
圖5是用Chipscope在線(xiàn)邏輯分析儀得到的波形,由于Chipscope在線(xiàn)邏輯分析儀的觸發(fā)時(shí)鐘是100 MHz,因此在抓取125 MHz的時(shí)鐘信號時(shí),在圖上顯示的時(shí)鐘信號占空比不定,若將時(shí)鐘芯片產(chǎn)生的時(shí)鐘頻率降低,則此現象消失。
2.2 AURORA發(fā)送模塊
在生成AURORA IP CORE時(shí),同時(shí)生成了一個(gè)基于A(yíng)URORA協(xié)議的例示程序。因此,要實(shí)現基于A(yíng)URORA協(xié)議的光纖通信,在發(fā)送端只需要在frame_gen_i模塊將要發(fā)送的數據打包,然后通過(guò)AURORA模塊發(fā)送出去。因此該模塊著(zhù)重介紹如何將上一級傳送過(guò)來(lái)的數據進(jìn)行打包壓縮,形成適合AURORA協(xié)議的數據幀,通過(guò)AURORA協(xié)議發(fā)送到接收端。圖6為frame_gen_i模塊的RTL級模型圖。
圖6 frame_gen_i模塊的RTL級模型圖
考慮到上一級傳輸數據速率可能會(huì )與AURORA傳輸的時(shí)鐘頻率不同,因此在發(fā)送端建立一個(gè)FIFO來(lái)做緩沖器。并且AURORA協(xié)議的發(fā)送時(shí)序圖如圖7所示??梢钥闯?,TX_SOF_N為數據包幀的開(kāi)始標志,TX_EOF_N為數據包幀的結束.標志,TX_REM[0:r(n)]記錄最后的傳輸數據的線(xiàn)程,TX_SRC_RDY_N為低代表數據有效,TX_DST_RDY_N為低代表準備好接受數據,TX_D[0:(8n-1)]是此模塊的輸出數據。以上信息是AURORA協(xié)議的發(fā)送時(shí)序,在使用FIFO做緩沖時(shí)也應該遵循這樣的協(xié)議。
圖7 AURORA協(xié)議發(fā)送時(shí)序圖
發(fā)送端的FIFO模塊分別包括FIFO的復位信號、FIFO空、FIFO滿(mǎn)、以及讀/寫(xiě)時(shí)鐘、使能和數據信號線(xiàn)。因此應該根據FIFO的標志位empty和full來(lái)產(chǎn)生AURORA的發(fā)送時(shí)序,參考模型如圖8所示:當RESET信號到來(lái)之時(shí),首先將S0置為高電平,將S1置為低電平,同時(shí)根據FULL和EM-PTY的狀態(tài)確定接下來(lái)的S0和S1的狀態(tài),進(jìn)而根據以上邏輯關(guān)系得到TX_SOF_N,TX_EOF_N,TX_SRC_RDY_N等邏輯信號,并且根據數據X_DST_RDY_N和TX_SRC_RDY_N生成FIFO的讀使能。由以上邏輯可以看出,只有在FULL為1,EMPTY為0時(shí),FIFO的讀使能才能被打開(kāi)。TX_SOF_N為數據包的幀頭標志,TX_EOF_N為數據包的幀尾標志,TX_STC_RDY_N為低時(shí)代表數據有效,TX_DST_RDY_N為輸入信號,根據此輸入信號確定FIFO的讀寫(xiě)時(shí)序。
圖8 參考模型
對FIFO時(shí)序操作需要根據上述電路圖所產(chǎn)生。在上述電路圖中,有一個(gè)D觸發(fā)器,其RESET信號是復位信號,復位既是將觸發(fā)器輸出端口清零,即將S0置1,將S1置0。在之前的程序中誤將這里寫(xiě)反,即RESET信號到來(lái)之后,將S0置0,S1置1。這樣導致的結果是在最開(kāi)始輸入的一段數據丟失,之后的結果輸出正常。經(jīng)過(guò)仿真分析之后檢查出問(wèn)題并已改正。
2.3 AURORA接收模塊
同樣在A(yíng)URORA協(xié)議模塊中,要實(shí)現對數據的接收,只需在frame_check模塊中對接收的代碼加以修改,增加自己所需要的內容,完成對數據的解碼提取,剔除冗余信息,并完成數據的緩存。
評論