本書系統(tǒng)地論述了FPGA的設(shè)計(jì)方法,并給出了大量綜合電子系統(tǒng)設(shè)計(jì)項(xiàng)目實(shí)例。全書共11章。第1章介紹FPGA電子系統(tǒng)的設(shè)計(jì)方法;第2章介紹QuartusⅡ使用方法;第3-7章介紹FPGA硬件描述語(yǔ)言VHDL的特點(diǎn)、VHDL語(yǔ)言中常用的數(shù)據(jù)、運(yùn)算符、順序描述語(yǔ)句和并行描述語(yǔ)句、時(shí)鐘信號(hào)描述、有限狀態(tài)機(jī)等基本概念和應(yīng)用;第8章介紹門電路、組合邏輯電路、觸發(fā)器、時(shí)序邏輯電路(與閻石主編的《數(shù)字電子技術(shù)基礎(chǔ)》(第4版)一致),并對(duì)其中的各種功能芯片以及基于VHDL與FPGA的實(shí)現(xiàn)方法進(jìn)行了講解;第9章介紹FPGA外圍電路——集成運(yùn)算放大器及其各種應(yīng)用;第10章和第11章給出了基于FPGA的綜合電子系統(tǒng)設(shè)計(jì)實(shí)例。
近年來(lái),F(xiàn)PGA的生產(chǎn)和銷售規(guī)模以驚人的速度增長(zhǎng)。大力發(fā)展集成電路設(shè)計(jì)與制造,是我國(guó)制定的重要發(fā)展目標(biāo),也是經(jīng)濟(jì)全球化新形勢(shì)下的科技挑戰(zhàn)。發(fā)展集成電路行業(yè),離不開(kāi)對(duì)電子信息類專業(yè)人才的培養(yǎng),尤其是對(duì)電子信息類專業(yè)人才的創(chuàng)新能力培養(yǎng)。
如何提高學(xué)生的實(shí)踐創(chuàng)新能力?首先,要使學(xué)生對(duì)實(shí)踐感興趣。在綜合性設(shè)計(jì)實(shí)驗(yàn)中,學(xué)生能做出來(lái)就會(huì)有興趣。其次,增加練習(xí)數(shù)量,練習(xí)多了水平就會(huì)提高。最后,根據(jù)生產(chǎn)和生活的實(shí)際需要制作創(chuàng)新作品。興趣→提高→創(chuàng)新,不斷循環(huán)往復(fù),學(xué)生的實(shí)踐創(chuàng)新能力就會(huì)不斷提高。
本書通過(guò)大量的小型電子系統(tǒng)設(shè)計(jì)提高學(xué)生對(duì)實(shí)踐的興趣,通過(guò)由單元電路實(shí)踐到電子系統(tǒng)實(shí)踐的過(guò)渡,降低學(xué)習(xí)的難度,從而起到拋磚引玉的效果。本書通過(guò)大量的FPGA設(shè)計(jì)實(shí)例,切實(shí)提高學(xué)生開(kāi)發(fā)FPGA電子系統(tǒng)的能力。
本書特色如下:
(1)易懂、易學(xué)、易上手。
(2)覆蓋了模擬電子技術(shù)基礎(chǔ)、數(shù)字電子技術(shù)基礎(chǔ)、FPGA基本知識(shí)以及大量電子系統(tǒng)設(shè)計(jì)項(xiàng)目案例。
(3)既給出了硬件設(shè)計(jì)電路,又提供了程序代碼設(shè)計(jì)(使用VHDL語(yǔ)言和QuartusⅡ軟件),便于舉一反三。
(4)書中給出的每個(gè)綜合電子小系統(tǒng)均已經(jīng)過(guò)設(shè)計(jì)實(shí)現(xiàn),全部是北方工業(yè)大學(xué)學(xué)生參加全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽的賽前訓(xùn)練題目,也是電子電路類課程設(shè)計(jì)的參考題目。
本書主要由北方工業(yè)大學(xué)電子信息工程學(xué)院王振紅編著。另外,張文軒編寫了“項(xiàng)目24基于FPGA與nRF24L01的無(wú)線數(shù)據(jù)傳輸與應(yīng)用”。張常年、張東彥、宋鵬、曲洪權(quán)、王恩成、田青、曹淑琴、黃明、范錦宏、周燕平、馮祎、康曉麓、趙徐森、李云棟、吳曉林、韓宇龍、勝智勇、殷大海等對(duì)本書的出版給予了極大的關(guān)心和支持。在此,對(duì)他們表示衷心的感謝。
本書配套提供第10章和第11章的電路及源程序,可到清華大學(xué)出版社網(wǎng)站的本書頁(yè)面下載。
由于編著者自身水平有限,如果書中存在錯(cuò)誤和不妥之處,敬請(qǐng)讀者批評(píng)指正。
王振紅
2017年4月
于北方工業(yè)大學(xué)
目錄
第1章FPGA電子系統(tǒng)的設(shè)計(jì)方法
1.1電子系統(tǒng)設(shè)計(jì)
1.1.1總體方案確定
1.1.2子系統(tǒng)設(shè)計(jì)
1.2印制電路板設(shè)計(jì)
1.2.1準(zhǔn)備工作
1.2.2元器件布局與布線
1.2.3印制焊盤的尺寸及形狀
1.2.4印制導(dǎo)線的尺寸及形狀
1.2.5印制導(dǎo)線的抗干擾和屏蔽
1.2.6印制電路板的對(duì)外連接
1.2.7表面貼裝技術(shù)對(duì)印制板的要求
1.3電子系統(tǒng)的安裝與調(diào)試
1.3.1電子系統(tǒng)的安裝
1.3.2元器件的引腳識(shí)別
1.3.3電子系統(tǒng)的調(diào)試
1.4電子系統(tǒng)抗干擾措施
1.4.1正確選擇器件
1.4.2正確分布元器件
1.4.3交流輸入電源增加電源濾波器
1.4.4施加屏蔽措施
1.4.5使用合理的接地方式
1.4.6電路加入濾波電容和補(bǔ)償電容
第2章FPGA設(shè)計(jì)軟件——QuartusⅡ及其使用方法
2.1編程存儲(chǔ)及編譯
2.2指定器件引腳及編譯
2.3下載
2.4存儲(chǔ)及編譯圖形描述(電路圖)
2.5掉電可存儲(chǔ)下載方法
第3章FPGA的硬件描述語(yǔ)言VHDL
3.1VHDL程序的特點(diǎn)
3.2VHDL程序的基本結(jié)構(gòu)
3.2.1庫(kù)說(shuō)明
3.2.2實(shí)體說(shuō)明
3.2.3結(jié)構(gòu)體說(shuō)明
3.3VHDL的數(shù)據(jù)
3.3.1基本標(biāo)志符
3.3.2數(shù)據(jù)對(duì)象
3.3.3數(shù)據(jù)類型
3.4VHDL的表達(dá)式
3.4.1邏輯運(yùn)算符
3.4.2算術(shù)運(yùn)算符
3.4.3關(guān)系運(yùn)算符
3.4.4并置運(yùn)算符
3.4.5操作符的運(yùn)算優(yōu)先級(jí)
第4章VHDL的順序描述語(yǔ)句
4.1信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句
4.2if語(yǔ)句
4.3case語(yǔ)句
4.4for loop循環(huán)語(yǔ)句
4.5null語(yǔ)句
第5章VHDL的并行描述語(yǔ)句
5.1進(jìn)程語(yǔ)句
5.2并發(fā)信號(hào)賦值語(yǔ)句
5.3條件信號(hào)賦值語(yǔ)句
5.4選擇信號(hào)賦值語(yǔ)句
5.5元件例化語(yǔ)句
5.6生成語(yǔ)句
第6章VHDL的時(shí)鐘信號(hào)描述方法
6.1時(shí)鐘信號(hào)的VHDL描述方法
6.1.1時(shí)鐘邊沿的描述
6.1.2時(shí)序電路中進(jìn)程敏感信號(hào)是時(shí)鐘信號(hào)
6.2時(shí)序電路中復(fù)位信號(hào)的VHDL描述方法
6.2.1同步復(fù)位
6.2.2異步復(fù)位
第7章VHDL的有限狀態(tài)機(jī)的設(shè)計(jì)
7.1有限狀態(tài)機(jī)的基本概念
7.2一個(gè)Moore型有限狀態(tài)機(jī)的設(shè)計(jì)方法
第8章FPGA數(shù)字電路設(shè)計(jì)實(shí)例
8.1門電路FPGA設(shè)計(jì)
8.1.1與非門電路
8.1.2二輸入或非門電路
8.1.3二輸入異或門電路
8.1.4反向器門電路
8.1.5三態(tài)門電路
8.1.6單向總線緩沖器
8.1.7雙向總線緩沖器
8.2組合邏輯電路FPGA設(shè)計(jì)
8.2.1監(jiān)視交通信號(hào)燈工作狀態(tài)的邏輯電路
8.2.28線—3線編碼器
8.2.38線—3線優(yōu)先編碼器
8.2.4二—十進(jìn)制編碼器
8.2.5譯碼器(3線—8線)
8.2.6二—十進(jìn)制譯碼器
8.2.7BCD七段顯示譯碼器
8.2.8代碼轉(zhuǎn)換電路
8.2.9四選一數(shù)據(jù)選擇器
8.2.10八選一數(shù)據(jù)選擇器
8.2.114位全加器
8.2.128位加法器
8.2.13多位數(shù)值比較器
8.3觸發(fā)器FPGA設(shè)計(jì)
8.3.1RS觸發(fā)器
8.3.2主從JK觸發(fā)器
8.3.3D觸發(fā)器
8.4時(shí)序邏輯電路FPGA設(shè)計(jì)
8.4.1寄存器
8.4.2雙向移位寄存器
8.4.3串行輸入并行輸出移位寄存器
8.4.4循環(huán)移位寄存器
8.4.54位同步二進(jìn)制計(jì)數(shù)器
8.4.6單時(shí)鐘同步十六進(jìn)制加/減計(jì)數(shù)器
8.4.7雙時(shí)鐘同步十六進(jìn)制加/減計(jì)數(shù)器
8.4.8同步十進(jìn)制加法計(jì)數(shù)器
8.4.9單時(shí)鐘同步十進(jìn)制可逆計(jì)數(shù)器
8.4.10異步二進(jìn)制加法計(jì)數(shù)器
8.4.11同步一百進(jìn)制計(jì)數(shù)器
8.4.12同步二十九進(jìn)制計(jì)數(shù)器
8.4.13順序脈沖發(fā)生器
8.4.14序列信號(hào)發(fā)生器
8.4.15用狀態(tài)機(jī)方法設(shè)計(jì)十三進(jìn)制計(jì)數(shù)器
8.4.16串行數(shù)據(jù)檢測(cè)器
8.4.17能自啟動(dòng)的七進(jìn)制計(jì)數(shù)器
8.4.18能自啟動(dòng)的三位環(huán)形計(jì)數(shù)器
8.4.19用狀態(tài)機(jī)方法設(shè)計(jì)十進(jìn)制減法計(jì)數(shù)器
第9章FPGA外圍電路——集成運(yùn)算放大器
9.1集成運(yùn)算放大器典型電路
9.1.1反相比例運(yùn)算電路
9.1.2同相比例運(yùn)算電路
9.1.3反相求和運(yùn)算電路
9.1.4同相求和運(yùn)算電路
9.1.5加減運(yùn)算電路
9.1.6積分運(yùn)算電路
9.1.7微分運(yùn)算電路
9.1.8壓控電壓源二階低通濾波器
9.1.9壓控電壓源二階高通濾波器
9.1.10RC橋式正弦振蕩電路
9.1.11方波發(fā)生電路
9.1.12方波和三角波發(fā)生電路
9.1.13過(guò)零比較器
9.1.14一般單限比較器
9.1.15滯回比較器
9.1.16窗口比較器
9.1.17精密整流電路
9.2單電源供電的集成運(yùn)算放大器的應(yīng)用
9.2.1單電源集成運(yùn)放的放大電路
9.2.2單電源集成運(yùn)放的正弦波發(fā)生器
9.2.3單電源集成運(yùn)放的方波三角波發(fā)生器
9.2.4單電源集成運(yùn)放的低通濾波器
9.2.5單電源集成運(yùn)放的高通濾波器
9.2.6單電源集成運(yùn)放的比較器
9.2.7單電源比較器
9.2.8單電源比較器組成的窗口比較器
9.2.9高效率音頻功率放大器
9.2.10單電源集成運(yùn)放綜合設(shè)計(jì)
9.3集成運(yùn)算放大器的綜合應(yīng)用
9.3.1小信號(hào)功率放大器
9.3.2具有放大、濾波及繼電器控制的模擬信號(hào)檢測(cè)與控制系統(tǒng)
9.3.3具有放大、F/V轉(zhuǎn)換及繼電器控制的模擬信號(hào)頻率檢測(cè)與控制系統(tǒng)
9.3.4間歇正弦波控制路
9.3.5語(yǔ)音信號(hào)放大器
9.3.6程控放大器0~40dB
9.3.7寬帶放大器
9.3.8正弦交流電壓有效值控制的壓控振蕩電路
9.3.9電壓轉(zhuǎn)換恒定電流電路
9.3.10實(shí)用溫控器
9.3.11用熱釋電傳感器的報(bào)警電路
9.3.12基于PWM的LED調(diào)光電路
9.3.13具有放大、濾波器、計(jì)數(shù)功能的電子電路
第10章FPGA數(shù)字電路系統(tǒng)設(shè)計(jì)實(shí)例
10.1數(shù)字信號(hào)的發(fā)送和接收電路
10.2序列計(jì)數(shù)器
10.3設(shè)計(jì)一個(gè)自動(dòng)售郵票的控制電路
10.4數(shù)字鎖
10.5設(shè)計(jì)一個(gè)汽車尾燈的控制電路
10.6交通燈控制器
10.7雙十字路口交通燈控制器
10.816×16的點(diǎn)陣顯示設(shè)計(jì)
10.9乒乓球游戲機(jī)
10.10三層電梯控制器
10.11汽車停車場(chǎng)停車位顯示系統(tǒng)
10.12智力競(jìng)賽搶答計(jì)時(shí)器的設(shè)計(jì)
10.13出租車計(jì)費(fèi)器
10.14定時(shí)器
10.15秒表
10.16數(shù)字鐘
10.17數(shù)字頻率計(jì)
10.18電子琴電路設(shè)計(jì)
10.19《友誼地久天長(zhǎng)》樂(lè)曲演奏電路設(shè)計(jì)
10.20寄存序列型信號(hào)發(fā)生器
10.21正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器設(shè)計(jì)
10.22智能函數(shù)發(fā)生器設(shè)計(jì)
10.23周期可調(diào)的多波形發(fā)生器
10.24模擬信號(hào)檢測(cè)
10.25數(shù)據(jù)采集及監(jiān)控系統(tǒng)
第11章FPGA電子系統(tǒng)設(shè)計(jì)項(xiàng)目
11.1項(xiàng)目1FPGA控制的數(shù)碼顯示電路
11.1.1設(shè)計(jì)要求
11.1.2設(shè)計(jì)分析
11.1.3顯示原理
11.1.4驅(qū)動(dòng)8位數(shù)碼管顯示電路框圖
11.1.5模塊及模塊功能
11.2項(xiàng)目2鍵盤控制電路
11.2.1設(shè)計(jì)要求
11.2.2設(shè)計(jì)分析
11.2.3設(shè)計(jì)思想與源程序
11.3項(xiàng)目3用8×8行共陰、列共陽(yáng)雙色點(diǎn)陣發(fā)光器件顯示漢字
11.3.1設(shè)計(jì)要求
11.3.2設(shè)計(jì)分析
11.3.3器件及硬件電路
11.3.4設(shè)計(jì)軟件的思路及源程序
11.4項(xiàng)目4FPGA控制的數(shù)模D/A轉(zhuǎn)換電路
11.4.1設(shè)計(jì)要求
11.4.2設(shè)計(jì)分析
11.4.3DAC0832轉(zhuǎn)換器
11.4.4數(shù)模D/A轉(zhuǎn)換電路
11.4.5FPGA控制的數(shù)模D/A轉(zhuǎn)換電路
11.5項(xiàng)目5FPGA控制的模數(shù)A/D轉(zhuǎn)換0809的應(yīng)用
11.5.1設(shè)計(jì)要求
11.5.2設(shè)計(jì)分析
11.5.3ADC0809轉(zhuǎn)換器及其轉(zhuǎn)換電路
11.5.4FPGA控制的模數(shù)A/D轉(zhuǎn)換電路
11.5.5用數(shù)碼管顯示模數(shù)A/D轉(zhuǎn)換器的輸入電壓
11.5.6ADC0809轉(zhuǎn)換模擬輸入負(fù)電壓電路
11.6項(xiàng)目6數(shù)控式可逆步進(jìn)調(diào)壓直流穩(wěn)壓電源
11.6.1設(shè)計(jì)要求
11.6.2原理及硬件電路
11.6.3軟件設(shè)計(jì)思想及源程序
11.7項(xiàng)目7數(shù)控式直流電流源
11.7.1設(shè)計(jì)指標(biāo)及框圖
11.7.2硬件電路圖
11.7.3軟件設(shè)計(jì)思想及源程序
11.8項(xiàng)目8低頻數(shù)字式相位測(cè)量?jī)x
11.8.1低頻數(shù)字式相位測(cè)量?jī)x設(shè)計(jì)指標(biāo)及框圖
11.8.2移相網(wǎng)絡(luò)
11.8.3相位測(cè)量
11.9項(xiàng)目9多路數(shù)據(jù)采集系統(tǒng)
11.9.1設(shè)計(jì)內(nèi)容
11.9.2現(xiàn)場(chǎng)模擬信號(hào)產(chǎn)生器
11.9.38路數(shù)據(jù)采集器
11.9.4主控器
11.10項(xiàng)目10測(cè)量放大器
11.10.1測(cè)量放大器系統(tǒng)
11.10.2橋式電路
11.10.3信號(hào)變換放大器
11.10.4直流電壓放大器
11.10.5程控的直流電壓放大器
11.11項(xiàng)目11功率放大器
11.11.1設(shè)計(jì)任務(wù)
11.11.2功率放大器
11.11.3前置放大器
11.11.4系統(tǒng)測(cè)試
11.11.5自制穩(wěn)壓電源
11.11.6集成功率放大器
11.12項(xiàng)目12開(kāi)關(guān)型穩(wěn)壓電源
11.12.1脈沖寬度調(diào)制電路MIC2194
11.12.2MC34060控制的串聯(lián)型開(kāi)關(guān)穩(wěn)壓電源
11.13項(xiàng)目13程控濾波器
11.13.1設(shè)計(jì)要求
11.13.2設(shè)計(jì)框圖
11.13.3程控放大器
11.13.4程控低通濾波器
11.13.5程控高通濾波器
11.13.6程控濾波器的FPGA控制核心
11.14項(xiàng)目14信號(hào)發(fā)生器
11.14.1設(shè)計(jì)要求
11.14.2信號(hào)發(fā)生器的功能及其內(nèi)部接線
11.14.3信號(hào)發(fā)生器的FPGA內(nèi)部結(jié)構(gòu)
11.14.4調(diào)用QuartusⅡ中的除法器件方法
11.15項(xiàng)目15交流電壓參數(shù)的測(cè)量
11.15.1設(shè)計(jì)要求
11.15.2給定的器件
11.15.3硬件電路
11.15.4軟件電路
11.16項(xiàng)目16寬帶放大器
11.16.1設(shè)計(jì)要求
11.16.2硬件電路
11.16.3軟件電路
11.17項(xiàng)目17高效率音頻功率放大器
11.17.1設(shè)計(jì)要求
11.17.2D類放大器的工作原理
11.17.3硬件電路
11.17.4軟件電路
11.18項(xiàng)目18數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng)
11.18.1設(shè)計(jì)要求
11.18.2硬件電路
11.18.3軟件電路
11.19項(xiàng)目19數(shù)字式工頻有效值多用表
11.19.1硬件電路
11.19.2軟件電路
11.20項(xiàng)目20簡(jiǎn)易電阻、電容和電感測(cè)量?jī)x
11.20.1設(shè)計(jì)要求
11.20.2硬件電路
11.20.3軟件電路
11.21項(xiàng)目21數(shù)字幅頻均衡功率放大器
11.21.1設(shè)計(jì)要求
11.21.2設(shè)計(jì)框圖
11.21.3三級(jí)放大電路
11.21.4帶阻網(wǎng)絡(luò)
11.21.5低通濾波電路
11.21.6A/D轉(zhuǎn)換
11.21.7D/A轉(zhuǎn)換和功率放大器
11.21.8FPGA程序
11.22項(xiàng)目22紅外光通信裝置
11.22.1設(shè)計(jì)要求
11.22.2紅外光語(yǔ)音通信裝置
11.22.3紅外光溫度數(shù)字信號(hào)通信裝置
11.22.4紅外光通信裝置總結(jié)
11.23項(xiàng)目23數(shù)字頻率計(jì)
11.23.1設(shè)計(jì)要求
11.23.2系統(tǒng)設(shè)計(jì)方案和電路
11.23.3信號(hào)頻率測(cè)量
11.23.4時(shí)間間隔測(cè)量系統(tǒng)模塊
11.23.5占空比測(cè)量系統(tǒng)模塊
11.24項(xiàng)目24基于FPGA與nRF24L01的無(wú)線數(shù)據(jù)傳輸與應(yīng)用
11.24.1nRF24L01無(wú)線收發(fā)器
11.24.2nRF24L01無(wú)線收發(fā)器工作模式
11.24.3nRF24L01配置
11.24.4用FPGA對(duì)nRF24L01進(jìn)行配置
參考文獻(xiàn)
一般來(lái)說(shuō),結(jié)構(gòu)體中的所有處理語(yǔ)句都是并行處理語(yǔ)句,那么結(jié)構(gòu)體中是否存在順序語(yǔ)句呢?答案是肯定的。VHDL程序的結(jié)構(gòu)體中既存在并行語(yǔ)句又存在順序語(yǔ)句。并行語(yǔ)句用來(lái)描述一組并發(fā)行為,它是并發(fā)執(zhí)行的,與程序的書寫順序無(wú)關(guān); 順序語(yǔ)句是一個(gè)接在另一個(gè)之后嚴(yán)格按照順序執(zhí)行的語(yǔ)句,與程序的書寫順序有關(guān)。
5.1進(jìn)程語(yǔ)句
進(jìn)程語(yǔ)句包含在結(jié)構(gòu)體中,一個(gè)結(jié)構(gòu)體可以有多個(gè)進(jìn)程語(yǔ)句,多個(gè)進(jìn)程語(yǔ)句間是并行的,并可訪問(wèn)結(jié)構(gòu)體或?qū)嶓w中定義的信號(hào)。因此進(jìn)程語(yǔ)句稱為并行描述語(yǔ)句。
進(jìn)程語(yǔ)句結(jié)構(gòu)內(nèi)部所有語(yǔ)句都是順序執(zhí)行的。
進(jìn)程語(yǔ)句的啟動(dòng)是由process后敏感信號(hào)表中所標(biāo)明的敏感信號(hào)來(lái)觸發(fā)進(jìn)程。
各進(jìn)程之間的通信是由信號(hào)傳遞的。其語(yǔ)法如下:
標(biāo)記: process(敏感信號(hào)表)
變量說(shuō)明語(yǔ)句;
begin
一組順序語(yǔ)句;
end process 標(biāo)記;
其中,標(biāo)記為進(jìn)程語(yǔ)句標(biāo)號(hào); 敏感信號(hào)表是進(jìn)程語(yǔ)句要讀取的所有敏感信號(hào)(包括端口信號(hào))的列表。變量說(shuō)明語(yǔ)句主要包括變量的數(shù)據(jù)類型說(shuō)明、子程序說(shuō)明等。從begin開(kāi)始到end process結(jié)束,是一組順序執(zhí)行語(yǔ)句。
下面重點(diǎn)討論關(guān)于進(jìn)程語(yǔ)句書寫結(jié)構(gòu)中的敏感信號(hào)表的問(wèn)題。
1. 進(jìn)程語(yǔ)句的敏感信號(hào)表
所謂敏感信號(hào)表,顧名思義,就是用來(lái)存放敏感信號(hào)的列表。在進(jìn)程語(yǔ)句中,敏感信號(hào)是指那些值發(fā)生改變后能夠引起進(jìn)程語(yǔ)句執(zhí)行的信號(hào)。一般來(lái)說(shuō),敏感信號(hào)表中可以使用一個(gè)或是多個(gè)信號(hào),每當(dāng)其中的一個(gè)或是多個(gè)信號(hào)值改變時(shí),就在進(jìn)程內(nèi)部引起語(yǔ)句執(zhí)行。敏感信號(hào)表列出了進(jìn)程語(yǔ)句對(duì)其敏感的所有信號(hào),所以進(jìn)程語(yǔ)句最好有一個(gè)敏感信號(hào)表。當(dāng)然,敏感信號(hào)表部分可以省略,但此時(shí)進(jìn)程語(yǔ)句中要有其他形式的敏感信號(hào)激勵(lì)。
這里需要注意的是: 當(dāng)進(jìn)程語(yǔ)句中沒(méi)有敏感信號(hào)表時(shí),進(jìn)程語(yǔ)句中必須有其他形式的敏感信號(hào)激勵(lì); 而當(dāng)進(jìn)程中有敏感信號(hào)表時(shí),進(jìn)程語(yǔ)句中不允許再顯式出現(xiàn)wait、wait for、wait until和wait on中的任何一種敏感信號(hào)激勵(lì)語(yǔ)句,否則編譯時(shí)將會(huì)給出錯(cuò)誤信息。
程序5.1描述的是一個(gè)簡(jiǎn)單的D觸發(fā)器,結(jié)構(gòu)體中只有一個(gè)進(jìn)程語(yǔ)句,敏感信號(hào)表列出了時(shí)鐘信號(hào)clk,輸入信號(hào)d。
【程序5.1】
library ieee;
use ieee.std_logic_1164.all;
entity dff1 is
port(clk,d:in std_logic;
q:out std_logic);
end dff1;
architecture rtl of dff1 is
begin
p1:process(clk,d)
begin
if(clk'event and clk='1')then
q=d;
end if;
end process p1;
end rtl;
在程序5.1中,進(jìn)程語(yǔ)句標(biāo)號(hào)p1,以process(clk,d)開(kāi)始,接著是進(jìn)程語(yǔ)句中的一組順序處理語(yǔ)句,用來(lái)描述d觸發(fā)器的功能,當(dāng)時(shí)鐘上升沿到時(shí),將輸入信號(hào)d賦值給輸出信號(hào)q,最后該進(jìn)程語(yǔ)句以end process p1結(jié)束。可以看出,p1進(jìn)程語(yǔ)句對(duì)時(shí)鐘信號(hào)clk、輸入信號(hào)d敏感,因此當(dāng)時(shí)鐘信號(hào)發(fā)生變化或是輸入信號(hào)變化時(shí)將會(huì)啟動(dòng)進(jìn)程語(yǔ)句。
2. 進(jìn)程語(yǔ)句的啟動(dòng)
在VHDL中,進(jìn)程語(yǔ)句有兩種工作狀態(tài): 等待狀態(tài)和執(zhí)行狀態(tài)。當(dāng)敏感信號(hào)表中的信號(hào)沒(méi)有變化時(shí),進(jìn)程處于等待狀態(tài); 當(dāng)敏感信號(hào)表中的信號(hào)有變化時(shí),進(jìn)程處于執(zhí)行狀態(tài),這時(shí)將順序執(zhí)行進(jìn)程中的語(yǔ)句。
因此不難看出,進(jìn)程語(yǔ)句的啟動(dòng)主要取決于敏感信號(hào)表中的信號(hào),只要敏感信號(hào)表中的信號(hào)發(fā)生了變化,進(jìn)程將啟動(dòng)。進(jìn)程啟動(dòng)以后,begin和end process間的語(yǔ)句將從上到下順序執(zhí)行一次,當(dāng)最后一個(gè)語(yǔ)句執(zhí)行完后,就返回進(jìn)程語(yǔ)句的開(kāi)始,等待下一次敏感信號(hào)表中的信號(hào)變化。
3. 進(jìn)程語(yǔ)句的同步
在VHDL程序中,同一個(gè)結(jié)構(gòu)體中不僅可以有多個(gè)進(jìn)程存在,而且同一個(gè)結(jié)構(gòu)體中的多個(gè)進(jìn)程之間還可以進(jìn)行同步。一般來(lái)說(shuō),VHDL中通常采用時(shí)鐘信號(hào)來(lái)同步進(jìn)程,其具體操作方法就是結(jié)構(gòu)體中的幾個(gè)進(jìn)程共用同一個(gè)時(shí)鐘信號(hào)來(lái)進(jìn)行激勵(lì),以啟動(dòng)進(jìn)程。
進(jìn)程的同步一般是由敏感信號(hào)表來(lái)進(jìn)行控制的,敏感信號(hào)表中的信號(hào)不發(fā)生變化會(huì)暫停進(jìn)程的執(zhí)行,直到敏感信號(hào)發(fā)生變化時(shí)才會(huì)再次啟動(dòng)進(jìn)程。程序5.2是一個(gè)同步進(jìn)程的例子。由程序5.2產(chǎn)生的shizhong電路符號(hào)如圖5.1所示。
……