電子科技大學(xué) 電子設(shè)計(jì)及自動(dòng)第四講_第1頁(yè)
電子科技大學(xué) 電子設(shè)計(jì)及自動(dòng)第四講_第2頁(yè)
電子科技大學(xué) 電子設(shè)計(jì)及自動(dòng)第四講_第3頁(yè)
電子科技大學(xué) 電子設(shè)計(jì)及自動(dòng)第四講_第4頁(yè)
電子科技大學(xué) 電子設(shè)計(jì)及自動(dòng)第四講_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

電子設(shè)計(jì)自動(dòng)化技術(shù)

第四講

VHDL的主要描述語(yǔ)句本章要點(diǎn)

*VHDL描述語(yǔ)句集合的全貌建立一個(gè)清晰的概念;*對(duì)VHDL主要描述語(yǔ)句的作用有一個(gè)正確的認(rèn)識(shí);*建立VHDL是一種并行語(yǔ)言的基本概念;VHDL主要描述語(yǔ)句分類VHDL的主要描述語(yǔ)句種類繁多,為了便于學(xué)習(xí)和理解,我們將VHDL的主要描述語(yǔ)句劃分為:“描述功能的語(yǔ)句”和“描述結(jié)構(gòu)的語(yǔ)句”兩大部分,如圖所示

這兩大部分分別由若干語(yǔ)句組成VHDL描述語(yǔ)句功能描述語(yǔ)句(Founction)結(jié)構(gòu)描述語(yǔ)句(Structure)并行賦值語(yǔ)句(ConcurrentAssign)進(jìn)程語(yǔ)句(Process)斷言語(yǔ)句(Assert)塊語(yǔ)句(Block)子程序(Subprogram)元件語(yǔ)句(Component)端口映射語(yǔ)句(PortMap)生成語(yǔ)句(Generate)參數(shù)說(shuō)明語(yǔ)句(Generic)等待語(yǔ)句(Wait)順序賦值語(yǔ)句(SequentAssign)順序控制語(yǔ)句(SequentControl)IFCASELOOPFORWHILE函數(shù)(Function)過(guò)程(Procedure)最常用語(yǔ)句VHDL主要描述語(yǔ)句分類在本章中將對(duì)圖中所列出的所有語(yǔ)句逐一進(jìn)行具體介紹。如果把每一種語(yǔ)句比喻成一顆樹,則上圖給出了這些樹所構(gòu)成的森林的面目。由圖中可以獲得以下信息:

1.

VHDL的主要描述語(yǔ)句由“描述功能的語(yǔ)句”和“描述結(jié)構(gòu)的語(yǔ)句”兩個(gè)部分組成

2.

描述功能的語(yǔ)句主要有:信號(hào)賦值語(yǔ)句,進(jìn)程語(yǔ)句,斷言語(yǔ)句,子程序等;VHDL主要描述語(yǔ)句分類

3.

描述結(jié)構(gòu)的語(yǔ)句主要有:component(元件),portmap(端口映射),generate(生成語(yǔ)句),generic(參數(shù)說(shuō)明語(yǔ)句)等;

4.在所有VHDL語(yǔ)句中,描述功能的進(jìn)程語(yǔ)句最為復(fù)雜。它可以包含等待語(yǔ)句、順序信號(hào)賦值語(yǔ)句和順序控制語(yǔ)句等三部分,其中,順序控制語(yǔ)句又可以包含條件語(yǔ)句和循環(huán)語(yǔ)句等5種語(yǔ)句。VHDL主要描述語(yǔ)句分類

5.信號(hào)的賦值可分為:進(jìn)程中賦值和進(jìn)程外賦值兩種。進(jìn)程中賦值使用順序信號(hào)賦值語(yǔ)句。進(jìn)程外賦值使用并行信號(hào)賦值語(yǔ)句。

6.if和case語(yǔ)句是進(jìn)程語(yǔ)句中實(shí)現(xiàn)順序控制的最常用語(yǔ)句。

VHDL主要描述語(yǔ)句分類另外,在此需要指出兩點(diǎn):1.行為級(jí)描述的VHDL程序一般不會(huì)用到描述結(jié)構(gòu)的語(yǔ)句。2.

