數(shù)字電路與系統(tǒng)設(shè)計(jì)eda_第1頁(yè)
已閱讀1頁(yè),還剩107頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、《數(shù)字電路與系統(tǒng)設(shè)計(jì)》EDA實(shí)驗(yàn),VHDL設(shè)計(jì)初步,主講:任愛鋒電子工程學(xué)院Email:afren@mail.xidian.edu.cn,《數(shù)字電路與系統(tǒng)設(shè)計(jì)》EDA實(shí)驗(yàn),內(nèi)容安排:,電子工程學(xué)院必修課(☆)硬件描述語(yǔ)言(VHDL or VerilogHDL) (10學(xué)時(shí)☆)電子工程學(xué)院必修課及限選、校任選課(※)EDA設(shè)計(jì)工具軟件及實(shí)驗(yàn) (10學(xué)時(shí)☆※)SOPC及Nios II嵌入式系統(tǒng)設(shè)計(jì) (

2、10學(xué)時(shí)※)綜合設(shè)計(jì)實(shí)驗(yàn) (10學(xué)時(shí)☆※),西安電子科技大學(xué)國(guó)家電工電子教學(xué)基地西電-Altera EDA/SOPC聯(lián)合實(shí)驗(yàn)室及培訓(xùn)中心(E樓II-401),,第1部分 VHDL設(shè)計(jì)初步,《數(shù)字電路與系統(tǒng)設(shè)計(jì)》EDA實(shí)驗(yàn),VHDL歷史回顧,VHDL 語(yǔ)言是美國(guó)國(guó)防部(DOD)在 20 世紀(jì) 80 年代初為實(shí)現(xiàn)其高速集成電路計(jì)劃(VHSIC-Very High Speed Integrated Circuit)而提出的一

3、種硬件描述語(yǔ)言(HDL-Hardware Description Language),以作為各合同商之間提交復(fù)雜電路設(shè)計(jì)文檔的一種標(biāo)準(zhǔn)方案,VHDL的含義為超高速集成電路硬件描述語(yǔ)言。1987年被采納為IEEE 1076標(biāo)準(zhǔn)(VHDL’87)。1993年被更新為IEEE 1164標(biāo)準(zhǔn)(VHDL’93)。,VHDL—VHSIC Hardware Description Language,,,HDL 的出現(xiàn)是為了適應(yīng)電子系統(tǒng)設(shè)計(jì)的日益

4、復(fù)雜性。若以計(jì)算機(jī)軟件的設(shè)計(jì)與電路設(shè)計(jì)做個(gè)類比:,機(jī)器碼好比晶體管/MOS管;,匯編語(yǔ)言好比電路網(wǎng)表;,HDL語(yǔ)言就如同高級(jí)語(yǔ)言。,幾種常用的HDL語(yǔ)言: (1)VHDL硬件描述語(yǔ)言:功能強(qiáng),規(guī)范性好; (2)VerilogHDL硬件描述語(yǔ)言:功能強(qiáng)、靈活性高; (3)ABEL硬件描述語(yǔ)言:屬于較低級(jí)的硬件描述語(yǔ)言; (4)AHDL硬件描述語(yǔ)言:Altera公司開發(fā),語(yǔ)法簡(jiǎn)

5、單,但不通用。 其中:VHDL和VerilogHDL已成為IEEE標(biāo)準(zhǔn)。,VHDL—VHSIC Hardware Description Language,VHDL在語(yǔ)法和風(fēng)格上類似于現(xiàn)代高級(jí)編程語(yǔ)言。但要注意,VHDL畢竟描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。 HDL是用文字化方法描述電子電路與系統(tǒng)。,計(jì)算機(jī)語(yǔ)言描述特點(diǎn)是 :順序性,HDL語(yǔ)言描述的特點(diǎn)是:并行性,VHDL—VHSIC Hardwa

