第六講-VHDL的元件例化語句PPT課件_第1頁
第六講-VHDL的元件例化語句PPT課件_第2頁
第六講-VHDL的元件例化語句PPT課件_第3頁
第六講-VHDL的元件例化語句PPT課件_第4頁
第六講-VHDL的元件例化語句PPT課件_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2021/7/231第六講 VHDL硬件描述語言_4教學(xué)課時:教學(xué)課時:2學(xué)時學(xué)時教學(xué)內(nèi)容:教學(xué)內(nèi)容:VHDL語句語句(1)元件例化語句()元件例化語句(1學(xué)時)學(xué)時)(2)生成語句()生成語句(1學(xué)時)學(xué)時)2021/7/232元件例化語句元件例化就是元件例化就是將預(yù)先設(shè)計好的設(shè)計實體將預(yù)先設(shè)計好的設(shè)計實體定義為一個元件定義為一個元件,然后利用映射語句將然后利用映射語句將此元件與另一個設(shè)計實體中的指定端口此元件與另一個設(shè)計實體中的指定端口相連相連,從而進(jìn)行層次化設(shè)計從而進(jìn)行層次化設(shè)計。元件例化。元件例化是使是使VHDL設(shè)計實體構(gòu)成設(shè)計實體構(gòu)成“自上而下自上而下”或或“自下而上自下而上”層次化

2、設(shè)計的一種重要層次化設(shè)計的一種重要途徑。途徑。2021/7/233元件例化語句分為元件聲明和元件例化兩部分。用元件例化方式設(shè)計電路的方法是:(1)完成各種元件的設(shè)計。(2)元件聲明。(3)通過元件例化語句調(diào)用這些元件,產(chǎn)生需要的設(shè)計電路。2021/7/234元件聲明語句的格式COMPONENT 元件名元件名 GENERIC ; PORT ;END COMPONENT; 2021/7/235元件例化語句的格式元件例化就是將元件的引腳與調(diào)用該元件的端口的引腳相關(guān)聯(lián)。關(guān)聯(lián)方法有位置關(guān)聯(lián),名字關(guān)聯(lián),混合關(guān)聯(lián)。(1)位置關(guān)聯(lián)方式)位置關(guān)聯(lián)方式例化名:元件名例化名:元件名 port map(信號信號1,信

3、號,信號2,.);(2)名字關(guān)聯(lián)方式)名字關(guān)聯(lián)方式例化名:元件名例化名:元件名 port map(信號關(guān)聯(lián)式信號關(guān)聯(lián)式1,信號關(guān)聯(lián)式,信號關(guān)聯(lián)式2,.);信號關(guān)聯(lián)式形如:信號關(guān)聯(lián)式形如:a=a1,b=b1,意思是將元件的引腳意思是將元件的引腳a與調(diào)用該元與調(diào)用該元件的端口件的端口a1相關(guān)聯(lián)。這種情況下,位置可以是任意的。相關(guān)聯(lián)。這種情況下,位置可以是任意的。(3)混合關(guān)聯(lián)方式)混合關(guān)聯(lián)方式將上述兩種相結(jié)合,即為混合關(guān)聯(lián)方式。將上述兩種相結(jié)合,即為混合關(guān)聯(lián)方式。2021/7/236元件例化舉例例例1:利用:利用2輸入與非門元件,設(shè)計輸入與非門元件,設(shè)計4輸入的與非與非輸入的與非與非電路。電路。方

4、法一方法一:在調(diào)用文件里聲明元件,在調(diào)用文件里聲明元件,它放在結(jié)構(gòu)體的它放在結(jié)構(gòu)體的begin之前之前。第一步:設(shè)計第一步:設(shè)計2輸入與非門,其輸入與非門,其VHDL源程序為源程序為nand_2.vhd;第二步:元件聲明及元件例化,其第二步:元件聲明及元件例化,其VHDL源程序為源程序為nand_4.vhd;生成的生成的RTL視圖:視圖:2021/7/237library ieee;use ieee.std_logic_1164.all;entity nand_2 isport(a,b:in std_logic;y:out std_logic);end nand_2;architecture

5、one of nand_2 isbeginprocess(a,b)beginy=a nand b;end process;end one;library ieee;use ieee.std_logic_1164.all;entity nand_4 isport(a,b,c,d:in std_logic;y:out std_logic);end nand_4;architecture one of nand_4 is-元件聲明元件聲明component nand_2 port(a,b:in std_logic;y:out std_logic);end component;-元件聲明元件聲明sig

6、nal y1,y2:std_logic; beginu1:nand_2 port map(a,b,y1);-元件例化元件例化u2:nand_2 port map(c,d,y2);u3:nand_2 port map(y1,y2,y);end one;2021/7/238例例1:利用:利用2輸入與非門元件,設(shè)計輸入與非門元件,設(shè)計4輸入的與輸入的與非與非電路。非與非電路。方法方法2:將元件聲明放在程序包里進(jìn)行說明:將元件聲明放在程序包里進(jìn)行說明 第一步:設(shè)計第一步:設(shè)計2輸入與非門,其輸入與非門,其VHDL源程序為源程序為nand_2.vhd;第二步:元件聲明,放在程序包里,其第二步:元件聲明,

