EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符課件_第1頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符課件_第2頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符課件_第3頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符課件_第4頁(yè)
EDA應(yīng)用技術(shù) 第2版 課件 02-VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符課件_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符

一個(gè)相對(duì)完整的VHDL程序稱(chēng)為設(shè)計(jì)實(shí)體,通常都具有比較固定的結(jié)構(gòu)。由實(shí)體(Entity)、結(jié)構(gòu)體(Architecture)、配置(Configuration)、庫(kù)(Library)和程序包(Package)等構(gòu)成,如圖2.4所示。VHDL程序結(jié)構(gòu)圖2.4VHDL程序結(jié)構(gòu)模型圖項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符

實(shí)體用來(lái)描述設(shè)計(jì)實(shí)體的對(duì)外端口信息,實(shí)體有輸入端口和輸出端口的說(shuō)明,也可以有一些參數(shù)化的數(shù)值說(shuō)明。實(shí)體說(shuō)明部分基本格式如下:1.實(shí)體entity實(shí)體名is[generic(類(lèi)屬參數(shù)說(shuō)明)];port(端口表);end[entity]實(shí)體名;實(shí)體說(shuō)明部分基本格式解釋?zhuān)海?)一個(gè)基本單元的實(shí)體說(shuō)明以“entity實(shí)體名is”開(kāi)始,以“end[entity]實(shí)體名”結(jié)束。[]表示其中的部分是可選項(xiàng)。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符(2)實(shí)體名。一個(gè)設(shè)計(jì)實(shí)體,在實(shí)體中定義的實(shí)體名即為這個(gè)設(shè)計(jì)實(shí)體的名稱(chēng)。實(shí)體名是標(biāo)識(shí)符,標(biāo)識(shí)符具體取名由設(shè)計(jì)者自定,一般將VHDL程序的文件名作為此設(shè)計(jì)實(shí)體名。(3)類(lèi)屬參數(shù)說(shuō)明。類(lèi)屬參數(shù)說(shuō)明必須放在端口說(shuō)明之前,用來(lái)指定端口中矢量的位數(shù)、器件的延遲時(shí)間參數(shù)等。類(lèi)屬參數(shù)說(shuō)明書(shū)寫(xiě)格式如下:

generic([constant]常量名稱(chēng):[in]數(shù)據(jù)類(lèi)型[:=設(shè)定值];…);項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符(4)端口表。端口表是對(duì)端口的說(shuō)明,用于描述設(shè)計(jì)實(shí)體的輸入/輸出信號(hào),是對(duì)輸入/輸出引腳信號(hào)的名稱(chēng)、數(shù)據(jù)類(lèi)型和輸入/輸出方向的描述。端口說(shuō)明的一般書(shū)寫(xiě)格式如下:port(端口名{,端口名}:端口模式

數(shù)據(jù)類(lèi)型[:=設(shè)定值];……

端口名{,端口名}:端口模式

數(shù)據(jù)類(lèi)型[:=設(shè)定值]);其中花括號(hào)“{}”中的內(nèi)容可以沒(méi)有,也可以有多項(xiàng)。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符端口表各項(xiàng)內(nèi)容說(shuō)明如下:①端口名。端口名是賦予每個(gè)外部引腳的名稱(chēng),即該端口的標(biāo)識(shí)符。②端口模式。端口模式用來(lái)定義外部引腳的信號(hào)流向。端口模式共有in、out、inout和buffer四種。in:輸入模式僅允許數(shù)據(jù)由外部流向?qū)嶓w輸入端口。out:輸出模式僅允許數(shù)據(jù)從實(shí)體內(nèi)部流向?qū)嶓w輸出端口,不能用于反饋。inout:雙向模式允許數(shù)據(jù)流入或流出實(shí)體,雙向模式允許用于內(nèi)部反饋。buffer:緩沖模式通常用于內(nèi)部有反饋需求的信號(hào)描述。緩沖模式與輸出模式類(lèi)似,只是緩沖模式允許用于內(nèi)部反饋,而輸出模式不行。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符③數(shù)據(jù)類(lèi)型。描述端口的數(shù)據(jù)類(lèi)型通常有bit、bit_vector、std_logic、std_logic_vector。Bit(位):信號(hào)值是一個(gè)1位的二進(jìn)制值,取值只能是0或1。bit_vector(位矢量):信號(hào)值是一組二進(jìn)制數(shù)。std_logic(標(biāo)準(zhǔn)邏輯位):取值有9種,分別是:0(信號(hào)0)、1(信號(hào)1)、H(弱信號(hào)1)、L(弱信號(hào)0)、Z(高阻)、X(不定)、W(弱信號(hào)不定)、U(初始值)和—(不可能情況)等。std_logic_vector(標(biāo)準(zhǔn)邏輯矢量):它是標(biāo)準(zhǔn)邏輯的集合,基本元素是std_logic類(lèi)型。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符【例】二進(jìn)制計(jì)數(shù)器VHDL程序的實(shí)體libraryieee;useieee.std_logic_1164.all;entitybinary_counterisgeneric(MIN_COUNT:natural:=0;MAX_COUNT:natural:=255);port(clk:instd_logic;reset:instd_logic;enable:instd_logic;q:outintegerrangeMIN_COUNTtoMAX_COUNT);endentity;architecturertlofbinary_counterisbeginprocess(clk)variablecnt:integerrangeMIN_COUNTtoMAX_COUNT:=0;beginif(rising_edge(clk))thenifreset='1'thencnt:=0;elsifenable='1'thencnt:=cnt+1;endif;endif;q<=cnt;endprocess;endrtl;entity實(shí)體名is語(yǔ)句引導(dǎo)本實(shí)體的實(shí)體名為binary_counter類(lèi)屬參數(shù)說(shuō)明語(yǔ)句:定義常量MIN_CUNT為自然數(shù),賦0值;定義常量MAX_CUNT為自然數(shù),賦255值。端口說(shuō)明語(yǔ)句:定義clk為輸入端口,數(shù)據(jù)類(lèi)型標(biāo)準(zhǔn)邏輯位;定義reset為輸入端口,數(shù)據(jù)類(lèi)型標(biāo)準(zhǔn)邏輯位;定義enable為輸入端口,標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型;定義q為輸出端口,整數(shù)數(shù)據(jù)類(lèi)型,限定范圍MIN_CUNT到MAX_CUNT,即0-255。實(shí)體說(shuō)明部分項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符2.結(jié)構(gòu)體結(jié)構(gòu)體描述了該設(shè)計(jì)實(shí)體單元電路的邏輯功能。結(jié)構(gòu)體附屬于實(shí)體,是對(duì)實(shí)體的說(shuō)明。結(jié)構(gòu)體描述格式如下:architecture結(jié)構(gòu)體名of實(shí)體名is [說(shuō)明語(yǔ)句];begin

