九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

VHDL與數(shù)字電路設(shè)計(jì).ppt

上傳人:xt****7 文檔編號(hào):14859517 上傳時(shí)間:2020-07-31 格式:PPT 頁(yè)數(shù):306 大?。?.22MB
收藏 版權(quán)申訴 舉報(bào) 下載
VHDL與數(shù)字電路設(shè)計(jì).ppt_第1頁(yè)
第1頁(yè) / 共306頁(yè)
VHDL與數(shù)字電路設(shè)計(jì).ppt_第2頁(yè)
第2頁(yè) / 共306頁(yè)
VHDL與數(shù)字電路設(shè)計(jì).ppt_第3頁(yè)
第3頁(yè) / 共306頁(yè)

下載文檔到電腦,查找使用更方便

19.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《VHDL與數(shù)字電路設(shè)計(jì).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VHDL與數(shù)字電路設(shè)計(jì).ppt(306頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、VHDL與數(shù)字電路設(shè)計(jì),主講:崔 剛 北京工業(yè)大學(xué)電控學(xué)院電工電子中心 2005年9月1,目錄,概述 第一章 VHDL的程序結(jié)構(gòu)和軟件操作 第二章 數(shù)據(jù)類(lèi)型與數(shù)據(jù)對(duì)象的定義 第三章 并行賦值語(yǔ)句 第四章 順序賦值語(yǔ)句 第五章 組合邏輯電路的設(shè)計(jì) 第六章 時(shí)序邏輯電路的設(shè)計(jì) 第七章 子程序、庫(kù)和程序包 第八章 CPLD和FPGA的結(jié)構(gòu)與工作原理 第九章 數(shù)字鐘電路的設(shè)計(jì),本節(jié)主要內(nèi)容,傳統(tǒng)數(shù)字電路設(shè)計(jì)方法 EDA設(shè)計(jì)方法 PLD器件 PLD器件設(shè)計(jì)流程 文本設(shè)計(jì)輸入VHDL程序設(shè)計(jì),數(shù)字電子技術(shù)的基本知識(shí)回顧,組合邏輯電路 編碼器、譯碼器、數(shù)據(jù)選擇器、加法器、數(shù)值比較器等 時(shí)序邏輯電路 同步時(shí)序

2、邏輯電路 異步時(shí)序邏輯電路 寄存器、移位寄存器、計(jì)數(shù)器、序列信號(hào)發(fā)生器,一、傳統(tǒng)設(shè)計(jì)方法,(1)首先確定可用的元器件; (2)根據(jù)這些器件進(jìn)行邏輯設(shè)計(jì),完成各模塊; (3)將各模塊進(jìn)行連接,最后形成系統(tǒng); (4)而后經(jīng)調(diào)試、測(cè)量觀察整個(gè)系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。,傳統(tǒng)的設(shè)計(jì)方法是基于中小規(guī)模集成電路器件進(jìn)行設(shè)計(jì)(如74系列及其改進(jìn)系列、CC4000系列、74HC系列等都屬于通用型數(shù)字集成電路),而且是采用自底向上進(jìn)行設(shè)計(jì):,EDA(Electronics Design Automation)即電子設(shè)計(jì)自動(dòng)化技術(shù),是利用計(jì)算機(jī)工作平臺(tái),從事電子系統(tǒng)和電路設(shè)計(jì)的一項(xiàng)技術(shù)。 EDA技術(shù)為電子系統(tǒng)設(shè)

3、計(jì)帶來(lái)了這樣的變化: (1)設(shè)計(jì)效率提高,設(shè)計(jì)周期縮短; (2)設(shè)計(jì)質(zhì)量提高; (3)設(shè)計(jì)成本降低; (4)能更充分地發(fā)揮設(shè)計(jì)人員的創(chuàng)造性; (5)設(shè)計(jì)成果的重用性大大提高,省去了不必要的重復(fù)勞動(dòng)。,二、EDA設(shè)計(jì)方法,自頂向下的設(shè)計(jì)方法,數(shù)字電路的EDA設(shè)計(jì)是基于PLD進(jìn)行設(shè)計(jì)的,支持自頂向下的設(shè)計(jì)方法: (1)首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì); (2)然后再逐級(jí)設(shè)計(jì)底層的結(jié)構(gòu); (3)并在系統(tǒng)級(jí)采用仿真手段驗(yàn)證設(shè)計(jì)的正確性; (4)最后完成整個(gè)系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)從設(shè)計(jì)、仿真、測(cè)試一體化。,傳統(tǒng)設(shè)計(jì)方法 vs EDA設(shè)計(jì)方法,三、PLD器件 (一)出現(xiàn)的背景,如果能把所設(shè)計(jì)的數(shù)

4、字系統(tǒng)做成一片大規(guī)模集成電路,則不僅能減小電路的體積、重量、功耗,而且會(huì)使電路的可靠性大為提高。 為某種專門(mén)用途而設(shè)計(jì)的集成電路叫做專用集成電路,即所謂的ASIC(Application Specific Integrated Circuit的縮寫(xiě))。 在用量不大的情況下,設(shè)計(jì)和制造這樣的專用集成電路成本很高,而且設(shè)計(jì)、制造的周期也較長(zhǎng)。 可編程邏輯器件的研制成功為解決上述問(wèn)題提供了比較理想的途徑。,(二)PLD概述,PLD是可編程邏輯器件(Programmable Logic Device)的英文縮寫(xiě)。 可編程邏輯器件是一種數(shù)字集成電路的半成品,在其芯片上按一定排列方式集成了大量的邏輯門(mén)和觸

5、發(fā)器等基本邏輯元件。通過(guò)編程可以設(shè)置其邏輯功能。 PLD編程: 利用開(kāi)發(fā)工具對(duì)PLD進(jìn)行加工,即按設(shè)計(jì)要求將這些片內(nèi)的元件連接起來(lái),使之完成某個(gè)邏輯電路或系統(tǒng)的功能,成為一個(gè)專用集成電路(ASICApplication Specific Integrated Circuit)。,PLD開(kāi)發(fā)系統(tǒng),PLD開(kāi)發(fā)系統(tǒng)包括硬件和軟件兩部分。 硬件部分:計(jì)算機(jī)、下載電纜或編程器; 軟件部分:集成開(kāi)發(fā)系統(tǒng)。 Altera公司:Maxplus 、 Quartus Xilinx公司:Foundation、 ISE Lattice公司:Synario System、ispEXPERT System,四、PLD設(shè)計(jì)

