




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、P1,第3章 硬件描述語言VHDL,Design Entry,P2,3.1 硬件描述語言概述 3.2 VHDL語言基本結(jié)構(gòu) 3.3 VHDL語言主要描述語句 3.4 VHDL語言組合邏輯設(shè)計(jì) 3.5 VHDL語言時(shí)序邏輯設(shè)計(jì) 3.6 VHDL語言的狀態(tài)機(jī)設(shè)計(jì) 3.7 VHDL描述方法對(duì)電路結(jié)構(gòu)的影響 3.8 VHDL的Testbench的編寫方法 3.9 Modelsim仿真軟件介紹,P3,3.1 硬件描述語言概述,HDL (Hardware Description Language):硬件描述語言 是一種形式化方法描述數(shù)字電路和系統(tǒng)的語言。利用這種 語言,數(shù)字電路系統(tǒng)的設(shè)計(jì)可以從上層到下層(
2、從抽象到 具體)逐層描述自己的設(shè)計(jì)思想,用分層次的模塊來表示 極其復(fù)雜的數(shù)字系統(tǒng)。然后利用EDA工具,逐層仿真驗(yàn)證, 再利用綜合工具把HDL轉(zhuǎn)換為門級(jí)網(wǎng)表,最后用ASIC或FP GA自動(dòng)布局布線工具,把網(wǎng)表轉(zhuǎn)換成具體的電路。 目前,美國(guó)硅谷約有90以上的ASIC和FPGA采用HDL進(jìn) 行設(shè)計(jì)。HDL發(fā)展至今已有20多年的歷史,并成功的應(yīng)用于 EDA設(shè)計(jì)的各個(gè)階段:建模、仿真、驗(yàn)證和綜合等。,1. HDL語言,P4,2.幾種代表性的HDL語言,VHDL VHDL是美國(guó)國(guó)防部在20世紀(jì)70年代末80年代初提出的VHSIC(Very High Speed Integrated Circuit)計(jì)劃的
3、產(chǎn)物,1981年提出了一種新的硬件描述語言,稱為VHSIC Hardware Description Language 也就是我們熟知的VHDL。 Verilog HDL Verilog HDL是在C語言基礎(chǔ)上發(fā)展起來的一種硬件描述語言,它是由GDA(Gateway Design Automation)公司的Phil Moorby于1983年創(chuàng)建的,最初只設(shè)計(jì)了一個(gè)仿真與驗(yàn)證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時(shí)序分析工具。,P5,Superlog 集合了Verilog的簡(jiǎn)潔、C語言的強(qiáng)大、功能驗(yàn)證和系統(tǒng)級(jí)結(jié)構(gòu)設(shè)計(jì)等特征,是一種高速的硬件描述語言。由Phil Moorby與Peter Fla
4、ke和一家叫做CoDesign Automation的EDA公司合作,在Verilog語言的基礎(chǔ)上,結(jié)合高級(jí)語言C、C甚至Java等語言的特點(diǎn),進(jìn)行擴(kuò)展,于1999年發(fā)布了SuperlogTm系統(tǒng)設(shè)計(jì)語言,同時(shí)開發(fā)了兩個(gè)工具:SystemSimtm(用于系統(tǒng)開發(fā))和SystemExtm(用于高級(jí)驗(yàn)證)。 SystemC 由Synopsys和Coware合作為滿足SOC要求開發(fā)的(在系統(tǒng)芯片各個(gè)設(shè)計(jì)中,像系統(tǒng)定義、軟硬件的劃分、設(shè)計(jì)實(shí)現(xiàn)等)一種能同時(shí)實(shí)現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級(jí)設(shè)計(jì)語言。著名公司Cadence也于2001年加入了SystemC聯(lián)盟。,P6,3.VHDL語言的特點(diǎn),VHDL
5、具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。 VHDL豐富的仿真語句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。 VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和對(duì)已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)開發(fā)組共同并行工作才能實(shí)現(xiàn)。 對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表。 VHDL對(duì)設(shè)計(jì)的描述具
6、有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。,P7,4.VHDL語言描述方式,Behavioral(行為級(jí)描述):就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型進(jìn)行描述。只表示輸入/出之間的轉(zhuǎn)換行為,不包含任何結(jié)構(gòu)信息,無需關(guān)注設(shè)計(jì)功能的門級(jí)實(shí)現(xiàn)。其抽象程度比RTL描述方式和結(jié)構(gòu)描述方式更高。在程序中大量采用算術(shù)運(yùn)算、關(guān)系運(yùn)算、慣性延時(shí)、傳輸延時(shí)等難以進(jìn)行邏輯綜合和不能進(jìn)行邏輯綜合的VHDL語句。,P8,RTL(Register transfer Level):即寄存器傳輸級(jí)描述,也稱為數(shù)據(jù)流描述。既表示了設(shè)計(jì)單元的行為,又隱含該設(shè)計(jì)單元的結(jié)構(gòu)。 描述電路的功能
7、和結(jié)構(gòu) 調(diào)用特殊的硬件 用于綜合,P9,Structural Level(結(jié)構(gòu)級(jí)描述):描述該設(shè)計(jì)單元的硬件結(jié)構(gòu)、把已有的設(shè)計(jì)單元方便地用到新的設(shè)計(jì)中,使用元件例化語句及配置語句來描述元件的類型及元件的互聯(lián)關(guān)系。結(jié)構(gòu)描述方式的基本框架為用COMPONENT語句指明電路中所用的已生成的模塊,用PORTMAP()語句將模塊連接起來。 元件描述用于聲明端口類型和數(shù)據(jù)類型 COMPONENT ISPORT ( : ;. : ; END COMPONENT; 元件配置用于映射端口 : PORT MAP( = ; ; = ;),P10,3.2 VHDL語言基本結(jié)構(gòu),庫(kù)說明包集合實(shí)體構(gòu)造體(配置) 庫(kù)(li
8、brary):用來存放已經(jīng)編譯的實(shí)體、構(gòu)造體、包集合和配置,庫(kù)一般可由用戶產(chǎn)生或者由ASIC芯片制造商提供。 包集合(package):存放各設(shè)計(jì)模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序。 實(shí)體(Entity):系統(tǒng)的外部接口關(guān)系。 構(gòu)造體(Architecture):描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為。 配置(configuration):用于從庫(kù)中選取所需的單元,來組成系統(tǒng)設(shè)計(jì)的不同版本。,一.VHDL 語言的基本結(jié)構(gòu),P11,一個(gè)完整的設(shè)計(jì)單元結(jié)構(gòu) LIBRARY IEEE; 庫(kù) USE IEEE.STD_LOGIC_1164.ALL; 包集合 ENTITY 實(shí)體名字 IS 實(shí)體 PORT (端口名,
9、); END 實(shí)體名; ARCHITCTURE 構(gòu)造體名 OF 實(shí)體名 IS 結(jié)構(gòu)體 定義語句:信號(hào)常數(shù),數(shù)據(jù)類型等 BEGIN 并發(fā)語句 END 構(gòu)造體名;,P12,二. VHDL語言的基本單元,實(shí)體構(gòu)造體基本單元(主體) 1:VHDL語言描述方法 電原理圖(或電路符號(hào))的描述方式,其中a,b是輸入,C是輸出,C=AB。 如果用VHDL 語言來描述此電路:實(shí)體描述輸入、輸出,構(gòu)造體描述功能。,P13,2:實(shí)體說明表示方法 ENTITY 實(shí)體名 IS PORT (端口名,); END 實(shí)體名; 說明: 1:實(shí)體名可用英文字母、數(shù)字、下劃線表示 ,名字開頭只能為 英文字母,結(jié)尾不能用下劃線。 2
10、:PORT(端口名:方向 數(shù)據(jù)類型);端口名與實(shí)體名命名規(guī)則 相同。 方向表示: IN 表示輸入 OUT 表示輸出(構(gòu)造體內(nèi)部不能再使用) INOUT 表示輸入/輸出 BUFFER 表示輸出端帶有反饋類型。(構(gòu)造體內(nèi)部可再使用),P14,數(shù)據(jù)類型: VHDL有10種數(shù)據(jù)類型,在邏輯電路設(shè)計(jì)中只使用兩種。 BIT :位 ( 0,1) BIT_VECTOR :位矢量 (“10101101”) 表示數(shù)據(jù)總線 D0-D7的數(shù)據(jù)類型: BIT_VECTOR(7 DOWNTO 0); library ieee; use ieee.std_logic_1164.all; Entity Mux is port
11、(d0,d1,sel:in std_logic; q:out std_logic; bus:out std_logic_vector(7 downto 0); end Mux; 例中BIT數(shù)據(jù)用std_logic說明,Bus的BIT_VECTOR用std_logic_vector說明是完全等效的。,P15,3:構(gòu)造體 構(gòu)造體用來描述實(shí)體的功能 ARCHITCTURE 構(gòu)造體名 OF 實(shí)體名 IS 定義語句:內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義 BEGIN 并發(fā)語句 END 構(gòu)造體名; 構(gòu)造體的名稱可由設(shè)計(jì)者命名。通常根據(jù)描述的對(duì)象把構(gòu) 造體命名為behav(behavioral)行為描述,r
12、tl寄存器 傳輸描述,struct(structural)結(jié)構(gòu)描述。,P16,常數(shù)、變量、信號(hào)所描述的對(duì)象,對(duì)象:VHDL語言中,可以賦予一個(gè)值的對(duì)象就稱為客體或?qū)ο蟆?信號(hào)(SIGNAL): 對(duì)應(yīng)物理意義上是實(shí)際電路連接線。 變量(VARIABLE): 相當(dāng)于暫存寄存器,變量值不是最終結(jié)果。 常數(shù)(CONSTANT): 如電源、地等,用來描述固定的值。 信號(hào)量和變量的區(qū)別: 信號(hào)量是全局量(Architecture、Package、entity)變量是局部量(Process、Function、Procedure) 信號(hào)賦值用“=”,而變量用“:”。 信號(hào)和變量可以相互代入。 如:a 是變量,
13、b是信號(hào),則a:=b;b=a; 變量是立即賦值的,而信號(hào)量是在進(jìn)程結(jié)束時(shí)賦值的。,P17,常數(shù)、變量、信號(hào)的區(qū)別,相同點(diǎn):值可變,可綜合為邏輯或線 不同點(diǎn):變量賦值有立即性,且只用于process,subprogram中(VHDL-1076-87),而信號(hào)除此之外,還可用于并行語句中 應(yīng)用: 簡(jiǎn)單計(jì)算 signal 復(fù)雜計(jì)算 variable 中間結(jié)果 variable,P18,signal a, b, c, x, y : integer process(a, b, c) begin c = a; x = c + 2; c = b; y = c + 4; end process;,signal
14、 a, b, x, y : integer process(a, b, c) variable c : integer; begin c := a; x = c + 2; c := b; y = c + 4; end process;,P19,屬性描述,描述時(shí)鐘邊沿的屬性EVENT EVENT屬性屬于信號(hào)類屬性。描述信號(hào)邊沿出現(xiàn)的時(shí)刻 時(shí)鐘上升沿表示: IF(clkEVENT AND clk=1)THEN q=d; IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN q=d; -確保CLK的變化是一次上升沿的跳變 IF CLK=1 AND CL
15、KLAST_VALUE=0THEN q=d;,P20,三.庫(kù)、包集合及配置,庫(kù)(library):用來存放已經(jīng)編譯的實(shí)體、構(gòu)造體、包集合和配置,庫(kù)一般可由用戶產(chǎn)生或者由ASIC芯片制造商提供。 包集合(package):存放各設(shè)計(jì)模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序。 配置(configuration):用于從庫(kù)中選取所需的單元,來組成系統(tǒng)設(shè)計(jì)的不同版本。 庫(kù)的功能和表示(Library): 庫(kù)的功能類似于目錄: 存放編譯后的數(shù)據(jù)集合,單元,構(gòu)造體,實(shí)體等,使得設(shè)計(jì)者可以共享已經(jīng)編譯過的設(shè)計(jì)結(jié)果。庫(kù)的說明總是放在設(shè)計(jì)單元的最前面。 Library 庫(kù)名; 庫(kù)的好處在于使設(shè)計(jì)者可以共享已經(jīng)編譯過
16、的設(shè)計(jì)結(jié)果,在VHDL中可以存在多個(gè)不同的庫(kù),但庫(kù)之間是相互獨(dú)立的,不可嵌套。,P21,庫(kù)的種類,STD庫(kù):任何包集合都可不作任何說明便可以使用。 如:VHDL標(biāo)準(zhǔn)庫(kù)中定義BIT、BIT_VECTOR等。 IEEE庫(kù):美國(guó)電子電器工程師協(xié)會(huì)定義的庫(kù),在使用其中的包集合之前應(yīng)先說明。 如:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 面向用戶的ASIC庫(kù):為了進(jìn)行門級(jí)仿真,各個(gè)公司提供面向ASIC的邏輯門庫(kù),例設(shè)計(jì)單片機(jī)、乘法器、接口等電路時(shí),并不需要用用戶設(shè)計(jì)這些器件,直接可調(diào)用。 工作庫(kù)Work:現(xiàn)行工作庫(kù),用戶設(shè)計(jì)好電路經(jīng)過編譯后放入工作庫(kù)中。 用戶
17、定義庫(kù):為了方便工作,用戶自己設(shè)計(jì)的單元可以作為用戶自定義庫(kù)。,P22,包 集 合,包集合(package): 相當(dāng)于高級(jí)語言中的INCLUDE語句。包集合包含信號(hào)的定義、 常數(shù)定義、數(shù)據(jù)類型定義、元器件定義、函數(shù)定義、過程定義 等。包集合是一個(gè)可編譯的設(shè)計(jì)單元,也是庫(kù)結(jié)構(gòu)中的一個(gè)層 次。要使用包集合時(shí)可以用USE語句說明。 如:Use ieee.std_logic_1164.all; 該語句表示在VHDL程序中要使用名為 Std_logic_1164 的包集合中所有定義或說明項(xiàng)。,P23,PACKAGE 包集合名 IS 說明語句 END 包集合名; PACKAGE BODY 包集合名 IS
18、語句 END 包集合名;,P24,Modelsim仿真庫(kù),P25,配 置,配置(Configuration)語句描述層與層之間的連接關(guān)系及實(shí)體結(jié)構(gòu)之間的連接關(guān)系。設(shè)計(jì)者可以利用配置語句來選擇不同的構(gòu)造體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)。在仿真某個(gè)實(shí)體時(shí),可以利用配置來選擇不同的構(gòu)造體,進(jìn)行性能對(duì)比試驗(yàn)以獲得性能最佳的構(gòu)造體。 Configuration 配置名 Of 實(shí)體名 語句說明 End 配置名;,P26,3.3 VHDL語言的主要描述語句,兩類描述語句: 一:順序語句(Sequential) 二:并發(fā)語句(Concurrent),P27,一、順序描述語句,順序語句是按出現(xiàn)的次序加以執(zhí)行。只能出
19、現(xiàn)在進(jìn)程或子程序中,由它定義進(jìn)程所操作的算法。 涉及到的系統(tǒng)行為:有時(shí)序控制流、控制、條件和迭帶等; 語句的功能操作 :有算術(shù)、邏輯運(yùn)算;信號(hào)和變量的賦值,子程序調(diào)用等。 WAIT 語句 斷言語句 信號(hào)代入語句 變量賦值語句 IF語句 CASE語句 LOOP語句 NEXT語句 EXIT語句 過程調(diào)用語句 NULL語句,P28,1.WAIT語句,書寫格式 WAIT :無限等待 WAIT ON 信號(hào) :信號(hào)變化前處于等待,變化后進(jìn)程執(zhí)行,結(jié)束掛起 等待狀態(tài) WAIT UNTIL *條件:條件滿足后,結(jié)束等待狀態(tài)。 WAIT FOR 時(shí)間 :時(shí)間到后,結(jié)束等待。 2:說明 可以將上述WAIT 語句“
20、或”起來 帶*號(hào)的WAIT 語句可以進(jìn)行邏輯綜合功能,其余只能進(jìn)行行為描述。 無敏感量進(jìn)程是無限等待循環(huán)的進(jìn)程。,P29,2.IF語句,If 語句是根據(jù)所制指定的條件來確定執(zhí)行那些語句。用于選擇器、比較器、譯碼器和條件控制的邏輯設(shè)計(jì)。 三種類型: 1:開關(guān)控制(門閂控制) IF 條件 THEN END IF; 2: 2選1控制 IF 條件 順序語句 ELSE 順序語句 END IF; 3: 多選擇控制 IF 條件1 THEN . ELSIF 條件2 THEN End IF;,P30,P31,Library ieee; use ieee.std_logic_1164.all; entity Mu
21、x41 is Port(input :in std_logic_vector(3 downto 0); Sel(in std_logic _vector(1 downto 0); Y:out std_logic); End mux41; ARCHITECTURE rtl OF mux41 IS BEGIN PROCESS(input,sel),BEGIN IF(sel=“00”)THEN Y=input(0); ELSIF (sel=“01”)THEN Y=input(1); ELSIF(sel=“10”)THEN Y=input(2); ELSE Y=input(3); END IF; EN
22、D PROCESS; END rtl;,P32,3.CASE 語句,Case語句用來描述總線或編碼、譯碼的行為,從許多不同語句的序列中選擇其中之一執(zhí)行的行為。雖然If語句也有類似功能,但Case語句的可讀性比If語句強(qiáng)。 語句格式: CASE 表達(dá)式 IS WHEN 條件表達(dá)式=順序語句; END CASE;,P33,ARCHITECTURE rtl OF max41 IS BEGIN PROCESS(sel,input) BEGIN CASE sel IS WHEN “00”=YYYYY=Z; END CASE; END PROCESS; END rtl;,P34,CASE 語句與IF 語句
23、的區(qū)別,IF語句按條件順序處理(可設(shè)計(jì)優(yōu)先級(jí)編碼器),而CASE語句按條件是無順序處理(并行),從而CASE語句不能用來設(shè)計(jì)優(yōu)先編碼器。 CASE語句必須列出所有條件,IF語句不一定,一般來說,列出所有條件是不大可能的,故在CASE語句中,常常在最后有WHEN OTHERS 語句。 描述總線或編碼、譯碼的行為Case語句的可讀性比If語句強(qiáng)。,P35,4.LOOP語句,LOOP語句用于描述迭代電路,即將相同功能的電路串連起 來,通常有兩種描述方式。 1:FOR循環(huán)變量 標(biāo)號(hào):FOR 循環(huán)變量 IN 離散范圍 LOOP 順序語句 END LOOP 標(biāo)號(hào); 如:累加計(jì)算 ASUM:for I in
24、 1 to 9 loop sum:=sum+i;-sum初始值為0 end loop ASUM;,P36,2.WHILE LOOP語句。 標(biāo)號(hào): WHILE 條件 LOOP 順序處理語句 END LOOP 標(biāo)號(hào); 沒有給出循環(huán)次數(shù)的范圍,而是給出了循環(huán)執(zhí)行順序語句的條件;沒有自動(dòng)遞增循環(huán)變量的功能,所以必須在順序處理語句中增加一條循環(huán)次數(shù)計(jì)算語句,用于循環(huán)控制。循環(huán)控制條件為布爾表達(dá)式,當(dāng)條件為“真”時(shí),則進(jìn)行循環(huán);如果條件為“假”,則結(jié)束循環(huán)。 WHILE( i10) LOOP sum:= sum+i; i:=i+1; END LOOP;,P37,二.并發(fā)描述語句,Process 進(jìn)程語句
25、Concurrent Signal Assignment 并發(fā)信號(hào)代入語句 Conditional Signal Assignment 條件信號(hào)代入語句 Selective Signal Assignment 選擇信號(hào)代入語句 Concurrent Procedure Call 并發(fā)過程調(diào)用語句 Block 塊語句,P38,1.進(jìn)程語句,進(jìn)程語句是最主要的并發(fā)語句,也是最能體現(xiàn)硬件描述語言特點(diǎn)的一條語句。在一個(gè)構(gòu)造體中,多個(gè)進(jìn)程語句可同時(shí)并發(fā)運(yùn)行。 進(jìn)程語句主要有以下幾個(gè)特點(diǎn): 它可以與其它進(jìn)程并發(fā)運(yùn)行,并可存取實(shí)體或構(gòu)造體中定義的信號(hào)。 進(jìn)程語句是并發(fā)語句,而進(jìn)程結(jié)構(gòu)中的語句是順序語句,是按
26、順序一條一條執(zhí)行的。 進(jìn)程的啟動(dòng)可用敏感量或在進(jìn)程中包含WAIT語句。 進(jìn)程之間的同步和通信是通過信號(hào)量傳遞來實(shí)現(xiàn)的。 進(jìn)程中只能定義常數(shù)、變量,不能定義信號(hào)量。,P39,2.并發(fā)信號(hào)代入語句,信號(hào)代入語句用在并發(fā)執(zhí)行場(chǎng)合就是并發(fā)信號(hào)代入語句。 一個(gè)并發(fā)語句可以寫成一個(gè)進(jìn)程。 如:Process(a,b) Begin c=a AND b; End Process; c=a AND b是一個(gè)并發(fā)語句,這里a,b都是信號(hào)量;代 入符號(hào) “=”右邊可以用算術(shù)運(yùn)算表達(dá)式、邏輯表達(dá)式或關(guān)系操作表達(dá)式來表示。,P40,3.條件代入語句,條件代入語句可根據(jù)不同條件將不同的表達(dá)式代入信號(hào)量 書寫格式為: 目的
27、信號(hào)量 = 表達(dá)式1 when 條件1 else 表達(dá)式2 when 條件2 else 表達(dá)式3 when 條件3 else ELSE 表達(dá)式n;,P41,例:用條件信號(hào)代入語句描述四選一,Entity mux41 is Port(i0,i1,i2,i3,a,b:in std_logic; q:out std_logic); End mux41; Architecture rtl of mux41 is Signal:sel std_logic_vector(1 downto 0); Begin sel=b ,P42,4.選擇信號(hào)代入語句,選擇信號(hào)代入語句類似于CASE語句,它對(duì)表達(dá)式進(jìn)行測(cè)
28、試,當(dāng)表達(dá)式取值不同時(shí),將使不同的值代入目的信號(hào)量 書寫格式為: WITH 表達(dá)式 SELECT 目的信號(hào)量 = 表達(dá)式1 WHEN 條件1, 表達(dá)式2 WHEN 條件2, 表達(dá)式n WHEN 條件n, 表達(dá)式n+1 WHEN others;,P43,LIBRARY IEEE; USE IEEE.std_logic_1164.all; ENTITY mux 21 IS PORT (a, b, sel : in std_logic ; q : out std_logic); END mux21; ARCHITECTURE with-select-when OF mux21 IS BEGIN wi
29、th sel select q = a when 1, b when 0, X when others; END with-select-when;,例:2選1電路,P44,組合邏輯電路:用各種門電路組成的,用于實(shí)現(xiàn)某種功 能的復(fù)雜邏輯電路。 特點(diǎn):某一時(shí)刻的輸出狀態(tài)僅由該時(shí)刻電路的輸入信號(hào) 決定,而與該電路在此輸入信號(hào)之前所具有的狀 態(tài)無關(guān)。 常用組合邏輯主要包括: 簡(jiǎn)單門電路 編、譯碼器 三態(tài)門電路、總線緩沖器,3.4 VHDL語言組合邏輯設(shè)計(jì),P45,1.簡(jiǎn)單門電路,2輸入 “與非”門電路 library ieee; use ieee.std_logic_1164.all; entity
30、 nand2 is port(a,b:in std_logic; y:out std_logic); End nand2; Architecture beh of nand2 is Begin y=a Nand b; End nand2;, ELSE CASE Din IS when 000 = Dout Dout = 00000010;,P47,when 010 = Dout Dout Dout Dout Dout Dout Dout = 00000000; END CASE; END IF; END PROCESS; End RTL;,P48,synplify綜合,“111”,“111”,
31、“110”,“000”,Dout7,Dout0,Synplify pro綜合電路,P49,優(yōu)先級(jí)編碼器(8-3) entity priority is port(Input : in std_logic_vector(7 downto 0); output: out std_logic_vector(2 downto 0); End priority; architecture a of priority is begin process (input) begin if Input(7) = 1 then output = 111; elsif Input(6) = 1 then outpu
32、t = 110; elsif Input(5) = 1 then output = 101; elsif Input(4) = 1 then output = 100; elsif Input(3) = 1 then output = 011; elsif Input(2) = 1 then output = 010; elsif Input(1) = 1 then output = 001; elsif Input(0) = 1 then output = 000; end if; end process; end a;,P50,Synplify pro綜合,P51,3.三態(tài)門及總線緩沖器,
33、三態(tài)門電路 Entity tri_gate is port(din,en:in std_logic; dout:out std_logic); End tri_gate; Architecture a of tri_gate is begin Process(din,en) begin If(en=1)then dout=din;-0,1態(tài) else dout=Z; -高阻態(tài) End if; End process; End a;,Synplify Pro綜合,P52,雙向總線緩沖器 功能:雙向總線緩沖器有兩個(gè)輸入輸 出端a和b,一個(gè)方向控制端dr和一個(gè) 選通端en。 當(dāng)en=1時(shí)雙向總線緩沖
34、器未被 選通a和b都呈高阻態(tài); 當(dāng)en=0時(shí)雙向總線緩沖器選通 如果dr=0,a=b; (ba) 如果dr=1,b=a; (ab),P53,Library ieee; Use ieee.std_logic_1164.all; Entity tri_bigate is Port(a,b:inout std_logic_vector(7 downto 0); en:in std_logic; dr:in std_logic); End tri_bigate; Architecture rtl of tri_bigate is Signal aout,bout:std_logic_vector(7
35、downto 0); Begin Process (a, dr, en) begin If(en=0)and (dr=1)then bout=a;,P54,else bout=“ZZZZZZZZ”; End if; b=bout; End process; process (b, dr, en) begin If(en=0)and (dr=0)then aout=b; else aout=“ZZZZZZZZ”; End if; a=aout; End process; End rtl;,P55,時(shí)序邏輯電路? 是具有記憶(或內(nèi)部狀態(tài))的電路,即時(shí)序邏輯電路的輸出不但與當(dāng)前的輸入狀態(tài)有關(guān),而且與
36、以前的輸入狀態(tài)有關(guān)。時(shí)序電路的內(nèi)部狀態(tài)元件可以由邊沿敏感的觸發(fā)器或由電平敏感的鎖存器實(shí)現(xiàn),但大多數(shù)時(shí)序電路采用觸發(fā)器來實(shí)現(xiàn)。 時(shí)序電路分類: 時(shí)序電路可分為同步時(shí)序電路和異步時(shí)序電路兩種,大部分時(shí)序電路為同步時(shí)序電路。 常用時(shí)序邏輯主要包括: 觸發(fā)器 寄存器 計(jì)數(shù)器 分頻器,3.5 VHDL語言時(shí)序邏輯設(shè)計(jì),P56,時(shí)鐘信號(hào)和復(fù)位信號(hào)的描述,時(shí)鐘信號(hào)描述 上升沿:IF(clkEVENT AND clk=1)THEN 下降沿:IF(clkEVENT AND clk=0)THEN 復(fù)位信號(hào)描述 (1)異步復(fù)位描述 PROCESS(clk,reset) BEGIN IF(reset=0)THEN q
37、=0; ELSIF (clkEVENT AND clk=1)THEN q=d; END IF; END PROCESS;,(2)同步復(fù)位描述 PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(reset=0)THEN q=0; ELSE q=d; END IF; End if; End process;,P57,1.觸發(fā)器,D觸發(fā)器 Entity dff1 IS PORT (clk ,d ,reset : in STD_LOGIC; q : out STD_LOGIC); END dff1; ARCHITECTURE rtl OF dff1 IS
38、 BEGIN PROCESS (clk, reset) BEGIN IF(reset=0) THE q=0; ELSIF (clkEVENT AND clk=1)THE q= d; END IF; END PROCESS; END rtl;,P58,2.寄存器,移位寄存器(多級(jí)延遲) ENTITY reg1 IS PORT ( d : in BIT; clk: in BIT; q : out BIT); END reg1; ARCHITECTURE reg1 OF reg1 IS SIGNAL a, b : BIT; BEGIN PROCESS (clk) BEGIN IF clkevent
39、and clk=1 THEN a = d; b = a; q = b; END IF; END PROCESS; END reg1;,P59,串轉(zhuǎn)并移位寄存器 library ieee; use ieee.std_logic_1164.all; entity parltostr is port(clr,clk,din:in std_logic; q:out std_logic_vector(7 downto 0); end parltostr; Architecture rtl of parltostr is signal temp :std_logic_vector(7 downto 0);
40、 begin process(clk,clr) begin if clr=1 then,P60,temp=00000000; elsif clkevent and clk=1then temp(0)= din; temp(1)= temp(0); temp(2)= temp(1); temp(3)= temp(2); temp(4)= temp(3); temp(5)= temp(4); temp(6)= temp(5); temp(7)= temp(6); q=temp; end if; end process; end rtl;,P61,Synplify pro綜合,P62,P63,位串轉(zhuǎn)
41、并移位寄存器,總線數(shù)據(jù)串轉(zhuǎn)并移位寄存器,P64,3.計(jì)數(shù)器,10進(jìn)制計(jì)數(shù)器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ENTITY count10 IS PORT(reset,clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END count10; architecture rtl OF count10 IS BEGIN PROCESS(clk) VARIABLE q
42、10:INTEGER range 0 to 9; BEGIN,P65,IF(clkevent and clk=1)THEN IF(reset=1)THEN q10:=0; ELSIF(q10=9)THEN q10:=0; ELSE q10:=q10+1; END IF; END IF; q=conv_std_logic_vector(q10,4);-數(shù)據(jù)類型轉(zhuǎn)換 END PROCESS; end rtl;,P66,課堂練習(xí):參考實(shí)例設(shè)計(jì)一個(gè)有異步清零端的25進(jìn)制減法計(jì)數(shù)器,P67,4.分頻器,在具體的電路設(shè)計(jì)中,可能需要很多種不同頻率的時(shí)鐘,但時(shí)鐘源往往只有一個(gè),這時(shí)候就需要分頻得到我們需要的
43、時(shí)鐘頻率,同時(shí)也能滿足時(shí)鐘同步設(shè)計(jì)。最常用的分頻器設(shè)計(jì)采用計(jì)數(shù)器對(duì)時(shí)鐘進(jìn)行分頻系數(shù)計(jì)數(shù),采用調(diào)整范圍計(jì)數(shù)或采用組合邏輯實(shí)現(xiàn)需要的頻率時(shí)鐘的占空比值。 10分頻器的設(shè)計(jì) Library ieee; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ENTITY count10 IS PORT(reset,clk:IN STD_LOGIC; clk1:out std_logic; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END cou
44、nt10;,P68,architecture rtl OF count10 IS signal q10:INTEGER range 0 to 9; BEGIN P1:PROCESS(clk)-計(jì)數(shù) BEGIN IF(clkevent and clk=1)THEN IF(reset=1)THEN q10=0; ELSIF(q10=9)THEN q10=0; ELSE q10=q10+1; END IF; END IF; q=conv_std_logic_vector(q10,4); END PROCESS;,P69,P2:process(clk,q10)-分頻 begin if clkevent
45、 and clk=1 then if q105 then -占空比設(shè)置 clk1=0; else clk1=1; end if; end if; end process; end rtl;,Synplify pro綜合RTL視圖,P71,課堂練習(xí):對(duì)40MHz的源時(shí)鐘信號(hào)進(jìn)行32分頻,占空比為50%,P72,整奇數(shù)占空比為50%的分頻器如何設(shè)計(jì)?,P73,50%占空比計(jì)算:clk_5=clk_5_1 or clk_5_2,P74,process1: -占空比40的5分頻(上升延) process(clk,reset) begin if reset= 0 then temp1=0; elsif
46、clkevent and clk=1 then if temp1=4 then temp1=0; else temp1=temp1+1; end if; if 1temp1 then clk1=0; else clk1=1; end if; end if; end process;,P75,process2:-占空比40的5分頻(下降延) process(clk,reset) begin if reset= 0 then temp2=0; elsif clkevent and clk=0 then if temp2=4 then temp2=0; else temp2=temp2+1; end
47、 if; if 1temp2 then clk2=0; else clk2=1; end if; end if; end process;,process3:-或運(yùn)算 process(clk1,clk2) begin clk_5=clk1 or clk2; end process; end Behavioral;,Synplify pro綜合RTL視圖,P77,課堂練習(xí):設(shè)計(jì)一個(gè)占空比為50%的3分頻器 思考題:如果是設(shè)計(jì)任意整數(shù)分頻器、半整數(shù)分頻呢?,半整奇數(shù)(N/2)分頻器如何設(shè)計(jì)?,例如2.5分頻方法: CLK_5為CLK的50%占空比的5倍分頻 CLK與CLK的XOR為2.5分頻的計(jì)數(shù)
48、時(shí)鐘 計(jì)數(shù)為0,1輸出為高1,2為低0,Synplify pro綜合RTL視圖,50%占空比輸出,與輸入時(shí)鐘異或輸出,P80,3.6 VHDL語言的狀態(tài)機(jī)設(shè)計(jì),有限狀態(tài)機(jī)的類型: Moor狀態(tài)機(jī): 輸出僅與當(dāng)前狀態(tài)有關(guān)而與輸入無關(guān) Mealy狀態(tài)機(jī):輸出與當(dāng)前狀態(tài)和輸入都有關(guān)系 有限狀態(tài)轉(zhuǎn)移圖表示方法:,P81,狀態(tài)機(jī)結(jié)構(gòu)圖,A,B,C,(Moor Only),P82,狀態(tài)機(jī)的定義,定義狀態(tài)機(jī)數(shù)據(jù)類型 狀態(tài)編碼采用二進(jìn)制編碼 語法: TYPE State is (s0,s1,s2,s3,s4,s5); 特點(diǎn): s0=000,s1=001,s2=010,. 狀態(tài)編碼采用其他碼型 語法: TYPE
49、 State is (s0,s1,s2,s3,s4,s5); ATTRIBUTE ENUM_ENCODING : string; State: TYPE is 000 001 011 010 110 111 101 100; 特點(diǎn): s0=000,s1=001,s2=011,. 其他常用碼型 Gray碼(格雷碼):相鄰狀態(tài)只變化1比特 One-Hot碼型:每個(gè)狀態(tài)只有1位有效,其他各位都無效 例如:s0=000001,s1=000010,s2=000100,. 定義狀態(tài)機(jī)信號(hào) 一般定義:Signal PresentState,NextState: State; 隱性的定義狀態(tài)機(jī):Signal
50、PresentState: std_logic_vector(2 downto 0);,P83,狀態(tài)機(jī)的實(shí)現(xiàn),實(shí)現(xiàn)狀態(tài)轉(zhuǎn)移 process(clk) begin if clkevent and clk=1 then PresentState=NextState; end if; end process; ,判斷移出狀態(tài)及輸出 process(input,PresentState) begin case PresentState is when s0= . when s1= . when others= . end case; end process;,P84,VHDL設(shè)計(jì)狀態(tài)機(jī)實(shí)例,Moor型
51、狀態(tài)機(jī) library ieee; use ieee.std_logic_1164.all; entity moore is port( clk, rst:in std_logic; id:in std_logic_vector(3 downto 0); y:out std_logic_vector(1 downto 0); end moore; architecture archmoore2 of moore is Signal state: std_logic_vector(2 downto 0); constant state0: std_logic_vector(2 downto 0)
52、 := 000; constant state1: std_logic_vector(2 downto 0) := 010; constant state2: std_logic_vector(2 downto 0) := 011; constant state3: std_logic_vector(2 downto 0) := 110; constant state4: std_logic_vector(2 downto 0) := 111;-二進(jìn)制碼定義 begin moore: process (clk, rst) begin if rst=1 then state = state0;-
53、初始狀態(tài) elsif (clkevent and clk=1) then,P85,case state is when state0 = if id = x3 then state state if id = x7 then state if id x7 then state = state0; elsif id = x9“then state = state4;,else state if id = xb then state state = state0; end case; end if; end process; y = state(1 downto 0); end archmoore
54、2;,P86,狀態(tài)機(jī)綜合結(jié)果圖(synplify pro綜合),State Machine,Synplify/Synplify Pro具有的FSM View功能,P87,P88,課堂練習(xí):用Moor型狀態(tài)機(jī)設(shè)計(jì)6進(jìn)制計(jì)數(shù)器(畫出狀態(tài)轉(zhuǎn)移圖)?,P89,Mealy型狀態(tài)機(jī) library ieee; use ieee.std_logic_1164.all; entity mealy1 is port( clk, rst:in std_logic; id:in std_logic_vector(3 downto 0); y:out std_logic_vector(1 downto 0); end
55、 mealy1; architecture archmealy of mealy1 is type states is (state0, state1, state2, state3, state4); signal state: states;-狀態(tài)類型定義 begin moore: process (clk, rst) begin if rst=1 then state = state0;-初始態(tài) y = “00”;-初始態(tài)輸出,P90,elsif (clkevent and clk=1) then case state is when state0 = if id = x3 then s
56、tate state if id = x7 then state ,if id if id = xb then state = state0; y = 00; else state = state4; y = 11; end if; end case; end if; end process; end archmealy;,P91,狀態(tài)機(jī)綜合結(jié)果圖(synplify pro綜合),State machine,P92,P93,課堂練習(xí):用Mealy型狀態(tài)機(jī)設(shè)計(jì)6進(jìn)制計(jì)數(shù)器(畫出狀態(tài)轉(zhuǎn)移圖)?,P94,利用狀態(tài)機(jī)設(shè)計(jì)序列檢測(cè)器(“11100101”),library ieee; use ieee.std_logic_1164.all; entity FSM is port(clk, rst, a : in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物醫(yī)療知識(shí)科普專員考試試卷及答案
- 機(jī)械質(zhì)檢員(表面質(zhì)量)崗位面試問題及答案
- 智能制造產(chǎn)業(yè)股權(quán)合作意向協(xié)議書
- 股權(quán)轉(zhuǎn)讓與利益分配協(xié)議
- 新能源汽車充電樁運(yùn)營(yíng)公司股權(quán)轉(zhuǎn)讓與市場(chǎng)拓展合同
- 知識(shí)產(chǎn)權(quán)保護(hù)下的股權(quán)代持合同模板
- 高層管理人員股權(quán)無償轉(zhuǎn)讓合同范本
- 教育顧問課程資料保密合同范本
- 金融投資股東股份制合同協(xié)議書
- 股權(quán)激勵(lì)協(xié)議書范本:股權(quán)激勵(lì)與員工績(jī)效評(píng)估
- T-CCPS 0014-2024 國(guó)有企業(yè)合規(guī)管理體系有效性評(píng)價(jià)原則與實(shí)施指南
- 閩教版(2024)三年級(jí)英語下冊(cè)全冊(cè)大單元整體教學(xué)設(shè)計(jì) 教案
- YS/T 3045-2022埋管滴淋堆浸提金技術(shù)規(guī)范
- 2025年1月國(guó)家開放大學(xué)漢語言文學(xué)本科《古代詩歌散文專題》期末紙質(zhì)考試試題及答案
- 工廠生產(chǎn)管理制度流程
- 《弟子規(guī)之信篇》課件
- 電力設(shè)施的定期檢查與維修記錄管理
- 四升五數(shù)學(xué)暑假思維訓(xùn)練題90道
- 光伏發(fā)電工程可行性研究報(bào)告編制辦法(試行)-GD-003-2025
- 新能源車輛充電樁建設(shè)和運(yùn)營(yíng)合同
- 蘇教版三年級(jí)英語單詞表
評(píng)論
0/150
提交評(píng)論