6、re Description Language,VHDL與計(jì)算機(jī)語(yǔ)言的區(qū)別,運(yùn)行的基礎(chǔ) 計(jì)算機(jī)語(yǔ)言是在CPU+RAM構(gòu)建的平臺(tái)上運(yùn)行 VHDL設(shè)計(jì)的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路執(zhí)行方式計(jì)算機(jī)語(yǔ)言基本上以串行的方式執(zhí)行VHDL在總體上是以并行方式工作驗(yàn)證方式計(jì)算機(jī)語(yǔ)言主要關(guān)注于變量值的變化VHDL要實(shí)現(xiàn)嚴(yán)格的時(shí)序邏輯關(guān)系,《數(shù)字電路與系統(tǒng)設(shè)計(jì)》回顧,組合邏輯電路,時(shí)序邏輯電路,分析,設(shè)計(jì),真值表,分析,設(shè)計(jì),,

7、,,,,與、或、非與非、或非異或、同或,RS觸發(fā)器D觸發(fā)器T觸發(fā)器JK觸發(fā)器,,主要內(nèi)容安排,1 多路選擇器的VHDL描述,2 時(shí)序電路的VHDL描述,3 更復(fù)雜電路的VHDL描述,5 VHDL設(shè)計(jì)練習(xí),4 有限狀態(tài)機(jī)(狀態(tài)轉(zhuǎn)移圖)設(shè)計(jì),1 多路選擇器的VHDL描述,例1.1 2選1多路選擇器的VHDL描述,2選1輸入/輸出端口(實(shí)體-Entity),,電路功能實(shí)現(xiàn)(結(jié)構(gòu)體-Architecture),?,

8、例1.1 2選1多路選擇器的實(shí)體描述,1 多路選擇器的VHDL描述,說(shuō)明:以關(guān)鍵字ENTITY引導(dǎo),以END (ENTITY) xxx結(jié)尾的語(yǔ)句部分,稱為實(shí)體。描述電路的外部情況及接口性質(zhì)。,ENTITY mux21 IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21;ARCHI

9、TECTURE one OF mux21 IS BEGIN y <= a WHEN s = '0' ELSE b ;END ARCHITECTURE one ;,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述1 (行為描述),,說(shuō)明:以關(guān)鍵字ARCHITECTURE引導(dǎo),以END (ARCHITECTURE) xxx結(jié)尾的語(yǔ)句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。,1 多路選擇