6、流程,設(shè)計(jì)準(zhǔn)備,設(shè)計(jì)輸入,設(shè)計(jì)處理,器件編程,功能仿真,時(shí)序仿真,器件測(cè)試,PLD設(shè)計(jì)準(zhǔn)備,在設(shè)計(jì)之前,首先要進(jìn)行方案論證和器件選擇等設(shè)計(jì)準(zhǔn)備工作。 設(shè)計(jì)者首先要根據(jù)任務(wù)要求,判斷系統(tǒng)的可行性。系統(tǒng)的可行性要受到邏輯要求合理性、成本、開(kāi)發(fā)條件、器件供應(yīng)等方面的約束。 若系統(tǒng)可行,則根據(jù)系統(tǒng)所完成的功能及復(fù)雜程度,對(duì)器件本身的資源和成本、工作速度及連線的可布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計(jì)方案和合適的器件類(lèi)型。,設(shè)計(jì)輸入,將所設(shè)計(jì)的電路的邏輯功能按照開(kāi)發(fā)系統(tǒng)要求的形式表達(dá)出來(lái)的過(guò)程稱為設(shè)計(jì)輸入。 通常,設(shè)計(jì)輸入有如下三種方式: (1)原理圖輸入方式 適用于對(duì)系統(tǒng)及各部分電路很熟悉的場(chǎng)合。 (2)

7、硬件描述語(yǔ)言輸入方式 硬件描述語(yǔ)言是用文本方式描述設(shè)計(jì),硬件描述語(yǔ)言有ABEL、AHDL、VHDL、Verilog等,其中VHDL和Verilog已成為IEEE標(biāo)準(zhǔn)。 (3)波形輸入方式,設(shè)計(jì)處理,邏輯優(yōu)化 把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實(shí)現(xiàn)的形式,優(yōu)化使設(shè)計(jì)所占用的資源最少。 邏輯綜合 根據(jù)設(shè)計(jì)描述,對(duì)給定的硬件結(jié)構(gòu)組件,最終獲得門(mén)級(jí)電路甚至更底層的電路描述文件,即將多個(gè)模塊化設(shè)計(jì)文件合并為一個(gè)網(wǎng)表文件。 適配 確定優(yōu)化后的邏輯能否與器件中的宏單元和I/O單元適配。 分割 將大的設(shè)計(jì)分割為多個(gè)便于器件內(nèi)部資源實(shí)現(xiàn)的邏輯小塊的形式。,設(shè)計(jì)校驗(yàn),設(shè)計(jì)校驗(yàn)過(guò)程包括功能仿真和時(shí)序仿真。 功能仿真 時(shí)

8、序仿真,器件編程,器件編程就是將開(kāi)發(fā)系統(tǒng)生成的目標(biāo)文件下載到可編程邏輯器件中,來(lái)定義內(nèi)部模塊的邏輯功能以及它們的相互連接關(guān)系。 兩種編程方式: 編程器 下載電纜,PLD開(kāi)發(fā)系統(tǒng),PLD開(kāi)發(fā)系統(tǒng)包括硬件和軟件兩部分。 硬件部分:計(jì)算機(jī)、下載電纜或編程器; 軟件部分:集成開(kāi)發(fā)系統(tǒng)。 Altera公司:Maxplus 、 Quartus Xilinx公司:Foundation、 ISE Lattice公司:Synario System、ispEXPERT System,設(shè)計(jì)舉例,設(shè)計(jì)內(nèi)容: 十進(jìn)制計(jì)數(shù)器電路設(shè)計(jì)。,PLD器件:ACEX1K系列的EP1K30QC208。 開(kāi)發(fā)系統(tǒng):MAX+plus系統(tǒng)

9、。 編程方式:下載電纜。,實(shí)驗(yàn)下載板,14:34:11,設(shè)計(jì)過(guò)程,1、設(shè)計(jì)輸入 VHDL 演示1 2、邏輯驗(yàn)證 演示2 3、設(shè)計(jì)處理 引腳設(shè)定 演示3 4、器件編程 連接下載電纜 演示4,三、PLD電路設(shè)計(jì)的特點(diǎn),1、設(shè)計(jì)簡(jiǎn)單,方便; 2、電路系統(tǒng)可以集成在一片芯片上; 3、電路設(shè)計(jì)不依賴于器件進(jìn)行設(shè)計(jì); 4、電路系統(tǒng)很容易完善和升級(jí)。,器件選擇:(1)電路系統(tǒng)所完成的功能及復(fù)雜程度; (2)器件本身的資源和成本、性能參數(shù)、 器件編程工藝等方面進(jìn)行權(quán)衡。,VHDL是非常高速集成電路硬件描述語(yǔ)言 (Very High speed Integrated Circuit Hardware Descr

10、iption Language)的英文縮寫(xiě)。,五、文本設(shè)計(jì)輸入VHDL程序設(shè)計(jì),語(yǔ)法和風(fēng)格: (1)類(lèi)似與現(xiàn)代高級(jí)編程語(yǔ)言,如C語(yǔ)言。 (2)VHDL描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。,VHDL設(shè)計(jì) VS 電路圖設(shè)計(jì),VHDL與電路圖設(shè)計(jì)電路的方式不同,和電路圖設(shè)計(jì)方式相比: (1)易于修改; (2)設(shè)計(jì)能力更強(qiáng); (3)VHDL語(yǔ)言很方便:獨(dú)立于器件設(shè)計(jì);相同的程序代碼可以用于不同廠家生產(chǎn)的器件。,VHDL程序的基本結(jié)構(gòu),include “stdio.h”; include “math.h”; int main(void) int a,b,c; a=8; b=9; c=a+b; ret

11、urn c; ,Library std; Use std.standard.all; Entity and2 is Port( a,b : in bit; c : out bit); End and2; Architecture a1 of and2 is Begin c = a and b; End a1;,VHDL程序,C程序,VHDL程序的基本結(jié)構(gòu),(1)LIBRARY和PACHAGE聲明區(qū); (2)ENTITY定義區(qū); (3)ARCHITECTURE定義區(qū);,Library(庫(kù))是用于存放預(yù)先編譯好的Package(程序包)。 Package (程序包)中定義了基本的常數(shù),數(shù)據(jù)類(lèi)型,元

