VHDL语言结构体的描述方法课件_第1页
VHDL语言结构体的描述方法课件_第2页
VHDL语言结构体的描述方法课件_第3页
VHDL语言结构体的描述方法课件_第4页
VHDL语言结构体的描述方法课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL語言結構體的描述方法

結構體的一般語言格式ARCHITECTURE結構體名OF實體名IS[說明語句]BEGIN[功能描述語句]END結構體名;結構體三種描述方法行為描述(behavioral)數據流描述(dataflow)結構化描述(structural)功能描述語句進程語句信號賦值語句副程式調用語句元件例化語句結構體--行為描述行為描述是高層次描述方式,它只描述輸入與輸出之間的邏輯轉換關係,而不涉及具體邏輯電路結構等資訊。主要用於系統數學模型的仿真或系統工作原理的仿真。故其大量採用的算術運算、關係運算、慣性延時、傳輸延時等描述方式是難於或不能進行邏輯綜合的。行為描述:一般採用進程語句(PROCESS)描述高層次的功能描述,不必考慮在具體電路是怎樣實現的。Architecturebehavioralofeqcomp4isbegincomp:process(a,b)

begin ifa=bthen equal<=‘1’; else equal<=‘0’; endif;

endprocesscomp;endbehavioral;結構體--數據流描述數據流描述:也稱寄存器(RTL)描述方式,明確描述了數據信號的流動路徑、流動方向和流動結果。它採用類似於布爾方程的並行信號賦值語句進行描述。可以描述時序電路,也可描述組合電路。是完全能夠進行邏輯綜合的描述方式。當a和b的寬度發生變化時,需要修改設計,當寬度過大時,設計非常繁瑣布爾方程描述Architecturedataflow2ofeqcomp4is

beginequal<= not(a(0)xorb(0))and not(a(1)xorb(1))and not(a(2)xorb(2))and not(a(3)xorb(3));enddataflow2;Architecturedataflow1ofeqcomp4is

beginequal<=‘1’whena=belse‘0’;enddataflow1;結構體--結構化描述結構化描述:複雜數字邏輯系統的層次化設計法。設計中,高層次的設計模組調用低層次的設計模組,或直接用門電設計單元來設計一複雜的邏輯電路。它採用元件例化語句或生成語句進行設計。使用格式: 先聲明元件: Component元件名[IS] [Port(端口說明)] EndComponent; 後元件例化: 例化名:元件名PortMap(端口映射)元件例化語句元件例化時端口映射方式1:位置對應方式

元件標號:元件名

PortMap(信號1,信號2,…);architecture

struct

ofeqcomp4isCOMPONENTXNOR2