10、器的VHDL描述,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述2 (原理圖描述),1 多路選擇器的VHDL描述,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述3 (布爾方程描述),1 多路選擇器的VHDL描述,說(shuō)明:以上三種結(jié)構(gòu)體描述都是并行語(yǔ)句,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述4 (進(jìn)程描述),1 多路選擇器的VHDL描述,…… ARCHITECTURE one OF mux21 ISBEGIN PROCESS (

11、a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ; END IF; END PROCESS;END ARCHITECTURE one ;,,--a,b,s 為敏感信號(hào)表,2選1多路選擇器功能時(shí)序波形,例1.1 2選1多路選擇器的EDA軟件

12、仿真結(jié)果,1 多路選擇器的VHDL描述,1.1 實(shí)體表達(dá)(ENTITY),1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明,ENTITY 實(shí)體名 IS [ GENERIC (類屬表);] PORT (端口表);END [ENTITY] 實(shí)體名;,實(shí)體在電路中主要是說(shuō)明該電路的輸入、輸出關(guān)系,更具體地說(shuō)就是用來(lái)定義實(shí)體與外部的連

13、接關(guān)系以及需傳送給實(shí)體的參數(shù)。,ENTITY 實(shí)體名 IS [ GENERIC (類屬表);] PORT (端口表);END [ENTITY] 實(shí)體名;,(1)類屬表:用以將信息參數(shù)傳遞到實(shí)體。(2)端口表:指明實(shí)體的輸入、輸出信號(hào)及其模式、數(shù)據(jù)類型。,,PORT (端口名:端口模式 數(shù)據(jù)類型; {端口名:端口模式

14、數(shù)據(jù)類型} );,英文字母+數(shù)字,數(shù)據(jù)流動(dòng)方向,主要有“位”和“位矢量”兩類,,,,,,設(shè)計(jì)者自己命名的名稱(文件名),,,注意簡(jiǎn)單地說(shuō) In 不可以出現(xiàn)在賦值符號(hào)(<= 或:=)的左邊 out不可以出現(xiàn)在賦值符號(hào)(<= 或:=)的右邊 buffer可以出現(xiàn)在賦值符號(hào)(<= 或:=)的兩邊,In 信號(hào)只能被引用,不能被賦值out 信號(hào)只能被

15、賦值,不能被引用buffer 信號(hào)可以被引用,也可以被賦值,例:,VHDL中任何一種數(shù)據(jù)對(duì)象(信號(hào)、變量、常數(shù))必須嚴(yán)格限定其取值范圍。 VHDL 中一個(gè)對(duì)象只能有一種類型,施加于該對(duì)象的操作必須與該類型相匹配。 常用數(shù)據(jù)類型有:BIT,BIT_VECTOR,STD_LOGIC,STD_LOGIC_VECTOR,INTEGER,BOOLEAN等,1.2 結(jié)構(gòu)體表達(dá)(ARCHITECTURE),1 多路

16、選擇器的VHDL描述,ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS [定義語(yǔ)句] 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等定義;BEGIN [功能描述語(yǔ)句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,以關(guān)鍵字ARCHITECTURE引導(dǎo),以END (ARCHITECTURE) xxx結(jié)尾的語(yǔ)句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。,結(jié)構(gòu)體名稱的命令:它是該結(jié)構(gòu)體的唯一

17、名稱。“OF”后面緊跟的實(shí)體名表明了該結(jié)構(gòu)體所對(duì)應(yīng)的是哪一個(gè)實(shí)體。用 “IS”來(lái)結(jié)束結(jié)構(gòu)體的命名。,ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS [定義語(yǔ)句] 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語(yǔ)句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,定義語(yǔ)句:位于“ARCHITECTURE”和“BEGIN”之間。用于對(duì)結(jié)構(gòu)體內(nèi)部所使用的信號(hào)常數(shù)、數(shù)據(jù)

18、類型和函數(shù)等進(jìn)行定義。如:,ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS [定義語(yǔ)句] 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語(yǔ)句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,SIGNAL cont:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL co_1:STD_LOGIC;CONSTANT m:TIME:=2ns;

19、TYPE STATE IS (INIT,DAD,ADC,SRF,F(xiàn)RF);,功能描述語(yǔ)句:處于“BEGIN”和“END”之間。具體描述了結(jié)構(gòu)體的行為及其連接關(guān)系。,ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS [定義語(yǔ)句] 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語(yǔ)句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,結(jié)構(gòu)體功能可以用三種方式進(jìn)行描述,即:

20、 行為描述、數(shù)據(jù)流描述、結(jié)構(gòu)描述。,Ⅰ.結(jié)構(gòu)體的行為描述(behavioral) 結(jié)構(gòu)體的行為描述表示輸入與輸出間轉(zhuǎn)換的關(guān)系,是對(duì)設(shè)計(jì)實(shí)體按算法的路徑來(lái)描述。行為描述在 EDA 工程中稱為高層次描述或高級(jí)描述。,看例題!,例:如圖所示的半加器,其功能真值表已經(jīng)給出,寫出它的行為描述。,,半加器真值表:,(ENTITY部分省略) ARCHITECTURE alg_ha OF half

21、_adder IS BEGIN PROCESS (a , b) BEGIN IF a=‘0’ AND b=‘0’ THEN c<=‘0’ ; s<=‘0’ ELSIF a=‘1’ AND b=‘1’ THEN c

22、<=‘1’ ; s<=‘0’; ELSE c<=‘0’ ; s<=‘1’; END IF; END PROCESS; END alg_ha;,高層次的功能描述,不必考慮在電路中到底是怎樣實(shí)現(xiàn)的。,Ⅱ.結(jié)構(gòu)體的數(shù)據(jù)流描述(dataflow) 它反映了從

23、輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯變換,或者說(shuō)描述了數(shù)據(jù)流程的運(yùn)動(dòng)路徑、運(yùn)動(dòng)方向和運(yùn)動(dòng)結(jié)果。Ⅲ.結(jié)構(gòu)體的結(jié)構(gòu)化描述(structural) 結(jié)構(gòu)化描述給出了實(shí)體內(nèi)部結(jié)構(gòu)、所包含的模塊或元件間互連關(guān)系;與實(shí)體外部引線的對(duì)應(yīng)關(guān)系。,練習(xí): 試用上面的兩種方法描述半加器的功能。,,結(jié)構(gòu)體中三種描述方式的比較,布爾函數(shù)定義明白,連接關(guān)系清晰,電路模塊化清晰,優(yōu) 點(diǎn),小門數(shù)設(shè)計(jì),不易描述復(fù)雜電路,修改

24、不易,數(shù)據(jù)流描述,電路層次化設(shè)計(jì),電路不易理解、繁瑣、復(fù)雜,結(jié)構(gòu)化描述,適用場(chǎng)合,缺 點(diǎn),描述方式,,,,,,,,,,電路特性清楚明了,大型復(fù)雜的電路模塊設(shè)計(jì),進(jìn)行綜合效率相對(duì)較低,行為描述,信號(hào)賦值符 “<=”,表式中的等號(hào)“=”沒有賦值的含義,只是一種數(shù)據(jù)比較符號(hào)。,1.3 賦值符號(hào)和數(shù)據(jù)比較符號(hào),1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明,1.4 邏輯操作符,1 多路選擇器的V

25、HDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明,VHDL共有7種基本邏輯操作符: AND(與)、OR(或)、NOT(取反)、NAND (與非)、 NOR(或非)、XOR(異或)、XNOR(同或),要求數(shù)據(jù)類型: BIT BOOLEAN STD_LOGIC,……ARCHITECTURE one OF mux21 IS BEGIN y <= a

26、 WHEN s = '0' ELSE b ;END ARCHITECTURE one ;,1.5 WHEN_ELSE條件信號(hào)賦值語(yǔ)句,1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明,賦值目標(biāo) <= 表達(dá)式 WHEN 賦值條件 ELSE 表達(dá)式 WHEN 賦值條件 ELSE …

27、… 表達(dá)式 ;,在VHDL中,所有的順序語(yǔ)句,如“IF_THEN_ELSE_END IF”,都必須放在由“PROCESS…END PROCESS”引導(dǎo)的進(jìn)程結(jié)構(gòu)中。 在一個(gè)結(jié)構(gòu)體(ARCHITECTURE)中可以包含任意個(gè)進(jìn)程語(yǔ)句,所有的進(jìn)程語(yǔ)句都是并行語(yǔ)句,而進(jìn)程PROCESS引導(dǎo)的內(nèi)部語(yǔ)句結(jié)構(gòu)屬于順序語(yǔ)句。,1.4 進(jìn)程語(yǔ)句和順序語(yǔ)句,1 多路選擇器的VHDL描述,例1.1VHDL描

28、述中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明,1 小結(jié),在2選1的VHDL描述中出現(xiàn)的語(yǔ)言現(xiàn)象歸納:,實(shí)體: Entity結(jié)構(gòu)體:Architecture端口定義: Port( )端口模式:In/Out/Inout…數(shù)據(jù)類型:Bit、Std_Logic信號(hào)賦值符:<=條件比較符:=邏輯操作符:AND…,IF條件語(yǔ)句:IF……END IF并行條件語(yǔ)句:WHEN…ELSE進(jìn)程語(yǔ)句:Process…End Process

29、順序語(yǔ)句:由進(jìn)程語(yǔ)句引導(dǎo)并行語(yǔ)句:簡(jiǎn)單賦值語(yǔ)句 when….else語(yǔ)句 select語(yǔ)句,,,2 時(shí)序電路的VHDL描述,例2.1 D觸發(fā)器的VHDL描述,最簡(jiǎn)單、最具有代表性的時(shí)序電路是D觸發(fā)器。對(duì)D觸發(fā)器的描述包含了VHDL對(duì)時(shí)序電路的最基本和典型的表達(dá)方式,也包含了VHDL中許多最具特色的語(yǔ)言現(xiàn)象。,(實(shí)體-Entity),,電路功能描述(

30、結(jié)構(gòu)體-Architecture),?,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS -- 端口聲明 PORT (CLK, D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END ENTITY DFF1;

31、ARCHITECTURE bhv OF DFF1 IS --結(jié)構(gòu)體描述 SIGNAL Q1 : STD_LOGIC ; --類似于在芯片內(nèi)部定義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn)BEGIN PROCESS (CLK) -- 進(jìn)程 BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ;

32、 END IF; END PROCESS ; Q <= Q1 ; --將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線--是注釋符號(hào))END ARCHITECTURE bhv;,例2.1 D觸發(fā)器的VHDL描述,VHDL電路描述與設(shè)計(jì)平臺(tái)和硬件實(shí)現(xiàn)對(duì)象 (組合或時(shí)序邏輯) 無(wú)關(guān)。,例2.1中D觸發(fā)器的VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明,2.1 完整VHDL程序基本構(gòu)成,庫(kù)(Library)

33、和程序包(Package),程序包:定義了一組數(shù)據(jù)類型說(shuō)明、常量說(shuō)明、元件說(shuō)明和子程序說(shuō)明。以供其它多個(gè)設(shè)計(jì)實(shí)體引用。,庫(kù):是專門存放預(yù)先編譯好的程序包的地方,這樣它們就可以在其它設(shè)計(jì)中被調(diào)用。,庫(kù)/程序包就是為了使一組類型說(shuō)明,常量說(shuō)明和子程序說(shuō)明對(duì)多個(gè)設(shè)計(jì)實(shí)體都成為可見的而提供的一種結(jié)構(gòu)。它們?nèi)缤珻語(yǔ)言中的*.h文件,定義了一些類型說(shuō)明,函數(shù)一樣。,例如: LIBRARY IEEE;

