




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、FPGA開發流程及編程思想 FPGA開發流程及編程思想開發流程及編程思想 FPGA開發流程及編程思想 簡化的開發流程簡化的開發流程 需求定義 設計輸入 設計綜合 設計實現 配置下載 功能仿真 系統測試 FPGA開發流程及編程思想 設計驗證設計驗證 實際的開發流程實際的開發流程 需求定義 設計輸入 設計綜合 設計實現 配置下載 綜合結果分析 實際電路驗證 靜態時序分析 時序仿真 系統整合驗證 功能仿真 FPGA開發流程及編程思想 需求定義需求定義 l需求決定設計 “這個設計是做什么用的?” “要實現什么功能?” “有什么要注意的地方?” l需求是容易發生變更的 大師說過,沒有哪個設計需求更改少于
2、三次的,唯一一次 只更改過兩次需求的情況,是那個可憐的家伙在送第三次 變更需求來的路上,被車給撞了。 l你不能決定需求是否發生變更,但你可以做到 當需求更改時,你所需要做出的調整最小。 FPGA開發流程及編程思想 設計輸入設計輸入 l原理圖輸入(對大型設計很少使用) l硬件描述語言VerilogHDL,VHDL lHDL語言是硬件描述語言,不是硬件設計語言 l用硬件電路設計思想來編寫HDL FPGA開發流程及編程思想 先有雞,還是先有蛋?先有雞,還是先有蛋? always(posedge clk) if(!rst_n) a = 8b0; else a = a + 1b1; ? 是因為,我們這樣
3、寫了,a就會被綜合成同步計數器; 還是因為,這樣寫a會被綜合成同步計數器,我們才如上寫。 FPGA開發流程及編程思想 你知道它們會綜合成什么?你知道它們會綜合成什么? 代碼1: always (posedge clk) begin if (ce) b = in, b0:14; end assign out = b15; 代碼2: reg 31:0 c511:0 ; always ( posedge clk) begin addr_reg = addr; if (we) caddr = din; end assign out = caddr_reg; FPGA開發流程及編程思想 設計綜合設計綜合
4、 l軟件開發工具 lAltera: QuartusII lXilinx : ISE lLattice:IspLever l第三方 Synplicity: Synplify Pro FPGA開發流程及編程思想 綜合結果分析綜合結果分析 l看看綜合結果,了解你的代碼消耗了多少reg、 lut資源,綜合估計頻率多快,最差路徑是哪條。 l盡量消除每一個warning,如果warning無法消 除,請確認該warning于結果無害。 l有沒有這種情況:代碼A比代碼B,速度更快、 消耗資源更少、功能更強、運行更穩定? FPGA開發流程及編程思想 功能仿真功能仿真 l仿真工具 lAltera: Quartu
5、sII lXilinx: ISE lLattice: IspLever l第三方Monter:ModelSim FPGA開發流程及編程思想 仿真測試方法仿真測試方法 l正確性測試 又稱功能測試,基本的方法是構造一些合理輸 入,檢查是否得到期望的輸出。 l容錯性測試 檢查程序在異常條件下的行為。通常構造一些 不合理的輸入來引誘程序出錯。容錯性好的程 序能確保系統不發生無法意料的事故。 FPGA開發流程及編程思想 設計實現設計實現 l實現工具 lAltera: QuartusII lXilinx: ISE lLattice:IspLever FPGA開發流程及編程思想 靜態時序分析靜態時序分析 l
6、觀察Static Timing Analyse結果,原則上不允 許出現時序違規。 l如果出現時序違規 (1)調整實現選項 (2)修改約束條件 (3)修改代碼拆分最差路徑 其中修改代碼改掉最差路徑是治本之法。 FPGA開發流程及編程思想 下載調試下載調試 l內嵌式邏輯分析儀 Altera:SignalTap Xilinx: ChipScope Lattice:Reveal l示波器 示波器也是有力的調試工具。 FPGA開發流程及編程思想 調試困境調試困境 l功能仿真,看不出錯誤 l用示波器點測,看不出錯誤 l用內嵌式邏輯分析儀捕獲數據,看不出錯誤 l最終結果就是不對 FPGA開發流程及編程思想
7、軟件調試軟件調試 l主要指通過功能仿真(ModelSim)查找問題 實踐證明,很多后期調試發現的問題,其實在 仿真階段就能發現,只是因為測試激勵不完備, 前期仿真沒能暴露出來。 FPGA開發流程及編程思想 硬件調試硬件調試 l首先,請確認你的硬件工作正常 l通過示波器、內嵌式邏輯分析儀等工具獲取 波形或數據查找問題 l除了你對自己程序的了解,還需要熟悉所用 FPGA的架構、資源等情況,還需要清楚外 接芯片的接口時序,了解外圍電路的分布。 FPGA開發流程及編程思想 調試方法調試方法 l逐級跟蹤 如果不是最后一步出錯,那就是最后一步的前 一步出錯;如果不是前一步出錯,就是前一步 的前一步出錯,總
8、之,有一步出錯,找到 那一步。 l使用多種工具 不論是ModelSim、SignalTap、ChipScope、 Reveal、示波器各有各的優缺點。 在合適的地方,選用合適的工具。 FPGA開發流程及編程思想 倒霉定律倒霉定律 l擔心有理 你所擔心的地方,通常是錯誤發生的地方。你 很確定的地方,通常很少發生錯誤,你不能很 確定的地方,就難說了。 l人與機器 與機器相比,人更容易犯錯誤。芯片沒有正常 工作,我們會懷疑芯片壞了,但大多數時候會 發現是芯片沒有配置對(程序原因),或者是 有只管腳短路或虛焊了(還是人為)。 FPGA開發流程及編程思想 不要不要C,要軟件工程,要軟件工程 l雖然Ver
9、ilog HDL語法與C語言有些相似,但是 有些在C語言好的語法習慣,于FPGA設計而 言卻是不合適的,甚至是背道而馳的。 l我們需要的是軟件工程的思想。 FPGA開發流程及編程思想 拋棄你的拋棄你的C語言習慣語言習慣 assign data = (frame_head_valid) ? frame_head_reg : (rtl8305_mtxen_dly) ? rtl8305_mtxd_dly : (frame_tail_valid) ? frame_tail_reg : 8h00; always(posedge clk or negedge rst_n) if(!rst_n) cnt =
10、 10d639 | (sync = 1b0 else cnt = cnt + 1; 例1: 例2: FPGA開發流程及編程思想 軟件工程軟件工程 l軟件工程經過三十年的發展,已經積累了相當 多的方法,但這些方法不是嚴密的理論。實踐 人員不應該教條地套用方法,更重要的是學會 “選擇合適的方法”和“產生新方法”。 l程序員腦子里的軟件工程觀念會無形地支配其 怎么去做事情。 FPGA開發流程及編程思想 把軟件工程思想植入你的設計把軟件工程思想植入你的設計 l軟件工程的目標是提高軟件的質量與生產率, 最終實現軟件的工業化生產。 l好的軟件工程方法可以同時提高質量與生產率, 質量與生產率之間不存在根本的
11、對立。 l質量第一,生產率第二。如果一開始就追求高 生產率,容易使人急功近利,留下隱患。寧可 進度慢些,也要保證每個環節的質量,以圖長 遠利益。 FPGA開發流程及編程思想 軟件工程模型軟件工程模型 線性模型線性模型 漸增式模型漸增式模型 FPGA開發流程及編程思想 軟件開發的基本策略軟件開發的基本策略 l復用復用 模塊標準化模塊標準化 復用就是指“利用現成的東西”。復用不僅要使自己 拿來方便,還要讓別人拿去方便。 l分而治之分而治之 模塊劃分模塊劃分 把復雜的問題拆分成較為簡單的一個個子問題,逐個 解決。 l優化與折衷優化與折衷 優化工作不是可有可無的事情,而是必須要做的事情。 折衷是指通過
12、協調各個質量因素,實現整體質量的最 優。 FPGA開發流程及編程思想 一些有爭議的觀點一些有爭議的觀點 l爭議:編程時是否應該多使用技巧? l觀點:就軟件開發而言,技巧的優點在于能另 辟蹊徑地解決一些問題,缺點是技巧并不為人 熟知。若在程序中用太多的技巧,可能會留下 隱患,別人也難以理解程序。 鑒于一個局部的優點對整個系統而言是微 不足道的,而一個錯誤則可能是致命的。作者 建議用自然的方式編程,少用技巧。簡單的說, 就是少一些個性,多一些共性。 FPGA開發流程及編程思想 一些有爭議的觀點一些有爭議的觀點 l軟件中的錯誤是否可按嚴重程度分等級? l作者觀點:在定量分析時,可以將錯誤分等級, 以
13、便于管理。 l開發人員應該意識到:所有的錯誤都是嚴重的, 不存在微不足道的錯誤。這樣才能少犯錯誤。 FPGA開發流程及編程思想 需求分析為什么困難需求分析為什么困難 l有幾種原因使需求分析變得困難 l(1)客戶說不清楚需求; l(2)需求自身經常變動; l(3)分析人員或客戶理解有誤。 FPGA開發流程及編程思想 需求自身經常變動需求自身經常變動 l讓我們先接受“需求會變動”這個事實吧,免 得在需求變動時驚慌失措。 l盡可能地分析清楚哪些是穩定的需求,哪些是 易變的需求。以便在進行系統設計時,將軟件 的核心建筑在穩定的需求上,否則將會吃盡苦 頭。 l一定要清楚“做什么”和“不做什么”。如果 含
14、含糊糊,日后扯皮的事情就多。 FPGA開發流程及編程思想 程序設計程序設計 l參考編程規范 l內功深厚的武林高手出招往往平淡無奇。同理, 編程高手也不會用奇門怪招寫程序。良好的編 程風格是產生高質量程序的前提。 l編程技巧博大精深,非簡單語言可以描述。掌 握語法基礎,博覽眾家代碼,多實踐,35年, 或有所成 FPGA開發流程及編程思想 測試與改錯測試與改錯 l編程大師說:“任何一個程序,無論它多么小,總存在著錯誤。” l初學者不相信大師的話,他問:“如果一個程序小得只執行一個 簡單的功能,那會怎樣?” l“這樣的一個程序沒有意義,”大師說,“但如果這樣的程序存 在的話,操作系統最后將失效,產生
15、一個錯誤。” l但初學者不滿足,他問:“如果操作系統不失效,那么會怎樣?” l“沒有不失效的操作系統,”大師說,“但如果這樣的操作系統 存在的話,硬件最后將失效,產生一個錯誤。” l初學者仍不滿足,再問:“如果硬件不失效,那么會怎樣?” l大師長嘆一聲道:“沒有不失效的硬件。但如果這樣的硬件存在 的話,用戶就會想讓那個程序做一件不同的事,這件事也是一個 錯誤。” l沒有錯誤的程序世間難求。 FPGA開發流程及編程思想 測試的階段測試的階段 設計驗證設計驗證 需求定義 設計輸入 設計綜合 設計實現 配置下載 綜合結果分析 實際電路驗證 靜態時序分析 時序仿真 系統整合驗證 功能仿真 FPGA開發
16、流程及編程思想 測試的目的測試的目的 l測試的目的是為了發現盡可能多的缺陷。 l測試總是先假設程序中存在缺陷,再通過仿 真調試來發現并最終改正缺陷。理解這一點 至關重要。 l如果說測試的目的是為了說明程序中沒有缺 陷,那么測試人員就會向這個目標靠攏,因 而下意識地選用一些不易暴露錯誤的測試示 例。這樣的測試是虛假的。 FPGA開發流程及編程思想 測試的真理測試的真理 l測試只能證明缺陷存在,而不能證明缺陷不 存在。 l這個真理告訴我們,對于一個復雜的系統而 言,無論采取什么樣的測試手段都不能證明 缺陷已經不復存在。 l在實踐中,考慮到時間、費用等限制,不允 許無休止地測試。 FPGA開發流程及
17、編程思想 測試分工測試分工 l開發人員應該執行“白盒”測試,即測試源程 序的邏輯結構以及實現細節(“白盒”指看得 見程序的內部結構)。 l獨立測試小組應該執行“黑盒”測試,即按照 規格說明來測試程序是否符合要求(“黑盒” 指看不見程序的內部結構)。 l測試有助于提高軟件的質量,但是提高軟件的 質量不能依賴于測試。軟件的高質量是開發設 計出來的,而不是靠測試修補出來的。 FPGA開發流程及編程思想 正確對待測試正確對待測試 l一個錯誤自身也許很微小,但是程序存在 錯誤這件事很嚴重。能否做好測試與改錯 工作,思想認識和辦事態度是最關鍵的。 l程序員應該把測試當成份內之事,不要依 賴于外界的“黑盒測試”。 l程序出了錯誤一定要改錯,但是“編寫優 質無錯”的程序才是根本的解決之道。 FPGA開發流程及編程思想 維護維護 l軟件維護是既費神又費錢的工作。 l良好的編程風格意味著良好的可理解性,可以 降低維護的代價。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購銷石材合同(4篇)
- 機械工程自動化生產線試題庫
- 幸福中國演講稿(8篇)
- 歷史文獻研究試題集
- 合同協議書怎么簽字合法
- 軟件測試基礎知識梳理試題及答案
- 嵌入式開發團隊的角色分配試題及答案
- 監理師考試資料如何選擇試題及答案2025年
- 三模物理試題及答案
- 做肉餅的試卷試題及答案
- 人教版數學六年級下《動手操作題》復習訓練
- 強透水性地質條件下泥水盾構泥漿成膜技術
- 園林給排水工程課件
- 苗木遷移工程施工方案
- DB4404T36-2022預立醫療照護計劃(ACP)溝通指南
- 企業信訪工作責任制實施細則
- GB/T 7124-2008膠粘劑拉伸剪切強度的測定(剛性材料對剛性材料)
- GB/T 31899-2015紡織品耐候性試驗紫外光曝曬
- GB/T 2410-1980透明塑料透光率和霧度試驗方法
- 2019年房地產估價師試題及答案:《理論與方法》
- 壓力變送器檢定裝置計量標準技術報告
評論
0/150
提交評論