VHDL與數(shù)字電路設(shè)計(jì).ppt
《VHDL與數(shù)字電路設(shè)計(jì).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VHDL與數(shù)字電路設(shè)計(jì).ppt(194頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,1,第四章VHDL硬件描述語(yǔ)言,張志安 南京理工大學(xué),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,2,主要內(nèi)容 4.1 VHDL語(yǔ)言概述 4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu) 4.3 VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符 4.4 VHDL語(yǔ)言的順序描述語(yǔ)句 4.5 VHDL語(yǔ)言的并發(fā)描述語(yǔ)句 4.6 VHDL語(yǔ)言在數(shù)字電路中的應(yīng)用,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,3,4.1 VHDL語(yǔ)言概述,VHDL: VHSIC (Very High Speed Integrated Circuit) Hardware Descripti
2、on Language,80年代初由美國(guó)國(guó)防部在實(shí)施超高速集成電路(VHSIC) 項(xiàng)目時(shí)開(kāi)發(fā)的。 1987年由 IEEE 協(xié)會(huì)批準(zhǔn)為 IEEE 工業(yè)標(biāo)準(zhǔn),稱為 IEEE1076-1987。 各EDA公司相繼推出支持VHDL的設(shè)計(jì)環(huán)境。 1993年被更新為 93 標(biāo)準(zhǔn),即IEEE1076-1993。 進(jìn)一步提高抽象描述層次,擴(kuò)展系統(tǒng)描述能力。,數(shù)字電子技術(shù)的基本知識(shí)回顧,組合邏輯電路 編碼器、譯碼器、數(shù)據(jù)選擇器、加法器、數(shù)值比較器等 時(shí)序邏輯電路 同步時(shí)序邏輯電路 異步時(shí)序邏輯電路 寄存器、移位寄存器、計(jì)數(shù)器、序列信號(hào)發(fā)生器,一、傳統(tǒng)設(shè)計(jì)方法,(1)首先確定可用的元器件; (2)根據(jù)
3、這些器件進(jìn)行邏輯設(shè)計(jì),完成各模塊; (3)將各模塊進(jìn)行連接,最后形成系統(tǒng); (4)而后經(jīng)調(diào)試、測(cè)量觀察整個(gè)系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。,傳統(tǒng)的設(shè)計(jì)方法是基于中小規(guī)模集成電路器件進(jìn)行設(shè)計(jì)(如74系列及其改進(jìn)系列、74HC系列等都屬于通用型數(shù)字集成電路),而且是采用自底向上進(jìn)行設(shè)計(jì):,EDA(Electronics Design Automation)即電子設(shè)計(jì)自動(dòng)化技術(shù),是利用計(jì)算機(jī)工作平臺(tái),從事電子系統(tǒng)和電路設(shè)計(jì)的一項(xiàng)技術(shù)。 EDA技術(shù)為電子系統(tǒng)設(shè)計(jì)帶來(lái)了這樣的變化: (1)設(shè)計(jì)效率提高,設(shè)計(jì)周期縮短; (2)設(shè)計(jì)質(zhì)量提高; (3)設(shè)計(jì)成本降低; (4)能更充分地發(fā)揮設(shè)計(jì)人員的創(chuàng)造性; (5)
4、設(shè)計(jì)成果的重用性大大提高,省去了不必要的重復(fù)勞動(dòng)。,二、EDA設(shè)計(jì)方法,自頂向下的設(shè)計(jì)方法,數(shù)字電路的EDA設(shè)計(jì)是基于PLD進(jìn)行設(shè)計(jì)的,支持自頂向下的設(shè)計(jì)方法: (1)首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì); (2)然后再逐級(jí)設(shè)計(jì)底層的結(jié)構(gòu); (3)并在系統(tǒng)級(jí)采用仿真手段驗(yàn)證設(shè)計(jì)的正確性; (4)最后完成整個(gè)系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)從設(shè)計(jì)、仿真、測(cè)試一體化。,傳統(tǒng)設(shè)計(jì)方法 vs EDA設(shè)計(jì)方法,三、PLD器件,如果能把所設(shè)計(jì)的數(shù)字系統(tǒng)做成一片大規(guī)模集成電路,則不僅能減小電路的體積、重量、功耗,而且會(huì)使電路的可靠性大為提高。 為某種專門用途而設(shè)計(jì)的集成電路叫做專用集成電路,即所謂的ASI
5、C(Application Specific Integrated Circuit的縮寫(xiě))。 在用量不大的情況下,設(shè)計(jì)和制造這樣的專用集成電路成本很高,而且設(shè)計(jì)、制造的周期也較長(zhǎng)。 可編程邏輯器件的研制成功為解決上述問(wèn)題提供了比較理想的途徑。,(一)出現(xiàn)的背景,(二)PLD概述,PLD:可編程邏輯器件(Programmable Logic Device) 可編程邏輯器件是一種數(shù)字集成電路的半成品,在其芯片上按一定排列方式集成了大量的邏輯門和觸發(fā)器等基本邏輯元件。通過(guò)編程可以設(shè)置其邏輯功能。 PLD編程: 利用開(kāi)發(fā)工具對(duì)PLD進(jìn)行加工,即按設(shè)計(jì)要求將這些片內(nèi)的元件連接起來(lái),使之
6、完成某個(gè)邏輯電路或系統(tǒng)的功能,成為一個(gè)專用集成電路(ASICApplication Specific Integrated Circuit)。,PLD開(kāi)發(fā)系統(tǒng),PLD開(kāi)發(fā)系統(tǒng)包括硬件和軟件兩部分。 硬件部分:計(jì)算機(jī)、下載電纜或編程器; 軟件部分:集成開(kāi)發(fā)系統(tǒng)。 Altera公司:Maxplus 、 Quartus Xilinx公司:Foundation、 ISE Lattice公司:Synario System、ispEXPERT System,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,12,四、PLD設(shè)計(jì)流程,1、PLD設(shè)計(jì)準(zhǔn)備,在設(shè)計(jì)之前,首先要進(jìn)行方案論
7、證和器件選擇等設(shè)計(jì)準(zhǔn)備工作。 設(shè)計(jì)者首先要根據(jù)任務(wù)要求,判斷系統(tǒng)的可行性。系統(tǒng)的可行性要受到邏輯要求合理性、成本、開(kāi)發(fā)條件、器件供應(yīng)等方面的約束。 若系統(tǒng)可行,則根據(jù)系統(tǒng)所完成的功能及復(fù)雜程度,對(duì)器件本身的資源和成本、工作速度及連線的可布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計(jì)方案和合適的器件類型。,2、設(shè)計(jì)輸入,將所設(shè)計(jì)的電路的邏輯功能按照開(kāi)發(fā)系統(tǒng)要求的形式表達(dá)出來(lái)的過(guò)程稱為設(shè)計(jì)輸入。 通常,設(shè)計(jì)輸入有如下三種方式: (1)原理圖輸入方式 適用于對(duì)系統(tǒng)及各部分電路很熟悉的場(chǎng)合。 (2)硬件描述語(yǔ)言輸入方式 硬件描述語(yǔ)言是用文本方式描述設(shè)計(jì),硬件描述語(yǔ)言有ABEL、AHDL、VHDL、V
8、erilog等,其中VHDL和Verilog已成為IEEE標(biāo)準(zhǔn)。 (3)波形輸入方式,3、設(shè)計(jì)處理,邏輯優(yōu)化 把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實(shí)現(xiàn)的形式,優(yōu)化使設(shè)計(jì)所占用的資源最少。 邏輯綜合 根據(jù)設(shè)計(jì)描述,對(duì)給定的硬件結(jié)構(gòu)組件,最終獲得門級(jí)電路甚至更底層的電路描述文件,即將多個(gè)模塊化設(shè)計(jì)文件合并為一個(gè)網(wǎng)表文件。 適配 確定優(yōu)化后的邏輯能否與器件中的宏單元和I/O單元適配。 分割 將大的設(shè)計(jì)分割為多個(gè)便于器件內(nèi)部資源實(shí)現(xiàn)的邏輯小塊的形式。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,16,4、設(shè)計(jì)校驗(yàn),設(shè)計(jì)校驗(yàn)過(guò)程包括功能仿真和時(shí)序仿真。 功能仿真 時(shí)序仿真,5、器件編程,器件編程就是
9、將開(kāi)發(fā)系統(tǒng)生成的目標(biāo)文件下載到可編程邏輯器件中,來(lái)定義內(nèi)部模塊的邏輯功能以及它們的相互連接關(guān)系。 兩種編程方式: 編程器 下載電纜,返回,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,17,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),Library std; Use std.standard.all; Entity and2 is Port( a,b : in bit; c : out bit); End and2; Architecture a1 of and2 is Begin c <= a and b; End a1;,VHDL程序,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,18,庫(kù)(Lib
10、rary)是經(jīng)編譯后的數(shù)據(jù)的集合,它用于存放 包集合定義、實(shí)體定義、構(gòu)造體定義和配置定義。 聲明格式: Library 庫(kù)名;,(1)庫(kù)( Library ),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),VHDL庫(kù)可分為 5種:,1)IEEE 庫(kù),2)STD 庫(kù)(標(biāo)準(zhǔn)庫(kù)),3)面向ASIC的庫(kù),4)WORK庫(kù)(默認(rèn)庫(kù)),5)用戶定義庫(kù),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,19,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),(2)包集合( Package ),包集合 (Package )中定義了基本的常數(shù)、信號(hào)、數(shù)據(jù) 類型、元件語(yǔ)句、函數(shù)定義及過(guò)程定義等。是庫(kù)結(jié)構(gòu)中的 一個(gè)層次。 聲明格式: use
11、庫(kù)名包集合名項(xiàng)目名; use 庫(kù)名. PACKAGE名.All;,包集合的結(jié)構(gòu)包括: 包集合標(biāo)題(包首) 包集合主體(包體),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,20,package 包集合名 is 包說(shuō)明項(xiàng) end 包集合名;,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),(2)包集合( Package ),package body 包集合名 is 包體說(shuō)明項(xiàng) end 包集合名;,,,包集合標(biāo)題,包集合主體,包集合體并非必須,只有在包集合中要說(shuō)明 子程序時(shí),包集合體才是必須的。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,21,作用: ENTITY(實(shí)體)用于定義電路的外觀,即I
12、/O端口的類型和數(shù)量。 定義格式: Entity 實(shí)體名 is Port( a : in bit; b : in bit; c : out bit); End 實(shí)體名;,(3)實(shí)體(ENTITY)定義區(qū),端口名,數(shù)據(jù)類型,端口模式,,,,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),:,;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,22,端口說(shuō)明(PORT) 端口為設(shè)計(jì)實(shí)體和其外部環(huán)境提供動(dòng)態(tài)通信的通道,是對(duì)基本設(shè)計(jì)單元與外部接口的描述,其功能相當(dāng)電路圖符號(hào)的外部引腳。端口可以被賦值,也可以當(dāng)做邏輯變量用在邏輯表達(dá)式中。 其一般書(shū)寫(xiě)格式為: PORT (端口名 :端口模式 數(shù)據(jù)類
13、型; 端口名 :端口模式 數(shù)據(jù)類型; );,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,23,標(biāo)識(shí)符的定義原則: (1)標(biāo)識(shí)符由字母、數(shù)字和下劃線組成, a_7; (2)標(biāo)識(shí)符不區(qū)分大小寫(xiě),ab和AB是一樣的; (3)第一個(gè)字符必須是字母,即a666; (4)不允許有兩個(gè)連續(xù)的下劃線,a__b錯(cuò)誤; (5)末尾不能是下劃線,mname_錯(cuò)誤; (6)標(biāo)識(shí)符不能和關(guān)鍵字相同,如Entity,is等。,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,
14、南京理工大學(xué)機(jī)械工程學(xué)院,24,端口模式(MODE)有以下幾種類型: IN ;OUT;INOUT ;BUFFER 端口模式可用下圖說(shuō)明:(黑框代表一個(gè)設(shè)計(jì)或模塊) IN OUT BUFFER INOUT,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,25,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),輸入(IN) 允許信號(hào)進(jìn)入實(shí)體,主要用于時(shí)鐘輸入、控制輸入 (如load、reset、enable、clk)和單向的數(shù)據(jù)輸入 (如地址數(shù)據(jù)信號(hào)address)等。,輸出(OUT
15、) 輸出模式只允許信號(hào)離開(kāi)實(shí)體,常用于計(jì)數(shù)輸出、 單向數(shù)據(jù)輸出、被設(shè)計(jì)實(shí)體產(chǎn)生的控制其他實(shí)體的 信號(hào)等。注意:輸出模式不能用于被設(shè)計(jì)實(shí)體的內(nèi) 部反饋,因?yàn)檩敵龆丝谠趯?shí)體內(nèi)不能看做是可讀的。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,26,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),雙向模式(INOUT) 雙向模式允許信號(hào)雙向傳輸(既可以進(jìn)入實(shí)體,也可以 離開(kāi)實(shí)體),雙向模式端口允許引入內(nèi)部反饋。,緩沖(BUFFER) 緩沖模式允許信號(hào)輸出到實(shí)體外部,但同時(shí)也可以在實(shí) 體內(nèi)部引用該端口的信號(hào)。緩沖端口既能用于輸出也能 用于反饋。緩沖模式用于在實(shí)體內(nèi)部建立一個(gè)可讀的
16、輸 出端口,例如計(jì)數(shù)器輸出、計(jì)數(shù)器的現(xiàn)態(tài)用來(lái)決定計(jì)數(shù) 器的次態(tài)。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,27,(3)實(shí)體(ENTITY)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),out 和 buffer 的區(qū)別:,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,28,結(jié)構(gòu)體也叫構(gòu)造體,結(jié)構(gòu)體描述了基本設(shè)計(jì)單元(實(shí)體)的結(jié)構(gòu)、行為、元件及內(nèi)部連接關(guān)系,也就是說(shuō)它定義了設(shè)計(jì)實(shí)體的功能,規(guī)定了設(shè)計(jì)實(shí)體的數(shù)據(jù)流程,制定了實(shí)體內(nèi)部元件的連接關(guān)系。結(jié)構(gòu)體對(duì)其基本設(shè)計(jì)單元的輸入和輸出關(guān)系可用以下三種方式進(jìn)行描述,即行為描述(基本設(shè)計(jì)單元的數(shù)學(xué)模型描述)、寄存器傳輸描述(數(shù)據(jù)流描述)和結(jié)構(gòu)描述(邏輯元
17、件連接描述)。 結(jié)構(gòu)體是對(duì)實(shí)體功能的具體描述,因此它一定要跟在實(shí)體的后面 。,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,29,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),定義格式: Architecture 結(jié)構(gòu)體名 of 實(shí)體名 is 聲明語(yǔ)句;(內(nèi)部信號(hào)、變量、常數(shù),元件,子程序聲明) Begin 并行描述語(yǔ)句; End 結(jié)構(gòu)體名;,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,30,結(jié)構(gòu)體(ARCHITECTURE)構(gòu)造圖,2020/7/21,南京理
18、工大學(xué)機(jī)械工程學(xué)院,31,圖中5種功能描述語(yǔ)句的基本組成和功能分別是: 塊語(yǔ)句是由一系列并行語(yǔ)句構(gòu)成的組合體,它的功能是將結(jié)構(gòu)體中的并行語(yǔ)句組成一個(gè)或多個(gè)子模塊。 進(jìn)程語(yǔ)句定義順序語(yǔ)句模塊,用以將從外部獲得的信號(hào)值或內(nèi)部運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值。 信號(hào)賦值語(yǔ)句將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果向定義的信號(hào)或界面端口進(jìn)行賦值。 子程序調(diào)用語(yǔ)句可以調(diào)用進(jìn)程或參數(shù),并將獲得的結(jié)果賦值于信號(hào)。 元件例化語(yǔ)句對(duì)其他的設(shè)計(jì)實(shí)體做元件調(diào)用說(shuō)明,并將此元件的端口與其他元件、信號(hào)或高層實(shí)體的界面端口進(jìn)行連接。,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),2020/7/21,南京理
19、工大學(xué)機(jī)械工程學(xué)院,32,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),實(shí)體與結(jié)構(gòu)體的關(guān)系:,一個(gè)設(shè)計(jì)實(shí)體可有多個(gè)結(jié)構(gòu)體,代表實(shí)體的多種實(shí)現(xiàn)方式。各個(gè)結(jié)構(gòu)體的地位相同。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,33,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),(5)配置(CONFIGURATION),配置:從某個(gè)實(shí)體的多種結(jié)構(gòu)體描述方式中選擇 特定的一個(gè)。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,34,configuration 配置名 of 實(shí)體名 is for 選配結(jié)構(gòu)體名 end for ; end 配置名;,4.2 VHDL語(yǔ)言程序的基本結(jié)構(gòu),(5)配置(CONFIGURATION),
20、在用VHDL描述硬件電路時(shí),常常采用結(jié)構(gòu)描述方式和混合描述方式。在這兩種描述方式中,常常需要將其他設(shè)計(jì)實(shí)體作為元件進(jìn)行引用,這時(shí)就需要將不同元件通過(guò)配置安裝到不同的設(shè)計(jì)實(shí)體中。VHDL提供了配置語(yǔ)句用于描述各種設(shè)計(jì)實(shí)體和元件之間連接關(guān)系以及設(shè)計(jì)實(shí)體和結(jié)構(gòu)體之間的連接關(guān)系。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,35,library ieee; use ieee.std_logic_1164.all; entity nand is port(a: in std_logic; b: in std_logic; c: out std_logic); end entity nan
21、d; architecture art1 of nand is begin c<=not (a and b); end architecture art1;,例:一個(gè)與非門不同實(shí)現(xiàn)方式的配置如下:,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,36,architecture art2 of nand is begin c<=1 when (a=0) and (b=0) else 1 when (a=0) and (b=1) else 1 when (a=1) and (b=0) else 0 when (a=1) and (b=1) else 0; end arch
22、itecture art2;,例:一個(gè)與非門不同實(shí)現(xiàn)方式的配置如下:,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,37,configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;,例:一個(gè)與非門不同實(shí)現(xiàn)方式的配置如下:,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,38,二輸入與門電路設(shè)計(jì)范例,電路真值表,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,39,Library std; Use std.s
23、tandard.all; Entity and2 is Port( a : in bit; b : in bit; c : out bit); End and2; --實(shí)體定義結(jié)束。,雙減號(hào)--為VHDL程序的注釋符,類似C語(yǔ)言中的//注釋符。,二輸入與門電路設(shè)計(jì)范例,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,40,二輸入與門電路設(shè)計(jì)范例,Architecture Na of and1 is Begin c <=0 when a=0 and b = 0 else 0 when a=1 and b = 0 else 0 when a=0 and b = 1 else 1;
24、 --符號(hào)<=為信號(hào)直接賦值符。 End Na; --結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c <= a and b; --and 為邏輯與操作 End Nb; --結(jié)構(gòu)體Nb,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,41,二輸入與門電路設(shè)計(jì)范例,Configuration s1 of and1 is for Na end for; end configuration s1; Configuration s2 of and2 is for Nb end for; end configuration s2; --結(jié)構(gòu)體配置結(jié)束。,20
25、20/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,42,2選1多路選擇器的VHDL描述,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,43,2選1多路選擇器的VHDL描述,ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ; END ENTITY mux21a ; ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s = 0 ELSE b ; END ARCHITECTURE one ;,,實(shí)體,,結(jié)構(gòu)體,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,44,2選1
26、多路選擇器的VHDL描述,ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,45,2選1多路選擇器的VHDL描述,ENTITY mux21a IS PORT ( a,
27、 b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y <= a ; ELSE y <= b ; END IF; END PROCESS; END ARCHITECTURE one ;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,46,mux21a功能時(shí)序波形,2選1多路選擇器的VHDL描述,返回,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,47,4.3 VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符
28、,1、數(shù)據(jù)對(duì)象 2、數(shù)據(jù)類型 3 、運(yùn)算操作符 4、 數(shù)據(jù)對(duì)象屬性 5、 VHDL語(yǔ)言詞法規(guī)則,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,48,1、數(shù)據(jù)對(duì)象,三種對(duì)象:常量(Constant) 變量(Variable) 信號(hào)(Signal) 三種對(duì)象的物理含義: 常量代表數(shù)字電路中的電源、地、恒定邏 輯值等常數(shù); 變量代表暫存某些值的載體,常用于描述 算法; 信號(hào)代表物理設(shè)計(jì)中的某一條硬件連接線, 包括輸入、輸出端口。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,49,1、數(shù)據(jù)對(duì)象,三種對(duì)象的特點(diǎn)及說(shuō)明場(chǎng)合: 信號(hào):全局量, 用于architectu
29、re、 package、entitiy。 變量:局部量,用于process、function、 procedure。 常量:全局量,可用于上面兩種場(chǎng)合。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,50,1、數(shù)據(jù)對(duì)象,常量說(shuō)明 常量說(shuō)明:對(duì)某一個(gè)常量名賦予一個(gè)固定的值。 格式: 例: constant data:bit_vector(3 downto 0):=“1010” constant width: integer: = 8; constant x: new_bit: = x; 常量數(shù)據(jù)類型必須與表達(dá)式的數(shù)據(jù)類型一致。,constant 常數(shù)名:數(shù)據(jù)類型:= 表達(dá)式;,20
30、20/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,51,常量的可視性(作用范圍):,常量是全局量,其作用范圍取決于常量被定義的位置。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,52,1、數(shù)據(jù)對(duì)象,變量說(shuō)明 變量是一個(gè)局部量,只能在進(jìn)程和子程序中 定義、使用。其作用范圍僅限于定義了變量的進(jìn) 程和子程序中。 格式: 例: variable a, b : bit; variable count:integer range 0 to 255:= 10; 變量的初值可用于仿真,但綜合時(shí)被忽略。,variable 變量名:數(shù)據(jù)類型 約束條件:= 表達(dá)式;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,53,
31、1、數(shù)據(jù)對(duì)象,信號(hào)說(shuō)明 電子硬件系統(tǒng)運(yùn)行的基本特性: 各部分電路工作的并行特性; 信號(hào)傳輸過(guò)程中的延時(shí)特性; 多驅(qū)動(dòng)源的總線特性; 時(shí)序電路中觸發(fā)器的記憶特性等。 信號(hào)是電子系統(tǒng)內(nèi)部硬件連接和硬件特性的抽象表示。 用來(lái)描述硬件系統(tǒng)的基本特性。 格式:,signal 信號(hào)名:數(shù)據(jù)類型 約束條件: 表達(dá)式;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,54,1、數(shù)據(jù)對(duì)象,例: signal a, b : bit; signal init : integer := -1; signal s1: std_logic := 0; signal s2: std_logic_vector(15
32、 downto 0); 注:a. 綜合時(shí)初值被忽略。 b. 信號(hào)是全局量。可在結(jié)構(gòu)體、實(shí)體、塊中 說(shuō)明和使用信號(hào)。 c. 在進(jìn)程和子程序中只能使用信號(hào),不能說(shuō) 明信號(hào)。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,55,例:進(jìn)程中信號(hào)與變量的使用,entity ex is port(..); end ex; architecture arch_ex of ex is signal a, b :std_logic; begin process(a, b) variable c, d : std_logic; begin c:= a + b; d:= a - b;
33、 end process; end arch_ex;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,56,1、數(shù)據(jù)對(duì)象,信號(hào)與端口的區(qū)別: 除沒(méi)有方向說(shuō)明外,信號(hào)與實(shí)體的“端口 (PORT)” 概念相似。端口是一種隱形的信號(hào)。 entity exam is port(signal a, b: in std_logic; signal c: out std_logic); end exam; 端口是一種有方向的信號(hào)。即輸出端口不能 讀出數(shù)據(jù),只能寫(xiě)入數(shù)據(jù);輸入端口不能寫(xiě)入數(shù) 據(jù),只能讀出數(shù)據(jù)。 信號(hào)本身無(wú)方向,可讀可寫(xiě)。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,57,信號(hào)
34、與變量的區(qū)別: 信號(hào)和變量是VHDL中重要的客體,他們之間的主要區(qū)別有: 信號(hào)賦值至少要有延時(shí);而變量賦值沒(méi)有。 信號(hào)除當(dāng)前值外有許多相關(guān)的信息,如歷史信息和投影波形;而變量只有當(dāng)前值。 進(jìn)程對(duì)信號(hào)敏感而不對(duì)變量敏感。 信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào);而變量只在定義他們的順序域可見(jiàn)(共享變量除外)。 信號(hào)是硬件中連線的抽象描述,他們的功能是保存變化的數(shù)據(jù)值和連接子元件。變量在硬件中沒(méi)有類似的對(duì)應(yīng)關(guān)系,他們用于硬件特性的高層次建模所需要的計(jì)算中。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,58,process(a,b,c,d) begin d<=a; x<=b+d; d<=c; y<=b+d;
35、 end process;,process(a,b,c) Variable d:std_logic_vector(0 to 3) begin d:=a; x<=b+d; d:=c; y<=b+d; end process;,結(jié)果: x<=b+c; x<=b+c;,結(jié)果: x<=b+a; x<=b+c;,信號(hào)量的值將進(jìn)程語(yǔ)句最后所帶入的值作為最終代入值;而變量的值一經(jīng)賦值就變成新的值。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,59,2、數(shù)據(jù)類型,在VHDL程序中,經(jīng)常會(huì)遇到這樣的語(yǔ)句: Signal A : std_logic; Variable B : std_logic_
36、vector(7 downto 0); Constant C : integer;,數(shù)據(jù)對(duì)象類型,數(shù)據(jù)類型,數(shù)據(jù)對(duì)象名,,,,VHDL是一種強(qiáng)數(shù)據(jù)類型語(yǔ)言。要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號(hào)、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類型,并且相同數(shù)據(jù)類型的量才能互相傳遞和作用。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,60,2、數(shù)據(jù)類型, 標(biāo)準(zhǔn)數(shù)據(jù)類型 IEEE預(yù)定義標(biāo)準(zhǔn) 用戶自定義數(shù)據(jù)類型 VHDL的標(biāo)準(zhǔn)數(shù)據(jù)類型十種 1)布爾量(boolean) 布爾量具有兩種狀態(tài):false 和 true 常用于邏輯函數(shù),如相等(=)、比較(<) 等中作邏輯比較。 如,bit
37、值轉(zhuǎn)化成boolean 值: boolean_var := (bit_var = 1);,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,61,2、數(shù)據(jù)類型,2)位(bit) bit 表示一位的信號(hào)值。 放在單引號(hào)中,如 0 或 1。 3)位矢量 (bit_vector) bit_vector 是用雙引號(hào)括起來(lái)的一組位數(shù)據(jù)。 如: “001100” X“00B10B” 4)字符(character) 用單引號(hào)將字符括起來(lái)。 variable character_var : character; ... ... Character_var : = A;,2020/7/21,南京理工大
38、學(xué)機(jī)械工程學(xué)院,62,2、數(shù)據(jù)類型,5)整數(shù)(integer) integer 表示所有正的和負(fù)的整數(shù)。硬件實(shí)現(xiàn)時(shí), 利用32位的位矢量來(lái)表示??蓪?shí)現(xiàn)的整數(shù)范圍為: -(231-1) to (231-1) VHDL綜合器要求對(duì)具體的整數(shù)作出范圍限定, 否則無(wú)法綜合成硬件電路。 如:signal s : integer range 0 to 15; 信號(hào) s 的取值范圍是0-15,可用4位二進(jìn)制數(shù)表 示,因此 s 將被綜合成由四條信號(hào)線構(gòu)成的信號(hào)。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,63,2、數(shù)據(jù)類型,6)自然數(shù)(natural)和正整數(shù)(positive) natural是in
39、teger的子類型,表示非負(fù)整數(shù)。 positive是integer的子類型,表示正整數(shù)。 定義如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,64,2、數(shù)據(jù)類型,7)實(shí)數(shù)(REAL) 或稱浮點(diǎn)數(shù) 取值范圍:-1.0E38 - +1.0E38 實(shí)數(shù)類型僅能用于VHDL仿真器,一般綜合器 不支持。 8)字符串(string) string 是 character 類型的一
40、個(gè)非限定 數(shù)組。用雙引號(hào)將一串字符括起來(lái)。如: variable string_var : string(1 to 7); string_var := “Rosebud”;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,65,9)時(shí)間(TIME) 由整數(shù)和物理單位組成 如:55 ms,20 ns TYPE TIME IS RANGE 2147483647 TO 2147483647 UNITE fs;--飛秒(10-15S)VHDL中的最小時(shí)間單位 ps=1000fs;--皮秒 ns=1000ps;--納秒 us=1000ns;--微秒 ms=1000us;--毫秒 sec=100
41、0ms;--秒 min=60sec;--分 hr=60min;--時(shí) END units;,2、數(shù)據(jù)類型,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,66,2、數(shù)據(jù)類型,10)錯(cuò)誤等級(jí)(SEVERITY_LEVEL) 仿真中用來(lái)指示系統(tǒng)的工作狀態(tài),共有四種: NOTE(注意) WARNING(警告) ERROR(出錯(cuò)) FAILURE(失敗),其定義如下: TYPE severity_level IS(note,warning,error,failure);,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,67,2、數(shù)據(jù)類型,IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量 1)std_log
42、ic 類型 由 ieee 庫(kù)中的std_logic_1164 程序 包定義,為九值邏輯系統(tǒng),如下: (U,X,0,1,Z,W,L,H,-) U:初始值, X:不定, 0:0, 1:1, Z:高阻, W:弱信號(hào)不定, L:弱信號(hào)0, H:弱信號(hào)1, -:不可能情況,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,68,2、數(shù)據(jù)類型,IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量 由 std_logic 類型代替 bit 類型可以完成電 子系統(tǒng)的精確模擬,并可實(shí)現(xiàn)常見(jiàn)的三態(tài)總線電路。 2)std_logic_vector 類型 由 std_logic 構(gòu)成的數(shù)組。定義如下: type st
43、d_logic_vector is array(natural range) of std_logic; 賦值的原則:相同位寬,相同數(shù)據(jù)類型。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,69,2、數(shù)據(jù)類型,用戶自定義數(shù)據(jù)類型 用戶自定義類型是VHDL語(yǔ)言的一大特色。 可由用戶定義的數(shù)據(jù)類型有: 枚舉類型 整數(shù)和實(shí)數(shù)類型 數(shù)組類型 記錄類型 子類型,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,70,2、數(shù)據(jù)類型,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,71,SUBTYPE語(yǔ)句格式: 例: subtype digits is integer range 0
44、 to 9; 由subtype 語(yǔ)句定義的數(shù)據(jù)類型稱為子類型。,2、數(shù)據(jù)類型,subtype 子類型名 is 基本數(shù)據(jù)類型 約束范圍;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,72,2、數(shù)據(jù)類型,自定義整數(shù)類型 用戶定義的整數(shù)類型是標(biāo)準(zhǔn)包中整數(shù)類型的子范圍。 格式: 例:type my_integer is integer range 0 to 15; 自定義數(shù)組類型 數(shù)組:同類型元素的集合。VHDL支持多維數(shù)組。 多維數(shù)組的聲明: type byte is array(7 downto 0) of bit;1維8位數(shù)組 type vector is array(3 downto 0
45、) of byte;2維4X8數(shù)組,type 類型名稱 is integer 整數(shù)范圍;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,73,3、運(yùn)算操作符,VHDL運(yùn)算操作符的分類: 邏輯運(yùn)算符(Logical Operator) 關(guān)系運(yùn)算符(Relational Operator) 算術(shù)運(yùn)算符(Arithmetic Operator) 并置運(yùn)算符(Overloading Operator),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,74,1)邏輯運(yùn)算符 6種:and、or、nand、nor、xor、not 要求:操作數(shù)類型必須相同??蔀槿缦骂愋停? bit、bit_vecto
46、r、std_logic、 std_logic_vector、boolean 數(shù)組操作數(shù)的維數(shù)、大小必須相同。 注:當(dāng)有兩個(gè)以上的邏輯表達(dá)式時(shí),左右沒(méi)有 優(yōu)先級(jí)差別,必須使用括號(hào),如: x<=( a and b )or( not c and d ),2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,75,例外:當(dāng)邏輯表達(dá)式中只有“and”、“or”、 “xor” 運(yùn)算符時(shí),可以省略括號(hào)。如: a <= b and c and d and e; a <= b or c or d or e; a <= b xor c xor d xor e;,上述邏輯運(yùn)算在庫(kù)ieee的程序包std_log
47、ic_1164中定義。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,76,Library IEEE,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY liti IS ;,PORT(a,b,c,d: IN STD_LOGIC;,e : out STD_LOGIC);,END liti ;,ACHITECTURE AA1 OF liti IS,BEGIN,e<=(a and b) or tmp ;,Signal tmp : std_logic;,tmp<= c xor d ;,END AA1 ;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,77,2)關(guān)系運(yùn)算符 6 種:
48、=、/=、、= 用于比較相同父類的兩個(gè)操作數(shù),返回 boolean值。 在關(guān)系運(yùn)算符中小于等于符 “<=”和代入符“<=”是相同的,在讀VHDL語(yǔ)言的語(yǔ)句時(shí),應(yīng)按照上下文關(guān)系來(lái)判斷此符號(hào)到底是關(guān)系符還是代入符。,上述運(yùn)算在庫(kù)ieee的程序包std_logic_arith中定義。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,78,ENTITY my1 is,PORT(a,b : in bit_vector(0 to 3),m : out boolean ) ;,END my1 ;,ARCHITECTURE a1 of my1,BEGIN,m<=(a = b) ;,END a1;,,ENTIT
49、Y my1 is,PORT(a,b : in bit_vector(0 to 3),m : out boolean ) ;,ARCHITECTURE a1 of my1,BEGIN,m= b) ;,END a1;,END my1 ;,Library IEEE,USE IEEE.STD_LOGIC_ARITH.ALL;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,79,3)算術(shù)運(yùn)算符,VHDL語(yǔ)言中有5類算術(shù)運(yùn)算符,他們分別是: 求和操作符: (加)、(減) 求積操作符:*(乘)、/(除)、MOD(求模)、REM(取余) 符號(hào)操作符: (正)、(負(fù)) 混合操作符: **(指數(shù))、ABS(取絕對(duì)
50、值) 移位操作符:SLL(邏輯左移)、SRL(邏輯右移)、SLA(算術(shù)左移)、SRA(算術(shù)右移)、ROL(邏輯循環(huán)左移)、ROR邏輯循環(huán)右移) 只能是bit_vetor類型,上述運(yùn)算在庫(kù)ieee的程序包std_logic_arith中定義。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,80,移位操作語(yǔ)法結(jié)構(gòu): 左操作數(shù)必須是bit_vetor類型 右操作數(shù)必須是integer類型。,SLL邏輯左移:右端空出來(lái)的位置填0; SRL邏輯右移:左端空出來(lái)的位置填0; SLA算術(shù)左移:復(fù)制右端位,填充右端空出位置上; SRA算術(shù)右移:復(fù)制左端位,填充左端空出位置上;,2020/7/21,南京理工大學(xué)
51、機(jī)械工程學(xué)院,81,4)并置運(yùn)算符 Signal B : std_logic_vector(0 to 3); 則這兩個(gè)信號(hào)的屬性值分別為: Aleft=7; Aright=0; Alow=0; Ahigh=7; Alength=8; Bleft=0; Bright=3; Blow=0; Bhigh=3; Blength=4;,left表示數(shù)組的左邊界; right表示數(shù)組的右邊界; low表示數(shù)組的下邊界; high表示數(shù)組的上邊界; length表示數(shù)組的長(zhǎng)度。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,85,(2)event屬性: event屬
52、性,它的值為布爾型,如果剛好有事 件發(fā)生在該屬性所附著的信號(hào)上(即信號(hào)有變化), 則其取值為Ture,否則為False。 利用此屬性可決定時(shí)鐘信號(hào)的變化情況,即時(shí)鐘是否發(fā)生。,4、數(shù)據(jù)對(duì)象屬性,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,86,(2)event屬性: 例如:時(shí)鐘邊沿表示 signal clk : in std_logic;則clkevent and clk=1表示時(shí)鐘的上升沿。即時(shí)鐘變化了,且其值為1。 clkevent and clk=0表示時(shí)鐘的下降沿。即時(shí)鐘變化了,且其值為0。 此外,還可利用兩個(gè)函數(shù)來(lái)表示時(shí)鐘的邊沿。rising_edge(clk) 表示時(shí)
53、鐘的上升沿falling_edge(clk) 表示時(shí)鐘的下降沿 這兩個(gè)函數(shù)分別在庫(kù)ieee的程序包Std_logic_1164中定義。,4、數(shù)據(jù)對(duì)象屬性,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,87,5、VHDL語(yǔ)言詞法規(guī)則,1)注釋 為了提高VHDL源程序的可讀性,在VHDL中可以寫(xiě)入注釋。注釋以- -開(kāi)頭直到本行末尾的一段文字。在軟件中可以看見(jiàn),敲入- -之后,后面字體的顏色就發(fā)生改變。注釋不是VHDL設(shè)計(jì)描述的一部分,編譯后存入數(shù)據(jù)庫(kù)中的信息不包含注釋。,注釋舉例: Q:OUT STD_LOGIC _VECTOR(11 DOWNTO 0);--A/D轉(zhuǎn)換數(shù)據(jù)輸出顯示(行注釋)
54、--SRAM 數(shù)據(jù)寫(xiě)入控制狀態(tài)機(jī)(段注釋) WRIT_STATE:PROCESS(clk,rst)--SRAM寫(xiě)入控制狀態(tài)機(jī)時(shí)序電路進(jìn)程,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,88,2)數(shù)字 數(shù)字型文字可以有多種表達(dá)方式:可以是十進(jìn)制數(shù),也可以表示為二進(jìn)制、八進(jìn)制或十六進(jìn)制等為基的數(shù),可以是整數(shù),也可以是含有小數(shù)點(diǎn)的浮點(diǎn)數(shù)?,F(xiàn)舉例如下。十進(jìn)制整數(shù)表示法:如 012 5 78_456 (=78456) 2E6 在相鄰數(shù)字之間插入下劃線,對(duì)十進(jìn)制數(shù)值不產(chǎn)生影響,僅僅是為了提高文字的可讀性。允許在數(shù)字之前冠以若干個(gè)0,但不允許在數(shù)字之間存在空格。 以基表示的數(shù):用這
55、種方式表示的數(shù)由五個(gè)部分組成。第一部分,用十進(jìn)制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù);第二部分,數(shù)值隔離符號(hào)“#”;第三部分,表達(dá)的文字;第四部分,指數(shù)隔離符號(hào)“#”;第五部分,用十進(jìn)制表示的指數(shù)部分,這一部分的數(shù)如果為0可以省去不寫(xiě)。如 2#111_1011# 8#1473# 16#A8 對(duì)以基表示的數(shù)而言,相鄰數(shù)字間插入下劃線不影響數(shù)值?;淖钚?shù)為2,最大數(shù)為16,以基表示的數(shù)中允許出現(xiàn)A至F的字母,大小寫(xiě)字母意義無(wú)區(qū)別。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,89,實(shí)數(shù):實(shí)數(shù)必須帶有小數(shù)點(diǎn)。如 12.0 0.0 3.14 6_741_113.666 52.6 E2 物理量文字:綜合
56、器不支持物理量文字的綜合。如 60 s(秒) 100 m (米) 177 A(安培),3)字符和字符串 字符是用單引號(hào)引起來(lái)的ASC字符,可以是數(shù)值,也可以是符號(hào)或字母,如 E, e, $, 23, A 字符串是一維的字符數(shù)組,需放在雙引號(hào)中。有兩種類型的字符串:文字字符串和位矢量字符串。 文字字符串是用雙引號(hào)引起來(lái)的一串文字。如 “FALSE”, “X”, “THIS IS END”,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,90,位矢量字符串是被雙引號(hào)引起來(lái)的擴(kuò)展的數(shù)字序列,數(shù)字序列前冠以基數(shù)說(shuō)明符?;鶖?shù)符有“B”、“O”、“X”,他們的含義如下。 B:二進(jìn)制基數(shù)符號(hào),表示二進(jìn)
57、制位0或1,在字符串中每一個(gè)位表示一個(gè)BIT。 O:八進(jìn)制基數(shù)符號(hào),在字符串中每一個(gè)數(shù)代表一個(gè)八進(jìn)制數(shù),即代表一個(gè)3位(BIT)的二進(jìn)制數(shù)。 X:十六進(jìn)制基數(shù)符號(hào),代表一個(gè)十六進(jìn)制數(shù),即代表一個(gè)4位二進(jìn)制數(shù)。 例如: B“1011_1111”, O“152”, X“F821”,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,91,4.下標(biāo)名 下標(biāo)名用于指示數(shù)組型變量或信號(hào)的某一元素。 SIGNAL a,b:BIT _VECTOR(0 TO 3); SIGNAL s:INTEGER RANGE 0 TO 2; SIGNAL x,y:BIT; x <= a (s); y <= b (3); 上例中
58、,a (s)為一下標(biāo)語(yǔ)句,s是不可計(jì)算的下標(biāo)名,只能在特定情況下進(jìn)行綜合;b (3)的下標(biāo)為3,可以進(jìn)行綜合。,返回,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,92,4.4 VHDL語(yǔ)言的順序描述語(yǔ)句,(1)順序語(yǔ)句每一條語(yǔ)句的執(zhí)行都是順序進(jìn)行的。如同高級(jí)編程語(yǔ)言中的命令執(zhí)行方式,一次一條命令,按書(shū)寫(xiě)順序由上而下執(zhí)行。 (2)順序語(yǔ)句只能出現(xiàn)在進(jìn)程和子程序內(nèi)部。 (3)由于順序語(yǔ)句的次序很重要,因此,順序語(yǔ)句要與并行語(yǔ)句分割開(kāi),這可以通過(guò)Process語(yǔ)句來(lái)實(shí)現(xiàn)。Process語(yǔ)句出現(xiàn)在結(jié)構(gòu)體中,它將其內(nèi)部的語(yǔ)句進(jìn)行封裝。,順序語(yǔ)句有三個(gè)特點(diǎn): a.所有語(yǔ)句的執(zhí)行是順序進(jìn)行的; b.每條語(yǔ)
59、句的執(zhí)行和其所在的位置有關(guān); c.順序語(yǔ)句的輸出不僅依賴于輸入,而且還受位置的影響。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,93,4.4 VHDL語(yǔ)言的順序描述語(yǔ)句,(1)代入語(yǔ)句和延時(shí)語(yǔ)句 (2)If語(yǔ)句 (3)Case語(yǔ)句 (4)Null語(yǔ)句 (5)Loop語(yǔ)句 (6)NEXT和EXIT語(yǔ)句 (7)Wait 語(yǔ)句 (8)Procedure(過(guò)程)調(diào)用語(yǔ)句,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,94,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,代入語(yǔ)句是VHDL語(yǔ)言中進(jìn)行行為描述的最基本的語(yǔ)句。 例如: a<=b 該語(yǔ)句的功能是a得到b的值。當(dāng)該語(yǔ)句有效時(shí),現(xiàn)行信號(hào) b的值將代入信號(hào)a。
60、只要b的值有一個(gè)新的變化,那么該 語(yǔ)句將被執(zhí)行。所以,b是該代入語(yǔ)句的一個(gè)敏感量。 代入語(yǔ)句最普遍的格式為: 信號(hào)量<=敏感信號(hào)量表達(dá)式 例如: z<=a NOR(b NAND c);,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,95,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,延時(shí)語(yǔ)句有兩種:慣性延時(shí)和傳輸延時(shí) 慣性延時(shí): 在VHDL語(yǔ)言中,慣性延時(shí)是缺省的,即在語(yǔ)句中如 果不作特別說(shuō)明,產(chǎn)生的延時(shí)一定是慣性延時(shí)。 幾乎所有器件都存在慣性延時(shí),因此,硬件電路的設(shè) 計(jì)人員為了逼真地仿真硬件電路的實(shí)際工作情況,在代入 語(yǔ)句中總要加上慣性延時(shí)時(shí)間的說(shuō)明。例如: b<=a AFTER
61、 10 ns; 慣性延時(shí)說(shuō)明只在行為仿真時(shí)有意義,邏輯綜合時(shí)將 被忽略,或者在邏輯綜合前必須去掉延時(shí)說(shuō)明。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,96,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,慣性延時(shí): 在慣性模型中,系統(tǒng)或器件輸出信號(hào)要發(fā)生變化必須 有一段時(shí)間的延時(shí),這段延時(shí)時(shí)間稱為系統(tǒng)或器件的慣性 或稱慣性延時(shí)。 慣性延時(shí)有一個(gè)重要特點(diǎn),即當(dāng)一個(gè)系統(tǒng)或器件,它 的輸入信號(hào)變化周期小于系統(tǒng)或器件的慣性延時(shí)時(shí),其輸 出將保持不變。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,97,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,慣性延時(shí): 如有一個(gè)門電路,其慣性延時(shí)時(shí)間為20ns,當(dāng)該門電路 的輸入端a
62、輸入一個(gè)10ns的脈沖信號(hào)時(shí),其輸出端b的輸出仍 維持低電平,沒(méi)有發(fā)生變化。對(duì)于慣性時(shí)間等于20ns的門電 路,為使其實(shí)現(xiàn)正常的功能,輸入信號(hào)的變化周期一定要大 于20ns。,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,98,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,傳輸延時(shí): 在VHDL語(yǔ)言中,傳輸延時(shí)不是缺省的,必須在語(yǔ)句中 明確說(shuō)明。傳輸延時(shí)常用于描述總線延時(shí)、連接線的延時(shí)及 ASIC芯片中的路徑延時(shí)。 對(duì)于相同的門電路,用傳輸延時(shí)來(lái)代替慣性延時(shí),就可 以得到正確的輸出結(jié)果。也就是說(shuō),輸出端的信號(hào)除延時(shí)規(guī) 定時(shí)間外,將完全復(fù)現(xiàn)輸入端的輸入波形,而不管輸入波形 的形狀和寬窄如何。,2020/7/
63、21,南京理工大學(xué)機(jī)械工程學(xué)院,99,(1)代入語(yǔ)句和延時(shí)語(yǔ)句,傳輸延時(shí): 具有傳輸延時(shí)的代入語(yǔ)句如下所示: b<= TRANSPORT a AFTER 20 ns 語(yǔ)句中“TRANSPORT”是專門用于說(shuō)明傳輸延時(shí)的前置詞,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,100,(2)IF語(yǔ)句,IF 語(yǔ)句是根據(jù)所指定的條件來(lái)確定執(zhí)行那些語(yǔ)句的,其 書(shū)寫(xiě)格式通常有3種類型。,第一種: 格式 IF 條件 THEN 順序處理語(yǔ)句; END IF;,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,101,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; EN
64、TITY dff IS PORT( clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; ARCHITECTURE a OF dff IS BEGIN process(clk) begin if (clkevent and clk=1 ) then q<=d; end if; end process; END a;,D觸發(fā)器,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,102,(2)IF語(yǔ)句,第二種: 格式 IF 條件 THEN 順序處理語(yǔ)句; ELSE 順序處理語(yǔ)句; END IF;,ENTITY mux21 IS PORT ( a
65、, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21; ARCHITECTURE one OF mux21 IS BEGIN PROCESS (a,b,s) BEGIN IF( s = 0 ) THEN y <= a ; ELSE y <= b ; END IF; END PROCESS; END ARCHITECTURE one ;,2選1電路,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,103,(2)IF語(yǔ)句,第三種: 格式 IF 條件 THEN 順序處理語(yǔ)句; ELSIF 條件
66、THEN 順序處理語(yǔ)句; ELSE 順序處理語(yǔ)句; END IF;,自上而下逐一判斷條件是否成立。若條件成立,則執(zhí)行相應(yīng)的順序語(yǔ)句,并不再判斷其它表達(dá)式,直接結(jié)束 IF 語(yǔ)句的執(zhí)行。 這種語(yǔ)法格式能夠進(jìn)行優(yōu)先級(jí)的判斷,因此各條件表達(dá)式中的條件可以重疊。,,2020/7/21,南京理工大學(xué)機(jī)械工程學(xué)院,104,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX4 IS PORT (input: IN STD_LOGIC_VECTOR (3 DOWNTO 0); sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0); y: OUT STD_LOGIC); END MUX4; ARCHITECTURE MUX4_ARCH OF MUX4 IS BEGIN PROCESS(sel,input) BEGIN IF(sel=“00”) THEN y<=input(0); ELSIF(sel=“01”) THEN y<=inpit(1); ELSIF(sel=“1
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案