34、 USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; IEEE是IEEE標(biāo)準(zhǔn)庫(kù)的標(biāo)志名,兩個(gè)USE語(yǔ)句使得以下設(shè)計(jì)可使用程序包std_logic_1164, std_logic_unsigned中所有預(yù)定義的內(nèi)容,如std_logic,in,out的定義等。,格式: LIBRAR

35、Y ; USE ..ALL;,庫(kù)(Library)和程序包(Package),常用標(biāo)準(zhǔn)庫(kù)std和ieee庫(kù)中的程序包,庫(kù)(Library)和程序包(Package),BIT數(shù)據(jù)類型定義: TYPE BIT IS('0','1'); 即BIT數(shù)據(jù)類型僅可取值‘0’或‘1’;,STD_LOGIC數(shù)據(jù)類型定義:

36、 TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); 工業(yè)標(biāo)準(zhǔn)邏輯類型,取值‘U’,‘X’,‘0’,‘1’,‘Z’, ‘W’, ‘L’, ‘H’和‘-’,2.2 標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGIC,ENTITY DFF1

37、 IS -- 端口聲明 PORT (CLK, D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END ENTITY DFF1;,ENTITY mux21 IS PORT (a, b, : IN BIT ;

38、 S : IN BIT ; y : OUT BIT ); END ENTITY mux21 ;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號(hào)定義和數(shù)據(jù)對(duì)象,信號(hào)(Signal):,信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包,在進(jìn)程和子程序的順序語(yǔ)句中不允許定義信號(hào)。(只有

39、信號(hào)才能把進(jìn)程外的信息帶入進(jìn)程內(nèi)部,或?qū)⑦M(jìn)程內(nèi)的信息帶出進(jìn)程),SIGNAL 信號(hào)名: 數(shù)據(jù)類型 := 初始值;,信號(hào)賦值語(yǔ)句:目標(biāo)信號(hào)名<=表達(dá)式;,VARIABLE 變量名: 數(shù)據(jù)類型 :=初始值;,變量賦值語(yǔ)句: 目標(biāo)變量名:=表達(dá)式;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號(hào)定義和數(shù)據(jù)對(duì)象,變量(Variable):,

