互聯(lián)網(wǎng)技術(shù)
責(zé)任編輯:gimbox
2012-03-19
摘要:2.2基于FPGA的TS101鏈路口設(shè)計(jì)(1)接收部分:由編碼和緩存兩部分組成。由于鏈路口的數(shù)錯(cuò)是DDR形式的,不方便數(shù)據(jù)的緩存,本文采用QuartusIIMegafunctions中的altddio模塊將上升沿?cái)?shù)據(jù)和下降沿?cái)?shù)據(jù)分開。注意這個(gè)模塊的下降沿?cái)?shù)據(jù)輸出會(huì)滯后上升沿?cái)?shù)據(jù)1個(gè)時(shí)鐘周期,輸出時(shí)應(yīng)該用鏈路口時(shí)鐘信號(hào)(LxCLKIN)通過(guò)D觸發(fā)器來(lái)將數(shù)據(jù)對(duì)齊。
2.2 基于FPGA的TS101鏈路口設(shè)計(jì)
(1) 接收部分:由編碼和緩存兩部分組成。由于鏈路口的數(shù)錯(cuò)是DDR形式的,不方便數(shù)據(jù)的緩存,本文采用QuartusII Megafunctions中的altddio模塊將上升沿?cái)?shù)據(jù)和下降沿?cái)?shù)據(jù)分開。注意這個(gè)模塊的下降沿?cái)?shù)據(jù)輸出會(huì)滯后上升沿?cái)?shù)據(jù)1個(gè)時(shí)鐘周期,輸出時(shí)應(yīng)該用鏈路口時(shí)鐘信號(hào)(LxCLKIN)通過(guò)D觸發(fā)器來(lái)將數(shù)據(jù)對(duì)齊。該模塊的inclock一定要用鏈路口時(shí)鐘信號(hào)以保證數(shù)據(jù)的正確讀取,如圖2所示。又由于 DSP內(nèi)部數(shù)據(jù)是32位的長(zhǎng)字,所以寫入接收緩存前應(yīng)該用一組D觸發(fā)器將數(shù)據(jù)進(jìn)行32bit對(duì)齊,這里注意DSP鏈路口先傳輸32位數(shù)據(jù)中的低8位。
(2) 控制部分:由令牌轉(zhuǎn)換模塊和控制模塊組成,是整個(gè)設(shè)計(jì)的核心部分,完成對(duì)各部分的控制和與FPGA內(nèi)部進(jìn)行通信(通過(guò)CTL一組信號(hào))。TS101的鏈路口通信握手是靠?jī)筛鶗r(shí)鐘信號(hào)驗(yàn)證令牌指令完成 ,即當(dāng)發(fā)送端驅(qū)動(dòng)原本為高的LxCLKOUT信號(hào)為低電平,以此作為令牌請(qǐng)求向接收端發(fā)出。如果接收端準(zhǔn)備好接收,則接收端驅(qū)動(dòng)LxCLKIN為高;如果令牌發(fā)出6個(gè)時(shí)鐘周期后,LxCLKIN信號(hào)仍然為高,則肩動(dòng)數(shù)據(jù)傳輸(以上時(shí)鐘信號(hào)都以發(fā)送端視角分析)。本設(shè)計(jì)中,令牌轉(zhuǎn)換模塊負(fù)責(zé)驗(yàn)證令牌和發(fā)送令牌。這里要注意,由于用來(lái)驗(yàn)證令牌低電平個(gè)數(shù)的時(shí)鐘信號(hào)(PLL_32ns)是由FPGA時(shí)鐘信號(hào)(CLK)通過(guò)鎖相 環(huán)倍頻得到,與DSP鏈路口時(shí)鐘異步,故驗(yàn)證令牌時(shí),當(dāng)計(jì)數(shù)器計(jì)到5個(gè)低電平時(shí)即可認(rèn)為已達(dá)成通信握手,否則可能會(huì)丟失數(shù)據(jù)。達(dá)成握手后通知控制模塊向接收或發(fā)送緩存輸出控制信號(hào),其中接收控制信號(hào)包括寫緩存時(shí)鐘和寫使能。發(fā)送控制信號(hào)包括讀緩存時(shí)鐘、讀使能和DSP中斷信號(hào)(DSP_IRQ),其中寫緩存時(shí)鐘通過(guò)對(duì)鏈路口時(shí)鐘分頻得到,讀緩存時(shí)鐘由鎖相環(huán)倍頻FPGA工作時(shí)鐘得到。
(3) 發(fā)送部分:與接收部分類似,也南編碼和緩存兩部分組成,相應(yīng)的設(shè)計(jì)基本相同,這里不作過(guò)多介紹。由于DSP鏈路口每次傳輸數(shù)據(jù)個(gè)數(shù)的最小單位是4個(gè)32位字,即8個(gè)鏈路時(shí)鐘周期,所以發(fā)送時(shí)鐘廊該每8個(gè)時(shí)鐘周期一組,以湊夠128bit,避免傳輸錯(cuò)誤,其中多余無(wú)效的數(shù)據(jù)DSP可以自行舍去。發(fā)送部分采用DSP外部中斷方式而不是鏈路口中斷方式通知DSP接收數(shù)據(jù)。
TS101的鏈路口通信協(xié)議要求鏈路口接收端在傳輸啟動(dòng)一個(gè)周期后,將其LxCLKOUT拉低,若可以繼續(xù)接收,在下一個(gè)周期再將其拉高,以此作為連接測(cè)試。實(shí)際運(yùn)行中發(fā)現(xiàn),當(dāng)FPGA接收數(shù)據(jù)時(shí),可將 LxCLKOUT信號(hào)一直驅(qū)動(dòng)為高,不必做特殊的連接測(cè)試也能正確接收數(shù)據(jù)。另外,發(fā)送鏈路口數(shù)據(jù)時(shí),由于發(fā)送緩存中已經(jīng)對(duì)應(yīng)仔好了要發(fā)送的8bit數(shù)據(jù),故可以使用對(duì)FPGA時(shí)鐘信號(hào)(CLK)倍頻得到的 PLL_16ns信號(hào)來(lái)讀發(fā)送緩存,讀出的數(shù)據(jù)即鏈路口發(fā)送數(shù)據(jù),再對(duì)PLL_16ns信號(hào)的下降沿分頻得到鏈路口的發(fā)送時(shí)鐘信號(hào)。
LxCLKIN、LxDAT[70]是DSP的鏈路口輸出時(shí)鐘和數(shù)據(jù),LxCLKOUT是FPGA的回饋準(zhǔn)備好信號(hào)。仿真中鏈路口數(shù)據(jù)采用1F~3E(十六進(jìn)制)的32個(gè)8bit數(shù)據(jù),即從2221201F到3E3D3C3B的8個(gè)32bit數(shù)據(jù);PLL_32ns信號(hào)是FPGA內(nèi)部鎖相環(huán)產(chǎn)生的與DSP鏈路口時(shí)鐘異步的32ns時(shí)鐘信號(hào),用來(lái)校驗(yàn)令牌指令;W_FIFO_EN信號(hào)足寫緩存使能信號(hào),當(dāng)令牌驗(yàn)證后使能接收緩存;DSP_DAT信號(hào)是DSP通過(guò)鏈路門傳輸?shù)?2bit數(shù)據(jù),通過(guò)對(duì)鏈路口數(shù)據(jù)的編碼得到;W_BUF_CLK信號(hào)由鏈路口時(shí)鐘分頻處理得到,將上升沿對(duì)應(yīng)的32bit DSP數(shù)據(jù)寫入接收緩存,完成接收過(guò)程。[1] [2] [3] [4]
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
延伸閱讀
更多精彩內(nèi)容請(qǐng)關(guān)注
通信工程師微信公眾號(hào)
通信工程師備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬(wàn)道題
已有25.02萬(wàn)小伙伴參與做題