VHDL與數(shù)字電路設計.ppt

上傳人:w****2 文檔編號:15594411 上傳時間:2020-08-22 格式:PPT 頁數(shù):194 大小:748.50KB
收藏 版權申訴 舉報 下載
VHDL與數(shù)字電路設計.ppt_第1頁
第1頁 / 共194頁
VHDL與數(shù)字電路設計.ppt_第2頁
第2頁 / 共194頁
VHDL與數(shù)字電路設計.ppt_第3頁
第3頁 / 共194頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《VHDL與數(shù)字電路設計.ppt》由會員分享,可在線閱讀,更多相關《VHDL與數(shù)字電路設計.ppt(194頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2020/8/22,南京理工大學機械工程學院,1,第四章VHDL硬件描述語言,張志安 南京理工大學,2020/8/22,南京理工大學機械工程學院,2,主要內(nèi)容 4.1 VHDL語言概述 4.2 VHDL語言程序的基本結(jié)構(gòu) 4.3 VHDL語言的數(shù)據(jù)類型及運算操作符 4.4 VHDL語言的順序描述語句 4.5 VHDL語言的并發(fā)描述語句 4.6 VHDL語言在數(shù)字電路中的應用,2020/8/22,南京理工大學機械工程學院,3,4.1 VHDL語言概述,VHDL: VHSIC (Very High Speed Integrated Circuit) Hardware Descripti

2、on Language,80年代初由美國國防部在實施超高速集成電路(VHSIC) 項目時開發(fā)的。 1987年由 IEEE 協(xié)會批準為 IEEE 工業(yè)標準,稱為 IEEE1076-1987。 各EDA公司相繼推出支持VHDL的設計環(huán)境。 1993年被更新為 93 標準,即IEEE1076-1993。 進一步提高抽象描述層次,擴展系統(tǒng)描述能力。,數(shù)字電子技術的基本知識回顧,組合邏輯電路 編碼器、譯碼器、數(shù)據(jù)選擇器、加法器、數(shù)值比較器等 時序邏輯電路 同步時序邏輯電路 異步時序邏輯電路 寄存器、移位寄存器、計數(shù)器、序列信號發(fā)生器,一、傳統(tǒng)設計方法,(1)首先確定可用的元器件; (2)根據(jù)

3、這些器件進行邏輯設計,完成各模塊; (3)將各模塊進行連接,最后形成系統(tǒng); (4)而后經(jīng)調(diào)試、測量觀察整個系統(tǒng)是否達到規(guī)定的性能指標。,傳統(tǒng)的設計方法是基于中小規(guī)模集成電路器件進行設計(如74系列及其改進系列、74HC系列等都屬于通用型數(shù)字集成電路),而且是采用自底向上進行設計:,EDA(Electronics Design Automation)即電子設計自動化技術,是利用計算機工作平臺,從事電子系統(tǒng)和電路設計的一項技術。 EDA技術為電子系統(tǒng)設計帶來了這樣的變化: (1)設計效率提高,設計周期縮短; (2)設計質(zhì)量提高; (3)設計成本降低; (4)能更充分地發(fā)揮設計人員的創(chuàng)造性; (5)

4、設計成果的重用性大大提高,省去了不必要的重復勞動。,二、EDA設計方法,自頂向下的設計方法,數(shù)字電路的EDA設計是基于PLD進行設計的,支持自頂向下的設計方法: (1)首先從系統(tǒng)設計入手,在頂層進行功能劃分和結(jié)構(gòu)設計; (2)然后再逐級設計底層的結(jié)構(gòu); (3)并在系統(tǒng)級采用仿真手段驗證設計的正確性; (4)最后完成整個系統(tǒng)的設計,實現(xiàn)從設計、仿真、測試一體化。,傳統(tǒng)設計方法 vs EDA設計方法,三、PLD器件,如果能把所設計的數(shù)字系統(tǒng)做成一片大規(guī)模集成電路,則不僅能減小電路的體積、重量、功耗,而且會使電路的可靠性大為提高。 為某種專門用途而設計的集成電路叫做專用集成電路,即所謂的ASI

5、C(Application Specific Integrated Circuit的縮寫)。 在用量不大的情況下,設計和制造這樣的專用集成電路成本很高,而且設計、制造的周期也較長。 可編程邏輯器件的研制成功為解決上述問題提供了比較理想的途徑。,(一)出現(xiàn)的背景,(二)PLD概述,PLD:可編程邏輯器件(Programmable Logic Device) 可編程邏輯器件是一種數(shù)字集成電路的半成品,在其芯片上按一定排列方式集成了大量的邏輯門和觸發(fā)器等基本邏輯元件。通過編程可以設置其邏輯功能。 PLD編程: 利用開發(fā)工具對PLD進行加工,即按設計要求將這些片內(nèi)的元件連接起來,使之

6、完成某個邏輯電路或系統(tǒng)的功能,成為一個專用集成電路(ASICApplication Specific Integrated Circuit)。,PLD開發(fā)系統(tǒng),PLD開發(fā)系統(tǒng)包括硬件和軟件兩部分。 硬件部分:計算機、下載電纜或編程器; 軟件部分:集成開發(fā)系統(tǒng)。 Altera公司:Maxplus 、 Quartus Xilinx公司:Foundation、 ISE Lattice公司:Synario System、ispEXPERT System,2020/8/22,南京理工大學機械工程學院,12,四、PLD設計流程,1、PLD設計準備,在設計之前,首先要進行方案論

7、證和器件選擇等設計準備工作。 設計者首先要根據(jù)任務要求,判斷系統(tǒng)的可行性。系統(tǒng)的可行性要受到邏輯要求合理性、成本、開發(fā)條件、器件供應等方面的約束。 若系統(tǒng)可行,則根據(jù)系統(tǒng)所完成的功能及復雜程度,對器件本身的資源和成本、工作速度及連線的可布性等方面進行權衡,選擇合適的設計方案和合適的器件類型。,2、設計輸入,將所設計的電路的邏輯功能按照開發(fā)系統(tǒng)要求的形式表達出來的過程稱為設計輸入。 通常,設計輸入有如下三種方式: (1)原理圖輸入方式 適用于對系統(tǒng)及各部分電路很熟悉的場合。 (2)硬件描述語言輸入方式 硬件描述語言是用文本方式描述設計,硬件描述語言有ABEL、AHDL、VHDL、V

8、erilog等,其中VHDL和Verilog已成為IEEE標準。 (3)波形輸入方式,3、設計處理,邏輯優(yōu)化 把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實現(xiàn)的形式,優(yōu)化使設計所占用的資源最少。 邏輯綜合 根據(jù)設計描述,對給定的硬件結(jié)構(gòu)組件,最終獲得門級電路甚至更底層的電路描述文件,即將多個模塊化設計文件合并為一個網(wǎng)表文件。 適配 確定優(yōu)化后的邏輯能否與器件中的宏單元和I/O單元適配。 分割 將大的設計分割為多個便于器件內(nèi)部資源實現(xiàn)的邏輯小塊的形式。,2020/8/22,南京理工大學機械工程學院,16,4、設計校驗,設計校驗過程包括功能仿真和時序仿真。 功能仿真 時序仿真,5、器件編程,器件編程就是

9、將開發(fā)系統(tǒng)生成的目標文件下載到可編程邏輯器件中,來定義內(nèi)部模塊的邏輯功能以及它們的相互連接關系。 兩種編程方式: 編程器 下載電纜,返回,2020/8/22,南京理工大學機械工程學院,17,4.2 VHDL語言程序的基本結(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/8/22,南京理工大學機械工程學院,18,庫(Lib

10、rary)是經(jīng)編譯后的數(shù)據(jù)的集合,它用于存放 包集合定義、實體定義、構(gòu)造體定義和配置定義。 聲明格式: Library 庫名;,(1)庫( Library ),4.2 VHDL語言程序的基本結(jié)構(gòu),VHDL庫可分為 5種:,1)IEEE 庫,2)STD 庫(標準庫),3)面向ASIC的庫,4)WORK庫(默認庫),5)用戶定義庫,2020/8/22,南京理工大學機械工程學院,19,4.2 VHDL語言程序的基本結(jié)構(gòu),(2)包集合( Package ),包集合 (Package )中定義了基本的常數(shù)、信號、數(shù)據(jù) 類型、元件語句、函數(shù)定義及過程定義等。是庫結(jié)構(gòu)中的 一個層次。 聲明格式: use

