




已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章 VHDL設(shè)計初步,什么是VHDL?,Very high speed integrated Hardware Description Language (VHDL) 是IEEE、工業(yè)標準硬件描述語言 用語言的方式而非圖形等方式描述硬件電路 容易修改 容易保存,【例4-1】 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)體,4.1 多路選擇器VHDL描述,4.1.1 2選1多路選擇器的VHDL描述,【例4-2】 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 ;,【例】 . . . ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; END one;,【例4-3】 ENTITY mux21a IS PORT ( a, 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 ;,圖4-3 mux21a功能時序波形,4.1.2 VHDL相關(guān)語句說明,1. 實體表達,【例4-4】 ENTITY e_name IS PORT ( p_name : port_m data_type; . 端口信號名 : 端口模式 數(shù)據(jù)類型 ); END ENTITY e_name;,2. 實體名 不能用數(shù)字開頭定義實體名; 不能用中文定義實體名,3. PORT語句(包括端口信號名:端口模式,數(shù)據(jù)類型),4. 端口模式,IN,OUT,INOUT,BUFFER,5. 數(shù)據(jù)類型BIT 主要包括:Integer(整數(shù));Boolean(布爾);STD_LOGIC(標準邏輯位數(shù)據(jù)類型);BIT(位數(shù)據(jù)類型) BIT數(shù)據(jù)類型的信號規(guī)定的取值范圍是邏輯位0、1。在VHDL中,邏輯位0、1 必須加單引號,否則被認定為整數(shù)數(shù)據(jù)類型。,6. 結(jié)構(gòu)體表達,ARCHITECTURE arch_name OF e_name IS (說明語句) BEGIN (功能描述語句) END arch_name ;,7. 信號傳輸(賦值)符號 賦值操作y=a并非立即發(fā)生的,而要經(jīng)過一個模擬器的最小分辨時間后,才將a的值賦給y。 賦值符=兩邊的信號的數(shù)據(jù)類型必須一致。,8. 邏輯操作符 AND(與);OR(或);NOT(非); NAND(與非);NOR(或非);XOR(異或); XNOR(同或),9. IF_THEN條件語句 IF s = 0 THEN y = a ; ELSE y = b ; END IF;,10. WHEN_ELSE條件信號賦值語句,賦值目標 = 表達式 WHEN 賦值條件 ELSE 表達式 WHEN 賦值條件 ELSE . 表達式 ;,11. PROCESS進程語句和順序語句 PROCESS (a,b,s) 只要敏感信號a、b、s某一個發(fā)生變化,將啟動此進程; 執(zhí)行一遍后,便進入等待狀態(tài)。,4.2 寄存器描述及其VHDL語言現(xiàn)象,4.2.1 D觸發(fā)器的VHDL描述,【例4-6】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF1; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -定義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出 END PROCESS ; END bhv;,D觸發(fā)器,4.2.2 D觸發(fā)器VHDL描述的語言現(xiàn)象說明,1. 標準邏輯位數(shù)據(jù)類型STD_LOGIC,BIT數(shù)據(jù)類型定義: TYPE BIT IS ( 0 , 1 ) ;,STD_LOGIC數(shù)據(jù)類型定義: TYPE STD_LOGIC IS (U ,X ,0,1, Z,W ,L,H, - ) ;,STD_LOGIC所定義的9種數(shù)據(jù)的含義是: U表示未初始化的; X表示強未知的; 0表示強邏輯0; 1表示強邏輯1; Z表示高阻態(tài); W 表示弱未知的; L表示弱邏輯0; H表示弱邏輯1; -表示忽略。,可綜合的,常用,不可綜合的,不常用,2. 設(shè)計庫和標準程序包,3. SIGNAL信號定義和數(shù)據(jù)對象,SIGNAL Q1 : STD_LOGIC ; 前者:規(guī)定的數(shù)據(jù)對象是信號,表示Q1的行為方式和功能特點; 后者:表示數(shù)據(jù)類型是STD_LOGIC ,限定了Q1的取值范圍。,使用庫和程序包的一般定義表式是: LIBRARY ; -表示打開設(shè)計庫 USE ALL ; -允許使用設(shè)計庫中程序包中的所有內(nèi)容,4. 上升沿檢測表式和信號屬性函數(shù)EVENT,關(guān)鍵詞EVENT是信號屬性,VHDL通過以下表式來測定某信號的跳變邊沿: EVENT,5. 不完整條件語句與時序電路,【例4-7】 ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END COMP_BAD; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 = 0 ; END IF; END PROCESS ; END one;,-未提及當a1=b1時,q1作何操作,【例4-8】 ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END COMP_GOOD; ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END one;,修改后的條件語句與時序電路,4.2.3 實現(xiàn)時序電路的VHDL不同表達方式,【例4-9】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,【例4-10】 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;,【例4-12】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait語句 Q = D ; END PROCESS;,【例4-13】 PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; END IF; END PROCESS ;,【例4-14】PROCESS (CLK,D) BEGIN IF CLK = 1 THEN Q = D ; END IF; END PROCESS ;,-利用進程的啟動特性產(chǎn)生對CLK的邊沿檢測,-電平觸發(fā)型寄存器,4.3 1位二進制全加器的VHDL設(shè)計,圖4-11半加器h_adder電路圖,圖4-10 全加器f_adder電路圖,25,4.3.1-4.3.2 半加器描述和CASE語句,a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1,半加器h_adder邏輯功能真值表,1. CASE語句,CASE語句的一般表式是:,CASE IS When = ; When = ; . END CASE ;,2. 標準邏輯矢量數(shù)據(jù)類型STD_LOGIC_VECTOR,3. 并置操作符 ,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; . a = 1 0 d(1) 1 ; - 元素與元素并置,并置后的數(shù)組長度為4 . IF a d = “101011“ THEN . - 在IF條件句中可以使用并置符,在使用STD_LOGIC_VECTOR中,必須注明其數(shù)組寬度,即位寬,如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4),4.3.1-4.3.2 半加器描述和CASE語句,【例4-18】 LIBRARY IEEE ;-或門邏輯描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE one;,【例4-16】 LIBRARY IEEE; -半加器描述(1) USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY adder; ARCHITECTURE fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1;,【例4-17】 LIBRARY IEEE; -半加器描述(2) USE IEEE . STD_LOGIC_1164 . ALL ; ENTITY h_adder IS PORT ( a , b : IN STD_LOGIC ; co , so : OUT STD_LOGIC ) ; END ENTITY h_adder ; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ; BEGIN abc so so so so NULL ; END CASE ; END PROCESS ; END ARCHITECTURE fh1 ;,【例】 . -半加器描述(3) SIGNAL abc , cso : STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc cso cso cso cso = “10“ ; END CASE; END PROCESS; END ARCHITECTURE fh1;,【例4-19】 LIBRARY IEEE; -1位二進制全加器頂層設(shè)計描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder -調(diào)用半加器聲明語句 PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT; SIGNAL d,e,f : STD_LOGIC; -定義3個信號作為內(nèi)部的連接線 BEGIN u1 : h_adder PORT MAP(a=ain,b=bin,co=d,so=e); u2 : h_adder PORT MAP(a=e, b=cin,co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;,26,19,4.3.3 全加器描述和例化語句,元件例化語句由兩部分組成: (1)第一部分是對一個現(xiàn)成的設(shè)計實體定義為一個元件,功能是對待調(diào)用的元件作出調(diào)用聲明。 COMPONENT 元件名 PORT (端口名表) ; END COMPONENT 元件名 ;,(2)元件例化語句的第二部分則是此元件與當前設(shè)計實體(頂層文件)中元件間及端口的連接說明。 例化名: 元件名 PORT MAP( 端口名 = 連接端口名,.);,25,【例4-20】 ENTITY CNT4 IS PORT(CLK:IN BIT ; Q:BUFFER INTEGER RANGE 15 DOWNTO 0); END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = Q + 1 ; END IF; END PROCESS ; END bhv;,4.4 計數(shù)器設(shè)計,4.1.1 4位二進制加法計數(shù)器設(shè)計,取整數(shù)數(shù)據(jù)類型,整數(shù)取值范圍,端口信號模式取BUFFER,為什么?,注意整數(shù)和位的不同表達方式!,4.4.2 整數(shù)類型,整數(shù)常量的書寫方式示例如下: 1 十進制整數(shù) 0 十進制整數(shù) 35 十進制整數(shù) 10E3 十進制整數(shù) 16#D9# 十六進制整數(shù) 8#720# 八進制整數(shù) 2#11010010# 二進制整數(shù),【例4-21】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; END PROCESS ; Q = Q1 ; END bhv;,運算符加載 (含+,-,*,=,=,/=,AND,MOD等,注意,信號端口模式和數(shù)據(jù)類型的改變!,注意,引 進內(nèi)部信 號矢量!,4.4.3 計數(shù)器設(shè)計的其他表述方法,圖4-12 4位加法計數(shù)器RTL電路(Synplify綜合),圖4-13 4位加法計數(shù)器工作時序,4.5 一般加法計數(shù)器設(shè)計,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;,ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CQI:= (OTHERS =0) ; -計數(shù)器復位 ELSIF CLKEVENT AND CLK=1 THEN -檢測時鐘上升沿 IF EN = 1 THEN -檢測是否允許計數(shù) IF CQI 0);-大于9,計數(shù)值清零 END IF; END IF; END IF; IF CQI = “1001“ THEN COUT = 1; -計數(shù)大于9,輸出進位信號 ELSE COUT = 0; END IF; CQ = CQI; -將計數(shù)值向端口輸出 END PROCESS; END behav;,4.5.1 相關(guān)語法,變量 主要用于數(shù)據(jù)的暫存。 省略賦值操作符(OTHERS=X),為了簡化表達才使用短語“(OTHERS=X)”,這是一個省略賦值操作符,它可以在較多位的位矢量賦值中作省略化的賦值,如以下語句: SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0 ); a1 := (OTHERS =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 曲柄連桿機構(gòu)的運動優(yōu)化考核試卷
- 文化用品租賃業(yè)務(wù)成本控制考核試卷
- 化工產(chǎn)品批發(fā)商市場營銷策略評估與優(yōu)化考核試卷
- 酵素浴培訓課件
- 蔬菜大棚出售合同范本
- 環(huán)衛(wèi)運營合同范本
- 培訓課件經(jīng)典案例
- 小學生講紀律課件
- 房屋修繕賠償合同范本
- 湖南省招投標培訓課件
- 小學音樂-《龍里格龍》教學設(shè)計學情分析教材分析課后反思
- 《兒科學》課件第15章第四節(jié) 先天性甲狀腺功能減退癥
- 安全管理組織結(jié)構(gòu)分工圖
- GB/T 2965-2023鈦及鈦合金棒材
- 六西格瑪(6Sigma)詳解及實際案例分析
- 短視頻與直播電商運營高職PPT完整全套教學課件
- 哲學的基本問題 【備課精講精研】 高中政治統(tǒng)編版必修四哲學與文化
- 新聞采訪與寫作課件第八章采訪的準備
- 工程公司“十四五”發(fā)展戰(zhàn)略規(guī)劃(專業(yè)完整模板)
- 部編版三年級下冊語文全冊教案表格版
- 70歲以上老年人考駕照三力測試題
評論
0/150
提交評論