12、件及子程序等。 作用:聲明在實(shí)體和結(jié)構(gòu)體定義中將用到的 數(shù)據(jù)類(lèi)型、元件或子程序等。 聲明格式: Library 庫(kù)名; Use 庫(kù)名. PACKAGE名.All;,(1)LIBRARY和PACKAGE聲明區(qū),作用: ENTITY(實(shí)體)用于定義電路的外觀,即I/O端口的類(lèi)型和數(shù)量。 定義格式: Entity 實(shí)體名 is Port( a : in bit; b : in bit; c : out bit); End 實(shí)體名;,(2)ENTITY定義區(qū),端口名,數(shù)據(jù)類(lèi)型,端口模式,端口模式(MODE)有以下幾種類(lèi)型: IN ;OUT;INOUT ;BUFFER 端口模式可用下圖說(shuō)明:(黑框代表一

13、個(gè)設(shè)計(jì)或模塊) IN OUT BUFFER INOUT,(2)ENTITY定義區(qū),(3)ARCHITECTURE定義區(qū),實(shí)體的實(shí)現(xiàn)。即說(shuō)明電路執(zhí)行什么動(dòng)作或?qū)崿F(xiàn)功能。 定義格式: Architecture 結(jié)構(gòu)體名 of 實(shí)體名 is 聲明語(yǔ)句;(內(nèi)部信號(hào)、變量、常數(shù),元件,子程序聲明) Begin 并行描述語(yǔ)句; End 結(jié)構(gòu)體名;,二輸入與門(mén)電路設(shè)計(jì)范例,電路真值表,二輸入與門(mén)電路設(shè)計(jì)范例,Library std; Use std.standard.all; Entity and2 is Port( a : in bit; b : in bit; c : out bit); End and

14、2; -實(shí)體定義結(jié)束。,雙減號(hào)-為VHDL程序的注釋符,類(lèi)似C語(yǔ)言中的/注釋符。,二輸入與門(mén)電路設(shè)計(jì)范例,Architecture Na of and2 is Begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 else 0 when a=0 and b = 1 else 1; 符號(hào)=為信號(hào)直接賦值符。 End Na; -結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c = a and b; -and 為邏輯與操作 End Nb; -結(jié)構(gòu)體Nb,第一章 VHDL的程序結(jié)構(gòu)和軟件操作,1-1 VHDL程序

15、的基本結(jié)構(gòu) 1-2 Max+plus的操作,1-1 VHDL程序的基本結(jié)構(gòu),include “stdio.h”; include “math.h”; int main(void) int a,b,c; a=8; b=9; c=a+b; return c; ,Library std; Use std.standard.all; Entity and2 is Port( a,b : in bit; c : out bit); End and2; Architecture a1 of and2 is Begin c = a and b; End a1;,VHDL程序,C程序,1-1 VHDL程序的基

16、本結(jié)構(gòu),(1)LIBRARY和PACHAGE聲明區(qū); (2)ENTITY定義區(qū); (3)ARCHITECTURE定義區(qū); (4)CONFIGURATION定義區(qū)。,Library(庫(kù))是用于存放預(yù)先編譯好的Package(程序包)。 Package (程序包)中定義了基本的常數(shù),數(shù)據(jù)類(lèi)型,元件及子程序等。 作用:聲明在實(shí)體和結(jié)構(gòu)體定義中將用到的 數(shù)據(jù)類(lèi)型、元件或子程序等。 聲明格式: Library 庫(kù)名; Use 庫(kù)名. PACKAGE名.All;,(1)LIBRARY和PACKAGE聲明區(qū),作用: ENTITY(實(shí)體)用于定義電路的外觀,即I/O端口的類(lèi)型和數(shù)量。 定義格式: Entity

17、 實(shí)體名 is Port( a : in bit; b : in bit; c : out bit); End 實(shí)體名;,(2)ENTITY定義區(qū),端口名,數(shù)據(jù)類(lèi)型,端口模式,(2)ENTITY定義區(qū),標(biāo)識(shí)符的定義原則: (1)標(biāo)識(shí)符由字母、數(shù)字和下劃線組成,a7_; (2)在標(biāo)識(shí)符不區(qū)分大小寫(xiě),ab和AB是一樣的; (3)第一個(gè)字符必須是字母,即a666; (4)不允許有兩個(gè)連續(xù)的下劃線,a_b錯(cuò)誤; (5)末尾不能是下劃線,mname_錯(cuò)誤; (6)標(biāo)識(shí)符不能和關(guān)鍵字相同,如Entity,is等。,端口模式(MODE)有以下幾種類(lèi)型: IN ;OUT;INOUT ;BUFFER 端口模式可

18、用下圖說(shuō)明:(黑框代表一個(gè)設(shè)計(jì)或模塊) IN OUT BUFFER INOUT,(2)ENTITY定義區(qū),(3)ARCHITECTURE定義區(qū),定義了實(shí)體的實(shí)現(xiàn)。即電路的具體描述,說(shuō)明電路執(zhí)行什么動(dòng)作或?qū)崿F(xiàn)功能。 定義格式: Architecture 結(jié)構(gòu)體名 of 實(shí)體名 is 聲明語(yǔ)句;(內(nèi)部信號(hào)、變量、常數(shù),元件,子程序聲明) Begin 并行描述語(yǔ)句; End 結(jié)構(gòu)體名;,(4)CONFIGURATION定義區(qū),一個(gè)完整VHDL電路設(shè)計(jì)必須有一個(gè)實(shí)體和對(duì)應(yīng)的結(jié)構(gòu)體,即實(shí)體和結(jié)構(gòu)體對(duì)構(gòu)成一個(gè)完整的VHDL設(shè)計(jì)。 一個(gè)實(shí)體可對(duì)應(yīng)一個(gè)結(jié)構(gòu)體或多個(gè)結(jié)構(gòu)體,即一個(gè)實(shí)體可以有不同的描述方式。 作用

19、:當(dāng)實(shí)體有多個(gè)結(jié)構(gòu)體時(shí),系統(tǒng)默認(rèn)實(shí)體選用最后一個(gè)結(jié)構(gòu)體,利用CONFIGURATION語(yǔ)句可以任意選擇采用哪一個(gè)結(jié)構(gòu)體。,(4)CONFIGURATION定義區(qū),定義格式: Configuration 配置名 of 實(shí)體名 is for 選用的結(jié)構(gòu)體名 end for; end configuration 配置名 ;,二輸入與門(mén)電路設(shè)計(jì)范例,電路真值表,二輸入與門(mén)電路設(shè)計(jì)范例,Library std; Use std.standard.all; Entity and2 is Port( a : in bit; b : in bit; c : out bit); End and2; -實(shí)體定義結(jié)