11、庫名包集合名項目名; use 庫名. PACKAGE名.All;,包集合的結(jié)構(gòu)包括: 包集合標題(包首) 包集合主體(包體),2020/8/22,南京理工大學機械工程學院,20,package 包集合名 is 包說明項 end 包集合名;,4.2 VHDL語言程序的基本結(jié)構(gòu),(2)包集合( Package ),package body 包集合名 is 包體說明項 end 包集合名;,,,包集合標題,包集合主體,包集合體并非必須,只有在包集合中要說明 子程序時,包集合體才是必須的。,2020/8/22,南京理工大學機械工程學院,21,作用: ENTITY(實體)用于定義電路的外觀,即I

12、/O端口的類型和數(shù)量。 定義格式: Entity 實體名 is Port( a : in bit; b : in bit; c : out bit); End 實體名;,(3)實體(ENTITY)定義區(qū),端口名,數(shù)據(jù)類型,端口模式,,,,4.2 VHDL語言程序的基本結(jié)構(gòu),:,;,2020/8/22,南京理工大學機械工程學院,22,端口說明(PORT) 端口為設計實體和其外部環(huán)境提供動態(tài)通信的通道,是對基本設計單元與外部接口的描述,其功能相當電路圖符號的外部引腳。端口可以被賦值,也可以當做邏輯變量用在邏輯表達式中。 其一般書寫格式為: PORT (端口名 :端口模式 數(shù)據(jù)類

13、型; 端口名 :端口模式 數(shù)據(jù)類型; );,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,南京理工大學機械工程學院,23,標識符的定義原則: (1)標識符由字母、數(shù)字和下劃線組成, a_7; (2)標識符不區(qū)分大小寫,ab和AB是一樣的; (3)第一個字符必須是字母,即a666; (4)不允許有兩個連續(xù)的下劃線,a__b錯誤; (5)末尾不能是下劃線,mname_錯誤; (6)標識符不能和關鍵字相同,如Entity,is等。,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,

