由于以太網(wǎng)測試使用的開發(fā)板是淘寶購買的某款開發(fā)板,開發(fā)人員在電路設(shè)計時沒有考慮到將以太網(wǎng)芯片的接收時鐘、發(fā)送時鐘通過FPGA的專用時鐘管腳接入到到全局時鐘網(wǎng)絡(luò);其實(shí)這對時序裕量有影響,按照官方的說法,經(jīng)過全局時鐘網(wǎng)絡(luò)的信號其延時最小,驅(qū)動能力大;而且只有專用時鐘管腳引入的信號才能接入到PLL;
這個千兆網(wǎng)芯片使用的是RGMII接口,收發(fā)時鐘達(dá)到了125MHz,但是卻沒有經(jīng)過專用時鐘管腳進(jìn)入全局時鐘網(wǎng)絡(luò),為了保證能在125MHz時序下,電路能夠穩(wěn)定的跑通,我在時序裕量上做出了一些的努力。
參考該塊開發(fā)板給出的例程
開發(fā)板所帶例程的部分
這一部分是在生成IP數(shù)據(jù)包的首部,并且計算首部的校驗(yàn)和;
但是綜合之后,可以從時序報告看到下圖
可以看到"ip_header"與"check_buffer"之間的有很多標(biāo)紅警告,這造成時序分析報告里面e_rxc(接收時鐘)的max_frequency遠(yuǎn)遠(yuǎn)小于我們想要的125MHz;
為此,我修改了make狀態(tài),在計算check_buffer的過程中加入了多個寄存器,起到緩沖作用;如下圖
原來10個16進(jìn)制的1周期加法計算可能會造成大的延時,現(xiàn)在將10個16進(jìn)制的加法計算拆分成3周期的加法計算,從時序報告看緩解了這部分的slack不足。
其實(shí)這里使用的是使用面積換取時間的方法,參考的例程里面由于需要在1個周期內(nèi)計算過多的數(shù)據(jù)量造成太大的延時,所以這部分的時序不會太高,而我們在這個過程插入寄存器,分級計算,每個階段的時序提高了,整體部分的時序也達(dá)到了設(shè)計要求;
這種做法是很多人推崇的FPGA設(shè)計中的流水線設(shè)計一個實(shí)例,其原理就相當(dāng)于將一堆復(fù)雜的操作分割成幾個簡單的操作,增加了電路面積但是由于每個部分的操作相對簡單,所以運(yùn)行頻率可以得到相對的提升。
其實(shí)我這里發(fā)現(xiàn)有進(jìn)一步的改進(jìn)方案,可以在以太網(wǎng)芯片發(fā)送8個前導(dǎo)碼的同時,組成IP數(shù)據(jù)包頭并計算checksum,這樣的話checksum的計算是1周期還是3周期都不會影響發(fā)送流程的整體過程,修改的結(jié)果如下圖:
第二個改進(jìn)的地方如下圖,例程中發(fā)送以太幀首部信息采用了下圖這種方法;
這種寫法看著很有C語言循環(huán)寫法的風(fēng)格,感覺并不好,而且這個部分的時序報告也不太好;我起初想到的修改方法是類似如下的方法:
這個修改的方法的意圖是這樣的,在SEND_HEADER狀態(tài)下,txd每次都發(fā)送ip_header的高八位,同時ip_header向左移動8位,在發(fā)送完ip_header后,狀態(tài)機(jī)會跳出SEND_HEADER狀態(tài)。
但是,可能ip_header寬度過大,每次做移位操作造成較大延時,這么修改仍有部分時序標(biāo)紅,于是我又做出了如下修改:
通過狀態(tài)機(jī)和計數(shù)器的配合,解決了發(fā)送端口應(yīng)該在什么時候發(fā)送什么信息,避免做判斷和移位操作。
通過以上兩個措施,解決了一部分的時序裕量不足的問題,但一波未平一波又起;在這個過程中在很多地方用了cnt寄存器作為計數(shù)器,于是時序報告中又產(chǎn)生了cnt寄存器與txd等信號的時序裕量不足的報告。
分析這個現(xiàn)象產(chǎn)生的原因,我們不難發(fā)現(xiàn),在狀態(tài)跳轉(zhuǎn),比如從發(fā)送MAC地址的狀態(tài)跳轉(zhuǎn)到發(fā)送IP首部信息的狀態(tài),就是使用計數(shù)器技術(shù)到某一數(shù)值作為跳轉(zhuǎn)條件;而每次在狀態(tài)機(jī)使用計數(shù)器和閾值作比較,由于cnt寄存器的寬度較大,在比較的過程中也有延時,在高速時鐘下這點(diǎn)延時也會造成一定的影響。
又又又為了解決這個問題,采用了如下圖的解決方案:
用wire類型的flagxx信號代替原來的"cnt >= xxx",看似沒什么變化,但是原來的比較方案中,當(dāng)電路運(yùn)行到判斷條件時,會進(jìn)行多bit的比較,在時鐘頻率較高時,也會對時序電路有所影響;而使用flag單bit信號做判斷之后,對時序電路的影響較小,時序電路的max_frequency可以有所提高。
由于接收時鐘沒有經(jīng)專用時鐘管腳引進(jìn);全局時鐘信號驅(qū)動下,其他的物理輸入輸出信號延遲較小;而此處接收時鐘被當(dāng)做一個普通IO信號引入,可能會造成其他的物理輸入輸出信號相對時鐘信號有較大延遲;又因?yàn)闀r鐘信號在時序電路中是驅(qū)動其他信號工作,所以這個時鐘信號(從普通IO口引入)的扇出一定很大,這也會造成一定的意料之外的延時。而這部分問題,我還沒有找到一個很好的解決方法,可能時鐘信號沒有從專用時鐘管腳引入就是一個錯誤,而我沒找到解決它的好辦法。
總結(jié):
- 將計算量較大,較多,較復(fù)雜的地方分級處理,中間插入寄存器,這樣可以提高時序裕量。
- 使用狀態(tài)機(jī)代替循環(huán)和移位等操作。
- 避免多比特信號的判斷比較,用單比特信號代替多比特信號的比較。
- FPGA的隨路時鐘要通過專用時鐘管腳引入。
-
FPGA設(shè)計
+關(guān)注
關(guān)注
9文章
428瀏覽量
26644 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5465瀏覽量
172848 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121319 -
C語言
+關(guān)注
關(guān)注
180文章
7616瀏覽量
137887 -
RGMII
+關(guān)注
關(guān)注
0文章
28瀏覽量
12224
發(fā)布評論請先 登錄
相關(guān)推薦
數(shù)字電路之時序電路
![<b class='flag-5'>數(shù)字電路</b>之<b class='flag-5'>時序電路</b>](https://file1.elecfans.com//web2/M00/A6/8F/wKgZomUMPqiAPXP6AAAgeXVygkI849.png)
優(yōu)化高速接口的時序裕量
![優(yōu)化高速接口的<b class='flag-5'>時序</b><b class='flag-5'>裕</b><b class='flag-5'>量</b>](https://file1.elecfans.com//web2/M00/A6/28/wKgZomUMPAOAW-dKAAAVKUt0-_M317.jpg)
數(shù)字電路設(shè)計之同步時序邏輯電路
![<b class='flag-5'>數(shù)字電路</b>設(shè)計之同步<b class='flag-5'>時序</b>邏輯<b class='flag-5'>電路</b>](https://file.elecfans.com/web1/M00/C8/68/pIYBAF9uHvWAXi4vAABWkUjGWfg061.png)
新編數(shù)字電路與數(shù)字邏輯
時序在數(shù)字電路中的作用
數(shù)字電路與邏輯設(shè)計電路的分析和方法
時序在數(shù)字電路中的作用
時序在數(shù)字電路中的作用
同步時序數(shù)字電路的分析
![同步<b class='flag-5'>時序數(shù)字電路</b>的分析](https://file.elecfans.com/web2/M00/48/84/pYYBAGKhtAuAd_ilAAAoaZwq2qo448.jpg)
數(shù)字電路該怎么學(xué)_數(shù)字電路的學(xué)習(xí)方法(要點(diǎn)、注意事項(xiàng))
數(shù)字電路基礎(chǔ)教程之時序邏輯電路的詳細(xì)資料概述
![<b class='flag-5'>數(shù)字電路基礎(chǔ)教程之時序</b>邏輯<b class='flag-5'>電路</b>的詳細(xì)資料概述](https://file.elecfans.com/web1/M00/68/8C/o4YBAFvG10uAf1-EAAF9y1C73_o118.png)
數(shù)字電路教程之時序邏輯電路課件的詳細(xì)資料免費(fèi)下載
![<b class='flag-5'>數(shù)字電路</b>教程之<b class='flag-5'>時序</b>邏輯<b class='flag-5'>電路</b>課件的詳細(xì)資料免費(fèi)下載](https://file.elecfans.com/web1/M00/7F/48/o4YBAFwlx8iAQPE2AANoPFYXbr8586.png)
數(shù)字電路設(shè)計的基本流程
數(shù)字電路主要應(yīng)掌握哪些概念
![<b class='flag-5'>數(shù)字電路</b>主要應(yīng)掌握哪些概念](https://file1.elecfans.com/web2/M00/81/E6/wKgZomQdDD6AW3e4AABDQHWzyVs922.jpg)
評論