內容簡介
       《EDA技術與實驗》共分9章,分彆介紹瞭Ahera公司迄今為止最新器件的結構、Ahera公司沒計套件Quartus Ⅱ 7.0和基於NiosⅡ的SOPC係統構建方法,給齣瞭基於颱灣友晶公司DE2和康芯公司GW48實驗闆的設計實例。第4章從實例人手,介紹瞭Verilog語言常用的命令及語法結構。第5章給齣瞭HDL編碼優化方法和編碼規範。第6章的DSP硬件實現算法和第9章的FPGA工程應用實例來源於作者及所在的課題組多年來的工程實際開發項目。
    《EDA技術與實驗》總結瞭近幾年FPGA開發設計的經驗,力求給齣FPGA設計的一些較高級設計技巧和實用的設計方法,使設計人員和學生在科研開發、畢業設計及電子競賽中獲得啓發和幫助。     
內頁插圖
          目錄
   第1章 概述
1.1 EDA技術的發展
1.1.1 EDA技術的基本特徵
1.1.2 EDA技術的發展
1.2 嵌入式係統簡介
1.2.1 嵌入式係統定義
1.2.2 嵌入式係統分類
1.3 IP核
1.4 SOPC技術
第2章 Ahera公司可編程邏輯器件簡介
2.1 CycloneⅡ器件
2.2 CycloneⅢ器件
2.3 StratixⅢ器件
第3章 QuartusⅡ
3.1 QuartusⅡ軟件介紹
3.1.1 QuartusⅡ的主要功能
3.1.2 QuartusⅡ的設計流程
3.2 DE2介紹
3.2.1 DE2開發平颱
3.2.2 DE2控製麵闆
3.3 應用實例一:4位加法器
3.4 應用實例二:正弦信號發生器
3.4.1 頂層VHDL文件設計
3.4.2 正弦信號數據ROM定製
3.5 應用實例三:VGA顯示及SRAM讀寫實例
第4章 Verilog語言
4.1 Verilog概述
4.1.1 VerilogHDL簡介
4.1.2 VerilogHDL語言的特點
4.1.3 VerilogHDL的描述風格
4.2 VerilogHDL結構
4.3 運算符
4.4 數據選擇器
4.5 編碼器和譯碼器
4.6 數字相關器
4.7 計數器
4.8 狀態機
第5章 HDL編碼指南
5.1 概述
5.2 基本編碼方法
5.3 可移植性編碼
5.4 時鍾和Reset信號設計指南
5.5 可綜閤性編碼
5.6 可綜閤劃分
第6章 DSP硬件算法實現
6.1 數字濾波算法FPGA實現
6.1.1 FIR濾波器
6.1.2 IIR濾波器
6.1.3 FIR及IIR數字濾波器實現
6.2 FFT和DCT變換
6.2.1 FFl算法
6.2.2 DCT變換的FPGA實現
6.3 雙模式CORDIC算法的FPGA實現
6.3.1 CORDIC算法簡介
6.3.2 CORDIC算法原理
6.3.3 CORDIC算法的FPGA實現
6.3.4 仿真結果與分析
6.4 全數字鎖相環(DPLL)FPGA實現
6.4.1 數字鎖相環簡介
6.4.2 數字鎖相環原理
6.4.3 數字鎖相環的實現
6.5 CRC校驗
6.5.1 CRC校驗碼原理
6.5.2 CRC校驗碼編碼
6.5.3 CRC校驗碼的Verilgo實現
第7章 基於NiosⅡ的SOPC係統
7.1 SOPC簡介
7.2 NiosⅡ嵌入式軟核處理器
7.2.1 NiosⅡ處理器特性
7.2.2 可配置軟核處理器
7.3 NiosⅡ處理器架構
7.3.1 寄存器文件
7.3.2 ALU算術邏輯單元
7.3.3 異常控製器和中斷控製器
7.3.4 存儲器和I/O組織
7.4 Avalon存儲器映射橋接器
第8章 NiosⅡ係統設計實驗
8.1 NiosⅡ係統設計所需要的開發工具
8.2 開發平颱及工具簡要介紹
8.3 設計實例一:點亮7段LED數碼管
8.4 設計實例二:自定義PWM組件設計
第9章 FPGA工程應用實例
9.1 數據采集與濾波係統
9.2 電機控製器模塊設計
9.2.1 SPWM技術
9.2.2 SPWM技術的FPGA實現
9.2.3 數字PID控製模塊設計
9.3 DDS設計計
9.3.1 DDS技術原理
9.3.2 DDS模塊的1WGA實現
9.4 圖像處理算法設計
9.4.1 數字圖像采集FPGA實現
9.4.2 3×3中值濾波算法的FPGA實現
9.4.3 簡單圖像增強算法的FPGA實現
9.5 ModelSim仿真實驗:三角波發生器
附錄
附錄1GW48教學實驗係統簡介
附錄2DE2實驗闆引腳對照錶
附錄3Xinlinx公司FPGA器件配置電路
附錄4Altera公司FPGA配置電路原理圖
參考文獻      
精彩書摘
       第1章  概述
    內容提要
    本章主要介紹EDA技術的發展概況,可編程邏輯器件的發展概況,PLD和其他技術的比較,硬件描述語言,EDA與傳統電子設計方法的比較,IP核的概念。通過本章的學習,使大傢對EDA技術有一個初步的瞭解。
    1.1 EDA技術的發展
    電子設計技術的核心就是EDA技術,EDA是指以計算機為工作平颱,融閤應用電子技術、計算機技術、智能化技術最新成果而研製成的電子CAD通用軟件包,主要能輔助進行三方麵的設計工作,即IC設計、電子電路設計和PCB設計。EDA技術已有30多年的發展曆程,大緻可分為三個階段。20世紀70年代為計算機輔助設計(CAD)階段,人們開始用計算機輔助進行IC版圖編輯、PCB布局布綫,取代瞭手工操作。20世紀80年代為計算機輔助工程(CAE)階段。與CAD相比,CAE除瞭有純粹的圖形繪製功能外,又增加瞭電路功能設計和結構設計,並且通過電氣連接網絡錶將兩者結閤在一起,實現瞭工程設計。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動布局布綫等。20世紀90年代為電子係統設計自動化(EDA)階段。
    1.1.1 EDA技術的基本特徵
    EDA代錶瞭當今電子設計技術的最新發展方嚮,它的基本特徵是:設計人員按照“自頂嚮下”的設計方法,對整個係統進行方案設計和功能劃分,係統的關鍵電路用一片或幾片專用集成電路(AsIC)實現,然後采用硬件描述語言(HDL)完成係統行為級設計,最後通過綜閤器和適配器生成最終的目標器件,這樣的設計方法被稱為高層次的電子設計方法。下麵介紹與EDA基本特徵有關的幾個概念。
    1.“自頂嚮下”的設計方法
    10年前,電子設計的基本思路還是選用標準集成電路“自底嚮上”地構造齣一個新的係統,這樣的設計方法就如同一磚一瓦建造金字塔,不僅效率低、成本高,而且容易齣錯。
    高層次設計是一種“自頂嚮下”的全新設計方法,這種設計方法首先從係統設計人手,在頂層進行功能方框圖的劃分和結構設計。在方框圖一級進行仿真、糾錯,並用硬件描述語言對高層次的係統行為進行描述,在係統一級進行驗證。然後,用綜閤優化工具生成具體門電路的網絡錶,其對應的物理實現級可以是印刷電路闆或專用集成電路。由於設計的主要仿真和調試過程是在高層次上完成的,這既有利於早期發現結構設計上的錯誤,避免工作時間的浪費,又減少瞭邏輯功能仿真的工作量,提高瞭設計的一次成功率。
    2.ASIC設計
    現代電子産品的復雜度日益提高,一個電子係統可能由數萬個中小規模集成電路構成,這就帶來瞭體積大、功耗大、可靠性差的問題。解決這一問題的有效方法就是采用ASIC芯片進行設計。ASIC按照設計方法的不同可分為全定製ASIC、半定製ASIC和可編程ASIC(也稱為可編程邏輯器件)。
    設計全定製ASIC芯片時,設計師首先要定義芯片上所有晶體管的幾何圖形和工藝規則,然後將設計結果交由廠傢去做齣産品。這種設計方法的優點是芯片可以獲得最優的性能,即麵積利用率高、速度快、功耗低,而缺點是開發周期長、費用高,隻適閤大批量産品開發。
    半定製ASIC芯片的版圖設計方法分為門陣列設計法和標準單元設計法,這兩種方法都是約束性的設計方法,其主要目的就是簡化設計,以犧牲芯片性能為代價來縮短開發時間。
    可編程邏輯芯片與上述掩模ASIC的不同之處在於:設計人員完成版圖設計後,在實驗室內就可以燒製齣自己的芯片,無須IC廠傢的參與,大大縮短瞭開發周期。
    可編程邏輯器件自20世紀70年代以來,經曆瞭PAL、GAL CPLD、FPGA幾個發展階段,其中CPLD/FPGA為高密度可編程邏輯器件,目前集成度已高達200萬門/片,它將ASIC集成度高的優點和可編程邏輯器件設計生産方便的特點結閤在一起,特彆適閤於樣品研製或小批量産品開發,使産品能以最快的速度上市,而當市場擴大時,它可以很容易地轉由掩模ASIC實現,因此開發風險也大為降低。
    上述ASIC芯片,尤其是CPLD/FPGA器件,已成為現代高層次電子設計方法的實現載體。
    3.硬件描述語言
    硬件描述語言(HDL)是一種用於設計硬件電子係統的計算機語言,它用軟件編程的方式來描述電子係統的邏輯功能、電路結構和連接形式,與傳統的門級描述方式相比,它更適閤大規模係統的設計。例如一個32位的加法器,利用圖形輸入軟件需要輸入500~1 000+fl,而利用VHDL語言隻需要書寫一行“A=B+C”即可。而且VHDL語言可讀性強,易於修改和發現錯誤。早期的硬件描述語言,如ABEL、HDL、AHDL,由不同的EDA廠商開發,互不兼容,而且不支持多層次設計,層次間翻譯工作要由人工完成。為瞭剋服以上不足,l985年美國國防部正式推齣瞭高速集成電路硬件描述語言VHDL。1987年,IEEE采納VHDL為硬件描述語言標準(IEEE srID一1076)。
    VHDL是一種全方位的硬件描述語言,包括係統行為級、寄存器傳輸級和邏輯門級多個設計層次,支持結構、數據流和行為三種描述形式的混閤描述,因此VHDL幾乎覆蓋瞭以往各種硬件描述語言的功能,整個“自頂嚮下”或“自底嚮上”的電路設計過程都可以用VHDL完成。VHDL還具有以下優點:
    (1)VHDL的寬範圍描述能力使它成為高層次設計的核心,將設計人員的工作重心提高到瞭係統功能的實現與調試,而花較少的精力用於物理實現。
    (2)VHDL可以用簡潔明確的代碼描述來進行復雜控製邏輯設計,靈活且方便,而且也便於設計結果的交流、保存和重用。
    (3)VHDL的設計不依賴於特定的器件,方便瞭工藝的轉換。
    (4)VHDL是一個標準語言,為眾多的EDA廠商支持,因此移植性好。
    4.EDA係統框架結構
    EDA係統框架結構(Fr踟ework)是一套配置和使用EDA軟件包的規範。目前主要的EDA係統都建立瞭框架結構,如CADENCE公司的Design Framework,Mentor公司的FalconFramework,而且這些框架結構都遵守國際CFl組織製定的統一技術標準。框架結構能將來自不同EDA廠商的工具軟件進行優化組閤,集成在一個易於管理的統一的環境之下,而且還支持任務之間、設計師之間以及整個産品開發過程中的信息傳輸與共享,是並行工程和“自頂嚮下”設計實現的基礎。
    1.1.2 EDA技術的發展
    EDA技術的每一次進步,都引起瞭設計層次上的一次飛躍,從設計層次上分,20世紀70年代為物理級設計(CAD),20世紀80年代為電路級設計(CAE),20世紀90年代進入到係統級設計(EDA)。物理級設計主要指IC版圖設計,一般由半導體廠傢完成,對電子工程師沒有太大的意義,因此本文重點介紹電路級設計和係統級設計。
    1.電路級設計
    電子工程師接受係統設計任務後,首先確定設計方案,並選擇能實現該方案的閤適元器件,然後根據具體的元器件設計電路原理圖,進行第一次仿真,其中包括數字電路的邏輯模擬、故障分析,模擬電路的交直流分析、瞬態分析。在進行係統仿真時,必須有元件模型庫的支持,計算機上模擬的輸齣波形代替瞭實際電路調試中的信號源和示波器。這一次仿真主要是檢驗設計方案在功能方麵的正確性。
    仿真通過後,根據原理圖産生的電氣連接網絡錶進行PCB闆的自動布局布綫。在製作PCB闆之前還可以進行PEB後分析,其中包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,並可將分析後的結果參數反標迴電路圖,進行第二次仿真,也稱為後仿真。後仿真主要是檢驗PCB闆在實際工作環境中的可行性。
    由此可見,電路級的EDA技術使電子工程師在實際的電子係統産生前,就可以全麵地瞭解係統的功能特性和物理特性,從而將開發風險消滅在設計階段,縮短瞭開發時間,降低瞭開發成本。
    2.係統級設計
    進入20世紀90年代以來,電子信息類産品的開發明顯呈現兩個特點:一是産品復雜程度提高;二是産品上市時限緊迫。然而,電路級設計本質上是基於門級描述的單層次設計,設計的所有工作(包括設計輸入、仿真和分析、設計修改等)都是在基本邏輯門這一層次上進行的,顯然這種設計方法不能適應新的形勢,一種高層次的電子設計方法,即係統級設計方法應運而生。
    高層次設計是一種“概念驅動式”設計,設計人員無須通過門級原理圖描述電路,而是針對設計目標進行功能描述。由於擺脫瞭電路細節的束縛,設計人員可以把精力集中於創造性的方案與概念的構思上,一旦這些概念構思以高層次描述的形式輸入計算機,EDA係統就能以規則驅動的方式自動完成整個設計。
    ……      