14、南京理工大學機械工程學院,24,端口模式(MODE)有以下幾種類型: IN ;OUT;INOUT ;BUFFER 端口模式可用下圖說明:(黑框代表一個設計或模塊) IN OUT BUFFER INOUT,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,南京理工大學機械工程學院,25,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),輸入(IN) 允許信號進入實體,主要用于時鐘輸入、控制輸入 (如load、reset、enable、clk)和單向的數(shù)據(jù)輸入 (如地址數(shù)據(jù)信號address)等。,輸出(OUT

15、) 輸出模式只允許信號離開實體,常用于計數(shù)輸出、 單向數(shù)據(jù)輸出、被設計實體產(chǎn)生的控制其他實體的 信號等。注意:輸出模式不能用于被設計實體的內(nèi) 部反饋,因為輸出端口在實體內(nèi)不能看做是可讀的。,2020/8/22,南京理工大學機械工程學院,26,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),雙向模式(INOUT) 雙向模式允許信號雙向傳輸(既可以進入實體,也可以 離開實體),雙向模式端口允許引入內(nèi)部反饋。,緩沖(BUFFER) 緩沖模式允許信號輸出到實體外部,但同時也可以在實 體內(nèi)部引用該端口的信號。緩沖端口既能用于輸出也能 用于反饋。緩沖模式用于在實體內(nèi)部建立一個可讀的

16、輸 出端口,例如計數(shù)器輸出、計數(shù)器的現(xiàn)態(tài)用來決定計數(shù) 器的次態(tài)。,2020/8/22,南京理工大學機械工程學院,27,(3)實體(ENTITY)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),out 和 buffer 的區(qū)別:,2020/8/22,南京理工大學機械工程學院,28,結(jié)構(gòu)體也叫構(gòu)造體,結(jié)構(gòu)體描述了基本設計單元(實體)的結(jié)構(gòu)、行為、元件及內(nèi)部連接關系,也就是說它定義了設計實體的功能,規(guī)定了設計實體的數(shù)據(jù)流程,制定了實體內(nèi)部元件的連接關系。結(jié)構(gòu)體對其基本設計單元的輸入和輸出關系可用以下三種方式進行描述,即行為描述(基本設計單元的數(shù)學模型描述)、寄存器傳輸描述(數(shù)據(jù)流描述)和結(jié)構(gòu)描述(邏輯元

17、件連接描述)。 結(jié)構(gòu)體是對實體功能的具體描述,因此它一定要跟在實體的后面 。,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,南京理工大學機械工程學院,29,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),定義格式: Architecture 結(jié)構(gòu)體名 of 實體名 is 聲明語句;(內(nèi)部信號、變量、常數(shù),元件,子程序聲明) Begin 并行描述語句; End 結(jié)構(gòu)體名;,4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,南京理工大學機械工程學院,30,結(jié)構(gòu)體(ARCHITECTURE)構(gòu)造圖,2020/8/22,南京理

18、工大學機械工程學院,31,圖中5種功能描述語句的基本組成和功能分別是: 塊語句是由一系列并行語句構(gòu)成的組合體,它的功能是將結(jié)構(gòu)體中的并行語句組成一個或多個子模塊。 進程語句定義順序語句模塊,用以將從外部獲得的信號值或內(nèi)部運算數(shù)據(jù)向其他的信號進行賦值。 信號賦值語句將設計實體內(nèi)的處理結(jié)果向定義的信號或界面端口進行賦值。 子程序調(diào)用語句可以調(diào)用進程或參數(shù),并將獲得的結(jié)果賦值于信號。 元件例化語句對其他的設計實體做元件調(diào)用說明,并將此元件的端口與其他元件、信號或高層實體的界面端口進行連接。,(4)結(jié)構(gòu)體(ARCHITECTURE)定義區(qū),4.2 VHDL語言程序的基本結(jié)構(gòu),2020/8/22,南京理

19、工大學機械工程學院,32,4.2 VHDL語言程序的基本結(jié)構(gòu),實體與結(jié)構(gòu)體的關系:,一個設計實體可有多個結(jié)構(gòu)體,代表實體的多種實現(xiàn)方式。各個結(jié)構(gòu)體的地位相同。,2020/8/22,南京理工大學機械工程學院,33,4.2 VHDL語言程序的基本結(jié)構(gòu),(5)配置(CONFIGURATION),配置:從某個實體的多種結(jié)構(gòu)體描述方式中選擇 特定的一個。,2020/8/22,南京理工大學機械工程學院,34,configuration 配置名 of 實體名 is for 選配結(jié)構(gòu)體名 end for ; end 配置名;,4.2 VHDL語言程序的基本結(jié)構(gòu),(5)配置(CONFIGURATION),