20、束。,雙減號(hào)-為VHDL程序的注釋符,類(lèi)似C語(yǔ)言中的/注釋符。,二輸入與門(mén)電路設(shè)計(jì)范例,Architecture Na of and2 is Begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 else 0 when a=0 and b = 1 else 1; 符號(hào)=為信號(hào)直接賦值符。 End Na; -結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c = a and b; -and 為邏輯與操作 End Nb; -結(jié)構(gòu)體Nb,二輸入與門(mén)電路設(shè)計(jì)范例,Configuration s1 of and2 i

21、s for na end for; end configuration s1; -結(jié)構(gòu)體配置結(jié)束。,1-2 Max+plus系統(tǒng)的操作,Max+plus開(kāi)發(fā)工具是美國(guó)Altera公司自行設(shè)計(jì)的一種軟件工具,其全稱為Multiple Array Matrix and Programmable Logic User System。 它具有原理圖輸入和文本輸入(采用硬件描述語(yǔ)言)兩種輸入手段,利用該工具所配備的編輯、編譯、仿真、時(shí)序分析、芯片編程等功能,將設(shè)計(jì)電路圖或電路描述程序變成基本的邏輯單元寫(xiě)入到可編程的芯片中(如CPLD或FPGA芯片),作成ASIC芯片。它是EDA設(shè)計(jì)中不可缺少的一種工具。

22、,下面我們介紹利用Max+plus 系統(tǒng)如何實(shí)現(xiàn)如下操作: (1)如何編寫(xiě)VHDL程序(使用Text Editor); (2)如何編譯VHDL程序(使用Compiler); (3)如何仿真驗(yàn)證VHDL程序(使用Waveform Editor,Simulator); (4)如何進(jìn)行芯片的時(shí)序分析(使用Timing Analyzer); (5)如何安排芯片腳位(使用Floorplan Editor); (6)如何下載程序至芯片(使用Programmer)。,1-2 Max+plus系統(tǒng)的操作,(1)如何編寫(xiě)VHDL程序,a. 打開(kāi)文本編輯器;File/new/Text editor file b.

23、 編寫(xiě)VHDL程序; c. 保存文件,文件名和定義的實(shí)體名必須相同,文件擴(kuò)展名為VHD,文件存盤(pán)的目錄不應(yīng)是根目錄或桌面,建議存放在Max2work或Maxplus2目錄,或其子目錄 。,(2)如何編譯VHDL程序,a. 打開(kāi)需要編譯的文件; b.設(shè)置工程到目前打開(kāi)的文件 ; File/Project/Set Project to Current File, c.打開(kāi)編譯器; 點(diǎn)擊主菜單MAX+plus/Compiler選項(xiàng)。 d. 選定VHDL源文件的版本 ; Interfaces/VHDL Netlist Reader Settings e. 打開(kāi)編譯器進(jìn)行編譯。,(3)如何仿真驗(yàn)證VHD

24、L程序,a. 打開(kāi)波形編輯器(Waveform Editor ) ; b. 確定仿真持續(xù)時(shí)間(File/End Time); c. 將輸入輸出端口名選入波形編輯器; d. 編輯輸入信號(hào)波形 ; e. 保存仿真波形文件 ; f. 打開(kāi)仿真器MAX+plusSimulator進(jìn)行仿真。在仿真結(jié)束后打開(kāi)仿真波形文件(點(diǎn)擊右下角的Open SCF按鈕)即可以顯示仿真結(jié)果。,(4)如何進(jìn)行芯片的時(shí)序分析,a. 選擇要下載的器件型號(hào) ; 點(diǎn)擊主菜單的Assign/Device項(xiàng)得到Device對(duì)話框。在Device Family框中選擇芯片系列,在Devices選擇框下選擇具體的芯片名,最后點(diǎn)擊OK按鈕

25、。 b. 再編譯一次; c. 打開(kāi)時(shí)序分析器(Timing Analyzer ); d. 點(diǎn)擊Start進(jìn)行時(shí)序分析。,(5)如何安排芯片腳位,a.打開(kāi)芯片腳位設(shè)置窗口;點(diǎn)擊主菜單Assign/ Pin/Location/Chip,出現(xiàn)腳位設(shè)置對(duì)話框; ; b.將實(shí)體定義的端口名字和下載芯片的管腳進(jìn)行具體對(duì)應(yīng);在Node Name框中輸入我們定義的實(shí)體端口名字,然后在Pin列表選項(xiàng)框中輸入下載芯片的管腳序號(hào),再點(diǎn)擊對(duì)話框右下角的Add按鈕,將所有端口設(shè)置完成以后,點(diǎn)擊Ok按鈕,則實(shí)現(xiàn)實(shí)體端口和下載芯片的管腳的對(duì)應(yīng); c. 再編譯一次,將生成可以下載的文件(And2.Sof)。,(6)如何下載程

26、序至芯片,a. 將下載電纜與計(jì)算機(jī)并口相連,然后給芯片通電 ; b. 打開(kāi)編程器Programmer ; Options/Hardware Setup,在Hardware Type選擇ByteBlaster(MV)方式,則在Parallel Port處顯示LPT1,單擊OK鈕返回Programmer窗口。 c.下載方式選擇 ; d. 選擇下載的芯片類(lèi)型和要下載的文件(選擇JTAG/Muti Devic JTAG Chain Setup)。 e. 點(diǎn)擊Configure進(jìn)行下載,將程序?qū)懭胄酒?。,第二章 數(shù)據(jù)類(lèi)型與數(shù)據(jù)對(duì)象的定義,2-1 數(shù)據(jù)類(lèi)型 2-2 數(shù)據(jù)對(duì)象的定義 2-3 信號(hào)運(yùn)算符

