隨著電子工程與計算機科學的迅猛發(fā)展,數(shù)字電路系統(tǒng)的發(fā)展十分迅速。電子元件在最近幾十年經(jīng)歷了從小規(guī)模集成電路(SSI)、中規(guī)模集成電路(MSI)、大規(guī)模集成電路(LSI)到超大規(guī)模集成電路(VLSI)的發(fā)展歷程。從簡單可編程元件到高密度可編程元件,設計方法也從根本上發(fā)生了轉(zhuǎn)變: 由原來的手工設計發(fā)展到現(xiàn)在的電子設計自動化(EDA)設計。為了提高系統(tǒng)的可靠性與通用性,可編程邏輯元件(PLD)尤其是現(xiàn)場可編程邏輯元件(FPGA)被大量應用,在PLD的開發(fā)過程中,EDA技術的出現(xiàn)帶來了電子系統(tǒng)設計的革命性變化。
本書以EDA工程技術和片上系統(tǒng)(SoC)設計技術為主線,對傳統(tǒng)的教學內(nèi)容和課程體系進行重組和整合,教材在編寫時突破傳統(tǒng)課程體系的制約,對課程體系等進行綜合改革,融入本領域最新的科研與教學改革成果,確保課程的系統(tǒng)性與先進性,使之能更好地適應21世紀人才培養(yǎng)的需要。教材的主要特點如下:
(1) 創(chuàng)新性。本教材突破傳統(tǒng)的硬件描述語言教學模式和流程,將普遍認為較難學習的硬件描述語言VHDL和Verilog用全新的實例教學理念和編排方式給出,并與EDA工程技術有機結合,達到良好的教學效果。教材以數(shù)字電路設計為基點,從實例的介紹中引出硬件描述語言語句語法內(nèi)容,通過一些簡單、直觀、典型的實例,將硬件描述語言中最核心、最基本的內(nèi)容解釋清楚,使讀者在很短的時間內(nèi)就能有效地掌握硬件描述語言的主干內(nèi)容,并用于設計實踐。
(2) 系統(tǒng)性。本書內(nèi)容全面,注重基礎,理論聯(lián)系實際,不僅全面介紹EDA技術基礎知識,如兩種硬件描述語言VHDL和Verilog、CPLD/FPGA軟件開發(fā),而且在此基礎上全面介紹FPGA開發(fā)的高階設計內(nèi)容,如可編程片上系統(tǒng)SOPC的應用開發(fā),真正具備了從底層數(shù)字電路開發(fā)到高層集成電路應用開發(fā)的系統(tǒng)性知識。另外本書使用大量圖表說明問題,文字簡練、針對性強,設計實例都通過編譯,設計文件和參數(shù)選擇都經(jīng)過驗證,便于讀者對內(nèi)容的理解和掌握。
(3) 實用性。本書注重實用、講述清楚、由淺入深,書中的實例具有很高的參考價值和實用價值,能夠使讀者掌握較多的實戰(zhàn)技能和經(jīng)驗。它既可作為高等院校電氣、自動化、計算機、通信、電子類專業(yè)的研究生、本科生的教材或參考書,也可供廣大ASIC設計人員和電子電路設計人員閱讀參考。
本書分為11章。
第1章是EDA技術的概述,介紹EDA技術的發(fā)展、EDA設計流程及EDA技術設計的領域。
第2章主要介紹CPLD/FPGA元件,包括可編程邏輯元件的發(fā)展、分類及原理,重點介紹Altera公司不同型號FPGA的結構及特點。
第3章主要介紹Altera公司的早期設計工具MAX+plus Ⅱ。它支持原理圖、VHDL和Verilog語言文本文件,以及波形與EDIF等格式的文件作為設計輸入,并支持這些文件的任意混合設計。MAX+plus Ⅱ具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確的仿真結果。
第4章主要介紹當前主流的FPGA設計工具Quartus Ⅱ。Quartus Ⅱ集成環(huán)境包括可編程邏輯元件設計、綜合、布局、布線、驗證和仿真。Quartus Ⅱ設計工具提供了一個完整的多平臺開發(fā)環(huán)境,它包含整個FPGA和CPLD設計階段的解決方案。此外,Quartus Ⅱ 設計工具提供全流程的可視化圖形用戶界面。
第5章主要介紹Quartus Ⅱ 軟件與第三方仿真工具ModelSim的使用,ModelSim具有強大的模擬仿真功能,在設計、編譯、仿真、調(diào)試開發(fā)過程中,有一整套工具可供使用,而且操作起來非常靈活,支持多款操作系統(tǒng),它能很好地與操作系統(tǒng)環(huán)境協(xié)調(diào)工作。
第6章和第7章分別介紹VHDL和Verilog HDL兩種常用硬件描述語言的基礎知識。VHDL和Verilog HDL作為IEEE標準的硬件描述語言,經(jīng)歷了20多年的發(fā)展、應用和完善,以其強大的系統(tǒng)描述能力、規(guī)范的程序設計結構、靈活的語言表達風格和多層次的仿真測試手段,在電子設計領域獲得了普遍的認同和廣泛的接受,成為現(xiàn)代EDA領域的首選硬件描述語言。
第8章主要介紹EDA設計中一些重要的概念,對建立/保持時間、競爭冒險現(xiàn)象、時鐘種類、信號延時、流水線設計技術和有限狀態(tài)機等做了介紹。
第9章主要介紹Nios Ⅱ嵌入式處理器。 Nios Ⅱ嵌入式處理器獨特的優(yōu)勢能夠為應用選擇合適的系統(tǒng),包括處理器性能、混合外設以及系統(tǒng)配置等。而且,開發(fā)平臺還可以幫助迅速發(fā)布產(chǎn)品,隨時增加新特性,可以滿足新興標準和多變的客戶需求。
第10章主要介紹Altera公司重要的嵌入式設計工具SOPC Builder,SOPC Builder包含在Quartus Ⅱ軟件中,它為建立SOPC系統(tǒng)提供圖形化環(huán)境。SOPC Builder中已經(jīng)包含了Nios Ⅱ處理器以及一些常用的外設IP模塊,用戶也可以設計自己的外設IP。
第11章主要介紹設計工具DSP Builder,DSP Builder是Altera公司推出的一個數(shù)字信號處理(DSP)開發(fā)工具,它在Quartus Ⅱ FPGA設計環(huán)境中集成了MathWorks的Matlab和Simulink DSP開發(fā)軟件。Altera公司的DSP系統(tǒng)體系解決方案是一項具有開創(chuàng)性的解決方案,它將FPGA的應用領域從多通道高性能信號處理擴展到很廣泛的基于主流DSP的應用,是Altera公司第一款基于C代碼的可編程邏輯設計流程。
為方便教學,本書電路符號采用了常用形式,未采用國標符號。
本書由李鴻強教授組織編寫。李鴻強教授策劃了全書的主要內(nèi)容,李鴻強、段曉杰、張誠、陳力穎、高鐵成、張艷麗、謝睿參加了編寫。其中第1、2章由李鴻強編寫,第3章由李鴻強、謝睿編寫,第4、5章由張艷麗、李鴻強編寫,第6章由段曉杰編寫,第7章由陳力穎編寫,第8、9(部分)章由李鴻強、謝睿編寫,第10章由張誠編寫,第9(部分)、11章由高鐵成編寫。全書由李鴻強和謝睿參與統(tǒng)稿。十分感謝各位老師及研究生對本書編寫提供的幫助。
由于電子技術的高速發(fā)展,應用領域繁雜,并且編者水平和掌握的資料有限,加之時間倉促,書中難免存在不妥之處,懇請各位讀者批評指正。
編者
2020年5月
第1章EDA技術概述
1.1引言
1.2EDA技術及其發(fā)展現(xiàn)狀
1.3EDA設計方法
1.4CPLD/FPGA的EDA開發(fā)流程
1.5EDA設計工具
第2章CPLD/FPGA元件
2.1PLD的結構與配置
2.1.1PLD發(fā)展歷程
2.1.2PLD分類
2.1.3PLD原理與基本結構
2.2CPLD與FPGA簡介
2.2.1CPLD與FPGA的區(qū)別
2.2.2Altera產(chǎn)品介紹
2.2.3Altera的CPLD的結構與特點
2.2.4Altera的FPGA的結構與特點
2.3MAX系列元件
2.3.1MAX 3000A
2.3.2MAX 7000
2.3.3MAX Ⅱ
2.3.4MAX Ⅴ
2.4Cyclone系列元件
2.4.1Cyclone
2.4.2Cyclone Ⅱ
2.4.3Cyclone Ⅲ
2.4.4Cyclone Ⅳ
2.4.5Cyclone Ⅴ
2.5Stratix系列元件
2.5.1Stratix
2.5.2Stratix Ⅱ
2.5.3Stratix Ⅲ
2.5.4Stratix Ⅳ
2.5.5Stratix Ⅴ
第3章MAX+plus Ⅱ軟件概述
3.1MAX+plus Ⅱ軟件簡介
3.1.1MAX+plus Ⅱ開發(fā)軟件特點
3.1.2MAX+plus Ⅱ開發(fā)軟件的主要功能
3.1.3MAX+plus Ⅱ運行環(huán)境需求
3.2MAX+plus Ⅱ的安裝
3.2.1MAX+plus Ⅱ軟件安裝
3.2.2MAX+plus Ⅱ軟件授權
3.3MAX+plus Ⅱ設計流程
3.3.1設計流程
3.3.2設計編譯
第4章Quartus Ⅱ軟件概述
4.1Quartus Ⅱ軟件簡介
4.1.1圖形用戶界面設計流程
4.1.2EDA工具設計流程
4.1.3命令行設計流程
4.1.4Quartus Ⅱ軟件的主要設計特性
4.2Quartus Ⅱ軟件安裝
4.2.1PC系統(tǒng)配置
4.2.2Quartus Ⅱ軟件安裝過程
4.2.3Quartus Ⅱ軟件授權
4.3Quartus Ⅱ基本設計流程
4.3.1創(chuàng)建工程
4.3.2建立圖形設計文件
4.3.3建立文本編輯文件
4.3.4建立存儲器編輯文件
4.4設計項目的編譯
4.4.1設計綜合
4.4.2Quartus Ⅱ編譯器窗口
4.4.3編譯器選項設置
4.4.4引腳分配
4.4.5啟動編譯器
4.5設計項目的仿真
4.5.1仿真波形文件創(chuàng)建
4.5.2設計仿真
4.5.3仿真結果分析
4.6元件編程
第5章Quartus Ⅱ軟件第三方工具
5.1ModelSim軟件的主要結構
5.2ModelSim的簡要使用方法
5.3在ModelSim SE中指定Altera的仿真庫
第6章VHDL硬件描述語言
6.1概述
6.2VHDL語言的基本結構
6.2.1VHDL語言基本單元及其結構
6.2.2VHDL語言結構體的子結構描述
6.2.3程序包、庫及配置
6.2.4VHDL的常用語句
6.3VHDL語言的數(shù)據(jù)類型及運算符
6.3.1VHDL語言的客體及其分類
6.3.2數(shù)據(jù)類型的種類
6.3.3數(shù)據(jù)類型的轉(zhuǎn)換
6.3.4VHDL語言的運算符
6.4VHDL數(shù)字電路設計實例
6.4.1VHDL語言組合邏輯電路設計
6.4.2VHDL語言時序邏輯電路設計
第7章Verilog HDL硬件描述語言
7.1概述
7.1.1Verilog HDL的歷史
7.1.2Verilog HDL與VHDL的比較
7.1.3Verilog HDL的功能
7.1.4Verilog HDL的設計方法
7.1.5語言描述與電路實現(xiàn)的關系
7.2Verilog HDL的基本結構
7.2.1Verilog HDL模塊的結構
7.2.2端口類型聲明
7.2.3邏輯功能描述
7.3標識符、常量和變量
7.3.1標識符
7.3.2值集合
7.3.3常量
7.3.4變量
7.3.5對被賦值變量的類型要求
7.4運算符及表達式
7.4.1算術運算符
7.4.2關系運算符
7.4.3相等關系運算符
7.4.4邏輯運算符
7.4.5按位運算符
7.4.6歸約運算符
7.4.7移位運算符
7.4.8條件運算符
7.4.9位拼接
7.4.10賦值運算符
7.4.11運算符的優(yōu)先級
7.5編譯預處理指令
7.5.1宏定義指令`define
7.5.2文件包含指令`include
7.5.3條件編譯命令`ifdef,`else,`endif
7.5.4時間尺度`timescale
7.6門級建模
7.6.1實例化
7.6.2內(nèi)置基本門類型
7.6.3門延時
7.6.4實例數(shù)組
7.6.5門級建模示例
7.7寄存器傳輸級建模
7.7.1連續(xù)賦值語句
7.7.2線網(wǎng)聲明賦值
7.7.3連續(xù)賦值語句的應用場合
7.7.4寄存器傳輸級建模舉例
7.8算法級建模
7.8.1塊語句
7.8.2過程賦值語句
7.8.3時序控制
7.8.4程序控制語句
7.8.5過程結構
7.8.6作用域規(guī)則
7.8.7算法級建模舉例
第8章EDA設計優(yōu)化
8.1建立和保持時間
8.2冒險現(xiàn)象
8.2.1競爭冒險現(xiàn)象
8.2.2冒險現(xiàn)象產(chǎn)生的原因
8.2.3競爭冒險的判斷
8.2.4如何消除冒險現(xiàn)象
8.3時鐘問題
8.3.1全局時鐘
8.3.2門控時鐘
8.3.3多級邏輯時鐘
8.3.4行波時鐘
8.3.5多時鐘系統(tǒng)
8.4清零和置位信號
8.5信號的延時
8.5.1導致信號延時的因素
8.5.2消除電路冗余
8.5.3時鐘歪斜現(xiàn)象及解決辦法
8.6流水線設計技術
8.6.1流水線設計的優(yōu)點
8.6.2流水線設計的流程
8.7有限狀態(tài)機FSM
8.7.1Moore型有限狀態(tài)機
8.7.2Mealy型有限狀態(tài)機
8.7.3狀態(tài)機的設計要點
8.8測試驗證程序TestBench
8.8.1測試驗證程序的目的
8.8.2TestBench的設計方法
8.8.3TestBench應用舉例
第9章Nios嵌入式處理器設計
9.1Nios嵌入式處理器介紹
9.1.1第一代Nios嵌入式處理器
9.1.2第二代Nios嵌入式處理器
9.1.3可配置的軟核嵌入式處理器的優(yōu)勢
9.2Nios Ⅱ嵌入式處理器軟、硬件開發(fā)流程簡介
9.2.1硬件開發(fā)流程
9.2.2軟件開發(fā)流程
9.3Nios Ⅱ處理器結構
9.4Nios Ⅱ的寄存器文件
9.4.1Nios Ⅱ的通用寄存器
9.4.2Nios Ⅱ的控制寄存器
9.5算術邏輯單元
9.5.1未實現(xiàn)的指令
9.5.2用戶指令
9.6復位信號
9.7Nios Ⅱ處理器運行模式
9.8異常和中斷控制器
9.8.1異?刂破
9.8.2中斷控制器
9.9Nios Ⅱ的異常處理
9.9.1異常類型
9.9.2異常硬件處理流程
9.9.3異常判別及優(yōu)先級
9.9.4異常嵌套
9.9.5異常返回
9.9.6異常響應時間
9.10存儲器及I/O結構
9.10.1指令與數(shù)據(jù)總線
9.10.2高速緩存
9.10.3緊耦合存儲器
9.10.4地址映射
9.11存儲器和外設訪問
9.11.1尋址方式
9.11.2高速緩存訪問
第10章SOPC Builder設計開發(fā)
10.1SOPC技術簡介
10.1.1SOPC技術及特點
10.1.2SOPC系統(tǒng)的實現(xiàn)方式
10.2SOPC系統(tǒng)開發(fā)流程
10.3SOPC系統(tǒng)硬件開發(fā)
10.3.1SOPC Builder簡介
10.3.2SOPC系統(tǒng)的硬件開發(fā)
10.4SOPC系統(tǒng)的軟件開發(fā)
10.4.1創(chuàng)建C/C++應用工程
10.4.2設置C/C++應用工程系統(tǒng)屬性
10.4.3編譯鏈接工程
10.4.4調(diào)試/運行程序
第11章DSP Builder設計開發(fā)
11.1DSP Builder系統(tǒng)設計工具
11.1.1DSP Builder安裝
11.1.2嵌入式DSP設計流程
11.1.3DSP Builder設計過程
11.2LogicLock技術
11.2.1LogicLock技術簡介
11.2.2LogicLock設計應用
參考文獻