40、在VHDL中,變量是一個(gè)局部量,作為臨時(shí)的數(shù)據(jù)存儲(chǔ)單元,只能在進(jìn)程和子程序的順序語(yǔ)句中使用。變量定義中的初始值僅對(duì)仿真有效,實(shí)際的綜合器并不支持設(shè)置初始值。,CONSTANT 常量名: 數(shù)據(jù)類型:= 表達(dá)式;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號(hào)定義和數(shù)據(jù)對(duì)象,常量(Constant):,常量的定義主要是為了程序更容易閱讀和修改。在

41、所有的VHDL結(jié)構(gòu)中都可以定義常量,如實(shí)體、結(jié)構(gòu)體、程序包、進(jìn)程和子程序等。常量是一個(gè)恒定不變的值。,’EVENT,2.4 上升沿檢測(cè)表式和信號(hào)屬性函數(shù)EVENT,……PROCESS (CLK) -- 進(jìn)程 BEGIN IF CLK’EVENT AND CLK = '1' THEN Q1 <= D ; END IF;

42、 END PROCESS ;……,,邊沿檢測(cè)語(yǔ)句,用信號(hào)屬性函數(shù)EVENT來(lái)測(cè)定某信號(hào)的跳變邊沿,即,2.5 不完整條件語(yǔ)句與時(shí)序電路,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS -- DFF 端口聲明 PORT (CLK, D : IN STD_LOGIC ;

43、 Q : OUT STD_LOGIC );END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) -- 進(jìn)程 BEGIN IF CLK'EVENT AND CLK = '1' THEN