功能描述語(yǔ)句;end[architecture]結(jié)構(gòu)體名;

項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符結(jié)構(gòu)體描述格式解釋?zhuān)海?)實(shí)體名必須是所在設(shè)計(jì)實(shí)體的實(shí)體名字,而結(jié)構(gòu)體名可以自由選擇,當(dāng)一個(gè)設(shè)計(jì)實(shí)體有多個(gè)結(jié)構(gòu)體時(shí),結(jié)構(gòu)體不能同名。(2)結(jié)構(gòu)體必須以“end[architecture]結(jié)構(gòu)體名+;”作為結(jié)束語(yǔ)句。(3)結(jié)構(gòu)體說(shuō)明語(yǔ)句必須放在關(guān)鍵字“architecture”和“begin”之間。結(jié)構(gòu)體說(shuō)明語(yǔ)句用于對(duì)結(jié)構(gòu)體內(nèi)部所用到的信號(hào)(signal)、數(shù)據(jù)類(lèi)型(type)、常量(constant)、元件(component)、函數(shù)(function)和過(guò)程(procedure)等進(jìn)行說(shuō)明。在結(jié)構(gòu)體中說(shuō)明和定義的數(shù)據(jù)類(lèi)型、常量、函數(shù)和過(guò)程,作用范圍局限于其所在的結(jié)構(gòu)體。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符(4)功能描述語(yǔ)句。功能描述語(yǔ)句包括5種不同類(lèi)型的并行方式工作的語(yǔ)句結(jié)構(gòu),如圖2.5所示。5種語(yǔ)句結(jié)構(gòu)本身是并行方式工作,但它們內(nèi)部不一定是并行語(yǔ)句。圖2.5結(jié)構(gòu)體構(gòu)造圖項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符功能描述語(yǔ)句解釋?zhuān)孩傩盘?hào)賦值語(yǔ)句:將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果向定義的信號(hào)或輸出端口進(jìn)行賦值。圖2.5結(jié)構(gòu)體構(gòu)造圖②進(jìn)程語(yǔ)句:一個(gè)進(jìn)程相當(dāng)與一個(gè)功能模塊,在一個(gè)結(jié)構(gòu)體內(nèi)可以包含多個(gè)進(jìn)程,每個(gè)進(jìn)程都是同步執(zhí)行的,但是進(jìn)程內(nèi)部的語(yǔ)句是順序執(zhí)行。進(jìn)程語(yǔ)句的描述格式為:[進(jìn)程名:]process[(敏感信號(hào)表)]

