ADSP TS201鏈路口通信的FPGA實(shí)現(xiàn)
2 模塊建立與優(yōu)化
ADSP TS201的鏈路口采用的是獨(dú)立的發(fā)送和接收通道,因此對(duì)應(yīng)的FPGA也需要采用不同的接收電路和發(fā)送電路。
無論是接收還是發(fā)送均由兩部分組成:接收/發(fā)送緩沖和接收/發(fā)送模塊。接收模塊主要是用于接口和數(shù)據(jù)的拆包處理,發(fā)送模塊是用于數(shù)據(jù)接收和打包處理。接收/發(fā)送緩沖則是用來分別配合接收/發(fā)送模塊進(jìn)行數(shù)據(jù)緩沖,并實(shí)現(xiàn)數(shù)據(jù)傳輸功能。
2.1 接收電路
接收模塊:接收到由鏈路口4位數(shù)據(jù)總線送出的數(shù)據(jù)差分信號(hào)Lxdatap/n和控制差分信號(hào)Lxclk p/n以后不能直接拆包處理,需要將原來的差分信號(hào)轉(zhuǎn)換成完整信號(hào)、Lxdata和Lxclk,才可進(jìn)入雙倍數(shù)據(jù)速率器(DDR)寄存,此寄存器由時(shí)鐘信號(hào)clkin(與Lxclk同頻率)控制。由于是4位數(shù)據(jù)總線同時(shí)串行傳送數(shù)據(jù),其具體的數(shù)據(jù)排序如圖4所示。本文引用地址:http://m.butianyuan.cn/article/192061.htm
可見,每一路傳送的數(shù)據(jù)均不是連續(xù)的,且都按模4余數(shù)分配。為了方便數(shù)據(jù)并行送出,需要將數(shù)據(jù)進(jìn)行拆包整理。每個(gè)clkin周期收到8位數(shù)據(jù),將此按位號(hào)由大到小的順序整理,并放入mid(7:O)中。其間增加一級(jí)觸發(fā)器作為緩沖。
接收緩沖:此部分主要由狀態(tài)機(jī)和FIFO構(gòu)成,其中狀態(tài)機(jī)主要控制FIFO寫命令的產(chǎn)生,由鏈路口時(shí)鐘Lxclk和時(shí)鐘信號(hào)clkin共同產(chǎn)生,即當(dāng)Lxclk產(chǎn)生第一個(gè)上升沿時(shí)計(jì)數(shù)器開始計(jì)數(shù)從O~15,每次計(jì)數(shù)就會(huì)將相應(yīng)的FIFO寫許可we d置為有效。將128位數(shù)據(jù)每8位為一組,分別送入16個(gè)8位F1FO中,由外部的FIFO_oe讀信號(hào)和sysclk時(shí)鐘信號(hào)控制128位數(shù)據(jù)并行讀出。即將FIFO_oe信號(hào)同時(shí)接到16個(gè)FIFO上,當(dāng)FIFO_oe有效時(shí),從16個(gè)FIFO中同時(shí)讀出數(shù)據(jù)。并根據(jù)FIFO存儲(chǔ)狀態(tài)發(fā)送Lxacko信號(hào)和fuiIflag信號(hào),若FIF0不滿則將Lxacko信號(hào)置為1(高有效)允許發(fā)送端繼續(xù)通過鏈路口發(fā)送數(shù)據(jù);否則Lxacko置為O。
其中,F(xiàn)IFO 8由Core generator直接生成,是異步8位先進(jìn)先出存儲(chǔ)器。下面涉及的FIFO 16,F(xiàn)IFO 32均這樣生成。接收(Rx)流程圖如圖5所示。
綜合后此電路的主時(shí)鐘Clkin頻率最快可達(dá)到368 MHz。由于一個(gè)FIFO 8就占用了一個(gè)18 Kb的嵌入式FIFO資源,而16個(gè)FIFO就占據(jù)了16個(gè)塊的資源,這不僅造成了資源的浪費(fèi),還增加了布局布線所需要的時(shí)間。因此,為了優(yōu)化結(jié)構(gòu),增加一級(jí)寄存器,擴(kuò)展數(shù)據(jù)的位數(shù),使得數(shù)據(jù)在未進(jìn)入FIFO前就已得到處理,由原來的8位數(shù)據(jù)mid連成16位數(shù)據(jù)Data,再送入16位的FIFO 16中。優(yōu)化后,F(xiàn)IFO 16的使用率由原來的22%減少到11%,大大減少了線上延遲。綜合此電路的主時(shí)鐘clkin頻率最高可實(shí)現(xiàn)500 MHz。具體結(jié)構(gòu)如圖6所示。
2.2 發(fā)送電路
評(píng)論