為了提高設(shè)計(jì)性能(有時(shí)甚至只是為了達(dá)到設(shè)計(jì)要求),對所設(shè)計(jì)的SOPC系統(tǒng)進(jìn)行綜合優(yōu)化是非常必要的。論文結(jié)合具體工程,以Altera公司的FPGA EP2S60為例,探討了SOPC系統(tǒng)設(shè)計(jì)的綜合優(yōu)化方法。
1 綜合優(yōu)化設(shè)計(jì)的一般流程和方法
在FPGA處理器沒有選定前,可以進(jìn)行SOPC系統(tǒng)的開發(fā)。根據(jù)編譯和優(yōu)化的效果指導(dǎo)處理器芯片的選型,選擇合適的處理器型號、速度等級和封裝。當(dāng)硬件系統(tǒng)設(shè)計(jì)好后,就只能在已選擇好的處理器芯片上進(jìn)行優(yōu)化。一般的優(yōu)化方法有Verilog程序代碼優(yōu)化、編譯和布線優(yōu)化設(shè)置,在添加Nios II系統(tǒng)后也涉及對Nios II系統(tǒng)的優(yōu)化。在設(shè)計(jì)過程中應(yīng)遵循模塊化設(shè)計(jì)思想,如果前面的優(yōu)化都不能達(dá)到滿意的效果,則需要使用邏輯鎖定技術(shù)和應(yīng)用DSE算法進(jìn)行優(yōu)化。
2 綜合優(yōu)化設(shè)計(jì)策略
2.1 Quartus II軟件優(yōu)化設(shè)置
在進(jìn)行綜合前,對軟件編譯和布線進(jìn)行優(yōu)化設(shè)置是優(yōu)化設(shè)計(jì)的一個(gè)重要步驟,不同設(shè)置對綜合布線的結(jié)果有較大影響。幾個(gè)比較重要的設(shè)置包括時(shí)間要求設(shè)置、編譯器設(shè)置,最重要的是布線器的設(shè)置,如圖1所示。
設(shè)計(jì)中設(shè)置對所有路徑進(jìn)行優(yōu)化,并設(shè)置布線器盡最大努力滿足設(shè)計(jì)的時(shí)序要求。在進(jìn)一步的布線器參數(shù)設(shè)置中,選擇全局時(shí)鐘有效,這樣雖然可能增加實(shí)際布線后延時(shí),但是可以減少時(shí)鐘偏斜,為系統(tǒng)整體時(shí)序設(shè)計(jì)的穩(wěn)定性提供保障,同時(shí)也可以增強(qiáng)網(wǎng)絡(luò)的驅(qū)動能力。
另外,中心處理器EP2S60支持多種電平模式,而各個(gè)bank支持的模式不盡相同。在最初的硬件電路設(shè)計(jì)中已經(jīng)考慮到這一點(diǎn),將外接PCI接口的引腳分配在器件的bank7和bank8上,這樣可以充分利用器件設(shè)計(jì)好的優(yōu)化路徑,達(dá)到比較好的設(shè)計(jì)性能。在引腳分配中,需要對引腳的特性進(jìn)行更詳細(xì)的設(shè)置,具體應(yīng)根據(jù)實(shí)際系統(tǒng)引腳分配的功能要求選擇相應(yīng)的電平標(biāo)準(zhǔn),如PCI核接口選擇3.3 V PCI電平標(biāo)準(zhǔn)。
2.2 程序代碼的優(yōu)化設(shè)計(jì)
Verilog語言是一種類C語言的硬件描述語言,在設(shè)計(jì)中首先要對所需實(shí)現(xiàn)的硬件電路結(jié)構(gòu)和連接都十分清晰,然后再用適當(dāng)?shù)恼Z言進(jìn)行描述。在具體實(shí)現(xiàn)上,應(yīng)綜合考慮以下基本設(shè)計(jì)原則:
①面積和速度的平衡互換原則。如設(shè)計(jì)時(shí)序余量大,可以通過功能模塊復(fù)用來減少消耗的芯片面積;如設(shè)計(jì)時(shí)序要求高,可采用“串并轉(zhuǎn)換”和“乒乓操作”以面積換速度。
②硬件原則。從硬件角度進(jìn)行程序開發(fā)。
③系統(tǒng)原則。以系統(tǒng)的眼光進(jìn)行模塊劃分和各模塊任務(wù)的分配。
④同步設(shè)計(jì)原則。同步設(shè)計(jì)易于提高設(shè)計(jì)的頻率和設(shè)計(jì)的穩(wěn)定性,當(dāng)前的優(yōu)化工具也多是針對同步時(shí)序的優(yōu)化。
硬件程序設(shè)計(jì)的另一個(gè)重要方面是狀態(tài)機(jī)的設(shè)計(jì)。課題中涉及4個(gè)狀態(tài)機(jī)的設(shè)計(jì)。遵循好的狀態(tài)機(jī)設(shè)計(jì)原則也是硬件程序開發(fā)中不可忽視的一方面。
狀態(tài)機(jī)編碼方式的選擇:由于FPGA中提供較多的觸發(fā)器資源,F(xiàn)PGA設(shè)計(jì)中多采用熱鍵編碼方式,綜合器的綜合約束屬性界面下可以方便地改變狀態(tài)編碼方式。
初始化狀態(tài)和默認(rèn)狀態(tài):為避免上電不能正確進(jìn)入初始狀態(tài),設(shè)計(jì)中初始狀態(tài)編碼為全零;同時(shí)為保證邏輯不會陷入死循環(huán),設(shè)計(jì)語句中應(yīng)注意完備化設(shè)計(jì)。
采用兩段式狀態(tài)機(jī)設(shè)計(jì)方法:將狀態(tài)轉(zhuǎn)移單獨(dú)寫成一個(gè)模塊,將狀態(tài)的操作和判斷寫到另一個(gè)模塊中,這樣可以將同步時(shí)序和組合邏輯分別放置于不同的邏輯塊,利于綜合器優(yōu)化代碼和布線器實(shí)現(xiàn)設(shè)計(jì)。
2.3 片上存儲器分配策略
在Stratix II系列的FPGA中包含3種不同類型的內(nèi)部存儲塊:M-RAM塊、M512 RAM塊和M4K RAM塊。設(shè)計(jì)中,應(yīng)用不同的存儲塊設(shè)計(jì)不同的存儲器,可以達(dá)到較優(yōu)化的系統(tǒng)性能。
M-RAM完全支持雙端口模式,由512 Kb RAM加上校驗(yàn)位組成,主要用于大數(shù)據(jù)包的緩存,如以太網(wǎng)幀、IP包等大到幾KB的數(shù)據(jù)包,以及視頻圖像幀的緩存和NiosII嵌人式軟核的存儲;M512 RAM塊由512位模塊加上校驗(yàn)的RAM組成,主要用于接口速率適配的內(nèi)部FIF0、移位寄存器和時(shí)鐘域隔離等;M4K塊由4 096×1位到128×36位的4 Kb模塊加校驗(yàn)組成,主要用于小型數(shù)據(jù)塊存儲和多通道I/O協(xié)議中,另外M4K RAM也完全支持雙端口模式。
設(shè)計(jì)中采用的中心處理器FPGA芯片EP2S60包含豐富的存儲器邏輯資源,和上一代Stratix系列相比,運(yùn)行速度提高了50%,邏輯容量增加了1倍,具有達(dá)180 Kb的等效邏輯元件和9 Mb的RAM,大大增加了集成度,為高度集成的應(yīng)用提供了實(shí)現(xiàn)基礎(chǔ),而成本比上一代還要低。設(shè)計(jì)采用的EP2S60器件邏輯資源如表1所列。
根據(jù)器件內(nèi)3種存儲器的各自特點(diǎn),結(jié)合片內(nèi)的邏輯資源分布,在片內(nèi)設(shè)計(jì)了5個(gè)同步FIFO,其中4個(gè)長度32位、存儲深度256字的FIFO作為64位PCI傳輸?shù)木彺,另一個(gè)長度32位,存儲深度設(shè)計(jì)為2 048字。M512存儲塊主要用于內(nèi)部FIFO的設(shè)計(jì),在配置片內(nèi)FIFO時(shí)選擇M512存儲塊類型。1個(gè)32位長、存儲深度256字的FIFO占用的邏輯資源為30個(gè)LUT單元、15個(gè)M512存儲塊、134個(gè)REG單元。4個(gè)這樣的FIFO占用60個(gè)M512存儲塊、120個(gè)LUT單元。536個(gè)REG單元。而1個(gè)32位長、2 048字存儲深度的FIFO占用的邏輯資源為114個(gè)M512存儲塊、63個(gè)LUT單元、128個(gè)REG單元。這樣,系統(tǒng)設(shè)計(jì)中的FIFO總共占用174個(gè)M512存儲塊,相比表1中EP2S60器件329個(gè)M512存儲塊,占用率為52.9%,完全可以在片內(nèi)設(shè)計(jì)實(shí)現(xiàn)。
作者:楊進(jìn) 邱兆坤 楊德貴 來源:自動化在線
我推薦大家讀
輕松參與
VS
表達(dá)立場
這是垃圾文章