




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第1節(jié) 基本設(shè)計技巧乒乓操作 1 操作過程 2 從外部看,數(shù)據(jù)流沒有停頓的進(jìn)出3 用低速模塊處理高速數(shù)據(jù)流 4 實際上,用兩個緩沖模塊實現(xiàn)了串并轉(zhuǎn)換,兩個預(yù)處理模塊并行,面積換速度; 串并轉(zhuǎn)換 串并轉(zhuǎn)換 1 FPGA設(shè)計的一個重要技巧 2 數(shù)據(jù)流處理的常用手段 3 面積與速度互換思想的直接體現(xiàn) 串并轉(zhuǎn)換的實現(xiàn)方法多種多樣,根據(jù)數(shù)據(jù)的排序和數(shù)量的要求,可以選用: 1 寄存器:小設(shè)計2 RAM:數(shù)據(jù)量比較大的情況 3 狀態(tài)機(jī):復(fù)雜的串并轉(zhuǎn)換 流水線操作 1 流水線處理是高速設(shè)計中的一個常用設(shè)計手段 2 如果某個設(shè)計的處理流程分為若干步驟,而且整個數(shù)據(jù)處理是“單流向”的,即沒有反饋或者迭代運(yùn)算,前一
2、個步驟的輸出是下一個步驟的輸入,則可以考慮采用流水線設(shè)計方法提高系統(tǒng)的工作頻率。 3 將適當(dāng)劃分的n個操作步驟單向串連起來 4 數(shù)據(jù)流在流水線各個部分的處理,從時間上看是連續(xù)的 5 數(shù)據(jù)流依次流經(jīng)n個模塊,完成每個步驟的操作 6 流水線設(shè)計時,時序要進(jìn)行合理安排,每個操作步驟的劃分要合理,仔細(xì)考慮各個步驟間的數(shù)據(jù)流量 7 如果前級操作時間恰好等于后級的操作時間,設(shè)計最為簡單,前級直接輸出到后級的輸入即可 8 如果前級操作時間大于后級的操作時間,則后級會經(jīng)??臻e??梢詫η凹壍妮敵鰯?shù)據(jù)適當(dāng)緩存,再輸出到后級的輸入端 如果前級操作時間小于后級的操作時間,則必須通過復(fù)制邏輯,將數(shù)據(jù)流分流和并行預(yù)處理,
3、或者在前級對數(shù)據(jù)采用存儲、后處理方式,否則會造成后級數(shù)據(jù)溢出 數(shù)據(jù)接口的同步 1 兩種易出問題的設(shè)計習(xí)慣-手工加入非門調(diào)整數(shù)據(jù)延遲,從而保證本級時鐘對上級數(shù)據(jù)的建立、保持時間的要求-為了有穩(wěn)定的采樣,時而用正沿打一下數(shù)據(jù),時而用負(fù)沿打一下數(shù)據(jù),以調(diào)整數(shù)據(jù)的采樣位置 2 問題-一旦芯片更新?lián)Q代,或者移植到其它器件系列的芯片上,采樣實現(xiàn)必須重新設(shè)計-這兩種做法造成電路實現(xiàn)的時序余量不夠,一旦外界條件變換(比如溫度升高),采樣時序就有可能紊亂,造成電路不能完成預(yù)定的功能 3 如果輸入數(shù)據(jù)的節(jié)拍和本系統(tǒng)處理時鐘同頻,可以直接用本系統(tǒng)的主時鐘對輸入數(shù)據(jù)寄存器采樣,完成輸入數(shù)據(jù)的同步化 如果輸入數(shù)據(jù)的節(jié)拍
4、和本系統(tǒng)處理時鐘同頻,可以直接用本系統(tǒng)的主時鐘對輸入數(shù)據(jù)寄存器采樣,完成輸入數(shù)據(jù)的同步化 4 為了避免異步時鐘域產(chǎn)生錯誤的采樣數(shù)據(jù),一般使用RAM、FIFO緩存的方法完成異步時鐘域的數(shù)據(jù)轉(zhuǎn)換。在輸入端口使用上級時鐘寫數(shù)據(jù),在輸出端口使用本級時鐘讀數(shù)據(jù),就非第2節(jié) FPGA設(shè)計思考硬件描述語言的層次含義 HDL是目前數(shù)字ASIC、FPGA、CPLD等最重要的一種設(shè)計輸入方式: 1 利于自頂向下的設(shè)計 2 利于模塊劃分與復(fù)用 3 可移植性好、通用性好 4 與工藝無關(guān)等 常用的概念層次 系統(tǒng)級 功能模塊級 行為級 寄存器轉(zhuǎn)移級 門級 Coding Style 1 使用高層次HDL進(jìn)行硬件設(shè)計,所帶來
5、的問題是設(shè)計者的設(shè)計思考與實際電路結(jié)構(gòu)是脫節(jié)的; 2 實際設(shè)計中,由于每個設(shè)計者對語言規(guī)則、電路行為的理解不同,編程風(fēng)格不同,往往對同樣的系統(tǒng)功能,描述的方式是不一樣的。所綜合出來的電路結(jié)構(gòu)更是大相逕庭; 即使最后綜合出來的電路都能實現(xiàn)相同的邏輯功能,其復(fù)雜程度和延時特性都會有較大差別; 與設(shè)計層次有關(guān); 3 與綜合工具相關(guān);-揮綜合工具的最大潛能-不同綜合工具對一些語法細(xì)節(jié)的解釋略有不同。 4 與器件的硬件結(jié)構(gòu)相關(guān)-充分、合理的使用硬件資源 分層次的模塊化設(shè)計 1 結(jié)構(gòu)層次化編碼是模塊化設(shè)計思想的一種體現(xiàn)。目前大型設(shè)計中必須采用結(jié)構(gòu)層次化編碼風(fēng)格,以提高代碼的可讀性,易于模塊劃分,易于分工協(xié)
6、作,易于設(shè)計仿真測試激勵; 2 最基本的結(jié)構(gòu)化層次由一個頂層模塊和若干個子模塊構(gòu)成,每個子模塊根據(jù)需要還可以包含自己的子模塊。 3 結(jié)構(gòu)的層次不宜太深; 4 頂層模塊僅包含對所有模塊的組織和調(diào)用; 5 所有I/O信號的描述在頂層模塊完成; 6 子模塊之間可以有接口;不要建立子模塊之間跨層次的接口; 7 子模塊的合理劃分很重要,應(yīng)該綜合考慮子模塊的功能、結(jié)構(gòu)、時序、復(fù)雜度等多方面因素。 模塊劃分的技巧 1 結(jié)構(gòu)層次化設(shè)計方法的第一個要點就是模塊劃分,模塊劃分非常重要,關(guān)系到能否最大程度上發(fā)揮項目成員協(xié)同設(shè)計的能力,更重要的是它直接決定著設(shè)計的綜合、實現(xiàn)的耗時與效率。2 模塊劃分的基本原則如下:-
7、對每個同步時序設(shè)計的子模塊的輸出使用寄存器,有利于綜合工具對邏輯進(jìn)行優(yōu)化;-關(guān)的邏輯或可以復(fù)用的邏輯劃分在同一模塊內(nèi); -將不同優(yōu)化目標(biāo)的邏輯分開;-將松約束的邏輯歸到同一模塊;-將存儲邏輯獨(dú)立劃分成模塊;-合適的模塊規(guī)模。 盡量避免使用鎖存器 1 寄存器:時鐘沿敏感,利用時鐘沿確定數(shù)據(jù)傳輸?shù)捷敵龅臅r刻; 2 鎖存器:電平敏感,只要時鐘是高電平(或低電平),就允許數(shù)據(jù)從輸入傳輸?shù)捷敵觥?3 鎖存器會造成設(shè)計和時序驗證中的各種困難。-鎖存器對輸入數(shù)據(jù)的毛刺非常敏感,會將其傳送到輸出-軟件無法確定使用鎖存器的設(shè)計人員的設(shè)計意圖;-其他設(shè)計者不容易進(jìn)行設(shè)計移植和代碼重用。 4 FPGA擁有大量的寄存
8、器,基于鎖存器的設(shè)計比基于寄存器的設(shè)計要占用更多的邏輯資源,性能降低。 5 如果堅持用鎖存器設(shè)計必須保證輸入信號絕對沒有毛刺,且滿足保持時間。6 同步時序設(shè)計應(yīng)該盡量避免使用鎖存器Latch; 7 綜合出鎖存器的主要原因:-不完全的條件判斷語句;-設(shè)計中有組合邏輯的反饋環(huán)路等異步邏輯。 8 防止產(chǎn)生不必要鎖存器的措施:-用完整的ifelse語句;-檢查設(shè)計中是否含有組合邏輯反饋環(huán)路;-為每個輸入條件,設(shè)計輸出操作,對case語句設(shè)置default操作,在狀態(tài)機(jī)中最好有一個default的狀態(tài)轉(zhuǎn)移,每個狀態(tài)最好有一個default的操作;-在使用case語句時,附加“full case”約束,以
9、便將其綜合為完全的條件case語句; -仔細(xì)檢查綜合軟件的綜合報告,目前大多數(shù)綜合軟件對綜合出的鎖存器會報告“warning”。異步時鐘域之間的數(shù)據(jù)交換第3節(jié) FPGA其他技巧優(yōu)化時序 1 可以使用pipelining、retiming、register balancing等時序優(yōu)化方法; 2 對設(shè)計中較長的組合邏輯路徑進(jìn)行分割和平衡,在一定程度上提高設(shè)計的工作頻率; 3 目前綜合軟件能夠根據(jù)用戶的參數(shù)配置,自動運(yùn)用這些技術(shù)。 模塊復(fù)用與資源共享 1 舉例:補(bǔ)碼平方和 module resource_share (data_in, square); input 7:0 data_in; /輸入
10、是補(bǔ)碼 output 15:0 square; wire 7:0 data_bar; assign data_bar = data_in + 1; assign square = (data_in7)? (data_bar*data_bar):(data_in*data_in); endmodule 舉例:補(bǔ)碼平方和module resource_share (data_in, square); input 7:0 data_in; /輸入是補(bǔ)碼 output 15:0 square; wire 7:0 data_temp; assign data_temp = (data_in7)? (da
11、ta_in + 1) : data_in; assign square = data_temp*data_temp; endmodule 1 本例使用Synplify Pro7.2進(jìn)行綜合,關(guān)閉了“resource sharing”等所有優(yōu)化選項; 2 不同的綜合軟件,同一軟件的不同版本、不同的優(yōu)化參數(shù)設(shè)置、不同的目標(biāo)器件等因素都可能造成不同的綜合結(jié)果; 3 目前很多綜合軟件都有“resource sharing”或類似的優(yōu)化選項,軟件在邏輯功能不變的情況下進(jìn)行資源共享。上例中,如果打開Synplify的“resource sharing”選項,則綜合結(jié)果與第二種代碼描述的綜合結(jié)果完全一致;
12、4 不能因為綜合軟件的優(yōu)化能力增強(qiáng),而片面的依靠它,還是要養(yǎng)成好的coding style。 -綜合工具的優(yōu)化能力還是有限的;-依靠綜合工具的優(yōu)化能力并不可靠。 邏輯復(fù)制 1 邏輯復(fù)制是通過增加面積而改善時序條件的優(yōu)化方法; 2 如果某個信號需要驅(qū)動后級的很多單元,為了增加這個信號的驅(qū)動能力,就可以復(fù)制生成這個信號的邏輯,使多路同頻同相的信號驅(qū)動后續(xù)電路; 3 可見,邏輯復(fù)制與資源共享,仍然體現(xiàn)了速度和面積的平衡問題。一個側(cè)重于速度目標(biāo),一個側(cè)重于面積目標(biāo)。 邏輯復(fù)制: sign data_out = (sel)? (a+b) : (c+d); 資源共享: wire temp1, temp2;
13、 assign temp1 = (sel)? (a) : (c); assign temp2 = (sel)? (b) : (d); assign data_out = temp1 + temp2; 香農(nóng)擴(kuò)展 1 香農(nóng)擴(kuò)展(布爾邏輯擴(kuò)展)也是一種通過邏輯復(fù)制、增加面積、提高速度的時序優(yōu)化方法; 2 是卡諾邏輯化簡的反向操作。 3 通過增加多路選擇器,縮短了某個優(yōu)先級高、但組合路徑長的信號的路徑時延,從而提高該關(guān)鍵路徑的工作頻率。 4 優(yōu)化目標(biāo)決定是否使用這種時序優(yōu)化手段。 信號敏感表 1 信號敏感表:VHDL的process后、Verilog的always后的信號列表,模塊的啟動由信號敏感表中
14、的信號來觸發(fā)。 2 時序邏輯:在信號敏感表寫明時鐘信號的正負(fù)觸發(fā)沿即可; 3 組合邏輯:-將進(jìn)程中使用到的所有輸入信號和條件判斷信號都列在信號敏感表中;-不完整的信號敏感表會造成前仿真結(jié)果和綜合、實現(xiàn)后仿真結(jié)果不一致; -不同的綜合工具處理方法不一樣。一般綜合軟件的默認(rèn)做法是,將處理進(jìn)程中用到的所有輸入和條件判斷信號都默認(rèn)添加到綜合結(jié)果的信號敏感表中,并對原設(shè)計敏感表中遺漏的信號給出警告信息。 復(fù)位邏輯 1 復(fù)位方式:-與設(shè)計內(nèi)容有關(guān);-與目標(biāo)器件的底層硬件結(jié)構(gòu)密切相關(guān)。 2 異步復(fù)位 vs.同步復(fù)位:-如果信號敏感表中含有復(fù)位信號的正沿或負(fù)沿觸發(fā),則屬于異步復(fù)位邏輯;-一般來說,采用同步復(fù)位
15、邏輯的設(shè)計工作頻率較高;-使用異步復(fù)位邏輯的設(shè)計較簡單; 3 對于全局復(fù)位邏輯,不同廠商的器件的推薦設(shè)計不同:-對于CPLD,一般推薦使用異步的全局復(fù)位邏輯;-Xilinx的新型FPGA器件不推薦使用全局復(fù)位邏輯;-Lattice的多數(shù)FPGA器件推薦使用全局復(fù)位資源 。 有限狀態(tài)機(jī)(FSM)設(shè)計 1 有限狀態(tài)機(jī)是重要的邏輯設(shè)計方法,通過狀態(tài)轉(zhuǎn)移圖可以將復(fù)雜的控制時序分解為狀態(tài)之間的轉(zhuǎn)換關(guān)系。 2 狀態(tài)機(jī)類型:-Moore型:狀態(tài)機(jī)的輸出僅是當(dāng)前狀態(tài)的函數(shù),且僅在時鐘跳變時發(fā)生變化;-Mealy型:狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和當(dāng)前輸入的函數(shù),任何輸入信號的變化都可能引起輸出信號的變化,不與時鐘同步
16、。 3 狀態(tài)機(jī)的編碼:-二進(jìn)制編碼 vs. One-Hot編碼 -例:4個狀態(tài) -二進(jìn)制編碼:00, 01, 10, 11(或格雷碼等) -One-Hot編碼:0001, 0010, 0100, 1000-二進(jìn)制編碼使用較少的觸發(fā)器和較多的組合邏輯;適用于CPLD和小型狀態(tài)機(jī)設(shè)計; -One-Hot編碼使用較多的觸發(fā)器和較少的組合邏輯;適用于FPGA和大型狀態(tài)機(jī)設(shè)計;-可通過設(shè)置綜合軟件的選項來選擇狀態(tài)機(jī)編碼; 4 有限狀態(tài)機(jī)設(shè)計的方法有兩大類:-將狀態(tài)轉(zhuǎn)移和狀態(tài)操作和判斷寫在一個模塊里;-將狀態(tài)轉(zhuǎn)移寫成一個單獨(dú)的模塊,將狀態(tài)的操作和判斷寫到另一個模塊中; 5 其中后者是比較好的設(shè)計方式。-便
17、于閱讀、理解、維護(hù);-狀態(tài)轉(zhuǎn)移是用寄存器實現(xiàn)的,是同步時序部分;狀態(tài)的判斷是組合邏輯; -利于綜合工具優(yōu)化代碼; -利于用戶添加時序約束; -利于布局布線軟件對設(shè)計的實現(xiàn)。 6 個健壯的狀態(tài)機(jī)應(yīng)該具備初始化狀態(tài)和默認(rèn)狀態(tài)(缺省狀態(tài));-當(dāng)芯片加電或復(fù)位后,狀態(tài)機(jī)應(yīng)該能夠自動將所有判斷條件復(fù)位,并進(jìn)入初始化狀態(tài);-狀態(tài)機(jī)應(yīng)該有一個默認(rèn)狀態(tài),當(dāng)轉(zhuǎn)移條件不滿足或狀態(tài)發(fā)生突變時,保證邏輯不會陷入死循環(huán)。這就要求盡量使用完備的條件判斷語句。 -VHDL中,使用case語句時,要用when others建立默認(rèn)狀態(tài),使用ifthenelse語句時,用else指定默認(rèn)狀態(tài); -Verilog中,使用case
18、語句時,要用default建立默認(rèn)狀態(tài),使用ifelse語句時也要完備。 7 指定默認(rèn)的輸出值:-能夠防止無意生成的鎖存器;-輸出經(jīng)過一個寄存器,以獲得更好的時序環(huán)境; 8 狀態(tài)機(jī)輸出邏輯復(fù)用-如果在狀態(tài)機(jī)中有多個狀態(tài)都會執(zhí)行某項操作,則可以在狀態(tài)機(jī)外部定義這個操作的具體內(nèi)容,在狀態(tài)機(jī)中僅僅調(diào)用這個操作即可。-相當(dāng)于前面提到的資源共享。 9 HDL設(shè)計源代碼-作為好的源代碼,應(yīng)該包含文件頭和修訂列表(以獲得修改情況)。另外,每一個重要的操作和定義后都要加上注釋。-文件頭包含以下內(nèi)容: -模塊名 -文件名 -需要的庫 -模塊描述 -使用的仿真器-其運(yùn)行平臺和版本 -使用的綜合工具,其運(yùn)行平臺和版本 -作者 修訂列表包含以下內(nèi)容:-修訂版本號 -改動的時間-修訂者-改動的詳細(xì)描述 例:文件頭 - Module : MAC (Multiply Accumulate Unit) - File : mac.vhd - Library : ieee,. - Description : It is a general Purpose Multiply Accumulate Unit - Simulator : Modelsim 5.2 / Windows 95 - Synthesizer : Synplify / Windows95 - Author / Designer : Hari
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XPE銷售合同范本
- 勞務(wù)居間服務(wù)合同范本
- 化妝品合作合同范本
- 關(guān)于門窗合同范本
- 2024年廈門國際機(jī)場防爆安檢人員考試真題
- 加工電子合同范本
- 保安個人勞務(wù)派遣合同范本
- 2024年深圳市龍崗區(qū)青少年業(yè)余體校招聘筆試真題
- 2024年山東青島高新區(qū)營商環(huán)境觀察員社會招募筆試真題
- 農(nóng)資分公司加盟合同范例
- 激光雷達(dá)行業(yè)市場規(guī)模分析
- 高血壓性心臟病病例討論
- 規(guī)劃院所長述職報告
- 腦卒中后吞咽障礙患者進(jìn)食護(hù)理-護(hù)理團(tuán)標(biāo)
- 銷售人員商務(wù)禮儀培訓(xùn)通用課件
- 全國各省(直轄市、自治區(qū))市(自治州、地區(qū))縣(縣級市)區(qū)名稱一覽表
- 大學(xué)美育導(dǎo)引 課件 第五章 體驗人生在世-戲劇
- 大學(xué)美育導(dǎo)引 課件 第六章 沉浸光影世界-電影
- 化學(xué)品危險物質(zhì)替代技術(shù)
- 醫(yī)院收費(fèi)價格注意培訓(xùn)課件
- 臨港產(chǎn)業(yè)基地污水處理廠提標(biāo)改造工程設(shè)備及安裝工程招投標(biāo)書范本
評論
0/150
提交評論