27、2-4 信號(hào)屬性,2-1 數(shù)據(jù)類(lèi)型,在VHDL程序中,我們經(jīng)常會(huì)遇到這樣的語(yǔ)句: Signal A : std_logic; Variable B : std_logic_vector(7 downto 0); Constant C : integer;,數(shù)據(jù)對(duì)象類(lèi)型,數(shù)據(jù)類(lèi)型,數(shù)據(jù)對(duì)象名,2-1-1 邏輯數(shù)據(jù)類(lèi)型,(1)布爾代數(shù)(Boolean)型 ; (2)位(Bit); (3)位數(shù)組類(lèi)型(Bit_Vector),在std庫(kù)的standard 程序包中進(jìn)行定義。,type BIT_VECTOR is array (NATURAL range ) of BIT;,type BIT is (0

28、, 1);,type BOOLEAN is (FALSE, TRUE) ;,(4)標(biāo)準(zhǔn)邏輯型(Std_Logic); Type STD_LOGIC is (U, -Uninialized;未初始化 X, -Forcing unknown;浮接不定 0, - Forcing 0;低電位 1, - Forcing 1;高電位 Z, - High Impedance;高阻抗 W, - Weak Unknown;弱浮接 L, - Weak 0;弱低電位 H, - Weak 1;弱高電位 -, - Dont care;不必理會(huì) ); (5)標(biāo)準(zhǔn)邏輯數(shù)組類(lèi)型(Std_Logic_vector);,在iee

29、e庫(kù)的std_logic_1164程序包中定義。,TYPE std_logic_vector IS ARRAY ( NATURAL RANGE ) OF std_logic;,2-1-2 數(shù)值數(shù)據(jù)類(lèi)型,(1)整數(shù)(Integer); a. 正整數(shù)(POSITIVE) b. 自然數(shù)(NATURAL),在std庫(kù)的standard 程序包中進(jìn)行定義。,subtype POSITIVE is range 1 to INTEGERHigh;,Type INTEGER is range 2147483648 to 2147483647;,subtype NATURAL is range 0 to INT

30、EGERHigh;,(2)實(shí)數(shù)(Real) (3)有符號(hào)數(shù)(Signed) 無(wú)符號(hào)數(shù)(Unsigned),在ieee庫(kù)的std_logic_arith程序包中定義。,type REAL is range 1.7E38 to 1.7E38;,type UNSIGNED is array (NATURAL range ) of STD_LOGIC; type SIGNED is array (NATURAL range ) of STD_LOGIC;,SIGNED 的最高位為符號(hào)位,其余位為數(shù)值位,數(shù)值位為補(bǔ)碼形式。如:符號(hào)數(shù)”1001”表示-7。,library ieee; use ieee.s

31、td_logic_1164.all; use ieee.std_logic_arith.all; entity data is port(a,b: in unsigned(3 downto 0); -a,b: in signed(3 downto 0); c: out std_logic); end data; architecture m1 of data is begin c=1 when ab else 0; end m1;,當(dāng)定義成無(wú)符號(hào)類(lèi)型時(shí),若a=”1000”,b=0001, 即a=8,b=1則結(jié)果c=0; 當(dāng)定義成有符號(hào)類(lèi)型時(shí),若a=”1000”,b=0001, 則a=-8,b=

32、1,則結(jié)果c=1。,2-1-3 列舉和數(shù)組數(shù)據(jù)類(lèi)型,(1)列舉數(shù)據(jù)類(lèi)型(Enumerated Types) 定義格式: Type 列舉名稱 is (元素1,元素2,); (2)數(shù)組數(shù)據(jù)類(lèi)型(Array Types) 定義格式: Type 數(shù)組名稱 is Array(range ) of 數(shù)據(jù)類(lèi)型;,2-1-4 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,在VHDL語(yǔ)言里,不同類(lèi)型的數(shù)據(jù)信號(hào)之間不能互相賦值。當(dāng)需要不同類(lèi)型數(shù)據(jù)之間傳遞信息時(shí),就需要類(lèi)型轉(zhuǎn)換函數(shù)將其中的一種類(lèi)型數(shù)據(jù)轉(zhuǎn)換為另一中數(shù)據(jù)類(lèi)型后,再進(jìn)行信號(hào)的傳遞。 例如:Signal Y : Std_logic_vector(7 downto 0); Signal

33、X : Integer range 0 to 255; Y= CONV_STD_LOGIC_VECTOR(X,8); 轉(zhuǎn)換函數(shù)有兩個(gè)參數(shù),被轉(zhuǎn)換的對(duì)象和轉(zhuǎn)換后的位數(shù)。,常用的數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),CONV_INTEGER 將數(shù)據(jù)類(lèi)型 UNSIGNED, SIGNED轉(zhuǎn)換為INTEGER 類(lèi)型. CONV_UNSIGNED 將數(shù)據(jù)類(lèi)型INTEGER, SIGNED轉(zhuǎn)換為UNSIGNED 類(lèi)型. CONV_SIGNED 將數(shù)據(jù)類(lèi)型INTEGER, UNSIGNED轉(zhuǎn)換為SIGNED類(lèi)型. CONV_STD_LOGIC_VECTOR 將數(shù)據(jù)類(lèi)型INTEGER, UNSIGNED, SIGNED, STD

34、_LOGIC轉(zhuǎn)換為STD_LOGIC_VECTOR 類(lèi)型.,在庫(kù)ieee的程序包 std_logic_arith中定義,2-2 數(shù)據(jù)對(duì)象的定義,常用的數(shù)據(jù)對(duì)象有三種: 常數(shù)(Constant) 信號(hào)(Signal) 變量(Variable),2-2-1 常數(shù)的定義,(1)將數(shù)據(jù)對(duì)象定義為常數(shù),一方面希望該數(shù)據(jù)對(duì)象的值不會(huì)被改變;另一方面,為了提高程序的可讀性。 (2)常數(shù)為全局量。 (3)常數(shù)在程序包說(shuō)明、實(shí)體說(shuō)明、結(jié)構(gòu)體描述、過(guò)程說(shuō)明、函數(shù)調(diào)用中使用。 (4)常數(shù)的定義格式: Constant 常數(shù)名:數(shù)據(jù)類(lèi)型 :=常數(shù)值; 如:Constant D1: Integer := 3; 注意!常

