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