PORT(A,B:INSTD_LOGIC; C:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTand4

PORT(a,b,c,d:INSTD_LOGIC;

q:OUTSTD_LOGIC);ENDCOMPONENT;

SIGNALX:STD_LOGIC_VECTOR(0TO3);beginU0:xnor2portmap(a(0),b(0),x(0));U1:xnor2portmap(a(1),b(1),x(1));U2:xnor2portmap(a(2),b(2),x(2));U3:xnor2portmap(a(3),b(3),x(3));U4:and4portmap(x(0),x(1),x(2),x(3),equal);end

struct;元件例化時端口映射方式1:名字直接對應元件標號:元件名PortMap(信號A=>信號A1,信號B=>信號B1,…);architecturestructofeqcomp4isCOMPONENTXNOR2 PORT(A,B:INSTD_LOGIC; C:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTand4

PORT(a,b,c,d:INSTD_LOGIC;

q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALX:STD_LOGIC_VECTOR(0TO3);beginU0:xnor2portmap(A=>a(0),B=>b(0),C=>x(0));U1:xnor2portmap(B=>b(1),A=>a(1),C=>x(1));U2:xnor2portmap(A=>a(2),B=>b(2),C=>x(2));U3:xnor2portmap(A=>a(3),B=>b(3),C=>x(3));U4:and4portap(a=>x(0),b=>x(1),c=>x(2),d=>x(3),q=>equal);endstruct;三種描述方式的比較描述方式優點缺點適用場合結構化描述連接關係清晰,電路模組化清晰繁瑣、複雜層次化設計數據流描述布爾函數定義明白邏輯方程難以獲得小門數設計行為描述邏輯關係描述清晰不一定能綜合系統建模、複雜的電路進程語句(process)Process語句的格式為:

[進程標號:]

Process

[(敏感信號列表)]

[變數聲明]Begin順序語句;EndProcess

[進程標號];敏感表(Sensitivitylist)包括進程的一些信號,當敏感表中的某個信號變化時進程才被啟動,進程內的順序語句被執行。當進程結束時,進程內的輸出信號值被更新,進程進入等待(睡眠)狀態,直到敏感表中的某一信號再次發生變化,進程被再次啟動執行。

請用進程語句描述下麵電路:

方案一Libraryieee;Useieee.std_logic_1164.all;Entityexampleis port( a,b:in

std_logic

c,d:out

std_logic);Endexample;architecturem2ofexamleisbeginProcess(a,b)beginc<=aandb;d<=aorb;endprocess;endm2;方案二architecturem2ofexamleisbeginA:Process(a,b)

begin c<=aandb;

endprocessA;B:Process(a,b)

begin d<=aorb;

endprocessB;endm2;方案三Libraryieee;Useieee.std_logic_1164.all;Entityexampleis port( a,b:in

std_logic

c,d:out

std_logic);Endexample;architecturem2ofexamleisbeginProcess(a,b)

variabletmp1,tmp2:std_logic;begin tmp1:=aandb; tmp2:=aorb; c<=tmp1; d<=tmp2;endprocess;endm2;變數的結果必須由信號帶出進程Process(sel,a,b)Beginf<=a;Ifsel=‘1’thenf<=b;endif;Endprocess;Process(sel,a,b)BeginIfsel=‘1’thenf<=b;endif;f<=a;Endprocess;注意進程內的語句是順序執行結果f總是等於a變數和信號的區別例:8未奇偶校驗電路Libraryieee;Useieee.std_logic_1164.all;Entityjojyis

port(a:instd_logic_vector(0to7);

q:out

std_logic);Endjojy;ArchitecturebehaveofjojyisBegin

process(a) variabletmp:std_logic; begin

tmp:=‘0’; foriin0to7loop

tmp:=tmp

xor

a(i); endloop; q<=tmp; Endbehave;tmp能定義成信號嗎?副程式副程式是在主程序調用它以後能將結果返回主程序的程式模組,它可以反復調用,方便程式設計。VHDL副程式模組,由順序語句構成。每調用一次子程式都意味著增加了一個硬體電路模組,因此,在實際使用時,要密切關注和嚴格控制副程式的調用次數。副程式通常放在程式包中。

副程式有兩種類型:過程(Procedure)和函數(Function)。程式包程式包的格式:

PACKAGE包集合名IS [說明語句] END包集合名;

PACKAGEBODY包集合名IS [說明語句] END包集合名;定義副程式實現副程式包集合標題包集合體

函數(Function)Function函數名(參數表)Return數據類型Function函數名(參數表)Return數據類型IS

說明部分Begin

順序語句ENDFunction函數名;函數首在程式包標題中定義函數體在程式包體中定義LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEhanshuIS--定義程式包

FUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)--定義函數首

RETURNSTD_LOGIC_VECTOR;FUNCTIONfunc1(a,b,c:REAL)--定義函數首

RETURNREAL;FUNCTION"*"(a,b:INTEGER)--定義函數首

RETURNINTEGER;END;PACKAGEBODYhanshuISFUNCTIONmax(a,b:INSTD_LOGIC_VECTOR)--定義函數體

RETURNSTD_LOGIC_VECTORISBEGINIFa>bTHENRETURNa;ELSERETURNb;ENDIF;ENDFUNCTIONmax;--結束FUNCTION語句END;--結束PACKAGEBODY語句

函數定義實例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEWORK.hanshu.ALL;ENTITYaxampISPORT(dat1,dat2:INSTD_LOGIC_VECTOR(3DOWNTO0);dat3,dat4:INSTD_LOGIC_VECTOR(3DOWNTO0);out1,out2:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFaxampISBEGINout1<=max(dat1,dat2);--用在賦值語句中的並行函數調用語句

PROCESS(dat3,dat4)BEGINout2<=max(dat3,dat4);--順序函數調用語句

ENDPROCESS;

END;函數應用實例過程(Procedure)Procedure過程名(參數表)Procedure過程名(參數表)IS

說明部分

Begin

順序語句ENDProcedure過程名;過程首在程式包標題中定義過程體在程式包體中定義LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEhanshuIS--定義程式包

proceduremax(signala,b:INSTD_LOGIC_VECTOR; signalc:outstd_logic_vector);--定義過程首END;PACKAGEBODYhanshuIS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论