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