20、在用VHDL描述硬件電路時,常常采用結(jié)構(gòu)描述方式和混合描述方式。在這兩種描述方式中,常常需要將其他設計實體作為元件進行引用,這時就需要將不同元件通過配置安裝到不同的設計實體中。VHDL提供了配置語句用于描述各種設計實體和元件之間連接關系以及設計實體和結(jié)構(gòu)體之間的連接關系。,2020/8/22,南京理工大學機械工程學院,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;,例:一個與非門不同實現(xiàn)方式的配置如下:,2020/8/22,南京理工大學機械工程學院,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;,例:一個與非門不同實現(xiàn)方式的配置如下:,2020/8/22,南京理工大學機械工程學院,37,configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;,例:一個與非門不同實現(xiàn)方式的配置如下:,2020/8/22,南京理工大學機械工程學院,38,二輸入與門電路設計范例,電路真值表,2020/8/22,南京理工大學機械工程學院,39,Library std; Use std.s

23、tandard.all; Entity and2 is Port( a : in bit; b : in bit; c : out bit); End and2; --實體定義結(jié)束。,雙減號--為VHDL程序的注釋符,類似C語言中的//注釋符。,二輸入與門電路設計范例,2020/8/22,南京理工大學機械工程學院,40,二輸入與門電路設計范例,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、 --符號<=為信號直接賦值符。 End Na; --結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c <= a and b; --and 為邏輯與操作 End Nb; --結(jié)構(gòu)體Nb,2020/8/22,南京理工大學機械工程學院,41,二輸入與門電路設計范例,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/8/22,南京理工大學機械工程學院,42,2選1多路選擇器的VHDL描述,2020/8/22,南京理工大學機械工程學院,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 ;,,實體,,結(jié)構(gòu)體,2020/8/22,南京理工大學機械工程學院,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/8/22,南京理工大學機械工程學院,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/8/22,南京理工大學機械工程學院,46,mux21a功能時序波形,2選1多路選擇器的VHDL描述,返回,2020/8/22,南京理工大學機械工程學院,47,4.3 VHDL語言的數(shù)據(jù)類型及運算操作符

28、,1、數(shù)據(jù)對象 2、數(shù)據(jù)類型 3 、運算操作符 4、 數(shù)據(jù)對象屬性 5、 VHDL語言詞法規(guī)則,2020/8/22,南京理工大學機械工程學院,48,1、數(shù)據(jù)對象,三種對象:常量(Constant) 變量(Variable) 信號(Signal) 三種對象的物理含義: 常量代表數(shù)字電路中的電源、地、恒定邏 輯值等常數(shù); 變量代表暫存某些值的載體,常用于描述 算法; 信號代表物理設計中的某一條硬件連接線, 包括輸入、輸出端口。,2020/8/22,南京理工大學機械工程學院,49,1、數(shù)據(jù)對象,三種對象的特點及說明場合: 信號:全局量, 用于architectu

29、re、 package、entitiy。 變量:局部量,用于process、function、 procedure。 常量:全局量,可用于上面兩種場合。,2020/8/22,南京理工大學機械工程學院,50,1、數(shù)據(jù)對象,常量說明 常量說明:對某一個常量名賦予一個固定的值。 格式: 例: constant data:bit_vector(3 downto 0):=“1010” constant width: integer: = 8; constant x: new_bit: = x; 常量數(shù)據(jù)類型必須與表達式的數(shù)據(jù)類型一致。,constant 常數(shù)名:數(shù)據(jù)類型:= 表達式;,20

30、20/8/22,南京理工大學機械工程學院,51,常量的可視性(作用范圍):,常量是全局量,其作用范圍取決于常量被定義的位置。,2020/8/22,南京理工大學機械工程學院,52,1、數(shù)據(jù)對象,變量說明 變量是一個局部量,只能在進程和子程序中 定義、使用。其作用范圍僅限于定義了變量的進 程和子程序中。 格式: 例: variable a, b : bit; variable count:integer range 0 to 255:= 10; 變量的初值可用于仿真,但綜合時被忽略。,variable 變量名:數(shù)據(jù)類型 約束條件:= 表達式;,2020/8/22,南京理工大學機械工程學院,53,

31、1、數(shù)據(jù)對象,信號說明 電子硬件系統(tǒng)運行的基本特性: 各部分電路工作的并行特性; 信號傳輸過程中的延時特性; 多驅(qū)動源的總線特性; 時序電路中觸發(fā)器的記憶特性等。 信號是電子系統(tǒng)內(nèi)部硬件連接和硬件特性的抽象表示。 用來描述硬件系統(tǒng)的基本特性。 格式:,signal 信號名:數(shù)據(jù)類型 約束條件: 表達式;,2020/8/22,南京理工大學機械工程學院,54,1、數(shù)據(jù)對象,例: signal a, b : bit; signal init : integer := -1; signal s1: std_logic := 0; signal s2: std_logic_vector(15

32、 downto 0); 注:a. 綜合時初值被忽略。 b. 信號是全局量??稍诮Y(jié)構(gòu)體、實體、塊中 說明和使用信號。 c. 在進程和子程序中只能使用信號,不能說 明信號。,2020/8/22,南京理工大學機械工程學院,55,例:進程中信號與變量的使用,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/8/22,南京理工大學機械工程學院,56,1、數(shù)據(jù)對象,信號與端口的區(qū)別: 除沒有方向說明外,信號與實體的“端口 (PORT)” 概念相似。端口是一種隱形的信號。 entity exam is port(signal a, b: in std_logic; signal c: out std_logic); end exam; 端口是一種有方向的信號。即輸出端口不能 讀出數(shù)據(jù),只能寫入數(shù)據(jù);輸入端口不能寫入數(shù) 據(jù),只能讀出數(shù)據(jù)。 信號本身無方向,可讀可寫。,2020/8/22,南京理工大學機械工程學院,57,信號