然而除行為級(jí)描述外,RTL級(jí)和結(jié)構(gòu)級(jí)描述都大量使用描述功能的語(yǔ)句。通常情況下VHDL程序都要用到描述功能的語(yǔ)句。電子系統(tǒng)中的行為主要體現(xiàn)在信號(hào)的變化,組合和傳輸,所以一般VHDL程序都會(huì)用到描述功能的語(yǔ)句。所以學(xué)習(xí)的重點(diǎn)是描述功能的語(yǔ)句。描述功能的語(yǔ)句信號(hào)賦值語(yǔ)句(Assignment)進(jìn)程語(yǔ)句(Process)斷言語(yǔ)句(Assert)塊語(yǔ)句(Block)子程序(Subprogram)對(duì)象的賦值VHDL程序中數(shù)值的載體稱為對(duì)象(object)。VHDL中有四種對(duì)象:常量(constant)、變量(variable)信號(hào)(signal)和文件(file)。對(duì)象賦值是電子系統(tǒng)的功能行為賦值語(yǔ)句是描述功能的語(yǔ)句VHDL描述語(yǔ)句行為描述語(yǔ)句(Behaviour)結(jié)構(gòu)描述語(yǔ)句(Structure)并行賦值語(yǔ)句(ConcurrentAssign)進(jìn)程語(yǔ)句(Process)斷言語(yǔ)句(Assert)塊語(yǔ)句(Block)子程序(Subprogram)元件語(yǔ)句(Component)端口映射語(yǔ)句(PortMap)生成語(yǔ)句(Generate)參數(shù)說(shuō)明語(yǔ)句(Generic)等待語(yǔ)句(Wait)順序賦值語(yǔ)句(SequentAssign)順序控制語(yǔ)句(SequentControl)IFCASELOOPFORWHILE函數(shù)(Function)過(guò)程(Procedure)最常用語(yǔ)句←賦值符<=()<=();1,右邊信號(hào)的值傳送給左邊的信號(hào);2,左右兩邊信號(hào)寬度必須一致;ConcurrentAssignmentStatementAlltheConcurrentStatementisexecutedinparallelConcurrentStatementdoesnotcarethepositionwithinthecodingConcurrentStatementis:OUTPUTdependsonINPUTonlyEntitytest1IsPort(a,b:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_aoftest1isbeginc<=aandb;d<=aorb;endtest1_a;Entitytest1IsPort(a,b:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_aoftest1isbegind<=aorb;c<=aandb;endtest1_a;ThistwoexcuteinparallelDoesnotcarethepositionwithinthecoding并行賦值語(yǔ)句(ConcurrentAssignmentStatement)并行賦值語(yǔ)句與語(yǔ)句出現(xiàn)的先后順序無(wú)關(guān)。如下例給出的兩條語(yǔ)句交換順序前后等價(jià)。C=ABD=A+Bequivalentc

<=aandb;d<=aorb;d<=aorb;c<=aandb;01010000100100001111兩條語(yǔ)句交換順序前后的仿真波形完全相同,如下圖:分析真值得:并行賦值語(yǔ)句(ConcurrentAssignmentStatement)ConcurrentStatements

for

CombinationalLogicConcurrentStatementsThereareseveraldifferentkindsofConcurrentStatements(1)SimpleSignalAssignments

(簡(jiǎn)單信號(hào)賦值)(2)ConditionalSignalAssignments

(條件信號(hào)賦值)(3)SelectedSignalAssignments

(選擇信號(hào)賦值)Puttingthemalltogether(1)SimpleSignalAssignmentThiskindofstatementsareexecutedinParallelEntitytest1isport(a,b,e:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbeginc<=aandb;d<=e;endtest1_body;WhatkindoflogicsupportANDNANDORNORXORNOTmore.......Wewant5InputsAND-GateQ:ANDisonlyatwoinput,ifIwantmoreinputs,whatcanIdo?A:Itiseasy,weareduewithLanguagenotGraphicEntitytest1isport(a,b,c,d,e:instd_logic;f:outbit);endtest1;architecturetest1_bodyoftest1isbegin

f<=aANDbANDcANDdANDe;endtest1_body;(2)ConditionalSignalAssignmentsTheoutputgetthevaluewhentheconditionistruee.g.2to1multiplexerEntitytest1isport(in1,in2,sel:instd_logic;d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbegind<=in1WHEN

sel=‘0’ELSE

in2;endtest1_body;Ifwewantmore--4to1MuxOnceagain,youareduewithLanguagenotGraphic,soitiseasyEntitytest1isport(in1,in2,in3,in4:instd_logic;sel1,sel2:instd_logic;d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbegind<=in1WHENsel1=‘0’andsel2=‘0’ELSEin2WHENsel1=‘0’andsel2=‘1’ELSEin3WHENsel1=‘1’andsel2=‘0’ELSEin4;endtest1_body;(3)SelectSignalAssignmentsTheoutputgetvaluewhenmatchingwiththeselecteditemEntitytest1isport(a,b:inbit;

sel:inbit;c:outbit);endtest1;architecturetest1_bodyoftest1isbeginWITH

sel

SELECTc<=aWHEN‘1’,--逗號(hào)

bWHEN‘0’;--分號(hào)endtest1_body;IfIwantmorechoice---ItiseasyEntitytest1isport(in1,in2,in3,in4:inbit;

sel:ininteger;out1:outbit);endtest1;architecturetest1_bodyoftest1isbeginwith

sel

selectout1<=in1when0,in2when1,in3when2,in4when3;endtest1_body;ReviewConcurrentStatementforcombinationallogic(withoutFlip-flopcircuit)eg.decoder,multiplexer,multiplier,adderUnderstandtheusageoftheConcurrentStatementforCombinationalLogicsimplesignalassignmentstatementconditionalsignalassignmentstatementselectedsignalassignmentstatement作業(yè)EntityMUX_8isport(data_in:instd_logic_vector(7downto0);sel1,sel2,sel3:instd_logic;d:outstd_logic);endtest1;提示:d<=data_in(5);作業(yè)xyZq1q20000000110101000111101011111提示:信號(hào)賦固定值q1<=‘0’;q2<=‘1’;1VHDL描述語(yǔ)句行為描述語(yǔ)句(Behaviour)結(jié)構(gòu)描述語(yǔ)句(Structure)并行賦值語(yǔ)句(ConcurrentAssign)進(jìn)程語(yǔ)句(Process)斷言語(yǔ)句(Assert)塊語(yǔ)句(Block)子程序(Subprogram)元件語(yǔ)句(Component)端口映射語(yǔ)句(PortMap)生成語(yǔ)句(Generate)參數(shù)說(shuō)明語(yǔ)句(Generic)等待語(yǔ)句(Wait)順序賦值語(yǔ)句(SequentAssign)順序控制語(yǔ)句(SequentControl)IFCASELOOPFORWHILE函數(shù)(Function)過(guò)程(Procedure)最常用語(yǔ)句←PROCESS語(yǔ)句一般格式

[進(jìn)程標(biāo)號(hào):]PROCESS[(敏感信號(hào)表)][IS]〈說(shuō)明〉;BEGIN〈順序語(yǔ)句〉;ENDPROCESS;PROCESS是進(jìn)程語(yǔ)句的標(biāo)示符,PROCESS前可以加進(jìn)程標(biāo)號(hào),也可以沒(méi)有標(biāo)號(hào)。進(jìn)程內(nèi)部〈說(shuō)明〉部分用于定義本進(jìn)程所需的局部數(shù)據(jù)環(huán)境,在這里可以說(shuō)明數(shù)據(jù)類型、子程序和變量,在此說(shuō)明區(qū)說(shuō)明的變量,僅在當(dāng)前進(jìn)程內(nèi)可對(duì)其進(jìn)行讀/寫。BEGIN以后的〈順序語(yǔ)句〉為進(jìn)程的執(zhí)行語(yǔ)句部分。

ProcessStatementAlltheProcessStatementisexecutedinparallel

(進(jìn)程與進(jìn)程之間并行)WithintheProcessStatement,thecodingisexecuteinsequential

(進(jìn)程內(nèi)部語(yǔ)句之間串行——順序執(zhí)行)ProcessStatement:OUTPUTdependsonINPUTwithSensitivityListtocontroltheeventhappenEntitytest1isPort(clk,d1,d2:instd_logic;q1,q2:outstd_logic);endtest1;architecturetest1_bodyoftest1isbeginProcess(clk,d2)beginif(clk’eventandclk=‘1’)thenq2<=d2;endif;endprocess;Process(clk,d1)beginif(clk’eventandclk=‘1’)thenq1<=d1;endif;endprocess;endtest1_body;ThistwoprocessesexecuteinparallelEntitytest1is

Port(clk,d1,d2:instd_logic;

q1,q2:outstd_logic);

endtest1;

architecturetest1_bodyoftest1is

begin

Process(clk,d1)

begin

if(clk’eventandclk=‘1’)then

q1<=d1;

endif;

endpro

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論