35、數(shù)定義的同時(shí)進(jìn)行賦初值。,常數(shù)的應(yīng)用示例,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; -必需定義+ entity exam1 is port (ip : in std_logic_vector(3 downto 0); op : out std_logic_vector(3 downto 0); end exam1; architecture m1 of exam1 is constant num : integer := 6; begin op = ip + num; end m1;,

36、2-2-2 信號(hào)的定義,(1)“信號(hào)”數(shù)據(jù)對(duì)象,代表電路內(nèi)部信號(hào)或連接線路,其在元件之間起互連作用。,注意!信號(hào)定義的時(shí)候盡管可以直接賦初值,但系統(tǒng)往往忽略。 建議信號(hào)對(duì)象定義后再進(jìn)行賦值。,(2)信號(hào)為全局量。,(3)在實(shí)體說(shuō)明、結(jié)構(gòu)體描述和程序包說(shuō)明中使用。,(4)信號(hào)的定義格式: Signal 信號(hào)名:數(shù)據(jù)類(lèi)型 ;,(5)信號(hào)賦值的語(yǔ)法格式為:信號(hào)名 = 表達(dá)式; 如:Signal S1 : Std_logic_vector(3 Downto 0); S1 = “0000”;,2-2-3 變量的定義,(1)“變量”數(shù)據(jù)對(duì)象,它用于對(duì)中間數(shù)據(jù)的臨時(shí)存儲(chǔ),并不一定代表電路的某一組件。,注意!

37、變量定義的時(shí)候盡管可以直接賦初值,但系統(tǒng)往往忽略。 建議變量對(duì)象定義后再進(jìn)行賦值。,(2)變量為局部量。,(3)僅限于進(jìn)程(Process)或子程序中使用。,(4)變量的定義格式: Variable 變量名:數(shù)據(jù)類(lèi)型 ;,(5)變量賦值的語(yǔ)法格式為:目標(biāo)信號(hào)值:=表達(dá)式; 如:Variable S1 : Std_logic_vector(3 Downto 0); S1 := “0000”;,library ieee; use ieee.std_logic_1164.all; entity bcv is port (a,b,c : in std_logic; x,y : out std_logi

38、c); end bcv;,architecture m2 of bcv is begin process(a,b,c) variable d:std_logic; begin d:=a; x=c xor d; d:=b; y=c xor d; end process; end m2;,例一,結(jié)果:x=c xor b, y=c xor b,x=c xor a, y=c xor b,architecture m1 of bcv is signal d:std_logic; begin process(a,b,c) begin d=a; -ignored x=c xor d; d=b; y=c xo

39、r d; end process; end m1;,library ieee; use ieee.std_logic_1164.all; Entity cmp is port( cp,ip : in std_logic; -cp為時(shí)鐘脈沖 op,oq: out std_logic); -ip為輸入信號(hào) end cmp; Architecture m1 of cmp is signal d:std_logic; begin process(cp) variable e:std_logic; begin if cpevent and cp=1 then d = ip; op = d; e := i

40、p; oq = e ; end if; end process; end m1;,例二 D觸發(fā)器,在進(jìn)程中,信號(hào)賦值只有在過(guò)程結(jié)束時(shí)起作用,而變量賦值是立即進(jìn)行的。,2-2-4 信號(hào)和變量的比較,(1)信號(hào)和變量的對(duì)應(yīng)關(guān)系不同:信號(hào)代表電路內(nèi)部信號(hào)或連接線路;而變量則不是。,(2)信號(hào)和變量聲明的位置不同:信號(hào)聲明在子程序、進(jìn)程的外部;而變量聲明在子程序、進(jìn)程的內(nèi)部。,(3)信號(hào)為全局量,而變量只在定義它的域中才可見(jiàn)。因此,變量不能在兩個(gè)進(jìn)程之間傳遞信息。,(4)在一個(gè)進(jìn)程中多次為一個(gè)信號(hào)賦值時(shí),只有最后一個(gè)值會(huì)起作用;而變量則不同,每次賦值都會(huì)改變它的值。,(5)賦值不同。在進(jìn)程中,信號(hào)賦值

41、只有在進(jìn)程結(jié)束時(shí)起作用,而變量賦值是立即進(jìn)行的。而且賦值符號(hào)不同:信號(hào)賦值為“=”,變量賦值為“:=”。,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all;,一位BCD碼的加法器,Entity bcdadder is Port( a,b : in std_logic_vector(3 downto 0); result : out std_logic_vector(4 downto 0); End bcdadder;,Architecture Na of bcdadder is constant

42、 adjnum : integer:=6; -常數(shù)定義 signal binadd : std_logic_vector(4 downto 0); -信號(hào) Begin binadd9 then tmp:=adjnum; else tmp:=0; end if; result= binadd+tmp; end process; End Na;,2-3 信號(hào)運(yùn)算符,VHDL提供了四種類(lèi)型運(yùn)算符號(hào): 邏輯運(yùn)算符 關(guān)系運(yùn)算符 算術(shù)運(yùn)算符 連接運(yùn)算符,VHDL運(yùn)算符邏輯運(yùn)算符,and 邏輯與or邏輯或nand與非nor 或非xor 異或xnor同或not 邏輯非,上述邏輯運(yùn)算在庫(kù)ieee的程序包std_

43、logic_1164中定義。,VHDL運(yùn)算符關(guān)系運(yùn)算符,=等于/=不等于大于=大于或等于 注:其中=操作符也用于表示信號(hào)的賦值操作。 上述運(yùn)算在庫(kù)ieee的程序包std_logic_arith中定義。,VHDL運(yùn)算符算術(shù)運(yùn)算符,+加-減*乘/除*乘方mod求模 rem求余 abs求絕對(duì)值 在庫(kù)ieee的程序包std_logic_arith中定義。,VHDL運(yùn)算符連接運(yùn)算符, Signal B : std_logic_vector(0 to 3); 則這兩個(gè)信號(hào)的屬性值分別為: Aleft=7; Aright=0; Alow=0; Ahigh=7; Alength=8; Bleft=0; Bri

44、ght=3; Blow=0; Bhigh=3; Blength=4;,left表示數(shù)組的左邊界; right表示數(shù)組的右邊界; low表示數(shù)組的下邊界; high表示數(shù)組的上邊界; length表示數(shù)組的長(zhǎng)度。,(2)event屬性: event屬性,它的值為布爾型,如果剛好有事件發(fā)生在該屬性所附著的信號(hào)上(即信號(hào)有變化),則其取值為T(mén)ure,否則為False。 利用此屬性可決定時(shí)鐘信號(hào)的變化情況,即時(shí)鐘是否發(fā)生。,2-4 數(shù)據(jù)對(duì)象屬性,(2)Event屬性: 例如:時(shí)鐘邊沿表示 signal clk : in std_logic;則clkevent and clk=1表示時(shí)鐘的上升沿。即時(shí)鐘

45、變化了,且其值為1。 clkevent and clk=0表示時(shí)鐘的下降沿。即時(shí)鐘變化了,且其值為0。 此外,還可利用兩個(gè)函數(shù)來(lái)表示時(shí)鐘的邊沿。rising_edge(clk) 表示時(shí)鐘的上升沿falling_edge(clk) 表示時(shí)鐘的下降沿 這兩個(gè)函數(shù)分別在庫(kù)ieee的程序包Std_logic_1164中定義。,2-4 數(shù)據(jù)對(duì)象屬性,并行語(yǔ)句一般處于進(jìn)程(PROCESS)的外部。所有并行語(yǔ)句都是并行執(zhí)行的,即與它們出現(xiàn)的先后次序無(wú)關(guān)。 并行語(yǔ)句有三個(gè)特點(diǎn): a. 所有語(yǔ)句的執(zhí)行是并行的; b. 每條語(yǔ)句的執(zhí)行和其所在的位置無(wú)關(guān); c. 并行語(yǔ)句的輸出僅僅依賴于輸入,沒(méi)有其它的限制條件。,

46、第三章 并行賦值語(yǔ)句,第三章 并行賦值語(yǔ)句,(1)直接賦值語(yǔ)句:= 賦值運(yùn)算符 (2)條件式信號(hào)設(shè)置語(yǔ)句:When-Else (3)選擇式信號(hào)設(shè)置語(yǔ)句:With-Select-When (4) Process(進(jìn)程)語(yǔ)句 (5) Block(塊)語(yǔ)句 (6) 函數(shù)調(diào)用語(yǔ)句(后面章節(jié)講) (7) Component(元件)例化語(yǔ)句 (8)For-Generate語(yǔ)句 Generic的使用,(1)直接賦值語(yǔ)句:=,直接賦值語(yǔ)句的格式:Signal_name0); 結(jié)果信號(hào)A的每一位的值都為0。 B0); 信號(hào)對(duì)象的位數(shù)很多時(shí),采用others來(lái)賦值很方便。,=示例,library ieee; us

