版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VHDL基礎(chǔ)第三章3.1硬件描述語言概述VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HDLHDL:HardwareDescribeLangaugeVHDL具有與具體硬件電路無關(guān)和與設(shè)計(jì)平臺(tái)無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力;學(xué)習(xí)HDL的幾點(diǎn)重要提示1.了解HDL的可綜合性問題HDL可以用來系統(tǒng)仿真和硬件實(shí)現(xiàn)。如果程序只用于仿真,那么幾乎所有的語法和編程方法都可以使用。但如果我們的程序是用于硬件實(shí)現(xiàn)(例如:用于FPGA設(shè)計(jì)),那么我們就必須保證程序“可綜合”(程序的功能可以用硬件電路實(shí)現(xiàn))。
學(xué)習(xí)HDL的幾點(diǎn)重要提示2.用硬件電路設(shè)計(jì)思想來編寫HDL
學(xué)好HDL的關(guān)鍵是充分理解HDL語句和硬件電路的關(guān)系。編寫HDL,就是在描述一個(gè)電路,我們寫完一段程序以后,應(yīng)當(dāng)對(duì)生成的電路有一些大體上的了解,而不能用純軟件的設(shè)計(jì)思路來編寫硬件描述語言。學(xué)習(xí)HDL的幾點(diǎn)重要提示3.語法掌握貴在精30%的基本HDL語句就可以完成95%以上的電路設(shè)計(jì),很多生僻的語句并不能被所有的綜合軟件所支持,在程序移植或者更換軟件平臺(tái)時(shí),容易產(chǎn)生兼容性問題,也不利于其他人閱讀和修改。建議多用心鉆研常用語句,理解這些語句的硬件含義。3.1.1組合電路描述entity
mux21a
isport(a,b:
in
bit;
s:
in
bit;
y:
out
bit);end;architecture
one
of
mux21a
isbegin
y<=a
when
s='0'
else
b;end;3.1.2
VHDL結(jié)構(gòu)實(shí)體:描述了電路器件的外部情況和各信號(hào)端口的基本性質(zhì)。entity
mux21a
isport(a,b:
in
bit;
s:
in
bit;
y:
out
bit);end;實(shí)體名實(shí)體名是標(biāo)識(shí)符,可以由設(shè)計(jì)者自定,好的實(shí)體名應(yīng)該體現(xiàn)器件的基本功能。3.1.2
VHDL結(jié)構(gòu)端口語句:用來描述電路的端口及端口信號(hào)的性質(zhì)。port(
a,b
:
in
bit
;
s
:
in
bit
;
y
:
out
bit
);端口信號(hào)名可以自定義。端口信號(hào)名端口模式數(shù)據(jù)類型限定了數(shù)據(jù)對(duì)象的取值范圍和數(shù)值類型,即對(duì)其傳輸或存儲(chǔ)的數(shù)據(jù)做明確界定。數(shù)據(jù)類型端口模式用于定義端口上數(shù)據(jù)流動(dòng)的方向。3.1.2
VHDL結(jié)構(gòu)可綜合的端口模式有4種:(1)IN——輸入端口;(2)OUT——輸出端口;(3)INOUT——雙向端口;(4)BUFFER——緩沖端口;3.1.2
VHDL結(jié)構(gòu)數(shù)據(jù)類型BIT:取值范圍是邏輯位‘1’和‘0’;可以參與邏輯運(yùn)算或算數(shù)運(yùn)算;bit_vector(1downto0);axmuxcbds23.1.2
VHDL結(jié)構(gòu)結(jié)構(gòu)體的一般表達(dá)式如下:architecture<結(jié)構(gòu)體名>of<所對(duì)應(yīng)實(shí)體名>is[說明語句]
begin功能描述語句end;3.1.2
VHDL結(jié)構(gòu)architectureoneofmux21aisbegin y<=awhens='0'else b;end;賦值符號(hào)<=表示輸入端口a的數(shù)據(jù)向輸出端口y傳輸;數(shù)據(jù)比較符由“=”連接的表達(dá)式的數(shù)據(jù)類型是BOOLEAN類型,其取值分別為TRUE和FALSE。3.1.2
VHDL結(jié)構(gòu)條件信號(hào)賦值語句:when_else賦值目標(biāo)<=表達(dá)式when賦值條件
else
表達(dá)式when賦值條件
else
……
表達(dá)式;
y<=awhen(s=“00”)else bwhen(s=“01”)else cwhen(s=“10”)else d;aycbdsmux2注意1、條件測(cè)試具有順序性;2、各賦值條件可以同時(shí)成立;3、至少有一個(gè)ELSE,即至少是兩分支;3.1.2
VHDL結(jié)構(gòu)選擇信號(hào)賦值語句:with_select_whenwith 選擇表達(dá)式 select賦值目標(biāo)<=表達(dá)式when 選擇值,
表達(dá)式when 選擇值,
……,
表達(dá)式when 選擇值;
with sselect y<=awhen “00”, bwhen “01”,
cwhen “10”, dwhen others;aymuxcbds2注意1、條件測(cè)試不分先后;2、各賦值條件不能重復(fù);3、不允許存在條件涵蓋不全的現(xiàn)象;上機(jī)練習(xí):分別用when_else語句和with_select_when語句實(shí)現(xiàn)4選1數(shù)據(jù)選擇器,要求完成設(shè)計(jì)輸入、編譯和仿真。仿真時(shí)注意輸入信號(hào)波形編輯的原則是a、b、c、d有所不同,兩個(gè)選擇輸入端按00、01、10、11四種情況出現(xiàn)即可。請(qǐng)啟動(dòng)Tools→RTLViewer觀察不同語句所對(duì)應(yīng)電路結(jié)構(gòu)有何不同;注意事項(xiàng):1、新建文件時(shí),選擇vhdlfile選項(xiàng);2、保存文件時(shí),文件名必須和實(shí)體名一致;with_select_whenwhen_else問題已經(jīng)學(xué)了哪兩個(gè)語句,其基本格式如何?有什么區(qū)別?實(shí)現(xiàn)四選一數(shù)據(jù)選擇器時(shí)硬件邏輯電路是否相同?3.1.3簡(jiǎn)單信號(hào)賦值語句
賦值目標(biāo)<=表達(dá)式;entity
mux21a
isport(a,b,s:
in
bit;
y:
out
bit);end;architecture
one
of
mux21a
issignald,e:bit;begin
d<=a
and(not
s);e<=bands; y<=dore;end;賦值符號(hào)兩側(cè)的數(shù)據(jù)類型必須一致!3.1.4邏輯操作符運(yùn)算符功能AND與OR或NAND與非NOR或非XOR異或XNOR同或NOT非3.1.5if語句architecture
one
of
mux21a
isbegin
ifs=‘0’theny<=a;
elsey<=b;
end
if;
end;architecture
one
of
mux21a
isbegin
process(a,b,s) begin
ifs=‘0’theny<=a;
elsey<=b;
end
if;
endprocess;
end;3.1.5if語句If語句的結(jié)構(gòu)(1):If條件句then順序語句;else順序語句;endif;這是一個(gè)兩分支結(jié)構(gòu),包含了所有可能的條件,是完整條件語句;3.1.5if語句If語句的結(jié)構(gòu)(2):If條件句then順序語句;elsIf條件句then順序語句;elsIf條件句then順序語句;……else順序語句;endif;這是一個(gè)多分支結(jié)構(gòu),包含了所有可能的條件,是完整條件語句;3.1.6組合電路和完整條件語句賦值目標(biāo)<=表達(dá)式when賦值條件
else
表達(dá)式when賦值條件
else
……
表達(dá)式;with選擇表達(dá)式 select賦值目標(biāo)<=表達(dá)式when 選擇值
表達(dá)式when 選擇值
……
表達(dá)式when others;組合電路都是由完整條件語句構(gòu)成的!3.1.7進(jìn)程語句進(jìn)程的基本格式:[進(jìn)程標(biāo)號(hào):]PROCESS[(敏感信號(hào)表)][IS]
<說明區(qū)>
BEGIN
<順序語句>
ENDPROCESS[進(jìn)程標(biāo)號(hào)];敏感信號(hào)敏感信號(hào)是這樣的信號(hào):它的變化可以啟動(dòng)進(jìn)程。通常要求將進(jìn)程中的所有輸入信號(hào)都放入敏感信號(hào)表中。上機(jī)練習(xí):If條件句then順序語句;elsIf條件句then順序語句;elsIf條件句then順序語句;……else順序語句;endif;用上面結(jié)構(gòu)實(shí)現(xiàn)4選1數(shù)據(jù)選擇器,要求完成設(shè)計(jì)輸入、編譯和仿真,并思考該語句是不是完整條件語句。請(qǐng)啟動(dòng)Tools→RTLViewer觀察對(duì)應(yīng)電路結(jié)構(gòu)的特點(diǎn),跟以前的練習(xí)比較,與哪個(gè)語句實(shí)現(xiàn)的電路結(jié)構(gòu)相同;3.2時(shí)序電路的描述時(shí)序電路是數(shù)字邏輯中必不可少的組成部分,下面以典型的時(shí)序元件D觸發(fā)器為例來說明時(shí)序電路的VHDL規(guī)則,從而得出時(shí)序電路描述的一般規(guī)律和設(shè)計(jì)方法。3.2.1
D觸發(fā)器實(shí)體描述:entity
dff1
isport(d:
in
bit;
clk:
in
bit;
q:
out
bit);end;3.2.1
D觸發(fā)器entity
dff1
isport(d:
in
std_logic;
clk:
in
std_logic;
q:
out
std_logic);end;library
ieee;useieee.std_logic_1164.all;entity
dff1
isport(d:
in
std_logic;
clk:
in
std_logic;
q:
out
std_logic);end;3.2.1
D觸發(fā)器標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型:STD_LOGICTYPEBITIS(‘0’,’1’);--只有兩種取值TYPESTD_LOGICIS(‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’);涉及庫(kù)和標(biāo)準(zhǔn)程序包LIBRARYWORK;LIBRARYSTD;USESTD.STANDARD.ALL;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;STD_LOGIC數(shù)據(jù)類型在數(shù)字器件中實(shí)現(xiàn)的只有其中的4~5種值,即’X’,’0’,’1’,’Z’,其他值通常不可綜合。3.2.1
D觸發(fā)器結(jié)構(gòu)體描述:請(qǐng)敘述D觸發(fā)器的功能。當(dāng)時(shí)鐘脈沖CLK的上升沿到來時(shí),輸入端D的值賦給輸出端Q。上升沿的表達(dá)方法是:CLK’EVENTANDCLK=‘1’EVENT叫做信號(hào)屬性函數(shù),其用法是:<信號(hào)名>’ENENT含義是:信號(hào)的取值在一個(gè)極小時(shí)間段內(nèi)發(fā)生變化。3.2.1
D觸發(fā)器architecture
one
of
dff1
isbegin
if
clk'event
and
clk='1'
then
q<=d;
endif;
end;architecture
one
of
dff1
isbegin
process(d,clk)
begin
if
clk'event
and
clk='1'
then
q<=d;
endif;
endprocess;end;完整條件語句?3.2.1
D觸發(fā)器(圖)3.2.1
D觸發(fā)器architecture
one
of
dff1
issignalq1:std_logic;begin
process(d,clk)
begin
if
clk'event
and
clk='1'
then
q1<=d;
endif;
endprocess;q<=q1;end;3.2.1
D觸發(fā)器3.2.1
D觸發(fā)器信號(hào)定義和數(shù)據(jù)對(duì)象格式:signal
信號(hào)名:數(shù)據(jù)類型;內(nèi)部節(jié)點(diǎn)信號(hào)的定義位置: architecture
one
of
dff1
is signalq1:std_logic; begin
……定義q1的目的是為了在設(shè)計(jì)更大的電路時(shí)使用由此引入的節(jié)點(diǎn)。3.2.1
D觸發(fā)器architectureoneofdff1isbeginprocess(d,clk)
variableq1:std_logic;
begin
if
clk'event
and
clk='1'thenq1:=d;
endif; q<=q1;endprocess;end;3.2.1
D觸發(fā)器3.2.1
D觸發(fā)器數(shù)據(jù)對(duì)象:在vhdl中數(shù)據(jù)對(duì)象相當(dāng)于一種容器,它能夠接受不同數(shù)據(jù)類型的賦值。在vhdl中,數(shù)據(jù)對(duì)象有三種:即信號(hào)、變量、常量。在vhdl中,被定義的標(biāo)識(shí)符必須被確定為某數(shù)據(jù)對(duì)象,同時(shí)還必須被定義為某種數(shù)據(jù)類型。問題:引入時(shí)序電路結(jié)構(gòu)的必要條件是什么?(跟組合電路相比較而言)不完整條件語句的使用3.2.2不完整條件語句和時(shí)序電路例:數(shù)值比較器
entitycompis
port(a,b:inbit;
y:outbit); end; architectureoneofcompis begin process(a,b)
begin ifa>btheny<='1';
elsifa<btheny<='0';
endif;
endprocess; end;3.2.2不完整條件語句和時(shí)序電路3.2.2不完整條件語句和時(shí)序電路ifa>btheny<='1';elsifa<btheny<='0';endif;ifa>btheny<='1';elsey<='0';endif;3.2.2不完整條件語句和時(shí)序電路3.2.2不完整條件語句和時(shí)序電路結(jié)論:引入時(shí)序電路結(jié)構(gòu)的必要條件是:不完整條件語句的出現(xiàn),而與電路中是否存在clk‘eventandclk=‘1’
語句沒有關(guān)系;不完整條件語句不局限于if語句;3.2.3節(jié)時(shí)序電路的不同表述方法自己看。3.2.3計(jì)數(shù)器的設(shè)計(jì)四位二進(jìn)制加法計(jì)數(shù)器的功能描述:clkCQ[3..0]counterCQ端初值為0,CLK上升沿有效;當(dāng)CLK端上升沿到來時(shí),輸出端加1。
LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCNT4IS PORT(CLK:INSTD_LOGIC;CQ:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREONEOFCNT4ISBEGIN PROCESS(CLK) BEGIN IFCLK’EVENTANDCLK=‘1’THENCQ<=CQ+1;
ENDIF; ENDPROCESS;END;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4ISPORT(CLK:INSTD_LOGIC; CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREONEOFCNT4IS
SIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0); BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THENCQI<=CQI+1;
ENDIF; ENDPROCESS;
CQ<=CQI; END;3.2.3計(jì)數(shù)器的設(shè)計(jì)四位二進(jìn)制加法計(jì)數(shù)器的功能描述:clkCQ[3..0]counterrst為異步復(fù)位端;en為同步使能端;cout為進(jìn)位輸出端;rstencout實(shí)體的定義參考例3-21(64頁)1)中間節(jié)點(diǎn)的定義:variablecqi:std_logic_vector(3downto0);2)異步復(fù)位端的實(shí)現(xiàn):Ifrst=‘1’thencqi:=(others=>’0’);3)同步使能端的實(shí)現(xiàn):Ifen=‘1’thencqi:=cqi+1;4)進(jìn)位輸出端的實(shí)現(xiàn):Ifcqi=9thencout<=‘1’elsecout<=‘0’;endif;實(shí)驗(yàn)3:含異步復(fù)位端和同步使能端的60進(jìn)制加法計(jì)數(shù)器的設(shè)計(jì)設(shè)計(jì)要點(diǎn):參考例3-21,修改其中輸出端cq的位數(shù)為:std_logic_vector(5downto0);ifcqi<59thencqi:=cqi+1;注意異步復(fù)位端和同步使能端是如何實(shí)現(xiàn)的;注意IF語句嵌套時(shí)的格式;注意賦值語句CQI:=(OTHERS=>’0’)的用法和含義;上機(jī)注意事項(xiàng):保存文件時(shí)修改默認(rèn)的文件名vhdl1為實(shí)體名(解決方法);參照原理圖法中100進(jìn)制計(jì)數(shù)器進(jìn)行引腳分配和下載,獨(dú)立完成硬件測(cè)試,其中時(shí)鐘輸入端仍然選擇Pin93。實(shí)驗(yàn)報(bào)告要求:一、實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)實(shí)用計(jì)數(shù)器的設(shè)計(jì),進(jìn)一步理解同步和異步的概念,熟悉并掌握復(fù)雜if語句的用法。復(fù)習(xí)仿真和硬件測(cè)試的步驟,進(jìn)一步熟悉fpga的設(shè)計(jì)流程;二、實(shí)驗(yàn)原理:請(qǐng)敘述該計(jì)數(shù)器個(gè)輸入輸出端口的作用;解釋以下三條語句的含義并說明為什么要這樣做;程序中使用了兩種形式的if語句,請(qǐng)說明其中所包含的完整條件語句和不完整條件語句都有哪些;三、實(shí)驗(yàn)要求:完成程序的編輯、編譯,獨(dú)立完成語法錯(cuò)誤的排查;進(jìn)行仿真驗(yàn)證和硬件測(cè)試;實(shí)驗(yàn)報(bào)告要求:四、回答問題:什么叫運(yùn)算符重載,程序中哪些地方出現(xiàn)了運(yùn)算符重載,請(qǐng)舉例說明。參考例3-19和61頁的有關(guān)文字說明整數(shù)類型的定義方法。vhdl語言的數(shù)據(jù)對(duì)象有哪三種,說明信號(hào)和變量的定義方法。請(qǐng)依據(jù)仿真波形來說明什么是異步復(fù)位端和同步清零端3.3全加器的VHDL描述本節(jié)通過全加器的設(shè)計(jì)流程,介紹含有全加器的VHDL程序,學(xué)習(xí)case語句和元件例化語句的用法。3.3.1用case語句描述半加器(3-16)absumcout00000110101011013.3.1用case語句描述半加器(3-16)case語句屬于順序語句,因此必須放在進(jìn)程中使用;case語句的一般表述是:case<表達(dá)式>iswhen<選擇值或標(biāo)識(shí)符>=><順序語句>;…<順序語句>;when<選擇值或標(biāo)識(shí)符>=><順序語句>;…<順序語句>;……whenothers=><順序語句>;endcase;注意事項(xiàng):選擇值必須在表達(dá)式的取值范圍內(nèi);選擇值不能重復(fù);一般需加others;3.3.1用case語句描述半加器(3-16)signalselect:std_logic_vector(1downto0);
select<=a&b;caseselectis
when“00”=>so<=‘0’;co<=‘0’;when“01”=>so<=‘1’;co<=‘0’;when“10”=>so<=‘1’;co<=‘0’;when“11”=>so<=‘0’;co<=‘1’;whenothers=>NULL;endcase;3.3.1用case語句描述半加器(3-16)關(guān)于并置操作符:&→并置操作符的作用是:將操作數(shù)或數(shù)組合并起來形成新的數(shù)組?!梢允沁@種方式:‘0’
&‘1’,其結(jié)果是“01”;→也可以是這種方式:‘VH’&‘DL’,其結(jié)果是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計(jì)師工作計(jì)劃
- 2024年體育用品銷售員提成及促銷活動(dòng)合同3篇
- 2024年建筑節(jié)能施工員聘用合同3篇
- 初中暑假學(xué)習(xí)計(jì)劃
- 高爐爐渣綜合利用工程可行性研究報(bào)告
- 三年級(jí)教學(xué)工作計(jì)劃5篇
- 2022中學(xué)班主任個(gè)人工作計(jì)劃
- 小學(xué)體育工作總結(jié)
- 公司助理個(gè)人實(shí)習(xí)工作
- 六年級(jí)畢業(yè)演講稿范文集錦七篇
- 四年級(jí)下冊(cè)混合運(yùn)算100道及答案
- 浙江省寧波市慈溪市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 【小學(xué)心理健康教育分析國(guó)內(nèi)外文獻(xiàn)綜述4100字】
- 藝術(shù)療愈行業(yè)分析
- 中醫(yī)院肺病科年度工作計(jì)劃
- 老年綜合評(píng)估知情同意書
- 會(huì)議籌備工作分工表
- 2023火電機(jī)組深度調(diào)峰工況下的涉網(wǎng)性能技術(shù)要求
- 醫(yī)學(xué)英語術(shù)語解密-福建醫(yī)科大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 內(nèi)燃機(jī)車點(diǎn)檢方法探討
- 2023初一語文現(xiàn)代文閱讀理解及解析:《貓》
評(píng)論
0/150
提交評(píng)論