34、與變量的區(qū)別: 信號和變量是VHDL中重要的客體,他們之間的主要區(qū)別有: 信號賦值至少要有延時;而變量賦值沒有。 信號除當前值外有許多相關的信息,如歷史信息和投影波形;而變量只有當前值。 進程對信號敏感而不對變量敏感。 信號可以是多個進程的全局信號;而變量只在定義他們的順序域可見(共享變量除外)。 信號是硬件中連線的抽象描述,他們的功能是保存變化的數(shù)據(jù)值和連接子元件。變量在硬件中沒有類似的對應關系,他們用于硬件特性的高層次建模所需要的計算中。,2020/8/22,南京理工大學機械工程學院,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;,信號量的值將進程語句最后所帶入的值作為最終代入值;而變量的值一經(jīng)賦值就變成新的值。,2020/8/22,南京理工大學機械工程學院,59,2、數(shù)據(jù)類型,在VHDL程序中,經(jīng)常會遇到這樣的語句: Signal A : std_logic; Variable B : std_logic_

36、vector(7 downto 0); Constant C : integer;,數(shù)據(jù)對象類型,數(shù)據(jù)類型,數(shù)據(jù)對象名,,,,VHDL是一種強數(shù)據(jù)類型語言。要求設計實體中的每一個常數(shù)、信號、變量、函數(shù)以及設定的各種參量都必須具有確定的數(shù)據(jù)類型,并且相同數(shù)據(jù)類型的量才能互相傳遞和作用。,2020/8/22,南京理工大學機械工程學院,60,2、數(shù)據(jù)類型, 標準數(shù)據(jù)類型 IEEE預定義標準 用戶自定義數(shù)據(jù)類型 VHDL的標準數(shù)據(jù)類型十種 1)布爾量(boolean) 布爾量具有兩種狀態(tài):false 和 true 常用于邏輯函數(shù),如相等(=)、比較(<) 等中作邏輯比較。 如,bit

37、值轉(zhuǎn)化成boolean 值: boolean_var := (bit_var = 1);,2020/8/22,南京理工大學機械工程學院,61,2、數(shù)據(jù)類型,2)位(bit) bit 表示一位的信號值。 放在單引號中,如 0 或 1。 3)位矢量 (bit_vector) bit_vector 是用雙引號括起來的一組位數(shù)據(jù)。 如: “001100” X“00B10B” 4)字符(character) 用單引號將字符括起來。 variable character_var : character; ... ... Character_var : = A;,2020/8/22,南京理工大

38、學機械工程學院,62,2、數(shù)據(jù)類型,5)整數(shù)(integer) integer 表示所有正的和負的整數(shù)。硬件實現(xiàn)時, 利用32位的位矢量來表示??蓪崿F(xiàn)的整數(shù)范圍為: -(231-1) to (231-1) VHDL綜合器要求對具體的整數(shù)作出范圍限定, 否則無法綜合成硬件電路。 如:signal s : integer range 0 to 15; 信號 s 的取值范圍是0-15,可用4位二進制數(shù)表 示,因此 s 將被綜合成由四條信號線構(gòu)成的信號。,2020/8/22,南京理工大學機械工程學院,63,2、數(shù)據(jù)類型,6)自然數(shù)(natural)和正整數(shù)(positive) natural是in

39、teger的子類型,表示非負整數(shù)。 positive是integer的子類型,表示正整數(shù)。 定義如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;,2020/8/22,南京理工大學機械工程學院,64,2、數(shù)據(jù)類型,7)實數(shù)(REAL) 或稱浮點數(shù) 取值范圍:-1.0E38 - +1.0E38 實數(shù)類型僅能用于VHDL仿真器,一般綜合器 不支持。 8)字符串(string) string 是 character 類型的一

40、個非限定 數(shù)組。用雙引號將一串字符括起來。如: variable string_var : string(1 to 7); string_var := “Rosebud”;,2020/8/22,南京理工大學機械工程學院,65,9)時間(TIME) 由整數(shù)和物理單位組成 如:55 ms,20 ns TYPE TIME IS RANGE 2147483647 TO 2147483647 UNITE fs;--飛秒(10-15S)VHDL中的最小時間單位 ps=1000fs;--皮秒 ns=1000ps;--納秒 us=1000ns;--微秒 ms=1000us;--毫秒 sec=100