47、e ieee.std_logic_1164.all; Entity test1 Is Port ( a, b : in std_logic; c, d : out std_logic); end test1; architecture test1_body of test1 is begin 同時(shí)執(zhí)行 d = a or b; c = a and b; end test1_body;,輸出僅僅依賴于輸入, 沒(méi)有其它的限制條件。,每條語(yǔ)句的執(zhí)行和 其所在的位置無(wú)關(guān)。,(2) When-Else條件式信號(hào)設(shè)置語(yǔ)句,它的語(yǔ)法格式為: label: Signal_name= expression1 Wh

48、en logic_expression1 Else expression2 When logic_expression2 Else expressionn; 例如:f=1 when x1=x2 else 0;,When-Else語(yǔ)句示例,Library ieee; Use ieee.std_logic_1164.all; Entity xor2 is Port(x,y : in std_logic; z : out std_logic); End xor2; Architecture a of xor2 is Begin z= 1 when(x= 0 and y= 1 ) else 1 whe

49、n(x= 1 and y= 0 ) else 0; End a;,(3) With-Select-When選擇式信號(hào)設(shè)置語(yǔ)句,label: With expression Select Signal_name=expression When constant_value , expression When constant_value ;,With-Select-When示例,Library ieee; Use ieee.std_logic_1164.all; Entity xor2 is Port(x,y : in std_logic; z : out std_logic); End xor

50、2; Architecture a of xor2 is signal tmp : std_logic_vector(1 downto 0); Begin tmp=x,When-else和With-select-When語(yǔ)句的區(qū)別,(1)With-select-When語(yǔ)句中When后的constant_value必須是互不相同的; (2)而When-else語(yǔ)句中When后的logic_expression則不需要這樣的嚴(yán)格條件; (3)When-else語(yǔ)句中When后的logic_expression的優(yōu)先權(quán)次序?yàn)橛上鹊胶笈帕小?優(yōu)先編碼器示例,Library ieee; Use iee

51、e.std_logic_1164.all; Entity priority is Port(r1,r2,r3 : in std_logic; f : out std_logic_vector(1 downto 0); End priority; Architecture a of priority is Begin f= 01 when(r1= 1 ) else 10 when(r2= 1 ) else 11 when(r3= 1 ) else 00; End a;,If r1=1,f=”01”; If r2=1 and r1/=1,f=”10”; If r3=1 and r1/=1 and

52、r2/=1, f=”11”; 如果三個(gè)輸入都為0,f=”00”。,(4) Process語(yǔ)句,(1)一個(gè)結(jié)構(gòu)體當(dāng)中可以有多個(gè)Process 語(yǔ)句,Process 語(yǔ)句是同時(shí)執(zhí)行的并行語(yǔ)句。 (2)Process內(nèi)的語(yǔ)句卻是順序執(zhí)行的順序語(yǔ)句。 (3)多進(jìn)程之間的信息通過(guò)信號(hào)對(duì)象來(lái)傳遞。 Process 語(yǔ)句的格式為: Process label: Process(Sensitivity list) Variable declarations Begin 順序語(yǔ)句; End Process Process label;,(4) Process語(yǔ)句,敏感表(Sensitivity list)包括進(jìn)

53、程的一些信號(hào),當(dāng)敏感表中的某個(gè)信號(hào)變化時(shí)進(jìn)程才被激活,進(jìn)程內(nèi)的順序語(yǔ)句被執(zhí)行。 當(dāng)進(jìn)程結(jié)束時(shí),進(jìn)程內(nèi)的輸出信號(hào)值被更新,進(jìn)程進(jìn)入等待(睡眠)狀態(tài),直到敏感表中的某一信號(hào)發(fā)生變化,進(jìn)程被再次激活。 對(duì)于上述電路,我們同樣可以采用Process語(yǔ)句來(lái)進(jìn)行描述。,Process語(yǔ)句示例,architecture m2 of exam1 is Signal tmp: std_logic; begin process begin tmp=a and b; end process; d=tmp; process begin e= tmp or c ; end process; end m2;,(5) Bl

54、ock(塊)語(yǔ)句,當(dāng)我們?cè)O(shè)計(jì)一個(gè)比較復(fù)雜的電路時(shí),為了使設(shè)計(jì)簡(jiǎn)單化,可以將其分為幾個(gè)部分分別進(jìn)行設(shè)計(jì),每個(gè)部分設(shè)計(jì)完成后,再將其組合成我們需要的電路。這種方法稱為模塊化設(shè)計(jì)方法。這樣,使得整個(gè)設(shè)計(jì)工作更加容易實(shí)現(xiàn),同時(shí)程序代碼的維護(hù)性、糾錯(cuò)性都能得到提高。 采用模塊化設(shè)計(jì)時(shí),當(dāng)設(shè)計(jì)一個(gè)模塊時(shí),我們就要用到Block語(yǔ)句。,語(yǔ)法格式: Block Label : Block 數(shù)據(jù)對(duì)象定義部分 Begin End Block;,(5) Block(塊)語(yǔ)句,library ieee; use ieee.std_logic_1164.all; entity exam1 is port (a,b,c

55、: in std_logic; d,e : out std_logic); end exam1; architecture m1 of exam1 is begin Block_1: Block Begin d=a and b; end block; Block_2: Block Begin e=(a and b) or c ; end block; end m1;,Block語(yǔ)句示例,Component(元件)例化語(yǔ)句,(1)Block語(yǔ)句可以使VHDL程序更加模塊化、功能化。但這樣的做法要求在同一程序中,若是重復(fù)使用時(shí),必須重寫(xiě)一次。 Block語(yǔ)句解決了這樣的重復(fù)編寫(xiě)問(wèn)題。 (2)元件也

