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