[進(jìn)程說(shuō)明部分];

begin

順序描述語(yǔ)句部分;endprocess[進(jìn)程名];項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符進(jìn)程語(yǔ)句的描述解釋?zhuān)篴.進(jìn)程名是進(jìn)程語(yǔ)句的標(biāo)識(shí)符,它是一個(gè)可選項(xiàng)。b.敏感信號(hào)表是用來(lái)激勵(lì)進(jìn)程啟動(dòng)的量,當(dāng)敏感信號(hào)表中有一個(gè)信號(hào)或多個(gè)信號(hào)發(fā)生變化時(shí),該進(jìn)程啟動(dòng),否則該進(jìn)程處于掛起狀態(tài)。c.進(jìn)程說(shuō)明語(yǔ)句定義該進(jìn)程所需要的局部量,可包括數(shù)據(jù)類(lèi)型、常量、變量、屬性、子程序等,但不允許定義信號(hào)和共享變量。d.順序描述語(yǔ)句用于描述該進(jìn)程的功能。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符功能描述語(yǔ)句解釋?zhuān)孩墼Z(yǔ)句:對(duì)其他的設(shè)計(jì)實(shí)體作元件調(diào)用說(shuō)明,并將此元件的端口與其他元件、信號(hào)或高層次實(shí)體的界面端口進(jìn)行連接。④子程序調(diào)用語(yǔ)句:用以調(diào)用過(guò)程或函數(shù),并將獲得的結(jié)果賦值于信號(hào)。⑤塊語(yǔ)句:由一系列并行執(zhí)行語(yǔ)句構(gòu)成的組合體,其功能是將結(jié)構(gòu)體中的并行語(yǔ)句組成一個(gè)或多個(gè)子模塊。圖2.5結(jié)構(gòu)體構(gòu)造圖項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符【例】1位二進(jìn)制數(shù)半加器仿真測(cè)試VHDL程序結(jié)構(gòu)體說(shuō)明libraryieee;useieee.std_logic_1164.all;entityh_adder_vhd_tstisendh_adder_vhd_tst;architectureh_adder_archofh_adder_vhd_tstissignala:std_logic;signalb:std_logic;signalc:std_logic;signals:std_logic;componenth_adderport(a:instd_logic;b:instd_logic;c:outstd_logic;s:outstd_logic);endcomponent;begini1:h_adderportmap(a=>a,b=>b,c

=>c,s=>s);init:processbegina<='0';b<='0';waitfor20us;a<='1';b<='0';waitfor20us;a<='0';b<='1';waitfor20us;a<='1';b<='1';waitfor20us;endprocessinit;endh_adder_arch;architecture結(jié)構(gòu)體名of實(shí)體名is語(yǔ)句引導(dǎo)本結(jié)構(gòu)體名為h_adder_arch,實(shí)體名為h_adder_vhd_tst結(jié)構(gòu)體描述部分結(jié)構(gòu)體描述begin分隔end結(jié)構(gòu)體名+;結(jié)束結(jié)構(gòu)體描述對(duì)結(jié)構(gòu)體內(nèi)用到的信號(hào)a、b、c、s的說(shuō)明對(duì)結(jié)構(gòu)體內(nèi)用到的元件h_adder的說(shuō)明元件例化語(yǔ)句:對(duì)結(jié)構(gòu)體調(diào)用的元件h_adder的描述說(shuō)明語(yǔ)句功能描述語(yǔ)句進(jìn)程語(yǔ)句:對(duì)進(jìn)程init的描述項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符3.庫(kù)庫(kù)是經(jīng)過(guò)編譯后的數(shù)據(jù)集合,其目的是為了使設(shè)計(jì)遵循某些統(tǒng)一的語(yǔ)言標(biāo)準(zhǔn)或數(shù)據(jù)格式,同時(shí)便于利用已有的設(shè)計(jì)成果,以提高設(shè)計(jì)效率。(1)庫(kù)的分類(lèi)。VHDL程序中常用的庫(kù)有IEEE庫(kù)、SID庫(kù)、WORK庫(kù)、ASIC庫(kù)和用戶自定義庫(kù)等。①I(mǎi)EEE庫(kù)。IEEE庫(kù)是VHDL程序中最為常用的庫(kù),它包含了IEEE標(biāo)準(zhǔn)的程序包和一些支持工業(yè)標(biāo)準(zhǔn)的程序包,使用時(shí)需要按照格式進(jìn)行說(shuō)明。②SID庫(kù)。STD庫(kù)是VHDL程序的標(biāo)準(zhǔn)庫(kù),包含standard程序包,里面定義了VHDL程序標(biāo)準(zhǔn)數(shù)據(jù)、邏輯關(guān)系及函數(shù)等,使用standard包中定義的量可以不加聲明。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符③WORK庫(kù)。WORK庫(kù)是VHDL程序的工作庫(kù),用戶在工程設(shè)計(jì)中設(shè)計(jì)成功、正在驗(yàn)證、未仿真的中間部件等都堆放在WORK工作庫(kù),使用時(shí)不需要進(jìn)行說(shuō)明調(diào)用。④ASIC庫(kù)。在VHDL程序中,為了進(jìn)行門(mén)級(jí)仿真,各公司提供面向ASIC的邏輯門(mén)庫(kù)。在各庫(kù)中存放著與邏輯門(mén)一一對(duì)應(yīng)的實(shí)體。使用ASIC庫(kù),需要按照格式進(jìn)行說(shuō)明。⑤用戶自定義庫(kù)。用戶自定義庫(kù)是用戶根據(jù)自己的需要,將開(kāi)發(fā)的共用程序包和實(shí)體等匯集在一起,定義成一個(gè)庫(kù)。在使用用戶自定義庫(kù)時(shí),需要按照格式進(jìn)行說(shuō)明。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符(2)庫(kù)的說(shuō)明。在VHDL程序中,庫(kù)的說(shuō)明通常放在實(shí)體描述的最前面。多數(shù)情況下,對(duì)庫(kù)進(jìn)行說(shuō)明后,設(shè)計(jì)者才能使用庫(kù)集合中定義的數(shù)據(jù)。庫(kù)說(shuō)明語(yǔ)句格式如下:library庫(kù)名;(3)庫(kù)的使用。庫(kù)說(shuō)明語(yǔ)句與use語(yǔ)句一般同時(shí)使用,庫(kù)說(shuō)明語(yǔ)句指明所使用的庫(kù)名,use語(yǔ)句指明使用庫(kù)中的程序包。說(shuō)明了庫(kù)和程序包,整個(gè)設(shè)計(jì)實(shí)體就可以進(jìn)入訪問(wèn)或調(diào)用,但其作用范圍僅限于所說(shuō)明的設(shè)計(jì)實(shí)體。庫(kù)的調(diào)用格式:

library庫(kù)名;use庫(kù)名.程序包名.all;(或use庫(kù)名.程序包名.項(xiàng)目名;)項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符4.程序包為了使已定義的數(shù)據(jù)類(lèi)型、數(shù)據(jù)對(duì)象等被更多的其它設(shè)計(jì)實(shí)體共享,可以將它們收集在一個(gè)VHDL程序包中,這樣可以提高設(shè)計(jì)的效率和程序的可讀性。常用的預(yù)定義程序包說(shuō)明如下:(1)std_logic_1164程序包。std_logic_1164程序包是IEEE的標(biāo)準(zhǔn)程序包,其中用得最多的是滿足工業(yè)標(biāo)準(zhǔn)的兩個(gè)數(shù)據(jù)類(lèi)型std_logic和std_logic_vector。該數(shù)據(jù)類(lèi)型除具有“0”和“1”邏輯量以外,還有其他的邏輯量,如高阻態(tài)“z”、不定態(tài)“x”等,更能滿足實(shí)際數(shù)字系統(tǒng)設(shè)計(jì)仿真的需求。項(xiàng)目2VHDL程序結(jié)構(gòu)及標(biāo)識(shí)符(2)std_logic_arith程序包。std_logic_arith程序包,擴(kuò)展了3個(gè)數(shù)據(jù)類(lèi)型,即unsigned、signed和small_int,并為其定義了相關(guān)的算術(shù)運(yùn)算符和轉(zhuǎn)換函數(shù)。unsigned數(shù)據(jù)類(lèi)型不包含符號(hào)位,無(wú)法參與有符號(hào)的運(yùn)算;signed數(shù)據(jù)類(lèi)型包含符號(hào)位,可以參與有符號(hào)的運(yùn)算。(3)std_logic_unsigned和std_loglc_signed程序包。std_logic_unsigned和std_logic_signed程序包定義了可用于integer型、std_logic型和std_logic_vector型混合運(yùn)算的運(yùn)算符,并定義了由std_logic_vector型到integer型的轉(zhuǎn)換函數(shù)。其中:std_logic_signed中定義的運(yùn)算符考慮到了符號(hào),是有符號(hào)數(shù)的運(yùn)算;std_logic_unsigned程序包定義的運(yùn)算符沒(méi)有符

溫馨提示

  • 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)論