44、 Q1 <= D ; END IF; END PROCESS ; Q <= Q1 ; END ARCHITECTURE bhv;,,IF語(yǔ)句中沒有利用ELSE明確指出當(dāng)IF語(yǔ)句不滿足條件時(shí)如何操作,即不完整條件語(yǔ)句。,IF語(yǔ)句表示:,完整的條件語(yǔ)句只能構(gòu)成組合邏輯電路。,IF語(yǔ)句表示:,,2.5 不完整條件語(yǔ)句與時(shí)序電路,2.5 不完整條件語(yǔ)句與時(shí)序電路,例a

45、:,2.5 不完整條件語(yǔ)句與時(shí)序電路,例b:,2.6 實(shí)現(xiàn)時(shí)序電路的VHDL不同表述,,CLK信號(hào)定義為STD_LOGIC數(shù)據(jù)類型,有9種取值,該描述并不能保證CLK是從“0”到“1”的上升沿跳變。,,...PROCESS (CLK) BEGIN IF CLK’EVENT AND (CLK='1') AND (CLK’LAST_VALUE='0') THEN

46、Q <= D ; --確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,...PROCESS (CLK)BEGIN -- 同上 IF CLK='1' AND CLK'LAST_VALUE='0' THEN Q <= D ; END IF; EN

47、D PROCESS ;,2.6 實(shí)現(xiàn)時(shí)序電路的VHDL不同表述,CLK’LAST_VALUE=‘0’為真,表示CLK在變化之前時(shí)刻為‘0’。,,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ;

48、 ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) THEN Q1 <= D ; END IF; END PROCESS ; Q <

49、= Q1 ; END ;,Rising_edge( )是IEEE庫(kù)中STD_LOGIC_1164標(biāo)準(zhǔn)程序包內(nèi)預(yù)定義的函數(shù),該函數(shù)只能用于標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGIC的信號(hào)。因此,在實(shí)體前必須打開STD_LOGIC_1164程序包。,...PROCESS BEGIN wait until CLK = '1' ; Q <= D ;END PROCE

50、SS;,當(dāng)進(jìn)程中使用wait語(yǔ)句后,就不必列出敏感信號(hào)表。,2.6 實(shí)現(xiàn)時(shí)序電路的VHDL不同表述,...PROCESS (CLK)BEGIN IF CLK = '1' THEN Q <= D ; END IF; END PROCESS ;,將CLK放入敏感信號(hào)表中,CLK邊沿的檢測(cè)由PROCESS和IF語(yǔ)句結(jié)合實(shí)現(xiàn)。注:D信號(hào)并沒有在敏感表中。,上

51、升沿觸發(fā)DFF的仿真波形:,,,,,2.6 實(shí)現(xiàn)時(shí)序電路的VHDL不同表述,...PROCESS (CLK,D) BEGIN IF CLK = '1' THEN Q <= D ; END IF; END PROCESS ;,電平觸發(fā)DFF,即在CLK為高電平‘1’時(shí),輸出Q隨D的變化而變化,而CLK為‘0’時(shí)輸出保持不變。 注:D信號(hào)在敏感表中。,

52、電平觸發(fā)DFF的仿真波形:,,,,,2.6 實(shí)現(xiàn)時(shí)序電路的VHDL不同表述,2 小結(jié),VHDL 庫(kù):Library語(yǔ)句,包括IEEE庫(kù)、標(biāo)準(zhǔn)庫(kù)STD、工作庫(kù)Work等;程 序 包:USE語(yǔ)句,如Std_logic_1164程序包、Standard程序包等;數(shù)據(jù)類型:Std_logic,定義值中包括‘0’、‘1’、‘Z’和‘X’;數(shù)據(jù)對(duì)象:信號(hào)Signal、變量Variable、常量Constant;信號(hào)屬性:信號(hào)屬性函數(shù)E

