電子科技大學 電子設計及自動第四講_第1頁
電子科技大學 電子設計及自動第四講_第2頁
電子科技大學 電子設計及自動第四講_第3頁
電子科技大學 電子設計及自動第四講_第4頁
電子科技大學 電子設計及自動第四講_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

電子設計自動化技術

第四講

VHDL的主要描述語句本章要點

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

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

1.

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

2.

描述功能的語句主要有:信號賦值語句,進程語句,斷言語句,子程序等;VHDL主要描述語句分類

3.

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

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

5.信號的賦值可分為:進程中賦值和進程外賦值兩種。進程中賦值使用順序信號賦值語句。進程外賦值使用并行信號賦值語句。

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

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

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

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

for

CombinationalLogicConcurrentStatementsThereareseveraldifferentkindsofConcurrentStatements(1)SimpleSignalAssignments

(簡單信號賦值)(2)ConditionalSignalAssignments

(條件信號賦值)(3)SelectedSignalAssignments

(選擇信號賦值)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’,--逗號

bWHEN‘0’;--分號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提示:信號賦固定值q1<=‘0’;q2<=‘1’;1VHDL描述語句行為描述語句(Behaviour)結(jié)構(gòu)描述語句(Structure)并行賦值語句(ConcurrentAssign)進程語句(Process)斷言語句(Assert)塊語句(Block)子程序(Subprogram)元件語句(Component)端口映射語句(PortMap)生成語句(Generate)參數(shù)說明語句(Generic)等待語句(Wait)順序賦值語句(SequentAssign)順序控制語句(SequentControl)IFCASELOOPFORWHILE函數(shù)(Function)過程(Procedure)最常用語句←PROCESS語句一般格式

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

ProcessStatementAlltheProcessStatementisexecutedinparallel

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

(進程內(nèi)部語句之間串行——順序執(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論