41、0ms;--秒 min=60sec;--分 hr=60min;--時 END units;,2、數(shù)據(jù)類型,2020/8/22,南京理工大學機械工程學院,66,2、數(shù)據(jù)類型,10)錯誤等級(SEVERITY_LEVEL) 仿真中用來指示系統(tǒng)的工作狀態(tài),共有四種: NOTE(注意) WARNING(警告) ERROR(出錯) FAILURE(失?。?其定義如下: TYPE severity_level IS(note,warning,error,failure);,2020/8/22,南京理工大學機械工程學院,67,2、數(shù)據(jù)類型,IEEE預定義標準邏輯位與矢量 1)std_log

42、ic 類型 由 ieee 庫中的std_logic_1164 程序 包定義,為九值邏輯系統(tǒng),如下: (U,X,0,1,Z,W,L,H,-) U:初始值, X:不定, 0:0, 1:1, Z:高阻, W:弱信號不定, L:弱信號0, H:弱信號1, -:不可能情況,2020/8/22,南京理工大學機械工程學院,68,2、數(shù)據(jù)類型,IEEE預定義標準邏輯位與矢量 由 std_logic 類型代替 bit 類型可以完成電 子系統(tǒng)的精確模擬,并可實現(xià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/8/22,南京理工大學機械工程學院,69,2、數(shù)據(jù)類型,用戶自定義數(shù)據(jù)類型 用戶自定義類型是VHDL語言的一大特色。 可由用戶定義的數(shù)據(jù)類型有: 枚舉類型 整數(shù)和實數(shù)類型 數(shù)組類型 記錄類型 子類型,2020/8/22,南京理工大學機械工程學院,70,2、數(shù)據(jù)類型,2020/8/22,南京理工大學機械工程學院,71,SUBTYPE語句格式: 例: subtype digits is integer range 0

44、 to 9; 由subtype 語句定義的數(shù)據(jù)類型稱為子類型。,2、數(shù)據(jù)類型,subtype 子類型名 is 基本數(shù)據(jù)類型 約束范圍;,2020/8/22,南京理工大學機械工程學院,72,2、數(shù)據(jù)類型,自定義整數(shù)類型 用戶定義的整數(shù)類型是標準包中整數(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/8/22,南京理工大學機械工程學院,73,3、運算操作符,VHDL運算操作符的分類: 邏輯運算符(Logical Operator) 關系運算符(Relational Operator) 算術運算符(Arithmetic Operator) 并置運算符(Overloading Operator),2020/8/22,南京理工大學機械工程學院,74,1)邏輯運算符 6種:and、or、nand、nor、xor、not 要求:操作數(shù)類型必須相同??蔀槿缦骂愋停? bit、bit_vecto

46、r、std_logic、 std_logic_vector、boolean 數(shù)組操作數(shù)的維數(shù)、大小必須相同。 注:當有兩個以上的邏輯表達式時,左右沒有 優(yōu)先級差別,必須使用括號,如: x<=( a and b )or( not c and d ),2020/8/22,南京理工大學機械工程學院,75,例外:當邏輯表達式中只有“and”、“or”、 “xor” 運算符時,可以省略括號。如: a <= b and c and d and e; a <= b or c or d or e; a <= b xor c xor d xor e;,上述邏輯運算在庫ieee的程序包std_log

47、ic_1164中定義。,2020/8/22,南京理工大學機械工程學院,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/8/22,南京理工大學機械工程學院,77,2)關系運算符 6 種:

48、=、/=、、= 用于比較相同父類的兩個操作數(shù),返回 boolean值。 在關系運算符中小于等于符 “<=”和代入符“<=”是相同的,在讀VHDL語言的語句時,應按照上下文關系來判斷此符號到底是關系符還是代入符。,上述運算在庫ieee的程序包std_logic_arith中定義。,2020/8/22,南京理工大學機械工程學院,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/8/22,南京理工大學機械工程學院,79,3)算術運算符,VHDL語言中有5類算術運算符,他們分別是: 求和操作符: (加)、(減) 求積操作符:*(乘)、/(除)、MOD(求模)、REM(取余) 符號操作符: (正)、(負) 混合操作符: **(指數(shù))、ABS(取絕對

50、值) 移位操作符:SLL(邏輯左移)、SRL(邏輯右移)、SLA(算術左移)、SRA(算術右移)、ROL(邏輯循環(huán)左移)、ROR邏輯循環(huán)右移) 只能是bit_vetor類型,上述運算在庫ieee的程序包std_logic_arith中定義。,2020/8/22,南京理工大學機械工程學院,80,移位操作語法結(jié)構(gòu): 左操作數(shù)必須是bit_vetor類型 右操作數(shù)必須是integer類型。,SLL邏輯左移:右端空出來的位置填0; SRL邏輯右移:左端空出來的位置填0; SLA算術左移:復制右端位,填充右端空出位置上; SRA算術右移:復制左端位,填充左端空出位置上;,2020/8/22,南京理工大學

51、機械工程學院,81,4)并置運算符 Signal B : std_logic_vector(0 to 3); 則這兩個信號的屬性值分別為: 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ù)組的長度。,2020/8/22,南京理工大學機械工程學院,85,(2)event屬性: event屬