7、放在程序包里,其VHDL源程序源程序為為mypkg.vhd;第三步:元件例化,其第三步:元件例化,其VHDL源程序為源程序為mynand_4.vhd;2021/7/239程序包(p228)在設(shè)計實體中聲明的數(shù)據(jù)類型、數(shù)據(jù)對象只能用于本實體和結(jié)構(gòu)體內(nèi)部,不能被其他實體和結(jié)構(gòu)體使用,就像高級語言中的局部變量一樣。為了使數(shù)據(jù)類型、元件等能被多個設(shè)計實體調(diào)用或共享,VHDL提供了程序包的機制。程序包就像是公用的工具箱,各個設(shè)計實體都可使用其中定義的工具。2021/7/2310程序包的格式package 程序包名 is程序包頭說明部分end 程序包名;package body 程序包名 is程序包體說明

8、部分及包體內(nèi)容end 程序包名;2021/7/2311如何打開程序包?用語句use work.程序包名.all;打開程序包。其中,work庫是用戶設(shè)計的現(xiàn)行工作庫,用于存放自己設(shè)計的工程項目。在QuartusII 的根目錄下為設(shè)計建立一個工程目錄(即文件夾),VHDL綜合器將此目錄默認(rèn)為work庫。但work不是設(shè)計項目的目錄名,而是一個邏輯名。VHDL標(biāo)準(zhǔn)規(guī)定work庫總是可見的,因此,在程序設(shè)計時不需要明確指定。2021/7/2312用將元件聲明放在程序包里的設(shè)計方法設(shè)計用將元件聲明放在程序包里的設(shè)計方法設(shè)計4輸入的與非輸入的與非與非門,詳見演示實例與非門,詳見演示實例mynand_4.q

9、pf。(1)在在QuartusII 的根目錄下新建工程的根目錄下新建工程mynand_4.(2)編輯編輯VHDL源程序文件源程序文件nand_2.vhd,mypkg.vhd,mynand_4.vhd.nand_2.vhd用來描述用來描述2輸入與非門。輸入與非門。mypkg.vhd用來進(jìn)行元件聲明。用來進(jìn)行元件聲明。mynand_4.vhd實現(xiàn)元件例化。實現(xiàn)元件例化。2021/7/2313library ieee;use ieee.std_logic_1164.all;entity nand_2 isport(a,b:in std_logic;y:out std_logic);end nand_

10、2;architecture one of nand_2 isbeginprocess(a,b)beginy=a nand b;end process;end one;library ieee;use ieee.std_logic_1164.all;package mypkg iscomponent nand_2port(a,b:in std_logic; y:out std_logic);-元件聲明元件聲明end component;end mypkg;library ieee;use ieee.std_logic_1164.all;use work.mypkg.all;-打開程序包打開程序

11、包entity mynand_4 isport(a,b,c,d:in std_logic;y:out std_logic);end mynand_4;architecture one of mynand_4 issignal y1,y2:std_logic; begin-元件例化元件例化u1:nand_2 port map(a,b,y1);u2:nand_2 port map(c,d,y2);u3:nand_2 port map(y1,y2,y);end one;2021/7/2314思考題用一位用一位D觸發(fā)器,利用元件例化語句實現(xiàn)觸發(fā)器,利用元件例化語句實現(xiàn)4位移位寄存器。位移位寄存器。思路

12、:思路:(1)設(shè)計一位)設(shè)計一位D觸發(fā)器的源程序文件觸發(fā)器的源程序文件shift_reg1.vhd。(2)用元件例化實現(xiàn))用元件例化實現(xiàn)4位移位寄存器文件位移位寄存器文件shift_reg4.vhd。2021/7/23154位位D觸發(fā)器的觸發(fā)器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg4 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end shift_reg4;architecture one of shift_reg4 is

13、component shift_reg1port(clk:in std_logic;D:in std_logic;Q:out std_logic);end component;-元件聲明元件聲明signal Q0,Q1,Q2:std_logic;begin-元件例化元件例化u0:shift_reg1 port map(clk,D,Q0);u1:shift_reg1 port map(clk,Q0,Q1);u2:shift_reg1 port map(clk,Q1,Q2);u3:shift_reg1 port map(clk,Q2,Q);end one;1位位D觸發(fā)器的觸發(fā)器的VHDL程序文件:

14、程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg1 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end entity;architecture one of shift_reg1 isbeginprocess(clk,D)beginif clkevent and clk=1 thenQ=D;end if;end process;end one;2021/7/2316生成語句生成語句生成語句(生成語句(GENERATE)是一種可以建立重復(fù)結(jié)構(gòu)或者是在多個

15、模塊)是一種可以建立重復(fù)結(jié)構(gòu)或者是在多個模塊的表示形式之間進(jìn)行選擇的語句。由于生成語句可以用來產(chǎn)生多個相的表示形式之間進(jìn)行選擇的語句。由于生成語句可以用來產(chǎn)生多個相同的結(jié)構(gòu),因此使用生成語句就可以避免多段相同結(jié)構(gòu)的同的結(jié)構(gòu),因此使用生成語句就可以避免多段相同結(jié)構(gòu)的VHDL程序程序的重復(fù)書寫(的重復(fù)書寫(相當(dāng)于相當(dāng)于復(fù)制復(fù)制)。)。生成語句有兩種形式:生成語句有兩種形式:FOR- GENERATE模式和模式和IF- GENERATE模式。模式。FOR- GENERATE 模式的生成語句模式的生成語句FOR- GENERATE 模式生成語句的書寫格式為:模式生成語句的書寫格式為:標(biāo)號:標(biāo)號:FOR

16、 循環(huán)變量循環(huán)變量 IN 離散范圍離散范圍 GENERATE ;END GENERATE 標(biāo)號標(biāo)號; 2021/7/2317 其中循環(huán)變量的值在每次的循環(huán)中都將發(fā)生變化;離散范其中循環(huán)變量的值在每次的循環(huán)中都將發(fā)生變化;離散范圍用來指定循環(huán)變量的取值范圍,循環(huán)變量的取值將從取值圍用來指定循環(huán)變量的取值范圍,循環(huán)變量的取值將從取值范圍最左邊的值開始并且遞增到取值范圍最右邊的值,實際范圍最左邊的值開始并且遞增到取值范圍最右邊的值,實際上也就限制了循環(huán)的次數(shù);循環(huán)變量每取一個值就要執(zhí)行一上也就限制了循環(huán)的次數(shù);循環(huán)變量每取一個值就要執(zhí)行一次次GENERATE語句體中的并行處理語句;最后語句體中的并行

17、處理語句;最后FOR- GENERATE模式生成語句以保留字模式生成語句以保留字END GENERATE 標(biāo)標(biāo)號:號:;來結(jié)束;來結(jié)束GENERATE語句的循環(huán)。語句的循環(huán)。 生成語句的典型應(yīng)用是存儲器陣列和寄存器。下面以四位生成語句的典型應(yīng)用是存儲器陣列和寄存器。下面以四位移位寄存器為例,說明移位寄存器為例,說明FOR- GENERATE模式生成語句的優(yōu)模式生成語句的優(yōu)點和使用方法。點和使用方法。 2021/7/23184位位D觸發(fā)器的觸發(fā)器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg4 is

18、port(clk:in std_logic;D:in std_logic;Q:out std_logic);end shift_reg4;architecture two of shift_reg4 iscomponent shift_reg1port(clk:in std_logic;D:in std_logic;Q:out std_logic);end component;-元件聲明元件聲明signal y:std_logic_vector(0 to 4);beginy(0)=D;u0:for i in 0 to 3 generate元件生成元件生成ux:shift_reg1 port m

19、ap(clk,y(i),y(i+1);end generate;Q=y(4);end two;1位位D觸發(fā)器的觸發(fā)器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg1 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end entity;architecture one of shift_reg1 isbeginprocess(clk,D)beginif clkevent and clk=1 thenQ=D;end if;end pro

20、cess;end one;例例: FOR- GENERATE模式生成語句應(yīng)用模式生成語句應(yīng)用.用用1位位D觸發(fā)器設(shè)計觸發(fā)器設(shè)計4位移位寄存器。位移位寄存器。 2021/7/2319 可以看出用可以看出用FOR- GENERATE模式生成語句替代思考題中模式生成語句替代思考題中的四條元件例化語句,使的四條元件例化語句,使VHDL程序變的更加簡潔明了。程序變的更加簡潔明了。IF- GENERATE模式生成語句模式生成語句IF- GENERATE模式生成語句的書寫格式如下:模式生成語句的書寫格式如下:標(biāo)號:標(biāo)號:IF 條件條件 GENERATE ;END GENERATE 標(biāo)號標(biāo)號; 2021/7/

21、2320思考題設(shè)計一位二進(jìn)制全加器,然后利用for-generate生成語句實現(xiàn)4位二進(jìn)制全加器,并仿真驗證設(shè)計結(jié)果。2021/7/2321library ieee;use ieee.std_logic_1164.all;entity adder_1 isport(a,b:in std_logic;cin:in std_logic;cout:out std_logic;s:out std_logic);end adder_1;architecture one of adder_1 issignal temp:std_logic_vector(2 downto 0);beginprocess(a,b,cin)begintemp=a&b&cin;if temp=011 or temp=101 or temp=110 or temp=111 thencout=1;elsecout=0;end if;s=a xor b xo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論