版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA期中考試復(fù)習(xí)
復(fù)習(xí)綱要:
第一章:
1.概念一一問(wèn)答題,如:VHDL與軟件語(yǔ)言特點(diǎn)、設(shè)計(jì)流程等
2.習(xí)題部分
第三章:
1.程序語(yǔ)法,名稱、功能、作用
1.順序語(yǔ)句:IF;CASE——寫(xiě)在Process中;理解上的“順序性
2.VHDL常見(jiàn)語(yǔ)法要素
2.并行語(yǔ)句:whenelse;withselect
3.編程題:參考習(xí)題
4.改錯(cuò)題:修改語(yǔ)法錯(cuò)誤
第一章資料(重點(diǎn)加粗、下劃線)
1-1EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開(kāi)發(fā)有什么關(guān)系?FPGA在ASIC設(shè)計(jì)中有什么用途?P3~4
EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開(kāi)發(fā)有什么關(guān)系?答:利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的
最后目標(biāo)是完成專用集成電路ASIC的設(shè)計(jì)和實(shí)現(xiàn);FPGA和CPLD是實(shí)現(xiàn)這一途徑的主流器
件。FPGA和CPLD的應(yīng)用是EDA技術(shù)有機(jī)融合軟硬件電子設(shè)計(jì)技術(shù)、SoC(片上系統(tǒng))和ASIC
設(shè)計(jì),以及對(duì)自動(dòng)設(shè)計(jì)與自動(dòng)實(shí)現(xiàn)最典型的詮釋。
FPGA在ASIC設(shè)計(jì)中有什么用途?答:FPGA和CPLD通常也被稱為可編程專用IC,或可
編程ASIC。FPGA實(shí)現(xiàn)ASiC設(shè)計(jì)的現(xiàn)場(chǎng)可編程器件。
1-2與軟件描述語(yǔ)言相比,VHDL有什么特點(diǎn)?P4~6
答:編譯器將軟件程序翻譯成基于某種特定CPU的機(jī)器代碼,這種代碼僅限于這種CPU
而不能移植,并且機(jī)器代碼不代表硬件結(jié)構(gòu),更不能改變CPU的硬件結(jié)構(gòu),只能被動(dòng)地為
其特定的硬件電路結(jié)構(gòu)所利用。
綜合器將VHDL程序轉(zhuǎn)化的目標(biāo)是底層的電路結(jié)構(gòu)網(wǎng)表文件,這種滿足VHDL設(shè)計(jì)
程序功能描述的電路結(jié)構(gòu),不依賴于任何特定硬件環(huán)境;具有相對(duì)獨(dú)立性。綜合器在將
VHDL(硬件描述語(yǔ)言)表達(dá)的電路功能轉(zhuǎn)化成具體的電路結(jié)構(gòu)網(wǎng)表過(guò)程中,具有明顯的能動(dòng)
性和創(chuàng)造性,它不是機(jī)械的一一對(duì)應(yīng)式的“翻譯”,而是根據(jù)設(shè)計(jì)庫(kù)、工藝庫(kù)以及預(yù)先設(shè)置
的各類(lèi)約束條件,選擇最優(yōu)的方式完成電路結(jié)構(gòu)的設(shè)計(jì)。
1-3什么是綜合?有哪些類(lèi)型?綜合在電子設(shè)計(jì)自動(dòng)化中的地位是什么?P6
什么是綜合?答:在電子設(shè)計(jì)領(lǐng)域中綜合的概念可以表示為:將用行為和功能層次表達(dá)
的電子系統(tǒng)轉(zhuǎn)換為低層次的便于具體實(shí)現(xiàn)的模塊組合裝配的過(guò)程。
有哪些類(lèi)型?答:(1)從自然語(yǔ)言轉(zhuǎn)換到VHDL語(yǔ)言算法表示,即自然語(yǔ)言綜合。(2)從
算法表示轉(zhuǎn)換到寄存器傳輸級(jí)(RegisterTransportLevel,RTL),即從行為域到結(jié)構(gòu)域的綜
合,即行為綜合。(3)從RTL級(jí)表示轉(zhuǎn)換到邏輯門(mén)(包括觸發(fā)器)的表示,即邏輯綜合。(4)
從邏輯門(mén)表示轉(zhuǎn)換到版圖表示(ASIC設(shè)計(jì)),或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱為版圖綜
合或結(jié)構(gòu)綜合。
綜合在電子設(shè)計(jì)自動(dòng)化中的地位是什么?答:是核心地位(見(jiàn)圖卜3)。綜合器具有更
復(fù)雜的工作環(huán)境,綜合器在接受VHDL程序并準(zhǔn)備對(duì)其綜合前,必須獲得與最終實(shí)現(xiàn)設(shè)計(jì)電
路硬件特征相關(guān)的工藝庫(kù)信息,以及獲得優(yōu)化綜合的諸多約束條件信息;根據(jù)工藝庫(kù)和約束
條件信息,將VHDL程序轉(zhuǎn)化成電路實(shí)現(xiàn)的相關(guān)信息。
1-4在EDA技術(shù)中,自頂向下的設(shè)計(jì)方法的重要意義是什么?P8~10
答:在EDA技術(shù)應(yīng)用中,自頂向下的設(shè)計(jì)方法,就是在整個(gè)設(shè)計(jì)流程中各設(shè)計(jì)環(huán)節(jié)逐
步求精的過(guò)程。
1-5IP在EDA技術(shù)的應(yīng)用和發(fā)展中的意義是什么?P23-25
答:IP核具有規(guī)范的接口協(xié)議,良好的可移植與可測(cè)試性,為系統(tǒng)開(kāi)發(fā)提供了可靠的
保證。
2-6敘述EDA的FPGA/CPLD設(shè)計(jì)流程,以及涉及的EDA工具及其在整個(gè)流程中的作用。
(P12~14)
答:L設(shè)計(jì)輸入(原理圖/HDL文本編輯)(EDA設(shè)計(jì)輸入器將電路系統(tǒng)以一定的表達(dá)方式
輸入計(jì)算機(jī));2.綜合(EDA綜合器就是將電路的高級(jí)語(yǔ)言(如行為描述)轉(zhuǎn)換成低級(jí)的,可
與FPGA/CPLD的基本結(jié)構(gòu)相映射的網(wǎng)表文件或程序。);3適配(EDA適配器的功能是將由
綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件,如JEDEC、JAM
格式的文件。);4.時(shí)序仿真(EDA時(shí)序仿真器就是接近真實(shí)器件運(yùn)行特性的仿真,仿真文件
中已包含了器件硬件特性參數(shù),因而,仿真精度高。)與功能仿真(EDA功能仿真器直接對(duì)
VHDL原理圖描述或其他描述形式的邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的功能是否滿
足原設(shè)計(jì)的要求,仿真過(guò)程不涉及任何具體器件的硬件特性。);5.編程下載(EDA編程下
載把適配后生成的下載或配置文件,通過(guò)編程器或編程電纜向FPGA或CPLD下載,以便進(jìn)
行硬件調(diào)試和驗(yàn)證(HardwareDebugging)。);6.硬件測(cè)試(最后是將含有載入了設(shè)計(jì)的FPGA
或CPLD的硬件系統(tǒng)進(jìn)行統(tǒng)一測(cè)試,以便最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,
以排除錯(cuò)誤,改進(jìn)設(shè)計(jì)。其中EDA的嵌入式邏輯分析儀是將含有載入了設(shè)計(jì)的FPGA的硬件
系統(tǒng)進(jìn)行統(tǒng)一測(cè)試,并將測(cè)試波形在PC機(jī)上顯示、觀察和分析。)。
圖14自頂向下的設(shè)計(jì)流程
第三章資料
基礎(chǔ)部分(可不看)
例3-1
libraryieee;
useieee.std_logic_1164.all;
entitymux21ais---關(guān)鍵詞entity后為實(shí)體名
port(a,b,s:inbit;
y:outbit);
endentitymux21a;
architecturebhvofmux21ais---關(guān)鍵詞architecture后為結(jié)構(gòu)體名
begin
process(a,b,s)
begin
if(s='1')theny<=a;
elsey<=b;
endif;
endprocess;
endarchitecturebhv;
1.條件語(yǔ)句
名稱:IF_THEN_ELSE
功能作用:屬于順序語(yǔ)句。
用于條件語(yǔ)句的判斷表達(dá)式可以是一個(gè)值,也可以是更復(fù)雜的邏輯或運(yùn)算表達(dá)式,
如例3-1中的(s='1')或以下IF語(yǔ)句表述
ifathen
if(sl=,0')and(s2=*T)or(c<b+l)then...
中的a或(sl='0')and(s2=T)or(c<b+l)?其表達(dá)形式不同,但本質(zhì)上都輸出一個(gè)用于
作邏輯判斷的布爾值:“真”或“偽”。其中的and和or是邏輯與和邏輯或的邏輯操作符。
2.數(shù)據(jù)類(lèi)型
名稱:包括位矢量bit、整數(shù)類(lèi)型integer、布爾類(lèi)型boolean和標(biāo)準(zhǔn)邏輯類(lèi)型stdjogic
等。
功能作用:詳見(jiàn)p59
3.進(jìn)程語(yǔ)句和順序語(yǔ)句
名稱:process
功能作用:所有順序描述語(yǔ)句都必須放在進(jìn)程語(yǔ)句中(也包括放在過(guò)程語(yǔ)句中)。
在一個(gè)結(jié)構(gòu)體中可以包含任意個(gè)進(jìn)程語(yǔ)句結(jié)構(gòu),所有的進(jìn)程語(yǔ)句本身都是并行語(yǔ)
句,而由任一進(jìn)程process引導(dǎo)的語(yǔ)句(包含在其中的語(yǔ)句)屬于順序語(yǔ)句。
4.端口語(yǔ)句和端口信號(hào)名
名稱:port
功能作用:描述電路的端口及端口信號(hào)必須用端口語(yǔ)句port()來(lái)引導(dǎo),并在語(yǔ)句結(jié)尾處
加分號(hào)
5.端口模式
名稱:in,out,inout,buffer
功能作用:in:輸入端口。
out:輸出端口。
inout:雙向端口。
buffer:緩沖端口。
6.關(guān)鍵字
名稱:entity,erchitecture,end,if,else,else,out,in,and,or等
7.標(biāo)識(shí)符
設(shè)計(jì)者程序中自定義。
考試范圍(主要是程序結(jié)構(gòu)和語(yǔ)句)
3.2半加器
例3-2
libraryieee;
useieee.std_logic_1164.all;
entityh_adderis
port(
A:instd_logic;
B:instdlogic;
SO:outstd_logic;
CO:outstdlogic
);
endentityhadder;
architecturefhlofh_adderis
begin
SO<=AxorB;---并行語(yǔ)句沒(méi)有先后順序
CO<=AandB;---并行語(yǔ)句沒(méi)有寫(xiě)在process中
endarchitecturefhl;
串行語(yǔ)句:寫(xiě)在進(jìn)程的內(nèi)部
3.3四選一多路選擇器
4選1多路選擇器及case語(yǔ)句表述方式
例3-3
libraryieee;
useieee.stdlogic1164.all;
entitymux41ais
port(a,b,c,d,sO,si:instdlogic;
y:outstd_logic
);
endentitymux41a;
architecturebhvofmux41ais
signals:std_logic_vector(1downto0);—s是信號(hào)名,說(shuō)明語(yǔ)句部分:定義當(dāng)
前語(yǔ)句中間的信號(hào)量
begin
s<=si&s0;--&并量連接符&,0'=>'10'
process(si,s0)
begin
case(s)is
when"00'=>y<=a;
when〃01〃=>y<=b;
when〃10〃=>y<=c;
when=>y<=d;
whenothers=>null;
endcase;
endprocess;
endbhv;
在此進(jìn)程中的的case語(yǔ)句一定是順序語(yǔ)句。
1.CASE語(yǔ)句
case語(yǔ)句屬于順序語(yǔ)句,必須放在進(jìn)程語(yǔ)句process中使用。
表述如下:
case〈表達(dá)式》is
when<選擇符或標(biāo)識(shí)符>=><順序語(yǔ)句);...;<順序語(yǔ)句》;
when〈選擇符或標(biāo)識(shí)符)=><順序語(yǔ)句);...;〈順序語(yǔ)句》;
whenothers=><順序語(yǔ)句);
endcase;
2.case語(yǔ)句多條件選擇值的一般表達(dá)式如下:
選擇值[|選擇值]
選擇值可以有四種不同的表達(dá)方式:
單個(gè)普通值,如6。
數(shù)值選擇范圍,如(2to4),表示2、3或4.
并列數(shù)值,如3|5,表示取值3或5。
混合方式,以上三種方式混合。
如例3-4
sel:inintegerrange0to15;
caseselis
when0=>zl<=〃010〃;
when1|3=>z2<=〃110〃;
when4to7|2=>z3<="Oil";
whenothers=>z4<=〃111〃;
endcase;
3.3.3IEEE庫(kù)預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量(P69)
3.3.4預(yù)定義標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型(P70)
3.3.5信號(hào)定義和數(shù)據(jù)對(duì)象(P71)
3.3.6并置操作符&
操作符&表示信號(hào)或是數(shù)組合并起來(lái)形成新的數(shù)組矢量。例如:"VH"&"DL"的結(jié)果是〃VHDL”;
'0'&'[&'[的結(jié)果為"011"。
語(yǔ)句S<=sl&sO的作用是令:S(l)<=si;S(0)<=sOo
3.3.74選1多路選擇器的VHDL不同描述方式
【例3-6]【例3-7】【例3-8]
S<=sl&s0;S<=sl&s0;
PROCESS(si,SO)BEGINS<=slsO;WITHSSELECT
IF(S=,,0011)THENy<=a;y<=aWHENS=,10011ELSEy<=aWHEN"00”,
ELSIF(S=n01n)THENy<=b;bWHENS="01”ELSEbWHEN"01”,
ELSIE(S=”10”)THENy<=c;CWHENS=n10,1ELSECWHEN"10”,
ELSEy<=d;ENDIF;d;dWHEN“11”;
ENDPROCESS;ENDBHVENDBHV;
ENDBHV;
順序語(yǔ)句并行語(yǔ)句并行語(yǔ)句
條件信號(hào)賦值選擇信號(hào)賦值
例3-6的語(yǔ)句表述結(jié)構(gòu)與例3-1相似,只是if語(yǔ)句的條件判斷式的變量變成了兩位二進(jìn)制
數(shù),所以就有了四種可能的選擇。IF語(yǔ)句形式如下:
IF_THEN_ELSE_ELSE_ENDIF
1.WHEN_ELSE條件信號(hào)賦值語(yǔ)句
該語(yǔ)句屬于并行語(yǔ)句,不需要進(jìn)程語(yǔ)句process引導(dǎo)。也稱并行賦值語(yǔ)句(相對(duì)于進(jìn)程中
的賦值語(yǔ)句),一般表達(dá)式如下:
賦值目標(biāo)<=表達(dá)式WHEN賦值條件ELSE
表達(dá)式WHEN賦值條件ELSE
表達(dá)式;
需要注意由于條件測(cè)試的順序性,條件信號(hào)賦值語(yǔ)句中的第一子句具有最高賦值優(yōu)先級(jí)。
z<-awhenpl='1'else
bwhenp2=T'else
c;
注意只有最后一個(gè)"表達(dá)式"后有個(gè)分號(hào)。
2.選擇信號(hào)賦值語(yǔ)句
with選擇表達(dá)式select
賦值目標(biāo)信號(hào)<=表達(dá)式when選擇值,
表達(dá)式when選擇值,
表達(dá)式when選擇值;
由于屬于并行語(yǔ)句,選擇信號(hào)賦值語(yǔ)句不在進(jìn)程中應(yīng)用,但其功能卻與進(jìn)程中的case語(yǔ)句
的功能相似。
選擇信號(hào)賦值語(yǔ)句在條件句中未能覆蓋所有條件選擇時(shí),要求在末尾加上與NULL類(lèi)似含義
的關(guān)鍵詞UNAFFECTEDo
UNAFFECTEDWHENOTHERS;
3.4全加器
3.4.1全加器設(shè)計(jì)
例3-9
libraryieee;—全加器頂層設(shè)計(jì)描述
useieee.std_logic_1164.all;
entityfadderis
port(ain,bin,cin:instd_logic;
cout,sum:outstdlogic
);
endentityf_adder;
architecturefdloff_adderis
componenthadder---調(diào)用半加器聲明語(yǔ)句
port(A,B:instd_logic;CO,SO:outstd_logic);
endcomponent;
componentor2a---調(diào)用或門(mén)元件聲明語(yǔ)句,or2a是實(shí)體名不是文件名
port(a,b:instd_logic;c:outstd_logic);
endcomponent;
signalnetl,net2,net3:stdlogic;--定義3個(gè)信號(hào)作為內(nèi)部的連接線,信號(hào)量的導(dǎo)線
begin
ul:h_adderportmap(A=>ain,B=>bin,CO=>net2,SO=>netl);
u2:h_adderportmap(netl,cin,net3,sum);--例化語(yǔ)句,u2模塊的編號(hào)
u3:or2aportmap(a=>net2,b=>net3,c=>cout);
endarchitecturefdl;
例3-10
libraryieee;
useieee.std_logic_1164.all;
entityor2ais
port(a,b:instd_logic;c:outstd_logic);
endentity;
architectureoneofor2ais
begin
c<=aorb;
endarchitectureone;
注意:這里假設(shè)參與設(shè)計(jì)的半加器文件、或門(mén)文件和全加器頂層設(shè)計(jì)文件存放于同一文件夾
3.4.2VHDL例化語(yǔ)句
例化語(yǔ)句分兩個(gè)部分組成,第一部分是將一個(gè)現(xiàn)成的設(shè)計(jì)實(shí)體定義為一個(gè)元件,語(yǔ)句的功能
是對(duì)待調(diào)用的這個(gè)元件做H1調(diào)用聲明,最簡(jiǎn)表達(dá)式如下:
component元件名is
port(端口名表);
endcomponent文件名;
命名方式與實(shí)體中port()語(yǔ)句一致,即對(duì)于需要調(diào)用的元件,只需要將該元件對(duì)應(yīng)的VHDL
程序的實(shí)體描述直接復(fù)制過(guò)來(lái)即可,即只需將entity改寫(xiě)為component?
元件定義語(yǔ)句必須放在結(jié)構(gòu)體的architecture和begin之間。(調(diào)用聲明的端口說(shuō)明中的
端口符號(hào)可與原文件不同但排列方式、端口模式、數(shù)據(jù)類(lèi)型、功能定義等必須相同)。
元件例化語(yǔ)句的第二部分則是此元件與當(dāng)前設(shè)計(jì)實(shí)體(頂層文件)中元件間及端口的連接說(shuō)
明。此語(yǔ)句所謂的“端口名關(guān)聯(lián)法”有如F表達(dá)式:
例化名:元件名portmap([端口名=>]連接端口名,一.);
其中的例化名是必須存在的。
對(duì)應(yīng)于例3-9中的元件名有hadder,or2a,其例化名分別為ul,u2,u3.
portmap是端口映射,或端口連接的意思...P76-77
位置關(guān)聯(lián)法(位置映射法),關(guān)聯(lián)表述的信號(hào)位置十分重要,不能放錯(cuò);而且,一旦關(guān)聯(lián)例
化語(yǔ)句確定后,被連接的元件的源文件中的端口表內(nèi)的信號(hào)排列位置就不能再變動(dòng)了。
3.4.38位加法器設(shè)計(jì)及算術(shù)操作符應(yīng)用(加法器應(yīng)用題P77)
例3-11是直接利用加法算術(shù)操作符“+”完成的8位加法器的VHDL程序
libraryieee;
useieee.std_logic_1164.all;
useieee.stdlogicunsigned.all;-unsigned無(wú)符號(hào)數(shù),此程序包中包含算術(shù)操作符的重載函數(shù)
entityadder8bis
port(A,B:instd_logic_vector(7downto0);—vector位矢量
cin:instd_logic;
cout:outstd_logic;
dout:outstd_logic_vector(7downto0)
);
endentityadder8b;
architecturebhvofadder8bis
signaldata:std_logic_vector(8downto0);
begin
data<=('O'&A)+('O'&B)+(〃00000000〃&cin);一&并置連接符
cout<=data(8);
dout<=data(7downto0);
endarchitecturebhv;
3.5乘法器
3.5.1統(tǒng)計(jì)位矢中含'1'個(gè)數(shù)的電路模塊設(shè)計(jì)
例3-12所描述的電路是一個(gè)統(tǒng)計(jì)輸入的8位位矢中含'1,個(gè)數(shù)的程序。
libraryieee;
useieee.stdlogic1164.all;
useieee.std_logic_unsigned.all;
entitycntcis
port(din:instd_logic_vector(7downto0);
cnth:outstdlogic_vector(3downto0));
endentitycntc;
architecturebhvofcntcis
begin
process(din)
variableQ:std_logic_vector(3downto0);
begin
Q:=〃0000〃;
fornin0to7loop―n是loop的循環(huán)變量
if(din(n)='1')thenQ:=Q+l;
endif;
endloop;
cnth<=Q;
endprocess;
endbhv;
改程序有三個(gè)需要注意的語(yǔ)句結(jié)構(gòu):
(1)變量關(guān)鍵詞variable的用法。
變量variable與信號(hào)signal一樣,都屬于數(shù)據(jù)對(duì)象,在此程序在的功能與信號(hào)相似,
但變量的賦值符號(hào)與信號(hào)的賦值符號(hào)不同,信號(hào)的賦值符號(hào)是“〈=”,而變量的賦值符號(hào)是
“:=”。與信號(hào)不同,變量的功能主要用于數(shù)據(jù)的暫存,而且只能在進(jìn)程中定義變量,所
以,變量無(wú)法將數(shù)據(jù)傳遞出進(jìn)程。
(2)程序中的if語(yǔ)句沒(méi)有關(guān)鍵詞else。這種用法是一種條件響應(yīng)不完整的現(xiàn)象,即沒(méi)有
表達(dá)當(dāng)條件(din(n)='0')時(shí)作何處理。
(3)程序使用了循環(huán)語(yǔ)句即loop語(yǔ)句的一種類(lèi)型。
3.5.2FOR_LOOP循環(huán)語(yǔ)句用法
loop語(yǔ)句的常用表達(dá)方式有如下兩種:
(1)單個(gè)loop語(yǔ)句
[loop標(biāo)號(hào):]loop
順序語(yǔ)句
endloop[loop標(biāo)號(hào)];
這種循環(huán)方式是一種最簡(jiǎn)答的語(yǔ)句形式,它的循環(huán)方式需引入其他控制語(yǔ)句(如exit語(yǔ)句)
后才能確定:"loop標(biāo)號(hào)”可任選。用法如下:
L2:loop
a:=a+1;
exitL2whena>10;一當(dāng)a大于10跳出循環(huán)
endloopL2;
此程序的循環(huán)方式由exit語(yǔ)句確定,即當(dāng)a>10時(shí)結(jié)束執(zhí)行a:=a+l的循環(huán)。
(2)FORLOOP語(yǔ)句,語(yǔ)法格式如下:
[loop標(biāo)號(hào):]for循環(huán)變量,in循環(huán)次數(shù)范圍loop
順序語(yǔ)句
endloop[loop標(biāo)號(hào)];
FOR后血的“循環(huán)變量”是一個(gè)臨時(shí)變量,如n,屬于loop語(yǔ)句的局部變量,不必事先定義。
這個(gè)變量只能作為賦值源,不能被賦值,它由loop語(yǔ)句自動(dòng)定義。使用時(shí)應(yīng)當(dāng)注意,在loop
語(yǔ)句范圍內(nèi)不要再使用其他與此循環(huán)變量同名的標(biāo)識(shí)符,如n。
3.5.3移位相加型乘法器
例3-13是基于移位相加原理的4x4位乘法器的VHDL程序。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitymult4bis
generic(S:integer:=4);一定義參數(shù)S為整數(shù)類(lèi)型且等于4便于修改電路規(guī)模
port(R:outstd_logic_vector(2*Sdownto1);
A,B:instd_logic_vector(Sdownto1)
);
endentitymuIt4b;
architectureoneofmult4bis
signalAO:Std_logic_vector(2*Sdownto1);-2*S為8表示8位(S為4位“0000”)
begin
A0<=convstdlogicvector(0,S)&A;一類(lèi)型轉(zhuǎn)換函數(shù)
process
variableRI:stdlogicvector(2*Sdownto1);一定義變量數(shù)據(jù)類(lèi)型
begin
RI:=(others=>'O');--變量賦值,若S=4,則此句等效于RI:="00000000”
foriin1toSloop
if(B(l)=’1')then
RI:=RI+to_stdlogicvector(to_bitvector(A0)SLL(i-l)
endif;
endloop;
R<=RI;
endprocess;
endarchitectureone;
3.5.4GENERIC參數(shù)定義語(yǔ)句
GENERIC語(yǔ)句也像端口定義語(yǔ)句那樣常常與port語(yǔ)句并行出現(xiàn)。
一般地,參數(shù)傳遞說(shuō)明語(yǔ)句(GENERIC語(yǔ)句)是種常數(shù)參數(shù)的端口界面,常以?種說(shuō)明的
形式放在實(shí)體或塊結(jié)構(gòu)體前的說(shuō)明部分。十分方便地改變一個(gè)設(shè)計(jì)實(shí)體或一個(gè)元件的內(nèi)部電
路結(jié)構(gòu)和規(guī)模。
參數(shù)傳遞說(shuō)明語(yǔ)句的一般書(shū)寫(xiě)方式如下:
GENERIC(常數(shù)名:數(shù)據(jù)類(lèi)型[:設(shè)定值]
{:常數(shù)名:數(shù)據(jù)類(lèi)型[:設(shè)定值]});
GENERIC語(yǔ)句能(在編譯過(guò)程中)從外部動(dòng)態(tài)地接受賦值,以此類(lèi)似于端口port。
將GENERIC語(yǔ)句放在實(shí)體定義語(yǔ)句中間,且放在端口說(shuō)明語(yǔ)句前面。
3.5.5整數(shù)數(shù)據(jù)類(lèi)型
在例3-13中的GENERIC語(yǔ)句中,定義參數(shù)S的數(shù)據(jù)類(lèi)型是整數(shù)類(lèi)型INTEGER。整數(shù)數(shù)據(jù)類(lèi)
型INTEGER的元素包含正整數(shù)、負(fù)整數(shù)和零。作無(wú)符號(hào)數(shù)處理。
在定義整數(shù)類(lèi)型時(shí),VHDL綜合器通常要求使用關(guān)鍵詞range構(gòu)成的子句來(lái)為所定義的數(shù)限
定范圍,然后根據(jù)所限定的范圍來(lái)決定表示此信號(hào)或變量的二進(jìn)制數(shù)位數(shù)。
如以下定義表述:
signakQ:integerrange15downto0;
定義Q的數(shù)據(jù)對(duì)象是信號(hào),數(shù)據(jù)類(lèi)型是整數(shù),并限定Q的取值范圍是0T5,共16個(gè)值,可
用二進(jìn)制數(shù)表示。因此,VHDL綜合器自動(dòng)將Q綜合成由四條信號(hào)線構(gòu)成的總線方式信號(hào):Q
(3),Q(2),Q⑴和Q(l)。
整數(shù)常量的書(shū)寫(xiě)方式如下:
1,35-----H進(jìn)制整數(shù)1和35
10E3一一十進(jìn)制整數(shù),等于十進(jìn)制整數(shù)1000,E為科學(xué)計(jì)數(shù)法
16#D9#——K六進(jìn)制整數(shù),等于十六進(jìn)制數(shù)據(jù)D9H
8#720#—―八進(jìn)制整數(shù),等于八進(jìn)制數(shù)7200
2#11010010?——二進(jìn)制整數(shù),等于二進(jìn)制數(shù)11010010B
注意在語(yǔ)句中,整數(shù)的表達(dá)不加引號(hào),如1、0、25等
自然數(shù)類(lèi)型NATURAL是整數(shù)類(lèi)型的一個(gè)子類(lèi)型,它包含0和所有正整數(shù)。
3.5.6省略賦值操作符
一般地,為了簡(jiǎn)化表達(dá)和位數(shù)不定情況下的賦值,可以使用短語(yǔ)“(others=>x)”,這是一
個(gè)省略賦值操作符,它可以在較多位的位矢量賦值中省略化賦值,如有
signaldl:std_logic_vector(4downto0);
variableal:std_logic_vector(15downto0);
dl<=(others=>'T);
al:=(others=>'0');
最下的語(yǔ)句等同于:dl="11111";al:="0000000000000000".
利用“(others=>x)”還可以給位矢量的某一部分位賦值之后再使用others給其余的位賦值
如下:dl<=(l=>e(3),3=>e(5),others=>e(1));
上式的1和3分別表示dl的第1位dl(1)和dl的第三位dl(3)o此式的含義是用e(3)的值
取代dl(l)的值,用e(5)的值取代dl(3)的值,dl余下的3個(gè)位的值都用e(l)取代。也可改
寫(xiě)為如下:
dl〈=e(l)&e(5)&e(l)&e(3)&e(l);
3.5.7移位操作符
六種移位操作符SLL、SRL、SLA,SRA、ROL和ROR
移位操作符格式如下:
標(biāo)識(shí)符移位操作符移位位數(shù);一如“10110001”SRL3,結(jié)果是“00010110”
SLL是將位矢向左移,右邊跟進(jìn)的位補(bǔ)零;
SRL的功能恰好與SLL相反;
ROL的位移方式稍有不同,它們移出的位將用于依次填補(bǔ)位移空的位,執(zhí)行是的循環(huán)式位移
方式;
SLA和SRA是算術(shù)位移操作符,其移空位用最初的首位來(lái)填補(bǔ)。
例3-14
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydecoder3to8is
port(din:instd_logic_vector(2downto0);一3位二進(jìn)制
dout:outbit_vector(7downto0)—數(shù)據(jù)類(lèi)型為位矢量
);
endentitydecoder3to8;
architecturebehaveofdecoder3to8is
begin
dout〈二〃00000001〃SLLconv_integer(din);--被移位部分是常數(shù)
endarchitecturebehave;
3.5.8各類(lèi)運(yùn)算操作對(duì)數(shù)據(jù)類(lèi)型的要求(程序例子p86)
淡3-2VHDL操作符列表給出了不同數(shù)據(jù)類(lèi)型定義和用法
類(lèi)型操作符功能操作數(shù)數(shù)據(jù)類(lèi)型
+加整數(shù)
—減整數(shù)
&并置一維數(shù)組
*乘整數(shù)和實(shí)數(shù)(包括浮點(diǎn)數(shù))
/除整數(shù)和實(shí)數(shù)(包括浮點(diǎn)數(shù))
MOD取模整數(shù)
REM取余整數(shù)
算術(shù)操作符SLL邏輯左移BIT、BITJ7ECTOR或布爾型一維數(shù)組
SRL邏輯右移BIT、BIT_VECTOR或布爾型一維數(shù)組
SLA算術(shù)左移BIT、BIT_VECTOR或布爾型一維數(shù)組
SRA算術(shù)右移BIT、BIT_VECTOR或布爾型一維數(shù)組
ROL邏輯循環(huán)左移BIT、BIT_UECTOR或布爾型一維數(shù)組
ROR邏輯循環(huán)右移BIT、BIT_VECTOR或布爾型一維數(shù)組
**乘方整數(shù)
ABS取絕對(duì)值整數(shù)
=等干任何敷據(jù)類(lèi)型
/=不等于任何數(shù)據(jù)類(lèi)型
<小于枚舉與整數(shù)類(lèi)型,及對(duì)應(yīng)的一維數(shù)組
關(guān)系操作符
>大于枚舉與整數(shù)類(lèi)型,及對(duì)應(yīng)的一維數(shù)組
<-小于等于枚舉與整數(shù)類(lèi)型,及對(duì)應(yīng)的一維數(shù)組
>-大于等于枚舉與整數(shù)類(lèi)型,及對(duì)應(yīng)的一維數(shù)組
AND與BIT,BOOLEAN,STD.LOGIC
OR或BIT.BOOLEAN,STD.LOGIC
NAND與非BIT,BOOLEAN,STD>OGIC
送輯操作符NOR卻BIT,BOOLEAN,STD>OGIC
XOR異或BIT,BOOLEAN,STD.LOGIC
XNOR異或3EBIT,BOOLEAN,STD_LOGIC
NOT非BIT,BOOLEAN,STD_LOGIC
+正整數(shù)
符號(hào)操作符
—負(fù)整期
【例3-19]
SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALh,工,j,k:STD_LOGIC;
SIGNAL1,m,n,。,p:BOOLEAN;
d<=eORfORg;—兩個(gè)操作符OR相同,不需括號(hào)
1<=(mXORn)AND(oXORp);—操作符不同,必須加括號(hào)
h<=iANDjORk;--兩個(gè)操作符不同,未加括號(hào),表達(dá)錯(cuò)誤
a<=bANDe;—操作數(shù)b與e的位矢長(zhǎng)度不一致,表達(dá)錯(cuò)誤
h<=iOR1;-i的數(shù)據(jù)類(lèi)型是STD_LOGIC,而1的數(shù)據(jù)類(lèi)型是
...—布爾量,因而不能相互作用,表達(dá)錯(cuò)誤
表3-3VHDL操作符優(yōu)先級(jí)
運(yùn)算符優(yōu)先級(jí)
NOT,ABS,**最高優(yōu)先級(jí)
*,/,MOD,REM
+(正號(hào)),一(負(fù)號(hào))
+?->&
SLL,SLA,SRL,SRA,ROL,ROR
=>/=><?<=,>,>=
AND,OR,NAND,NOR,XOR,XNOR最低尤先級(jí)
3.5.9數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)(不重要)
表3/IEEE庫(kù)數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)表
函數(shù)名功能
所在程序包:STD_LOGIC_1164
to_stdlogicvector(A)由bit_vector類(lèi)型轉(zhuǎn)換為std_logic_vector
to__bitvector(A)由std_logic_vector轉(zhuǎn)換為bit_vector
to_stdlogic(A)由bit轉(zhuǎn)換成stdjogic
to_bit(A)由stdjogic類(lèi)型轉(zhuǎn)換成bit類(lèi)型
所在程序包:STD_LOGIC_ARITH
conv_std_logic_vector(A,位長(zhǎng))將integer轉(zhuǎn)換成std_logic_vector類(lèi)型,A是整數(shù)
conv_integEA)將std_logic_vector轉(zhuǎn)換成integer
conv__unsigned(A,位長(zhǎng))將unsigned,signed,integer類(lèi)型轉(zhuǎn)換為指定位長(zhǎng)的unsigned類(lèi)型
conv_signed(A,位長(zhǎng))將unsigned,signed,integer類(lèi)型轉(zhuǎn)換為指定位長(zhǎng)的signed類(lèi)型
所在程序包:STD_LOGIC_UNSIGNED
conv_integer(A)由std_logic_vector轉(zhuǎn)換成integer
例3-20中各例句都調(diào)用了數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),在程序包ieee.std_logic_1164中的轉(zhuǎn)換函
數(shù),它們?cè)诔绦虬卸x的函數(shù)首如下:
FUNCTIONTO_STDLOGICVECTOR(S:BIT_VECTOR)
RETURNSTD_LOGIC_VECTOR;
【例3-20]
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYampIS
PORT(al,a2:INBIT_VECTOR(3DOWNTO0);
cl,c2,c3:INSTD_LOGIC_VECTOR(3DOWNTO0);
bl,b2,b3:INTEGERRANGE0TO15;
dl,d2,d3,d4:OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDamp;
dl<=TO_STDLOGICVECTOR(alANDa2);--(1)
d2<=CObA/_STD_LOGIC_VECTOR(bl,4)WHENCONV_INTEGER(b2)=9
elseCONV_STD_LOGIC__VECTOR(b3,4);—(2)
d3<=ClWHENCONV_INTEGER(c2)=8ELSEc3;—(3)
d4<=clWHENc2=8elsec3;—(4)
例3-21是個(gè)利用轉(zhuǎn)換函數(shù)conv_integer(),以及在進(jìn)程中對(duì)同一信號(hào)先后賦值不同數(shù)據(jù)
類(lèi)型的特性,完成了3-8譯碼器的設(shè)計(jì)程序。
【例3-21]
LIBRARYIEEE;
USEIEEE.STD__LOGIC__1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdecoder3s8IS
PORT(input:INSTD_LOG工C_VECTOR(2DOWNTO0);
output:OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdecoder3to8;
ARCHITECTUREbehaveOFdecoder3to8IS
BEGIN
PROCESS(input)BEGIN
output<=(OTHERS=>T0f);output(CONV_INTEGER(input))<=T1T;
ENDPROCESS;
ENDbehave;
例3-22是幾個(gè)預(yù)定義轉(zhuǎn)換函數(shù)的函數(shù)首表達(dá)式,從中可以了解類(lèi)型轉(zhuǎn)換函數(shù)的來(lái)源。
【例3-22]
FUNCTIONTo-bit(s:std_ulogic;xmap:BIT:=T0T)RETURNBIT;
FUNCTIONTo_bitvector(s:std_logic_vector;
xmap:BIT:=T0T)RETURNBIT_VECTOR;
FUNCTIONTo_bitvector(s:std_ulogic_vector;
xmap:BIT:=T0T)RETURNBIT_VECTOR;
下面是To_bitvector的函數(shù)體,其中的ALIAS是表述縮略語(yǔ)句之關(guān)鍵詞。
FUNCTIONTobitvector(s:stdlogicvector;
xmap:BIT:=T0T)
RETURNBITVECTORIS
ALIASsv:stdlogicvector(sTLENGTH-1DOWNTO0)ISs;
VARIABLEresult:BITVECTOR(STLENGTH-1DOWNTO0);
BEGIN
FORiINresultTRANGELOOP
CASESV(i)IS
WHENT0T|TLT=>result(i):=T0T;
WHENT1T|THT=>result(i):=T1T;
WHENOTHERS=>result(i):=xmap;
ENDCASE;
ENDLOOP;
RETURNresult;
END;
3.5.10GENERIC參數(shù)傳遞映射的語(yǔ)句
GENERIC的完整用法,如下8x8位乘法器
【例3-23]
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMULT8BIS
PORT(DI,D2:INSTD_LOGIC_VECTOR(7DOWNTO0);
Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));
END;
ARCHITECTUREBHVOFMULT8BIS
COMPONENTMULT4B--MULT4B模塊的調(diào)用聲明
GENERIC(S:integer);--照抄MULT4B實(shí)體中關(guān)于參數(shù)"端口"定義的語(yǔ)句
PORT(R:OUTstd_logic_vector?(2*3DOWNTO1);
AfB:INstd__logic_vector(SDOWNTO1));
ENDCOMPONENT;
BEGIN
Ul:MULT4BGENERICMAP(S=>8)
PORTMAP(R=>Q,A=>D1,B=>D2);
END;
例化名:元件名GENERICMAP(類(lèi)屬表)
部分習(xí)題(課后作業(yè)僅供參考)
3-2畫(huà)出與以下實(shí)體描述對(duì)應(yīng)的原理圖符號(hào)元件:
ENTITYbuf3sIS-實(shí)體1:三態(tài)緩沖器
PORT(input:INSTD_LOGIC;一輸入端
enable:INSTD_LOGIC;一使能端
output:OUTSTD_LOGIC);一輸出端
ENDbuf3s;
buf3s
input
output
ENTITYmux21IS--實(shí)體2:2選1多路選擇器
PORT(inO,ini,sei:INSTD_LOGIC;
output:OUTSTD_LOGIC);
mux21
-----inO
output------
------ini
sei
3-4給出1位全減器的VHDL描述;最終實(shí)現(xiàn)8位全減器。要求:
1)首先設(shè)計(jì)1位半減器,然后用例化語(yǔ)句將它們連接起來(lái),圖4-20中h_suber是半減器,diff是
輸出差(diff=x-y),s_out是借位輸出(s_out=l,x<y),sub_in是借位輸入。
圖3-18全減器結(jié)構(gòu)圖
一解(1.1):實(shí)現(xiàn)1位半減器h_suber(diff=x-y;s_out=l,x<y)
LIBRARYIEEE;-半減器描述⑴:布爾方程描述方法
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_suberIS
PORT(x,y:INSTD_LOGIC;
diff,s_out:OUTSTD_LOGIC);
ENDENTITYh_suber;
ARCHITECTUREhslOFh_suberIS
BEGIN
Diff<=xXOR(NOTy);
s_out<=(NOTx)ANDy;
ENDARCHITECTUREhsl;
--解(1.2):采用例化實(shí)現(xiàn)圖4-20的1位全減器
LIBRARYIEEE;位二進(jìn)制全減器順層設(shè)計(jì)描述
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYf_suberIS
PORT(xin,yin,subJn:INSTD_LOGIC;
sub_out,diff_out:OUTSTD_LOGIC);
ENDENTITYf_suber;
ARCHITECTUREfslOFf_suberIS
COMPONENTh_suber--調(diào)用半減器聲明語(yǔ)句
PORT(x,y:INSTD_LOGIC;
diff,s_out:OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALa,b,c:STD_LOGIC;-定義1個(gè)信號(hào)作為內(nèi)部的連接線。
BEGIN
=〉
ul:h__suberPORTMAP(x=>xin/y=>yin/diffa,s_out=>b);
u2:h_suberPORTMAP(x=>azy=>sub_in,diff=>diff_out,s_out=>c);
sub_out<=cORb;
ENDARCHITECTUREfsl;
⑵以1位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語(yǔ)句來(lái)完成此項(xiàng)設(shè)
計(jì)(減法運(yùn)算是x-y-sun_in=difft)o
x7---------xinsub_out---------sout
y7---------yinu7
I--------subjndiff_out---------diff7
..................al
xl---------xinsub_out
yl--------yinul
--------subjndiff_out---------diffl
a0
xO---------xinsub_out---------
yO--------yinuO
sin---------subjndiff_out---------diffO
串行借位的8位減法器
-解(2):采用例化方法,以1位全減器為基本硬件?;實(shí)現(xiàn)串行借位的8位減法器(上圖所示)。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYsuber_8IS
RORT(xOzxl,x2zx3zx4zx5zx6,x7:INSTD_L0GIC;
yO,yl,y2,y3,y4,y5,y6,y7,sin:INSTD_L0GIC;
diffOzdiffl,diff2,diff3:OUTSTD_LOGIC;
diff4,diff5zdiff6,diff7,sout:OUTSTD_LOGIC);
ENDENTITYsuber_8;
ARCHITECTUREs8OFsuber_8IS
COMPONENTf_suber--調(diào)用全減器聲明語(yǔ)句
PORT(xin,yin,sub_in:INSTD_LOGIC;
sub_ou
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年玉林貨運(yùn)從業(yè)資格仿真考題
- 2024商標(biāo)轉(zhuǎn)讓及品牌升級(jí)合同:攜手共進(jìn)品牌升級(jí)之旅3篇
- 2024商混合同范本:商混混凝土生產(chǎn)與質(zhì)量控制合作協(xié)議3篇
- 2025廚房設(shè)備銷(xiāo)售合同版
- 商業(yè)綜合體電力施工合同范本
- 城市公園旁咖啡館租賃合同
- 城市綠化帶擴(kuò)建植樹(shù)合同
- 出入境文件公證辦理規(guī)范
- 智能家居維修員招聘合同模板
- 汽車(chē)研發(fā)中心施工協(xié)議
- 【道法廣角】成語(yǔ)故事會(huì):立木為信
- 《我們?nèi)タ春!烽喿x答案
- 智慧酒店無(wú)人酒店綜合服務(wù)解決方案
- 考研英語(yǔ)一新題型歷年真題(2005-2012)
- 健身房會(huì)籍顧問(wèn)基礎(chǔ)培訓(xùn)資料
- 9脊柱與四肢、神經(jīng)系統(tǒng)檢查總結(jié)
- 秀場(chǎng)內(nèi)外-走進(jìn)服裝表演藝術(shù)智慧樹(shù)知到答案章節(jié)測(cè)試2023年武漢紡織大學(xué)
- 【高分復(fù)習(xí)筆記】王建《現(xiàn)代自然地理學(xué)》(第2版)筆記和課后習(xí)題詳解
- TSGD0012023年壓力管道安全技術(shù)監(jiān)察規(guī)程-工業(yè)管道(高清晰版)
- SMM英國(guó)建筑工程標(biāo)準(zhǔn)計(jì)量規(guī)則中文 全套
- 2023-2024學(xué)年浙江省富陽(yáng)市小學(xué)數(shù)學(xué)四年級(jí)上冊(cè)期末通關(guān)題
評(píng)論
0/150
提交評(píng)論