53、VENT、LAST_VALUE;時(shí)鐘檢測(cè):上升沿檢測(cè)Clk’event AND Clk=‘1’、Rising_edge( )。時(shí)序電路:不完整條件語(yǔ)句產(chǎn)生時(shí)序電路。,3 更復(fù)雜電路的VHDL描述,時(shí)序電路中,一般計(jì)數(shù)器的輸入/輸出信號(hào)包括:,,?,Entity,Architecture,,電路設(shè)計(jì),3.1 計(jì)數(shù)器的VHDL描述,ENTITY CNT4 IS PORT ( CLK : IN BIT ;

54、 Q : BUFFER INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1

55、9; THEN Q <= Q + 1 ; END IF; END PROCESS ;END bhv;,【例1】: 4位二進(jìn)制加法計(jì)數(shù)器,注意:(1) Q的端口模式為BUFFER; (2) Q的數(shù)據(jù)類型為INTEGER。,注意,?,ENTITY CNT4 IS PORT ( CLK :

56、IN BIT ; Q : BUFFER INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND C

57、LK = '1' THEN Q <= Q + 1 ; --如何理解? END IF; END PROCESS ;END bhv;,【例1】: 4位二進(jìn)制加法計(jì)數(shù)器,注意,注意:在使用整數(shù)時(shí),VHDL綜合器要求必須使用“Range”限定范圍,否則無(wú)法綜合。,,,VHDL中規(guī)定,算術(shù)操作符“+”、“-”的數(shù)據(jù)類型(除

58、特殊說(shuō)明,如重載函數(shù))只能是整形“INTEGER”。,整數(shù)的表達(dá)不加引號(hào),而邏輯位的數(shù)據(jù)必須加引號(hào),如‘1’、‘0’、“101”。,整數(shù)(Integer)類型,VHDL中整數(shù)常量的書寫方式:,3.2 計(jì)數(shù)器設(shè)計(jì)的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運(yùn)算符重載ENTITY CNT4 IS

59、 PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS

60、 (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ; --“+” 運(yùn)算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHI

61、TECTURE bhv;,,,←①,←②,←③,,3.2 計(jì)數(shù)器設(shè)計(jì)的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運(yùn)算符重載ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT

62、 STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = &

63、#39;1' THEN Q1 <= Q1 + 1 ; --“+” 運(yùn)算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHITECTURE bhv;,,,←①,←②,←③,,3.2 計(jì)數(shù)器設(shè)計(jì)的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_

64、LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運(yùn)算符重載ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv

65、OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ;

66、 --“+” 運(yùn)算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHITECTURE bhv;,,,←①,←②,←③,,3.3 不同工作方式的時(shí)序電路設(shè)計(jì),例3.3.1:設(shè)計(jì)一個(gè)異步清零、有使能輸入的十進(jìn)制計(jì)數(shù)器。,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsign

67、ed.all;ENTITY cntm10 IS -- 實(shí)體聲明 PORT( clk, rst, en : IN std_logic; --時(shí)鐘、清零、使能信號(hào) co : OUT std_logic; --進(jìn)位輸出 qcnt : buffer std_logic_vector(3 downto

68、 0)); END ENTITY cntm10;,,ARCHITECTURE behave OF cntm10 IS --結(jié)構(gòu)體描述BEGIN PROCESS (clk,rst) VARIABLE cqi :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF(rst=‘1’) THEN cqi :=(others=>’

69、0’); --計(jì)數(shù)器復(fù)位(高有效) ELSIF (clk‘EVENT AND clk = ’1‘) THEN --檢測(cè)時(shí)鐘上升沿 IF (en=‘1’) THEN --檢測(cè)是否允許計(jì)數(shù)(不完全條件語(yǔ)句) IF cqi ’0’); --計(jì)數(shù)狀態(tài)=9,下一狀態(tài)清零 END IF;

70、 END IF; END IF; IF cqi = 9 THEN co <= ‘1’; --計(jì)數(shù)狀態(tài)=9,輸出進(jìn)位信號(hào) ELSE co <=‘0’; END IF; qcnt <= cqi; --將計(jì)數(shù)值輸出到端口

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論