52、性,它的值為布爾型,如果剛好有事 件發(fā)生在該屬性所附著的信號上(即信號有變化), 則其取值為Ture,否則為False。 利用此屬性可決定時鐘信號的變化情況,即時鐘是否發(fā)生。,4、數(shù)據(jù)對象屬性,2020/8/22,南京理工大學機械工程學院,86,(2)event屬性: 例如:時鐘邊沿表示 signal clk : in std_logic;則clkevent and clk=1表示時鐘的上升沿。即時鐘變化了,且其值為1。 clkevent and clk=0表示時鐘的下降沿。即時鐘變化了,且其值為0。 此外,還可利用兩個函數(shù)來表示時鐘的邊沿。rising_edge(clk) 表示時

53、鐘的上升沿falling_edge(clk) 表示時鐘的下降沿 這兩個函數(shù)分別在庫ieee的程序包Std_logic_1164中定義。,4、數(shù)據(jù)對象屬性,2020/8/22,南京理工大學機械工程學院,87,5、VHDL語言詞法規(guī)則,1)注釋 為了提高VHDL源程序的可讀性,在VHDL中可以寫入注釋。注釋以- -開頭直到本行末尾的一段文字。在軟件中可以看見,敲入- -之后,后面字體的顏色就發(fā)生改變。注釋不是VHDL設計描述的一部分,編譯后存入數(shù)據(jù)庫中的信息不包含注釋。,注釋舉例: Q:OUT STD_LOGIC _VECTOR(11 DOWNTO 0);--A/D轉(zhuǎn)換數(shù)據(jù)輸出顯示(行注釋)

54、--SRAM 數(shù)據(jù)寫入控制狀態(tài)機(段注釋) WRIT_STATE:PROCESS(clk,rst)--SRAM寫入控制狀態(tài)機時序電路進程,2020/8/22,南京理工大學機械工程學院,88,2)數(shù)字 數(shù)字型文字可以有多種表達方式:可以是十進制數(shù),也可以表示為二進制、八進制或十六進制等為基的數(shù),可以是整數(shù),也可以是含有小數(shù)點的浮點數(shù)?,F(xiàn)舉例如下。十進制整數(shù)表示法:如 012 5 78_456 (=78456) 2E6 在相鄰數(shù)字之間插入下劃線,對十進制數(shù)值不產(chǎn)生影響,僅僅是為了提高文字的可讀性。允許在數(shù)字之前冠以若干個0,但不允許在數(shù)字之間存在空格。 以基表示的數(shù):用這

55、種方式表示的數(shù)由五個部分組成。第一部分,用十進制數(shù)標明數(shù)值進位的基數(shù);第二部分,數(shù)值隔離符號“#”;第三部分,表達的文字;第四部分,指數(shù)隔離符號“#”;第五部分,用十進制表示的指數(shù)部分,這一部分的數(shù)如果為0可以省去不寫。如 2#111_1011# 8#1473# 16#A8 對以基表示的數(shù)而言,相鄰數(shù)字間插入下劃線不影響數(shù)值?;淖钚?shù)為2,最大數(shù)為16,以基表示的數(shù)中允許出現(xiàn)A至F的字母,大小寫字母意義無區(qū)別。,2020/8/22,南京理工大學機械工程學院,89,實數(shù):實數(shù)必須帶有小數(shù)點。如 12.0 0.0 3.14 6_741_113.666 52.6 E2 物理量文字:綜合

56、器不支持物理量文字的綜合。如 60 s(秒) 100 m (米) 177 A(安培),3)字符和字符串 字符是用單引號引起來的ASC字符,可以是數(shù)值,也可以是符號或字母,如 E, e, $, 23, A 字符串是一維的字符數(shù)組,需放在雙引號中。有兩種類型的字符串:文字字符串和位矢量字符串。 文字字符串是用雙引號引起來的一串文字。如 “FALSE”, “X”, “THIS IS END”,2020/8/22,南京理工大學機械工程學院,90,位矢量字符串是被雙引號引起來的擴展的數(shù)字序列,數(shù)字序列前冠以基數(shù)說明符?;鶖?shù)符有“B”、“O”、“X”,他們的含義如下。 B:二進制基數(shù)符號,表示二進

57、制位0或1,在字符串中每一個位表示一個BIT。 O:八進制基數(shù)符號,在字符串中每一個數(shù)代表一個八進制數(shù),即代表一個3位(BIT)的二進制數(shù)。 X:十六進制基數(shù)符號,代表一個十六進制數(shù),即代表一個4位二進制數(shù)。 例如: B“1011_1111”, O“152”, X“F821”,2020/8/22,南京理工大學機械工程學院,91,4.下標名 下標名用于指示數(shù)組型變量或信號的某一元素。 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)為一下標語句,s是不可計算的下標名,只能在特定情況下進行綜合;b (3)的下標為3,可以進行綜合。,返回,2020/8/22,南京理工大學機械工程學院,92,4.4 VHDL語言的順序描述語句,(1)順序語句每一條語句的執(zhí)行都是順序進行的。如同高級編程語言中的命令執(zhí)行方式,一次一條命令,按書寫順序由上而下執(zhí)行。 (2)順序語句只能出現(xiàn)在進程和子程序內(nèi)部。 (3)由于順序語句的次序很重要,因此,順序語句要與并行語句分割開,這可以通過Process語句來實現(xiàn)。Process語句出現(xiàn)在結(jié)構(gòu)體中,它將其內(nèi)部的語句進行封裝。,順序語句有三個特點: a.所有語句的執(zhí)行是順序進行的; b.每條語

