




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1節(jié) 基本設計技巧乒乓操作 1 操作過程 2 從外部看,數(shù)據(jù)流沒有停頓的進出3 用低速模塊處理高速數(shù)據(jù)流 4 實際上,用兩個緩沖模塊實現(xiàn)了串并轉換,兩個預處理模塊并行,面積換速度; 串并轉換 串并轉換 1 FPGA設計的一個重要技巧 2 數(shù)據(jù)流處理的常用手段 3 面積與速度互換思想的直接體現(xiàn) 串并轉換的實現(xiàn)方法多種多樣,根據(jù)數(shù)據(jù)的排序和數(shù)量的要求,可以選用: 1 寄存器:小設計2 RAM:數(shù)據(jù)量比較大的情況 3 狀態(tài)機:復雜的串并轉換 流水線操作 1 流水線處理是高速設計中的一個常用設計手段 2 如果某個設計的處理流程分為若干步驟,而且整個數(shù)據(jù)處理是“單流向”的,即沒有反饋或者迭代運算,前一
2、個步驟的輸出是下一個步驟的輸入,則可以考慮采用流水線設計方法提高系統(tǒng)的工作頻率。 3 將適當劃分的n個操作步驟單向串連起來 4 數(shù)據(jù)流在流水線各個部分的處理,從時間上看是連續(xù)的 5 數(shù)據(jù)流依次流經(jīng)n個模塊,完成每個步驟的操作 6 流水線設計時,時序要進行合理安排,每個操作步驟的劃分要合理,仔細考慮各個步驟間的數(shù)據(jù)流量 7 如果前級操作時間恰好等于后級的操作時間,設計最為簡單,前級直接輸出到后級的輸入即可 8 如果前級操作時間大于后級的操作時間,則后級會經(jīng)常空閑。可以對前級的輸出數(shù)據(jù)適當緩存,再輸出到后級的輸入端 如果前級操作時間小于后級的操作時間,則必須通過復制邏輯,將數(shù)據(jù)流分流和并行預處理,
3、或者在前級對數(shù)據(jù)采用存儲、后處理方式,否則會造成后級數(shù)據(jù)溢出 數(shù)據(jù)接口的同步 1 兩種易出問題的設計習慣-手工加入非門調整數(shù)據(jù)延遲,從而保證本級時鐘對上級數(shù)據(jù)的建立、保持時間的要求-為了有穩(wěn)定的采樣,時而用正沿打一下數(shù)據(jù),時而用負沿打一下數(shù)據(jù),以調整數(shù)據(jù)的采樣位置 2 問題-一旦芯片更新?lián)Q代,或者移植到其它器件系列的芯片上,采樣實現(xiàn)必須重新設計-這兩種做法造成電路實現(xiàn)的時序余量不夠,一旦外界條件變換(比如溫度升高),采樣時序就有可能紊亂,造成電路不能完成預定的功能 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ù)轉換。在輸入端口使用上級時鐘寫數(shù)據(jù),在輸出端口使用本級時鐘讀數(shù)據(jù),就非第2節(jié) FPGA設計思考硬件描述語言的層次含義 HDL是目前數(shù)字ASIC、FPGA、CPLD等最重要的一種設計輸入方式: 1 利于自頂向下的設計 2 利于模塊劃分與復用 3 可移植性好、通用性好 4 與工藝無關等 常用的概念層次 系統(tǒng)級 功能模塊級 行為級 寄存器轉移級 門級 Coding Style 1 使用高層次HDL進行硬件設計,所帶來
5、的問題是設計者的設計思考與實際電路結構是脫節(jié)的; 2 實際設計中,由于每個設計者對語言規(guī)則、電路行為的理解不同,編程風格不同,往往對同樣的系統(tǒng)功能,描述的方式是不一樣的。所綜合出來的電路結構更是大相逕庭; 即使最后綜合出來的電路都能實現(xiàn)相同的邏輯功能,其復雜程度和延時特性都會有較大差別; 與設計層次有關; 3 與綜合工具相關;-揮綜合工具的最大潛能-不同綜合工具對一些語法細節(jié)的解釋略有不同。 4 與器件的硬件結構相關-充分、合理的使用硬件資源 分層次的模塊化設計 1 結構層次化編碼是模塊化設計思想的一種體現(xiàn)。目前大型設計中必須采用結構層次化編碼風格,以提高代碼的可讀性,易于模塊劃分,易于分工協(xié)
6、作,易于設計仿真測試激勵; 2 最基本的結構化層次由一個頂層模塊和若干個子模塊構成,每個子模塊根據(jù)需要還可以包含自己的子模塊。 3 結構的層次不宜太深; 4 頂層模塊僅包含對所有模塊的組織和調用; 5 所有I/O信號的描述在頂層模塊完成; 6 子模塊之間可以有接口;不要建立子模塊之間跨層次的接口; 7 子模塊的合理劃分很重要,應該綜合考慮子模塊的功能、結構、時序、復雜度等多方面因素。 模塊劃分的技巧 1 結構層次化設計方法的第一個要點就是模塊劃分,模塊劃分非常重要,關系到能否最大程度上發(fā)揮項目成員協(xié)同設計的能力,更重要的是它直接決定著設計的綜合、實現(xiàn)的耗時與效率。2 模塊劃分的基本原則如下:-
7、對每個同步時序設計的子模塊的輸出使用寄存器,有利于綜合工具對邏輯進行優(yōu)化;-關的邏輯或可以復用的邏輯劃分在同一模塊內; -將不同優(yōu)化目標的邏輯分開;-將松約束的邏輯歸到同一模塊;-將存儲邏輯獨立劃分成模塊;-合適的模塊規(guī)模。 盡量避免使用鎖存器 1 寄存器:時鐘沿敏感,利用時鐘沿確定數(shù)據(jù)傳輸?shù)捷敵龅臅r刻; 2 鎖存器:電平敏感,只要時鐘是高電平(或低電平),就允許數(shù)據(jù)從輸入傳輸?shù)捷敵觥?3 鎖存器會造成設計和時序驗證中的各種困難。-鎖存器對輸入數(shù)據(jù)的毛刺非常敏感,會將其傳送到輸出-軟件無法確定使用鎖存器的設計人員的設計意圖;-其他設計者不容易進行設計移植和代碼重用。 4 FPGA擁有大量的寄存
8、器,基于鎖存器的設計比基于寄存器的設計要占用更多的邏輯資源,性能降低。 5 如果堅持用鎖存器設計必須保證輸入信號絕對沒有毛刺,且滿足保持時間。6 同步時序設計應該盡量避免使用鎖存器Latch; 7 綜合出鎖存器的主要原因:-不完全的條件判斷語句;-設計中有組合邏輯的反饋環(huán)路等異步邏輯。 8 防止產(chǎn)生不必要鎖存器的措施:-用完整的ifelse語句;-檢查設計中是否含有組合邏輯反饋環(huán)路;-為每個輸入條件,設計輸出操作,對case語句設置default操作,在狀態(tài)機中最好有一個default的狀態(tài)轉移,每個狀態(tài)最好有一個default的操作;-在使用case語句時,附加“full case”約束,以
9、便將其綜合為完全的條件case語句; -仔細檢查綜合軟件的綜合報告,目前大多數(shù)綜合軟件對綜合出的鎖存器會報告“warning”。異步時鐘域之間的數(shù)據(jù)交換第3節(jié) FPGA其他技巧優(yōu)化時序 1 可以使用pipelining、retiming、register balancing等時序優(yōu)化方法; 2 對設計中較長的組合邏輯路徑進行分割和平衡,在一定程度上提高設計的工作頻率; 3 目前綜合軟件能夠根據(jù)用戶的參數(shù)配置,自動運用這些技術。 模塊復用與資源共享 1 舉例:補碼平方和 module resource_share (data_in, square); input 7:0 data_in; /輸入
10、是補碼 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 舉例:補碼平方和module resource_share (data_in, square); input 7:0 data_in; /輸入是補碼 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進行綜合,關閉了“resource sharing”等所有優(yōu)化選項; 2 不同的綜合軟件,同一軟件的不同版本、不同的優(yōu)化參數(shù)設置、不同的目標器件等因素都可能造成不同的綜合結果; 3 目前很多綜合軟件都有“resource sharing”或類似的優(yōu)化選項,軟件在邏輯功能不變的情況下進行資源共享。上例中,如果打開Synplify的“resource sharing”選項,則綜合結果與第二種代碼描述的綜合結果完全一致;
12、4 不能因為綜合軟件的優(yōu)化能力增強,而片面的依靠它,還是要養(yǎng)成好的coding style。 -綜合工具的優(yōu)化能力還是有限的;-依靠綜合工具的優(yōu)化能力并不可靠。 邏輯復制 1 邏輯復制是通過增加面積而改善時序條件的優(yōu)化方法; 2 如果某個信號需要驅動后級的很多單元,為了增加這個信號的驅動能力,就可以復制生成這個信號的邏輯,使多路同頻同相的信號驅動后續(xù)電路; 3 可見,邏輯復制與資源共享,仍然體現(xiàn)了速度和面積的平衡問題。一個側重于速度目標,一個側重于面積目標。 邏輯復制: 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)擴展 1 香農(nóng)擴展(布爾邏輯擴展)也是一種通過邏輯復制、增加面積、提高速度的時序優(yōu)化方法; 2 是卡諾邏輯化簡的反向操作。 3 通過增加多路選擇器,縮短了某個優(yōu)先級高、但組合路徑長的信號的路徑時延,從而提高該關鍵路徑的工作頻率。 4 優(yōu)化目標決定是否使用這種時序優(yōu)化手段。 信號敏感表 1 信號敏感表:VHDL的process后、Verilog的always后的信號列表,模塊的啟動由信號敏感表中
14、的信號來觸發(fā)。 2 時序邏輯:在信號敏感表寫明時鐘信號的正負觸發(fā)沿即可; 3 組合邏輯:-將進程中使用到的所有輸入信號和條件判斷信號都列在信號敏感表中;-不完整的信號敏感表會造成前仿真結果和綜合、實現(xiàn)后仿真結果不一致; -不同的綜合工具處理方法不一樣。一般綜合軟件的默認做法是,將處理進程中用到的所有輸入和條件判斷信號都默認添加到綜合結果的信號敏感表中,并對原設計敏感表中遺漏的信號給出警告信息。 復位邏輯 1 復位方式:-與設計內容有關;-與目標器件的底層硬件結構密切相關。 2 異步復位 vs.同步復位:-如果信號敏感表中含有復位信號的正沿或負沿觸發(fā),則屬于異步復位邏輯;-一般來說,采用同步復位
15、邏輯的設計工作頻率較高;-使用異步復位邏輯的設計較簡單; 3 對于全局復位邏輯,不同廠商的器件的推薦設計不同:-對于CPLD,一般推薦使用異步的全局復位邏輯;-Xilinx的新型FPGA器件不推薦使用全局復位邏輯;-Lattice的多數(shù)FPGA器件推薦使用全局復位資源 。 有限狀態(tài)機(FSM)設計 1 有限狀態(tài)機是重要的邏輯設計方法,通過狀態(tài)轉移圖可以將復雜的控制時序分解為狀態(tài)之間的轉換關系。 2 狀態(tài)機類型:-Moore型:狀態(tài)機的輸出僅是當前狀態(tài)的函數(shù),且僅在時鐘跳變時發(fā)生變化;-Mealy型:狀態(tài)機的輸出是當前狀態(tài)和當前輸入的函數(shù),任何輸入信號的變化都可能引起輸出信號的變化,不與時鐘同步
16、。 3 狀態(tài)機的編碼:-二進制編碼 vs. One-Hot編碼 -例:4個狀態(tài) -二進制編碼:00, 01, 10, 11(或格雷碼等) -One-Hot編碼:0001, 0010, 0100, 1000-二進制編碼使用較少的觸發(fā)器和較多的組合邏輯;適用于CPLD和小型狀態(tài)機設計; -One-Hot編碼使用較多的觸發(fā)器和較少的組合邏輯;適用于FPGA和大型狀態(tài)機設計;-可通過設置綜合軟件的選項來選擇狀態(tài)機編碼; 4 有限狀態(tài)機設計的方法有兩大類:-將狀態(tài)轉移和狀態(tài)操作和判斷寫在一個模塊里;-將狀態(tài)轉移寫成一個單獨的模塊,將狀態(tài)的操作和判斷寫到另一個模塊中; 5 其中后者是比較好的設計方式。-便
17、于閱讀、理解、維護;-狀態(tài)轉移是用寄存器實現(xiàn)的,是同步時序部分;狀態(tài)的判斷是組合邏輯; -利于綜合工具優(yōu)化代碼; -利于用戶添加時序約束; -利于布局布線軟件對設計的實現(xiàn)。 6 個健壯的狀態(tài)機應該具備初始化狀態(tài)和默認狀態(tài)(缺省狀態(tài));-當芯片加電或復位后,狀態(tài)機應該能夠自動將所有判斷條件復位,并進入初始化狀態(tài);-狀態(tài)機應該有一個默認狀態(tài),當轉移條件不滿足或狀態(tài)發(fā)生突變時,保證邏輯不會陷入死循環(huán)。這就要求盡量使用完備的條件判斷語句。 -VHDL中,使用case語句時,要用when others建立默認狀態(tài),使用ifthenelse語句時,用else指定默認狀態(tài); -Verilog中,使用case
18、語句時,要用default建立默認狀態(tài),使用ifelse語句時也要完備。 7 指定默認的輸出值:-能夠防止無意生成的鎖存器;-輸出經(jīng)過一個寄存器,以獲得更好的時序環(huán)境; 8 狀態(tài)機輸出邏輯復用-如果在狀態(tài)機中有多個狀態(tài)都會執(zhí)行某項操作,則可以在狀態(tài)機外部定義這個操作的具體內容,在狀態(tài)機中僅僅調用這個操作即可。-相當于前面提到的資源共享。 9 HDL設計源代碼-作為好的源代碼,應該包含文件頭和修訂列表(以獲得修改情況)。另外,每一個重要的操作和定義后都要加上注釋。-文件頭包含以下內容: -模塊名 -文件名 -需要的庫 -模塊描述 -使用的仿真器-其運行平臺和版本 -使用的綜合工具,其運行平臺和版本 -作者 修訂列表包含以下內容:-修訂版本號 -改動的時間-修訂者-改動的詳細描述 例:文件頭 - 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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 核算范圍確定試題及答案
- 2024年西醫(yī)臨床職業(yè)技能試題及答案
- 蘇教版初中體育《籃球(變向滑步變向運球)》教學設計
- 發(fā)掘潛力2025年公共衛(wèi)生執(zhí)業(yè)醫(yī)師考試試題及答案
- gsp運輸司機培訓試題及答案
- 護士資格證考試案例討論技巧考題及答案
- 健康廣州面試題及答案
- 小學教學科學試題及答案
- 心理咨詢師的信任建立技巧試題及答案
- 四川省巴中市2025屆高考全國統(tǒng)考預測密卷物理試卷含解析
- GB/T 8642-2002熱噴涂抗拉結合強度的測定
- GB/T 19289-2019電工鋼帶(片)的電阻率、密度和疊裝系數(shù)的測量方法
- 九年級道德與法治第一學期期中考試質量分析報告
- GB/T 12750-2006半導體器件集成電路第11部分:半導體集成電路分規(guī)范(不包括混合電路)
- GB 3150-2010食品安全國家標準食品添加劑硫磺
- 沼氣發(fā)電項目建議書
- 鴿巢問題(例1、例2)課件
- 大學物理上總復習課件
- 說課的基本步驟與方法課件
- ICH-Q9:風險管理分享課件
- 整流變壓器試驗報告
評論
0/150
提交評論