56、是完整的VHDL設(shè)計(jì),作為底層設(shè)計(jì),通過(guò)元件聲明,使之可在其他模塊中被調(diào)用。 (3)元件聲明可放在程序包中,也可在某個(gè)設(shè)計(jì)的結(jié)構(gòu)體中聲明。,語(yǔ)法格式: Component 元件名 Port (端口定義) ; -同元件實(shí)現(xiàn)時(shí)的實(shí)體的port部分 End Component; 元件例化指元件的調(diào)用,它的語(yǔ)法格式為: Label : 元件名 Port Map(端口映射);,Component(元件)例化語(yǔ)句,元件例化時(shí)端口映射或關(guān)聯(lián)有兩種方式: a.位置對(duì)應(yīng)方式 直接由輸入信號(hào)和元件信號(hào)的對(duì)應(yīng)位置進(jìn)行映射。即: 元件標(biāo)號(hào):元件名 Port Map(信號(hào)A1, 信號(hào)B1,); b.名字直接對(duì)應(yīng) 我們使

57、用=映射符號(hào)進(jìn)行輸入信號(hào)和元件信號(hào)之間的映射,那么位置可以不對(duì)應(yīng)。即: 元件標(biāo)號(hào):元件名 Port Map(元件信號(hào)A=信號(hào)A1,元件信號(hào)B=信號(hào)B1,); 注意!元件標(biāo)號(hào)是必需的。,Component例化語(yǔ)句,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity fulladder is Port(Ci : in std_logic; a,b : in std_logic; s : out std_logic; Co : out std_logic); End fulladder;

58、 Architecture m1 of fulladder is Signal tmp: std_logic_vector(1 downto 0); Begin tmp=(0 ,一位全加器,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity adder is Port(Cin : in std_logic; x,y : in std_logic_vector(3 downto 0); sum : out std_logic_vector(3 downto 0); Cout : ou

59、t std_logic); End adder;,四位加法器,Architecture a of adder is Signal c: std_logic_vector(0 to 4); Component fulladder Port(ci,a,b : in std_logic; s,co : out std_logic); end component; Begin c(0)c(0),a=x(0),b=y(0), s=sum(0),co=c(1); U2: fulladder Port map(c(1),x(1),y(1),sum(1),c(2); U3: fulladder Port ma

60、p(c(2),x(2),y(2),sum(2),c(3); U4: fulladder Port map(c(3),x(3),y(3),sum(3),c(4); Cout=c(4); End a;,Component例化示例,For-Generate語(yǔ)句,For-Generate語(yǔ)句用于生成一組信號(hào)賦值或元件例化語(yǔ)句。 語(yǔ)法格式: generate_label: -必須的 for index_variable In range generate statement; statement; end generate;,則上面的四位加法器可以這樣來(lái)實(shí)現(xiàn): 其它相同,上面四條賦值語(yǔ)句可以這樣來(lái)代替:

61、 Generate_label: For i In 0 to 3 Generate Bitadder: fulladder Port map(c(i),x(i),y(i),sum(i),c(i+1); End generate;,For-Generate語(yǔ)句,Generic語(yǔ)句,通過(guò)引入一個(gè)參數(shù)n使得我們?cè)O(shè)計(jì)的加法器更加具有通用性,參數(shù)n代表加法器中相加的位數(shù),在VHDL中,這樣的參數(shù)稱為Generic(類(lèi)屬)。 通常定義在實(shí)體描述和元件聲明中。 定義格式: Generic(參數(shù)名 : 數(shù)據(jù)類(lèi)型 := 表達(dá)式 ); 例如:Generic( m : integer:=7);,Library ie

62、ee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity adder is Generic(n:integer:=4); Port(Cin : in std_logic; x,y : in std_logic_vector(n-1 downto 0); sum : out std_logic_vector(n-1 downto 0); Cout : out std_logic); End adder;,Generic語(yǔ)句示例N位全加器,Architecture a of adder is Signal c:

63、 std_logic_vector(0 to n); Component fulladder Port(ci,a,b : in std_logic; s,co : out std_logic); End component; Begin c(0)=cin; Generate_label: For i In 0 to n-1 Generate Bitadder: fulladder Port map(c(i),x(i),y(i),sum(i),c(i+1); End generate; Cout=c(n); End a;,Library ieee; Use ieee.std_logic_1164

64、.all; Use ieee.std_logic_unsigned.all; Entity nadder is Port(Cin1 : in std_logic; x1,y1 : in std_logic_vector(7 downto 0); Sum1 : out std_logic_vector(7 downto 0); Cout1 : out std_logic); End nadder;,帶Generic的元件例化N位全加器,Architecture a of nadder is Component adder Generic(n:integer); -也可在此進(jìn)行影射Generic(n:integer:=8); Port(cin : in std_logic; x,y : in std_logic_vector(n-1 downto 0); sum : out std_logic_vector(n-1 downto 0); cout: out std_logic); end component; Begin Nadder: adder Generic map(n=8) Port map(cin1,x1,

展開(kā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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!