59、句的執(zhí)行和其所在的位置有關; c.順序語句的輸出不僅依賴于輸入,而且還受位置的影響。,2020/8/22,南京理工大學機械工程學院,93,4.4 VHDL語言的順序描述語句,(1)代入語句和延時語句 (2)If語句 (3)Case語句 (4)Null語句 (5)Loop語句 (6)NEXT和EXIT語句 (7)Wait 語句 (8)Procedure(過程)調(diào)用語句,2020/8/22,南京理工大學機械工程學院,94,(1)代入語句和延時語句,代入語句是VHDL語言中進行行為描述的最基本的語句。 例如: a<=b 該語句的功能是a得到b的值。當該語句有效時,現(xiàn)行信號 b的值將代入信號a。

60、只要b的值有一個新的變化,那么該 語句將被執(zhí)行。所以,b是該代入語句的一個敏感量。 代入語句最普遍的格式為: 信號量<=敏感信號量表達式 例如: z<=a NOR(b NAND c);,2020/8/22,南京理工大學機械工程學院,95,(1)代入語句和延時語句,延時語句有兩種:慣性延時和傳輸延時 慣性延時: 在VHDL語言中,慣性延時是缺省的,即在語句中如 果不作特別說明,產(chǎn)生的延時一定是慣性延時。 幾乎所有器件都存在慣性延時,因此,硬件電路的設 計人員為了逼真地仿真硬件電路的實際工作情況,在代入 語句中總要加上慣性延時時間的說明。例如: b<=a AFTER

61、 10 ns; 慣性延時說明只在行為仿真時有意義,邏輯綜合時將 被忽略,或者在邏輯綜合前必須去掉延時說明。,2020/8/22,南京理工大學機械工程學院,96,(1)代入語句和延時語句,慣性延時: 在慣性模型中,系統(tǒng)或器件輸出信號要發(fā)生變化必須 有一段時間的延時,這段延時時間稱為系統(tǒng)或器件的慣性 或稱慣性延時。 慣性延時有一個重要特點,即當一個系統(tǒng)或器件,它 的輸入信號變化周期小于系統(tǒng)或器件的慣性延時時,其輸 出將保持不變。,2020/8/22,南京理工大學機械工程學院,97,(1)代入語句和延時語句,慣性延時: 如有一個門電路,其慣性延時時間為20ns,當該門電路 的輸入端a

62、輸入一個10ns的脈沖信號時,其輸出端b的輸出仍 維持低電平,沒有發(fā)生變化。對于慣性時間等于20ns的門電 路,為使其實現(xiàn)正常的功能,輸入信號的變化周期一定要大 于20ns。,2020/8/22,南京理工大學機械工程學院,98,(1)代入語句和延時語句,傳輸延時: 在VHDL語言中,傳輸延時不是缺省的,必須在語句中 明確說明。傳輸延時常用于描述總線延時、連接線的延時及 ASIC芯片中的路徑延時。 對于相同的門電路,用傳輸延時來代替慣性延時,就可 以得到正確的輸出結(jié)果。也就是說,輸出端的信號除延時規(guī) 定時間外,將完全復現(xiàn)輸入端的輸入波形,而不管輸入波形 的形狀和寬窄如何。,2020/8/

63、22,南京理工大學機械工程學院,99,(1)代入語句和延時語句,傳輸延時: 具有傳輸延時的代入語句如下所示: b<= TRANSPORT a AFTER 20 ns 語句中“TRANSPORT”是專門用于說明傳輸延時的前置詞,2020/8/22,南京理工大學機械工程學院,100,(2)IF語句,IF 語句是根據(jù)所指定的條件來確定執(zhí)行那些語句的,其 書寫格式通常有3種類型。,第一種: 格式 IF 條件 THEN 順序處理語句; END IF;,2020/8/22,南京理工大學機械工程學院,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/8/22,南京理工大學機械工程學院,102,(2)IF語句,第二種: 格式 IF 條件 THEN 順序處理語句; ELSE 順序處理語句; 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/8/22,南京理工大學機械工程學院,103,(2)IF語句,第三種: 格式 IF 條件 THEN 順序處理語句; ELSIF 條件

66、THEN 順序處理語句; ELSE 順序處理語句; END IF;,自上而下逐一判斷條件是否成立。若條件成立,則執(zhí)行相應的順序語句,并不再判斷其它表達式,直接結(jié)束 IF 語句的執(zhí)行。 這種語法格式能夠進行優(yōu)先級的判斷,因此各條件表達式中的條件可以重疊。,,2020/8/22,南京理工大學機械工程學院,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: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