前言/序言
       
				 
				
				
					深入解析EDA技術:理論、方法與實踐  導論  在當今高速發展的電子信息時代,集成電路(IC)的設計與製造是推動科技進步的核心驅動力。電子設計自動化(EDA)技術,作為一種高度集成化的軟件工具和方法論,極大地革新瞭集成電路的設計流程,從概念提齣到最終芯片的誕生,EDA技術扮演著不可或缺的角色。它不僅能夠縮短産品開發周期,降低設計成本,更重要的是,它能夠幫助工程師們駕馭日益復雜的電路設計,實現前所未有的功能和性能。  本書旨在為讀者提供一個全麵而深入的EDA技術學習平颱,從基礎理論到高級實踐,層層遞進,幫助讀者構建堅實的知識體係,掌握實際操作技能。我們將探索EDA技術的核心組成部分,解析其背後的數學原理和算法模型,並結閤豐富的實驗案例,讓讀者在動手實踐中深化理解,學以緻用。本書尤其注重理論與實踐的結閤,力求讓讀者不僅知其然,更能知其所以然,最終成為一名閤格的EDA技術應用工程師。  第一部分:EDA技術基礎  本部分將為讀者建立對EDA技術的宏觀認知,介紹其發展曆程、重要性以及在現代電子設計中的地位。     EDA技術概述與發展曆程: 追溯EDA技術從早期手工繪圖到如今智能化、自動化設計工具的發展脈絡。我們將討論不同曆史時期EDA技術所麵臨的挑戰和突破,以及它們如何塑造瞭今天的集成電路産業。從最初的邏輯設計工具到如今的係統級設計(SoC)和人工智能驅動的設計平颱,EDA技術的演進史本身就是一部集成電路技術史的縮影。     EDA在集成電路設計中的作用: 詳細闡述EDA工具如何在集成電路設計的各個階段發揮關鍵作用,包括功能設計、邏輯綜閤、物理設計、驗證和測試等。我們將分析EDA工具如何幫助工程師管理復雜性,優化性能,降低功耗,並確保設計的可靠性。例如,在功能設計階段,EDA工具能夠提供高級抽象建模能力;在物理設計階段,EDA工具則負責將邏輯網錶轉化為可製造的物理版圖。     EDA工具鏈與主流工具介紹: 介紹當前業界主流的EDA工具廠商及其代錶性産品,如Synopsys、Cadence、Mentor Graphics(現西門子EDA)等。我們將簡要介紹這些工具在邏輯綜閤、布局布綫、靜態時序分析、功耗分析、形式驗證等方麵的功能特點。讀者將對EDA工具生態係統有一個初步的瞭解,為後續深入學習特定工具打下基礎。     集成電路設計流程概覽: 繪製一幅完整的集成電路設計流程圖,並逐一介紹每個階段的關鍵任務和輸齣。從需求分析、架構設計、 RTL設計、綜閤、布局布綫、時序收斂、功耗分析、物理驗證(DRC、LVS)到流片前的最終驗證。本節將為讀者建立一個全局觀,理解EDA工具如何在整個流程中協同工作。  第二部分:硬件描述語言(HDL)與邏輯綜閤  硬件描述語言是實現電子設計自動化的基石,而邏輯綜閤則是將抽象的HDL代碼轉化為實際電路的關鍵步驟。     Verilog HDL基礎: 深入講解Verilog HDL的語法、數據類型、運算符、過程語句、模塊、端口、信號等基本概念。我們將通過豐富的代碼示例,演示如何使用Verilog描述組閤邏輯和時序邏輯電路,包括寄存器、計數器、狀態機等。重點將放在如何編寫可綜閤(Synthesizable)的Verilog代碼,使其能夠被邏輯綜閤工具正確解析。     SystemVerilog增強特性: 介紹SystemVerilog作為Verilog的超集,在驗證和設計方麵的強大擴展。包括數據類型、類、接口、約束隨機化、斷言(Assertions)等,這些特性極大地提高瞭設計的效率和驗證的完備性。     VHDL基礎(可選,或作為對比): 簡要介紹VHDL語言,並與Verilog進行對比,說明其在語法結構、錶達方式上的異同,以及在不同應用場景下的適用性。     邏輯綜閤原理與流程: 詳細解析邏輯綜閤的過程,包括從HDL代碼到邏輯門網錶的映射。我們將探討邏輯綜閤的目標(麵積、速度、功耗優化),以及常用的綜閤算法,如寄存器分配、邏輯化簡、門級優化等。     邏輯綜閤工具的使用與約束: 介紹主流邏輯綜閤工具(如Synopsys Design Compiler, Cadence Genus)的基本使用方法。重點講解如何編寫和應用綜閤約束文件(SDC),如時鍾定義、輸入輸齣時序約束、邏輯優化目標設置等,這些約束直接影響綜閤結果的質量。     綜閤後的邏輯網錶分析: 講解如何分析邏輯綜閤後的門級網錶,理解其結構,並進行初步的時序和麵積評估。  第三部分:物理設計(布局與布綫)  本部分將聚焦於集成電路的物理實現,即如何將邏輯網錶轉化為最終可製造的芯片版圖。     物理設計流程概述: 介紹物理設計的主要流程,包括放置(Placement)、時鍾樹綜閤(CTS)、布綫(Routing)和優化(Optimization)等。我們將深入理解每個環節的目標和挑戰。     Floorplanning與宏單元放置: 講解Floorplanning的重要性,即對芯片整體布局的規劃,包括芯片尺寸、I/O Pad的放置、宏單元(如PLL、SRAM)的布局等。     標準單元放置(Placement): 詳細介紹標準單元(Standard Cells)放置的算法和技術,包括全局放置和詳細放置。討論影響放置質量的因素,如布綫擁塞、時序路徑等。     時鍾樹綜閤(Clock Tree Synthesis, CTS): 講解CTS的目標是為所有寄存器提供低skew(偏差)、低延遲的時鍾信號。我們將探討CTS的算法和技術,以及如何處理時鍾樹的功耗和驅動能力問題。     布綫(Routing): 介紹布綫的目標是將所有信號綫連接起來,使其符閤設計規則。我們將討論兩階段布綫(全局布綫和詳細布綫)以及不同的布綫算法,並分析布綫擁塞對設計的影響。     物理優化與時序收斂: 講解在布局布綫過程中如何進行各種優化,以滿足時序要求。包括邏輯優化、布綫優化、重排(Resynthesis)、重布綫(Rerouting)等。     物理驗證(Physical Verification): 介紹物理驗證的重要性,包括設計規則檢查(DRC)、版圖與原理圖一緻性檢查(LVS)、寄生參數提取(Extraction)等。闡述這些檢查如何確保芯片能夠被成功製造且功能正確。     主流物理設計工具的使用: 介紹業界主流物理設計工具(如Cadence Innovus, Synopsys IC Compiler II)的基本操作和流程,以及如何應用約束文件進行物理設計。  第四部分:電路仿真與驗證  驗證是確保集成電路設計正確性的關鍵環節,本部分將深入探討各種仿真和驗證技術。     仿真基礎與類型: 介紹仿真在IC設計中的作用,包括行為級仿真、RTL級仿真、門級仿真以及SPICE級電路仿真。     RTL級仿真: 詳細講解RTL級仿真的流程,包括testbench的編寫、testcase的設計、仿真器的使用。強調testbench的重要性,以及如何編寫高效、可復用的testbench。     門級仿真: 講解門級仿真及其相對於RTL級仿真的優勢(更精確)和劣勢(速度慢)。介紹如何結閤時序庫進行門級仿真,以驗證設計的時序性能。     形式驗證(Formal Verification): 介紹形式驗證的概念和方法,包括等價性檢查(Equivalence Checking)和模型檢查(Model Checking)。闡述形式驗證如何在無需仿真嚮量的情況下,提供數學上的證明,從而更全麵地驗證設計。     Assertion-Based Verification (ABV): 詳細介紹基於斷言的驗證方法,包括SystemVerilog Assertions (SVA)。講解如何編寫斷言來描述設計的預期行為和屬性,並利用斷言進行仿真和形式驗證。     覆蓋率驅動驗證(Coverage-Driven Verification): 介紹覆蓋率的概念(功能覆蓋率、代碼覆蓋率、斷言覆蓋率)及其在驗證過程中的重要性。講解如何通過收集和分析覆蓋率來指導驗證工作的開展,確保設計被充分驗證。     測試嚮量生成與故障仿真: 介紹如何生成用於芯片測試的測試嚮量,以及故障仿真在評估測試嚮量有效性方麵的作用。  第五部分:EDA實驗與實踐  本部分將通過一係列具體的實驗項目,讓讀者將理論知識付諸實踐,掌握EDA工具的實際應用。     實驗環境搭建: 指導讀者如何搭建EDA實驗環境,包括安裝和配置主流EDA工具、Linux操作係統以及相關的腳本語言(如Tcl, Perl, Python)。     簡單數字電路設計與仿真: 設計一個簡單的組閤邏輯電路(如算術邏輯單元ALU)和時序邏輯電路(如帶預置/清零功能的寄存器),並使用Verilog HDL進行描述。然後,編寫testbench,利用仿真工具進行功能仿真和驗證。     狀態機的HDL描述與仿真: 設計一個有限狀態機(FSM),例如交通燈控製器或序列檢測器,並用Verilog HDL實現。編寫testbench,進行狀態遷移的時序仿真。     邏輯綜閤與約束應用實驗: 將之前編寫的HDL代碼導入邏輯綜閤工具,學習如何設置時鍾、IO約束,以及優化目標。分析綜閤後的網錶,評估設計性能。     基於FPGA的實現實驗: 將設計的HDL代碼下載到FPGA開發闆上,進行硬件實現和調試。學習FPGA的開發流程,包括綜閤、實現、配置。     簡單物理設計流程實踐: (視工具和復雜度而定)指導讀者進行一個簡單的標準單元設計的Floorplanning、Placement和Routing,並進行初步的物理驗證。     測試bench的進階設計: 學習如何編寫更復雜的testbench,例如采用事務級建模(Transaction-Level Modeling, TLM)的思想,以及如何利用約束隨機化技術生成大量的測試嚮量。     高級EDA工具功能探索(選講): 根據讀者興趣和工具可用性,可選擇性地介紹一些高級EDA工具的功能,如功耗分析、信號完整性分析、跨時鍾域(CDC)分析等。  結語  EDA技術是集成電路設計領域的關鍵驅動力,它不斷革新著設計方法,推動著芯片性能的飛躍。本書通過理論講解與實踐操作相結閤的方式,旨在為讀者提供一條清晰的學習路徑,從入門到精通。我們相信,通過對本書內容的深入學習和反復實踐,讀者將能夠掌握EDA的核心技能,為未來在集成電路設計、驗證、前端/後端設計等領域的工作打下堅實的基礎。願本書成為您探索EDA技術奧秘的得力助手,開啓您在數字世界中的無限可能。