VHDL與數(shù)字電路設(shè)計-課件-北京工業(yè)大學(xué)_第1頁
VHDL與數(shù)字電路設(shè)計-課件-北京工業(yè)大學(xué)_第2頁
VHDL與數(shù)字電路設(shè)計-課件-北京工業(yè)大學(xué)_第3頁
VHDL與數(shù)字電路設(shè)計-課件-北京工業(yè)大學(xué)_第4頁
VHDL與數(shù)字電路設(shè)計-課件-北京工業(yè)大學(xué)_第5頁
已閱讀5頁,還剩301頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VHDL與數(shù)字電路設(shè)計與數(shù)字電路設(shè)計主講:崔主講:崔 剛剛 北京工業(yè)大學(xué)電控學(xué)院電工電子中心北京工業(yè)大學(xué)電控學(xué)院電工電子中心2005年年9月月1目錄目錄 概述概述第一章第一章 VHDL的程序結(jié)構(gòu)和軟件操作的程序結(jié)構(gòu)和軟件操作 第二章第二章 數(shù)據(jù)類型與數(shù)據(jù)對象的定義數(shù)據(jù)類型與數(shù)據(jù)對象的定義第三章第三章 并行賦值語句并行賦值語句第四章第四章 順序賦值語句順序賦值語句第五章第五章 組合邏輯電路的設(shè)計組合邏輯電路的設(shè)計第六章第六章 時序邏輯電路的設(shè)計時序邏輯電路的設(shè)計第七章第七章 子程序、庫和程序包子程序、庫和程序包第八章第八章 CPLD和和FPGA的結(jié)構(gòu)與工作原理的結(jié)構(gòu)與工作原理 第九章第九章 數(shù)字

2、鐘電路的設(shè)計數(shù)字鐘電路的設(shè)計 本節(jié)主要內(nèi)容本節(jié)主要內(nèi)容傳統(tǒng)數(shù)字電路設(shè)計方法傳統(tǒng)數(shù)字電路設(shè)計方法EDA設(shè)計方法設(shè)計方法PLD器件器件 PLD器件設(shè)計流程器件設(shè)計流程文本設(shè)計輸入文本設(shè)計輸入VHDL程序設(shè)計程序設(shè)計數(shù)字電子技術(shù)的基本知識回顧數(shù)字電子技術(shù)的基本知識回顧組合邏輯電路組合邏輯電路 編碼器、譯碼器、數(shù)據(jù)選擇器、加法器、數(shù)值比較器等編碼器、譯碼器、數(shù)據(jù)選擇器、加法器、數(shù)值比較器等時序邏輯電路時序邏輯電路同步時序邏輯電路同步時序邏輯電路異步時序邏輯電路異步時序邏輯電路寄存器、移位寄存器、計數(shù)器、序列信號發(fā)生器寄存器、移位寄存器、計數(shù)器、序列信號發(fā)生器一、傳統(tǒng)設(shè)計方法一、傳統(tǒng)設(shè)計方法(1)首先確

3、定可用的元器件;)首先確定可用的元器件;(2)根據(jù)這些器件進(jìn)行邏輯設(shè)計,完成各模塊;)根據(jù)這些器件進(jìn)行邏輯設(shè)計,完成各模塊;(3)將各模塊進(jìn)行連接,最后形成系統(tǒng);)將各模塊進(jìn)行連接,最后形成系統(tǒng);(4)而后經(jīng)調(diào)試、測量觀察整個系統(tǒng)是否達(dá)到規(guī)定)而后經(jīng)調(diào)試、測量觀察整個系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。的性能指標(biāo)。 傳統(tǒng)的設(shè)計方法是基于傳統(tǒng)的設(shè)計方法是基于中小規(guī)模集成電路器件進(jìn)中小規(guī)模集成電路器件進(jìn)行設(shè)計(如行設(shè)計(如74系列及其改進(jìn)系列、系列及其改進(jìn)系列、CC4000系列、系列、74HC系列等都屬于通用型數(shù)字集成電路),系列等都屬于通用型數(shù)字集成電路),而而且是采用自底向上進(jìn)行設(shè)計:且是采用自底向上

4、進(jìn)行設(shè)計:EDA(Electronics Design Automation)即電子設(shè)計)即電子設(shè)計自動化技術(shù),是利用計算機(jī)工作平臺,從事電子系自動化技術(shù),是利用計算機(jī)工作平臺,從事電子系統(tǒng)和電路設(shè)計的一項技術(shù)。統(tǒng)和電路設(shè)計的一項技術(shù)。EDA技術(shù)為電子系統(tǒng)設(shè)計帶來了這樣的變化:技術(shù)為電子系統(tǒng)設(shè)計帶來了這樣的變化:(1)設(shè)計效率提高,設(shè)計周期縮短;)設(shè)計效率提高,設(shè)計周期縮短;(2)設(shè)計質(zhì)量提高;)設(shè)計質(zhì)量提高;(3)設(shè)計成本降低;)設(shè)計成本降低;(4)能更充分地發(fā)揮設(shè)計人員的創(chuàng)造性;)能更充分地發(fā)揮設(shè)計人員的創(chuàng)造性;(5)設(shè)計成果的重用性大大提高,省去了不必要的)設(shè)計成果的重用性大大提高,省去

5、了不必要的重復(fù)勞動。重復(fù)勞動。 二、二、EDA設(shè)計方法設(shè)計方法 自頂向下的設(shè)計方法自頂向下的設(shè)計方法數(shù)字電路的數(shù)字電路的EDA設(shè)計是基于設(shè)計是基于PLD進(jìn)行設(shè)計的,支持自進(jìn)行設(shè)計的,支持自頂向下的設(shè)計方法:頂向下的設(shè)計方法:(1)首先從系統(tǒng)設(shè)計入手,在頂層進(jìn)行功能劃分和)首先從系統(tǒng)設(shè)計入手,在頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計;結(jié)構(gòu)設(shè)計;(2)然后再逐級設(shè)計底層的結(jié)構(gòu);)然后再逐級設(shè)計底層的結(jié)構(gòu);(3)并在系統(tǒng)級采用仿真手段驗證設(shè)計的正確性;)并在系統(tǒng)級采用仿真手段驗證設(shè)計的正確性;(4)最后完成整個系統(tǒng)的設(shè)計,實現(xiàn)從設(shè)計、仿真、)最后完成整個系統(tǒng)的設(shè)計,實現(xiàn)從設(shè)計、仿真、測試一體化。測試一體化。 傳

6、統(tǒng)設(shè)計方法傳統(tǒng)設(shè)計方法 vs EDA設(shè)計方法設(shè)計方法 傳統(tǒng)設(shè)計方法傳統(tǒng)設(shè)計方法EDA設(shè)計方法設(shè)計方法自底向上自底向上手動設(shè)計手動設(shè)計軟硬件分離軟硬件分離原理圖設(shè)計方式原理圖設(shè)計方式系統(tǒng)功能固定系統(tǒng)功能固定不易仿真不易仿真難測試修改難測試修改模塊難移植共享模塊難移植共享設(shè)計周期長設(shè)計周期長自頂向上自頂向上自動設(shè)計自動設(shè)計打破軟硬件屏障打破軟硬件屏障原理圖、原理圖、HDL等設(shè)計方式等設(shè)計方式系統(tǒng)功能易改系統(tǒng)功能易改易仿真易仿真易測試修改易測試修改模塊可移植共享模塊可移植共享設(shè)計周期短設(shè)計周期短三、三、PLD器件器件 (一)出現(xiàn)的背景(一)出現(xiàn)的背景 如果能把所設(shè)計的數(shù)字系統(tǒng)做成如果能把所設(shè)計的數(shù)字

7、系統(tǒng)做成一片大規(guī)模集成一片大規(guī)模集成電路電路,則不僅能減小電路的,則不僅能減小電路的體積體積、重量重量、功耗功耗,而且,而且會使電路的會使電路的可靠性可靠性大為提高。大為提高。 為某種專門用途而設(shè)計的集成電路叫做專用集成為某種專門用途而設(shè)計的集成電路叫做專用集成電路,即所謂的電路,即所謂的ASIC(Application Specific Integrated Circuit的縮寫)。的縮寫)。 在用量不大的情況下,設(shè)計和制造這樣的專用集成在用量不大的情況下,設(shè)計和制造這樣的專用集成電路成本很高,而且設(shè)計、制造的周期也較長。電路成本很高,而且設(shè)計、制造的周期也較長。 可編程邏輯器件的研制成功為

8、解決上述問題提供了可編程邏輯器件的研制成功為解決上述問題提供了比較理想的途徑。比較理想的途徑。 (二)(二)PLD概述概述PLD是可編程邏輯器件(是可編程邏輯器件(Programmable Logic Device)的英文縮寫。的英文縮寫??删幊踢壿嬈骷且环N可編程邏輯器件是一種數(shù)字集成電路的半成品數(shù)字集成電路的半成品,在其,在其芯片上芯片上按一定排列方式按一定排列方式集成了集成了大量的邏輯門大量的邏輯門和和觸發(fā)器觸發(fā)器等基本邏輯元件。等基本邏輯元件。通過編程可以設(shè)置其邏輯功能。通過編程可以設(shè)置其邏輯功能。PLD編程編程:利用利用開發(fā)工具開發(fā)工具對對PLD進(jìn)行加工,即按設(shè)計要求將進(jìn)行加工,即按

9、設(shè)計要求將這些這些片內(nèi)的元件連接片內(nèi)的元件連接起來,使之完成某個邏輯電路或系統(tǒng)起來,使之完成某個邏輯電路或系統(tǒng)的功能,成為一個專用集成電路(的功能,成為一個專用集成電路(ASICApplication Specific Integrated Circuit)。)。 PLD開發(fā)系統(tǒng)開發(fā)系統(tǒng)PLD開發(fā)系統(tǒng)包括硬件和軟件兩部分。開發(fā)系統(tǒng)包括硬件和軟件兩部分。硬件部分:計算機(jī)、下載電纜或編程器;硬件部分:計算機(jī)、下載電纜或編程器;軟件部分:集成開發(fā)系統(tǒng)。軟件部分:集成開發(fā)系統(tǒng)。 Altera公司:公司:Maxplus 、 Quartus Xilinx公司:公司:Foundation、 ISE Latt

10、ice公司:公司:Synario System、ispEXPERT System四、四、PLD設(shè)計流程設(shè)計流程設(shè)計準(zhǔn)備設(shè)計準(zhǔn)備設(shè)計輸入設(shè)計輸入設(shè)計處理設(shè)計處理器件編程器件編程功能仿真功能仿真時序仿真時序仿真器件測試器件測試PLD設(shè)計準(zhǔn)備設(shè)計準(zhǔn)備在設(shè)計之前,首先要進(jìn)行方案論證和器件選擇等設(shè)計在設(shè)計之前,首先要進(jìn)行方案論證和器件選擇等設(shè)計準(zhǔn)備工作。準(zhǔn)備工作。 設(shè)計者首先要根據(jù)任務(wù)要求,判斷系統(tǒng)的可行性。設(shè)計者首先要根據(jù)任務(wù)要求,判斷系統(tǒng)的可行性。系統(tǒng)的可行性要受到邏輯要求合理性、成本、開發(fā)條系統(tǒng)的可行性要受到邏輯要求合理性、成本、開發(fā)條件、器件供應(yīng)等方面的約束。件、器件供應(yīng)等方面的約束。 若系統(tǒng)可

11、行,則根據(jù)系統(tǒng)所完成的功能及復(fù)雜程若系統(tǒng)可行,則根據(jù)系統(tǒng)所完成的功能及復(fù)雜程度,對器件本身的資源和成本、工作速度及連線的可度,對器件本身的資源和成本、工作速度及連線的可布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計方案和合適的布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計方案和合適的器件類型。器件類型。 設(shè)計輸入設(shè)計輸入 將所設(shè)計的電路的邏輯功能按照開發(fā)系統(tǒng)要求的形將所設(shè)計的電路的邏輯功能按照開發(fā)系統(tǒng)要求的形式表達(dá)出來的過程稱為設(shè)計輸入。式表達(dá)出來的過程稱為設(shè)計輸入。 通常,設(shè)計輸入有如下三種方式:通常,設(shè)計輸入有如下三種方式: (1)原理圖輸入方式)原理圖輸入方式 適用于對系統(tǒng)及各部分電路很熟悉的場合。適用于對系統(tǒng)

12、及各部分電路很熟悉的場合。 (2)硬件描述語言輸入方式)硬件描述語言輸入方式 硬件描述語言是用文本方式描述設(shè)計,硬件描述語硬件描述語言是用文本方式描述設(shè)計,硬件描述語言有言有ABEL、AHDL、VHDL、Verilog等,其中等,其中VHDL和和Verilog已成為已成為IEEE標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。 (3)波形輸入方式)波形輸入方式設(shè)計處理設(shè)計處理n邏輯優(yōu)化邏輯優(yōu)化 把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實現(xiàn)的形式,把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實現(xiàn)的形式,優(yōu)化使設(shè)計所占用的資源最少。優(yōu)化使設(shè)計所占用的資源最少。 n邏輯綜合邏輯綜合 根據(jù)設(shè)計描述,對給定的硬件結(jié)構(gòu)組件,最終獲根據(jù)設(shè)計描述,對給定的硬件結(jié)構(gòu)組件

13、,最終獲得門級電路甚至更底層的電路描述文件,即將多得門級電路甚至更底層的電路描述文件,即將多個模塊化設(shè)計文件合并為一個網(wǎng)表文件。個模塊化設(shè)計文件合并為一個網(wǎng)表文件。n適配適配 確定優(yōu)化后的邏輯能否與器件中的宏單元和確定優(yōu)化后的邏輯能否與器件中的宏單元和I/O單單元適配。元適配。n分割分割 將大的設(shè)計分割為多個便于器件內(nèi)部資源實現(xiàn)的將大的設(shè)計分割為多個便于器件內(nèi)部資源實現(xiàn)的邏輯小塊的形式。邏輯小塊的形式。設(shè)計校驗設(shè)計校驗設(shè)計校驗過程包括功能仿真和時序仿真。設(shè)計校驗過程包括功能仿真和時序仿真。 n功能仿真功能仿真n時序仿真時序仿真器件編程器件編程 器件編程就是將開發(fā)系統(tǒng)生成的目標(biāo)文件下載器件編程就

14、是將開發(fā)系統(tǒng)生成的目標(biāo)文件下載到可編程邏輯器件中,到可編程邏輯器件中,來定義內(nèi)部模塊的邏輯來定義內(nèi)部模塊的邏輯功能以及它們的相互連接關(guān)系。功能以及它們的相互連接關(guān)系。 兩種編程方式:兩種編程方式:n編程器編程器n下載電纜下載電纜PLD開發(fā)系統(tǒng)開發(fā)系統(tǒng)PLD開發(fā)系統(tǒng)包括硬件和軟件兩部分。開發(fā)系統(tǒng)包括硬件和軟件兩部分。硬件部分:計算機(jī)、下載電纜或編程器;硬件部分:計算機(jī)、下載電纜或編程器;軟件部分:集成開發(fā)系統(tǒng)。軟件部分:集成開發(fā)系統(tǒng)。 Altera公司:公司:Maxplus 、 Quartus Xilinx公司:公司:Foundation、 ISE Lattice公司:公司:Synario Sy

15、stem、ispEXPERT System設(shè)計舉例設(shè)計舉例設(shè)計內(nèi)容:設(shè)計內(nèi)容:十進(jìn)制計數(shù)器電路設(shè)計。十進(jìn)制計數(shù)器電路設(shè)計。PLD器件:器件:ACEX1K系列的系列的EP1K30QC208。開發(fā)系統(tǒng):開發(fā)系統(tǒng):MAX+plus系統(tǒng)。系統(tǒng)。編程方式:下載電纜。編程方式:下載電纜。實驗下載板實驗下載板設(shè)計過程設(shè)計過程1、設(shè)計輸入、設(shè)計輸入 VHDL 演示演示12、邏輯驗證、邏輯驗證 演示演示23、設(shè)計處理、設(shè)計處理 引腳設(shè)定引腳設(shè)定 演示演示34、器件編程、器件編程 連接下載電纜連接下載電纜 演示演示4三、三、PLD電路設(shè)計的特點電路設(shè)計的特點1、設(shè)計簡單,方便;、設(shè)計簡單,方便;2、電路系統(tǒng)可以集

16、成在一片芯片上;、電路系統(tǒng)可以集成在一片芯片上;3、電路設(shè)計不依賴于器件進(jìn)行設(shè)計;、電路設(shè)計不依賴于器件進(jìn)行設(shè)計;4、電路系統(tǒng)很容易完善和升級。、電路系統(tǒng)很容易完善和升級。器件選擇:(器件選擇:(1)電路系統(tǒng)所完成的功能及復(fù)雜程度;)電路系統(tǒng)所完成的功能及復(fù)雜程度; (2)器件本身的資源和成本、性能參數(shù)、)器件本身的資源和成本、性能參數(shù)、 器件編程工藝等方面進(jìn)行權(quán)衡。器件編程工藝等方面進(jìn)行權(quán)衡。 VHDL是非常高速集成電路硬件描述語言是非常高速集成電路硬件描述語言 ( (Very High speed Integrated Circuit Hardware Description Langua

17、ge)的英文縮寫。的英文縮寫。 五、文本設(shè)計輸入五、文本設(shè)計輸入VHDL程序設(shè)計程序設(shè)計語法和風(fēng)格語法和風(fēng)格:(1 1)類似與現(xiàn)代高級編程語言,如)類似與現(xiàn)代高級編程語言,如C語言。語言。(2)VHDL描述的是硬件,它包含許多硬件特描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。有的結(jié)構(gòu)。VHDL設(shè)計設(shè)計 VS 電路圖設(shè)計電路圖設(shè)計VHDL與電路圖設(shè)計電路的方式不同,與電路圖設(shè)計電路的方式不同,和電路圖設(shè)計方式相比:和電路圖設(shè)計方式相比:(1)易于修改;)易于修改;(2)設(shè)計能力更強(qiáng);)設(shè)計能力更強(qiáng);(3)VHDL語言很方便:獨立于器件設(shè)計;語言很方便:獨立于器件設(shè)計;相同的程序代碼可以用于不同廠家生

18、產(chǎn)的相同的程序代碼可以用于不同廠家生產(chǎn)的器件。器件。 VHDL程序的基本結(jié)構(gòu)程序的基本結(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程序程序 VHDL程序的基

19、本結(jié)構(gòu)程序的基本結(jié)構(gòu)n(1)LIBRARY和和PACHAGE聲明區(qū);聲明區(qū);n(2)ENTITY定義區(qū);定義區(qū);n(3)ARCHITECTURE定義區(qū);定義區(qū);Library(庫)是用于存放預(yù)先編譯好的(庫)是用于存放預(yù)先編譯好的Package(程序(程序包)。包)。Package (程序包)中定義了基本(程序包)中定義了基本的常數(shù),數(shù)據(jù)類型,的常數(shù),數(shù)據(jù)類型,元件及子程序等元件及子程序等。 作用:聲明在實體和結(jié)構(gòu)體定義中將用到的作用:聲明在實體和結(jié)構(gòu)體定義中將用到的 數(shù)據(jù)類型、元件或子程序等。數(shù)據(jù)類型、元件或子程序等。聲明格式:聲明格式: Library 庫名庫名; Use 庫名庫名. PA

20、CKAGE名名. .All;(1)LIBRARY和和PACKAGE聲明區(qū)聲明區(qū) 作用:作用: ENTITY(實體)用于定義電路的(實體)用于定義電路的外觀,即外觀,即I/O端口的類型和數(shù)量。端口的類型和數(shù)量。 定義格式:定義格式:Entity 實體名 is Port( a : in bit; b : in bit; c : out bit);End 實體名; ;(2)ENTITY定義區(qū)定義區(qū)端口名端口名數(shù)據(jù)類型數(shù)據(jù)類型端口模式端口模式端口模式端口模式(MODE)有以下幾種類型: IN ;OUT;INOUT ;BUFFER 端口模式可用下圖說明:(黑框代表一個設(shè)計或模塊) IN OUT BUFF

21、ER INOUT(2)ENTITY定義區(qū)定義區(qū)(3)ARCHITECTURE定義區(qū)定義區(qū) 實體的實現(xiàn)。即實體的實現(xiàn)。即說明電路執(zhí)行什么動作或?qū)崿F(xiàn)功能。說明電路執(zhí)行什么動作或?qū)崿F(xiàn)功能。定義格式:定義格式: Architecture 結(jié)構(gòu)體名結(jié)構(gòu)體名 of 實體名實體名 is 聲明語句;聲明語句;(內(nèi)部信號、變量、常數(shù),元件,子程序聲明內(nèi)部信號、變量、常數(shù),元件,子程序聲明) Begin并行描述語句;并行描述語句;End 結(jié)構(gòu)體名;結(jié)構(gòu)體名;二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例 abc電路真值表電路真值表abc000100010111二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例Librar

22、y std; Use std.standard.all;Entity and2 is Port( a : in bit; b : in bit; c : out bit);End and2;-實體定義結(jié)束。實體定義結(jié)束。 雙減號雙減號-為為VHDL程序的注釋符,類似程序的注釋符,類似C語言中的語言中的/注釋符。注釋符。二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例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; 符

23、號符號=為信號直接賦值符。為信號直接賦值符。 End Na; -結(jié)構(gòu)體結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c = a and b; -and 為邏輯與操作為邏輯與操作End Nb; -結(jié)構(gòu)體結(jié)構(gòu)體Nb第一章第一章 VHDL的程序結(jié)構(gòu)和軟件操作的程序結(jié)構(gòu)和軟件操作 1-1 VHDL程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)1-2 Max+plus的操作的操作1-1 VHDL程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)include “stdio.h”; include “math.h”;int main(void) int a,b,c; a=8; b=9; c=a+b; return

24、 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程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)n(1)LIBRARY和和PACHAGE聲明區(qū);聲明區(qū);n(2)ENTITY定義區(qū);定義區(qū);n(3)ARCHITECTURE定義區(qū);定義區(qū);n(4)CONFIGURATION定義區(qū)。定義區(qū)。Library(庫)是用于存放預(yù)先編譯好的

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

26、數(shù)量。 定義格式:定義格式:Entity 實體名 is Port( a : in bit; b : in bit; c : out bit);End 實體名; ;(2)ENTITY定義區(qū)定義區(qū)端口名端口名數(shù)據(jù)類型數(shù)據(jù)類型端口模式端口模式(2)ENTITY定義區(qū)定義區(qū)標(biāo)識符的定義原則:標(biāo)識符的定義原則:(1)標(biāo)識符由字母、數(shù)字和下劃線組成,)標(biāo)識符由字母、數(shù)字和下劃線組成,a7_a7_;(2)在標(biāo)識符不區(qū)分大小寫,)在標(biāo)識符不區(qū)分大小寫,ab和和AB是一樣的;是一樣的;(3)第一個字符必須是字母,即)第一個字符必須是字母,即a666a666;(4)不允許有兩個連續(xù)的下劃線,)不允許有兩個連續(xù)的下

27、劃線,a_ba_b錯誤;錯誤;(5)末尾不能是下劃線,)末尾不能是下劃線,mname_mname_錯誤;錯誤;(6)標(biāo)識符不能和關(guān)鍵字相同)標(biāo)識符不能和關(guān)鍵字相同, ,如如EntityEntity, ,isis等。等。端口模式端口模式(MODE)有以下幾種類型: IN ;OUT;INOUT ;BUFFER 端口模式可用下圖說明:(黑框代表一個設(shè)計或模塊) IN OUT BUFFER INOUT(2)ENTITY定義區(qū)定義區(qū)(3)ARCHITECTURE定義區(qū)定義區(qū) 定義了實體的實現(xiàn)。即電路的具體描述定義了實體的實現(xiàn)。即電路的具體描述,說明電路執(zhí),說明電路執(zhí)行什么動作或?qū)崿F(xiàn)功能。行什么動作或?qū)崿F(xiàn)

28、功能。定義格式:定義格式: Architecture 結(jié)構(gòu)體名結(jié)構(gòu)體名 of 實體名實體名 is 聲明語句;聲明語句;(內(nèi)部信號、變量、常數(shù),元件,子程序聲明內(nèi)部信號、變量、常數(shù),元件,子程序聲明) Begin并行描述語句;并行描述語句;End 結(jié)構(gòu)體名;結(jié)構(gòu)體名;(4)CONFIGURATION定義區(qū)定義區(qū) 一個完整一個完整VHDL電路設(shè)計必須有電路設(shè)計必須有一個實體一個實體和和對應(yīng)的結(jié)構(gòu)體對應(yīng)的結(jié)構(gòu)體,即,即實體和結(jié)構(gòu)體對實體和結(jié)構(gòu)體對構(gòu)成一個構(gòu)成一個完整的完整的VHDL設(shè)計。設(shè)計。 一個實體可對應(yīng)一個結(jié)構(gòu)體或多個結(jié)構(gòu)體一個實體可對應(yīng)一個結(jié)構(gòu)體或多個結(jié)構(gòu)體,即一個實體可以有不同的描述方式。

29、,即一個實體可以有不同的描述方式。作用:作用:當(dāng)實體有多個結(jié)構(gòu)體時,當(dāng)實體有多個結(jié)構(gòu)體時,系統(tǒng)默認(rèn)實體選系統(tǒng)默認(rèn)實體選用最后一個結(jié)構(gòu)體,用最后一個結(jié)構(gòu)體,利用利用CONFIGURATION語句可以任意選擇采用語句可以任意選擇采用哪一個結(jié)構(gòu)體。哪一個結(jié)構(gòu)體。 (4)CONFIGURATION定義區(qū)定義區(qū)定義格式:定義格式:Configuration 配置名配置名 of 實體名實體名 isfor 選用的結(jié)構(gòu)體名選用的結(jié)構(gòu)體名end for;end configuration 配置名配置名 ;二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例 abc電路真值表電路真值表abc000100010111二輸入

30、與門電路設(shè)計范例二輸入與門電路設(shè)計范例Library std; Use std.standard.all;Entity and2 is Port( a : in bit; b : in bit; c : out bit);End and2;-實體定義結(jié)束。實體定義結(jié)束。 雙減號雙減號-為為VHDL程序的注釋符,類似程序的注釋符,類似C語言中的語言中的/注釋符。注釋符。二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例Architecture Na of and2 is Begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 else 0 whe

31、n a=0 and b = 1 else 1; 符號符號=為信號直接賦值符。為信號直接賦值符。 End Na; -結(jié)構(gòu)體結(jié)構(gòu)體Na Architecture Nb of and2 is Begin c = a and b; -and 為邏輯與操作為邏輯與操作End Nb; -結(jié)構(gòu)體結(jié)構(gòu)體Nb二輸入與門電路設(shè)計范例二輸入與門電路設(shè)計范例Configuration s1 of and2 isfor naend for;end configuration s1;-結(jié)構(gòu)體配置結(jié)束。結(jié)構(gòu)體配置結(jié)束。1-2 Max+plus系統(tǒng)的操作系統(tǒng)的操作 Max+plus開發(fā)工具是美國開發(fā)工具是美國Altera公司

32、自行設(shè)公司自行設(shè)計的一種軟件工具,其全稱為計的一種軟件工具,其全稱為Multiple Array Matrix and Programmable Logic User System。 它具有它具有原理圖輸入原理圖輸入和和文本輸入文本輸入(采用硬件描述(采用硬件描述語言)兩種輸入手段,利用該工具所配備的語言)兩種輸入手段,利用該工具所配備的編輯編輯、編譯編譯、仿真仿真、時序分析時序分析、芯片編程芯片編程等功能,將設(shè)計等功能,將設(shè)計電路圖或電路描述程序變成基本的邏輯單元寫入到電路圖或電路描述程序變成基本的邏輯單元寫入到可編程的芯片中(如可編程的芯片中(如CPLD或或FPGA芯片),作成芯片),作成

33、ASIC芯片。它是芯片。它是EDA設(shè)計中不可缺少的一種工具。設(shè)計中不可缺少的一種工具。 下面我們介紹利用下面我們介紹利用Max+plus 系統(tǒng)如何實現(xiàn)如下操作:系統(tǒng)如何實現(xiàn)如下操作:(1)如何編寫)如何編寫VHDL程序(使用程序(使用Text Editor););(2)如何編譯)如何編譯VHDL程序(使用程序(使用Compiler););(3)如何仿真驗證)如何仿真驗證VHDL程序(使用程序(使用Waveform Editor,Simulator););(4)如何進(jìn)行芯片的時序分析(使用)如何進(jìn)行芯片的時序分析(使用Timing Analyzer););(5)如何安排芯片腳位(使用)如何安排芯

34、片腳位(使用Floorplan Editor););(6)如何下載程序至芯片(使用)如何下載程序至芯片(使用Programmer)。)。1-2 Max+plus系統(tǒng)的操作系統(tǒng)的操作(1)如何編寫)如何編寫VHDL程序程序a. 打開文本編輯器;打開文本編輯器;File/new/Text editor fileb. 編寫編寫VHDL程序;程序;c. 保存文件,保存文件,文件名和定義的實體名必文件名和定義的實體名必須相同,須相同,文件擴(kuò)展名為文件擴(kuò)展名為VHD,文件文件存盤的目錄不應(yīng)是根目錄或桌面,建議存存盤的目錄不應(yīng)是根目錄或桌面,建議存放在放在Max2work或或Maxplus2目錄,或其子目錄

35、,或其子目錄目錄 。(2)如何編譯)如何編譯VHDL程序程序a. 打開需要編譯的文件;打開需要編譯的文件;b.設(shè)置工程到目前打開的文件設(shè)置工程到目前打開的文件 ; File/Project/Set Project to Current File, c.c.打開編譯器;打開編譯器;點擊主菜單點擊主菜單MAX+plus/Compiler選項。選項。 d. 選定選定VHDLVHDL源文件的版本源文件的版本 ;Interfaces/VHDL Netlist Reader Settings e. 打開編譯器進(jìn)行編譯。打開編譯器進(jìn)行編譯。(3)如何仿真驗證)如何仿真驗證VHDL程序程序a. 打開波形編輯器

36、(打開波形編輯器(Waveform Editor Waveform Editor ) ;b. 確定仿真持續(xù)時間(確定仿真持續(xù)時間(File/End Time););c. 將輸入輸出端口名選入將輸入輸出端口名選入波形編輯器;波形編輯器;d. 編輯輸入信號波形編輯輸入信號波形 ;e. 保存仿真波形文件保存仿真波形文件 ;f. 打開仿真器打開仿真器MAX+plusSimulator進(jìn)行仿真。在進(jìn)行仿真。在仿真結(jié)束后打開仿真波形文件(點擊右下角的仿真結(jié)束后打開仿真波形文件(點擊右下角的Open SCF按鈕)即可以顯示仿真結(jié)果。按鈕)即可以顯示仿真結(jié)果。(4)如何進(jìn)行芯片的時序分析)如何進(jìn)行芯片的時序分

37、析a. 選擇要下載的器件型號選擇要下載的器件型號 ; 點擊主菜單的點擊主菜單的Assign/Device項得到項得到Device對對話框。在話框。在Device Family框中選擇芯片系列,框中選擇芯片系列,在在Devices選擇框下選擇具體的芯片名,最后選擇框下選擇具體的芯片名,最后點擊點擊OK按鈕按鈕 。b. 再編譯一次;再編譯一次;c. 打開時序分析器(打開時序分析器(Timing Analyzer ););d. 點擊點擊Start進(jìn)行時序分析。進(jìn)行時序分析。(5)如何安排芯片腳位)如何安排芯片腳位a.打開芯片腳位設(shè)置窗口;點擊主菜單打開芯片腳位設(shè)置窗口;點擊主菜單Assign/ Pi

38、n/Location/Chip,出現(xiàn)腳位設(shè)置對話框;,出現(xiàn)腳位設(shè)置對話框; ;b.將實體定義的端口名字和下載芯片的管腳進(jìn)行具體對將實體定義的端口名字和下載芯片的管腳進(jìn)行具體對應(yīng);在應(yīng);在Node Name框中輸入我們定義的實體端口名字,框中輸入我們定義的實體端口名字,然后在然后在Pin列表選項框中輸入下載芯片的管腳序號,再列表選項框中輸入下載芯片的管腳序號,再點擊對話框右下角的點擊對話框右下角的Add按鈕,將所有端口設(shè)置完成按鈕,將所有端口設(shè)置完成以后,點擊以后,點擊Ok按鈕,則實現(xiàn)實體端口和下載芯片的管按鈕,則實現(xiàn)實體端口和下載芯片的管腳的對應(yīng);腳的對應(yīng); c. 再編譯一次,將生成可以下載的

39、文件(再編譯一次,將生成可以下載的文件(And2.Sof)。)。(6)如何下載程序至芯片)如何下載程序至芯片a. 將下載電纜與計算機(jī)并口相連,然后給芯片通電將下載電纜與計算機(jī)并口相連,然后給芯片通電 ;b. 打開編程器打開編程器Programmer ; Options/Hardware Setup,在,在Hardware Type選擇選擇ByteBlaster(MV)方式,則在)方式,則在Parallel Port處顯處顯示示LPT1,單擊,單擊OK鈕返回鈕返回Programmer窗口。窗口。 c.下載方式選擇下載方式選擇 ; d. 選擇下載的芯片類型和要下載的文件(選擇選擇下載的芯片類型和要

40、下載的文件(選擇JTAG/Muti Devic JTAG Chain Setup)。)。e. 點擊點擊Configure進(jìn)行下載,進(jìn)行下載,將程序?qū)懭胄酒袑⒊绦驅(qū)懭胄酒?。第二章第二章 數(shù)據(jù)類型與數(shù)據(jù)對象的定義數(shù)據(jù)類型與數(shù)據(jù)對象的定義n2-1 數(shù)據(jù)類型數(shù)據(jù)類型n2-2 數(shù)據(jù)對象的定義數(shù)據(jù)對象的定義n2-3 信號運算符信號運算符n2-4 信號屬性信號屬性2-1 數(shù)據(jù)類型數(shù)據(jù)類型在在VHDL程序中,我們經(jīng)常會遇到這樣的語句:程序中,我們經(jīng)常會遇到這樣的語句:Signal A : std_logic;Variable B : std_logic_vector(7 downto 0); Const

41、ant C : integer;數(shù)據(jù)對象類型數(shù)據(jù)對象類型數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)對象名數(shù)據(jù)對象名2-1-1 邏輯數(shù)據(jù)邏輯數(shù)據(jù)類型類型 (1)布爾代數(shù)()布爾代數(shù)(Boolean)型)型 ; (2)位()位(Bit);); (3)位數(shù)組類型()位數(shù)組類型(Bit_Vector)在在std庫的庫的standard程序包中進(jìn)行定義。程序包中進(jìn)行定義。 type BIT_VECTOR is array (NATURAL range ) of BIT; type BIT is (0, 1); type BOOLEAN is (FALSE, TRUE) ; (4)標(biāo)準(zhǔn)邏輯型()標(biāo)準(zhǔn)邏輯型(Std_Logic)

42、;); 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;不必理會;不必理會 );(5)標(biāo)準(zhǔn)邏輯數(shù)組類型()標(biāo)準(zhǔn)邏輯數(shù)組類型(Std_Logic_vector););在在ieee庫的

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

44、 subtype NATURAL is range 0 to INTEGERHigh;(2)實數(shù)()實數(shù)(Real)(3)有符號數(shù)()有符號數(shù)(Signed) 無符號數(shù)(無符號數(shù)(Unsigned)在在ieee庫的庫的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 的最高位為符號位,其余位為

45、數(shù)值位,數(shù)值位為的最高位為符號位,其余位為數(shù)值位,數(shù)值位為補(bǔ)碼形式。如:符號數(shù)補(bǔ)碼形式。如:符號數(shù)”1001”表示表示-7。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity data isport(a,b: in unsigned(3 downto 0); -a,b: in signed(3 downto 0); c: out std_logic);end data;architecture m1 of data isbegin c=1 when ab else 0;end m1;當(dāng)定義成無

46、符號類型時,若當(dāng)定義成無符號類型時,若a=”1000”,b=0001, 即即a=8,b=1則結(jié)果則結(jié)果c=0;當(dāng)定義成有符號類型時,若當(dāng)定義成有符號類型時,若a=”1000”,b=0001, 則則a=-8,b=1,則結(jié)果,則結(jié)果c=1。2-1-3 列舉和數(shù)組數(shù)據(jù)類型列舉和數(shù)組數(shù)據(jù)類型 (1)列舉數(shù)據(jù)類型()列舉數(shù)據(jù)類型(Enumerated Types)定義格式:定義格式:Type 列舉名稱列舉名稱 is (元素(元素1,元素,元素2,););(2)數(shù)組數(shù)據(jù)類型()數(shù)組數(shù)據(jù)類型(Array Types)定義格式:定義格式:Type 數(shù)組名稱數(shù)組名稱 is Array(range ) of 數(shù)據(jù)

47、類型;數(shù)據(jù)類型;2-1-4 數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換 在在VHDL語言里,不同類型的數(shù)據(jù)信號之間不能語言里,不同類型的數(shù)據(jù)信號之間不能互相賦值。當(dāng)需要不同類型數(shù)據(jù)之間傳遞信息時,就互相賦值。當(dāng)需要不同類型數(shù)據(jù)之間傳遞信息時,就需要需要類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)將其中的一種類型數(shù)據(jù)轉(zhuǎn)換為另一將其中的一種類型數(shù)據(jù)轉(zhuǎn)換為另一中數(shù)據(jù)類型后,再進(jìn)行信號的傳遞。中數(shù)據(jù)類型后,再進(jìn)行信號的傳遞。例如:例如:Signal Y : Std_logic_vector(7 downto 0); Signal X : Integer range 0 to 255; Y= CONV_STD_LOGIC_VECTOR(

48、X,8);轉(zhuǎn)換函數(shù)有兩個參數(shù),轉(zhuǎn)換函數(shù)有兩個參數(shù),被轉(zhuǎn)換的對象被轉(zhuǎn)換的對象和和轉(zhuǎn)換后轉(zhuǎn)換后的位數(shù)的位數(shù)。 常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)nCONV_INTEGER 將數(shù)據(jù)類型將數(shù)據(jù)類型 UNSIGNED, SIGNED轉(zhuǎn)換為轉(zhuǎn)換為INTEGER 類型類型. nCONV_UNSIGNED 將數(shù)據(jù)類型將數(shù)據(jù)類型INTEGER, SIGNED轉(zhuǎn)換為轉(zhuǎn)換為UNSIGNED 類型類型.nCONV_SIGNED 將數(shù)據(jù)類型將數(shù)據(jù)類型INTEGER, UNSIGNED轉(zhuǎn)換為轉(zhuǎn)換為SIGNED類型類型.nCONV_STD_LOGIC_VECTOR 將數(shù)據(jù)類型將數(shù)據(jù)類型INTEGER, UNSIG

49、NED, SIGNED, STD_LOGIC轉(zhuǎn)換為轉(zhuǎn)換為STD_LOGIC_VECTOR 類類型型. 在庫在庫ieee的程序包的程序包std_logic_arith中定義中定義2-2 數(shù)據(jù)對象的定義數(shù)據(jù)對象的定義常用的數(shù)據(jù)對象有三種:常用的數(shù)據(jù)對象有三種:常數(shù)(常數(shù)(Constant)信號(信號(Signal)變量(變量(Variable) 2-2-1 常數(shù)的定義常數(shù)的定義(1)將數(shù)據(jù)對象定義為常數(shù),一方面希望該數(shù)據(jù))將數(shù)據(jù)對象定義為常數(shù),一方面希望該數(shù)據(jù)對象的值不會被改變;另一方面,為了提高程序?qū)ο蟮闹挡粫桓淖?;另一方面,為了提高程序的可讀性。的可讀性。(2)常數(shù)為全局量。)常數(shù)為全局量。

50、(3)常數(shù)在程序包說明、實體說明、結(jié)構(gòu)體描述、)常數(shù)在程序包說明、實體說明、結(jié)構(gòu)體描述、過程說明、函數(shù)調(diào)用中使用。過程說明、函數(shù)調(diào)用中使用。(4)常數(shù)的定義格式:)常數(shù)的定義格式: Constant 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型 :=常數(shù)值常數(shù)值; 如:如:Constant D1: Integer := 3;注意!常數(shù)定義的同時進(jìn)行賦初值。注意!常數(shù)定義的同時進(jìn)行賦初值。常數(shù)的應(yīng)用示例常數(shù)的應(yīng)用示例library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; -必需定義必需定義+entity exam1

51、is port (ip : in std_logic_vector(3 downto 0); op : out std_logic_vector(3 downto 0);end exam1; architecture m1 of exam1 isconstant num : integer := 6;beginop = ip + num;end m1; 2-2-2 信號的定義信號的定義(1)“信號信號”數(shù)據(jù)對象,代表電路內(nèi)部信號或連接線數(shù)據(jù)對象,代表電路內(nèi)部信號或連接線路,其在元件之間起互連作用。路,其在元件之間起互連作用。注意!信號定義的時候盡管可以直接賦初值,但系統(tǒng)往往忽略。注意!信號定義

52、的時候盡管可以直接賦初值,但系統(tǒng)往往忽略。建議信號對象定義后再進(jìn)行賦值。建議信號對象定義后再進(jìn)行賦值。(2)信號為全局量。)信號為全局量。(3)在實體說明、結(jié)構(gòu)體描述和程序包說明中使用。)在實體說明、結(jié)構(gòu)體描述和程序包說明中使用。(4)信號的定義格式:)信號的定義格式: Signal 信號名:數(shù)據(jù)類型信號名:數(shù)據(jù)類型 ;(5)信號賦值的語法格式為:)信號賦值的語法格式為:信號名信號名 = 表達(dá)式;表達(dá)式;如:如:Signal S1 : Std_logic_vector(3 Downto 0); S1 = “0000”;2-2-3 變量的定義變量的定義(1)“變量變量”數(shù)據(jù)對象,它用于對中間數(shù)據(jù)

53、的臨時存數(shù)據(jù)對象,它用于對中間數(shù)據(jù)的臨時存儲,并不一定代表電路的某一組件。儲,并不一定代表電路的某一組件。 注意!變量定義的時候盡管可以直接賦初值,但系統(tǒng)往往忽略。注意!變量定義的時候盡管可以直接賦初值,但系統(tǒng)往往忽略。建議變量對象定義后再進(jìn)行賦值。建議變量對象定義后再進(jìn)行賦值。(2)變量為局部量。)變量為局部量。(3)僅限于進(jìn)程()僅限于進(jìn)程(Process)或子程序中使用。)或子程序中使用。 (4)變量的定義格式:)變量的定義格式: Variable 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 ; (5)變量賦值的語法格式為:)變量賦值的語法格式為:目標(biāo)信號值目標(biāo)信號值:=表達(dá)式;表達(dá)式;如:如:V

54、ariable S1 : Std_logic_vector(3 Downto 0); S1 := “0000”;library ieee;use ieee.std_logic_1164.all;entity bcv isport (a,b,c : in std_logic;x,y : out std_logic);end bcv; architecture m2 of bcv isbeginprocess(a,b,c)variable d:std_logic; begin d:=a; x=c xor d; d:=b; y=c xor d; end process;end m2; ABCXY例一

55、例一結(jié)果:結(jié)果:x=c xor b, y=c xor b x=c xor a, y=c xor barchitecture m1 of bcv issignal d:std_logic;beginprocess(a,b,c) begin d=a; -ignored x=c xor d; d=b; y=c xor d; end process;end m1; library ieee;use ieee.std_logic_1164.all;Entity cmp isport( cp,ip : in std_logic; -cp為時鐘脈沖為時鐘脈沖 op,oq: out std_logic); -

56、ip為輸入信號為輸入信號end cmp;Architecture m1 of cmp issignal d:std_logic;beginprocess(cp)variable e:std_logic;begin if cpevent and cp=1 then d = ip; op = d; e := ip; oq = e ; end if;end process;end m1;例二例二 D觸發(fā)器觸發(fā)器在進(jìn)程中,信號賦值只有在過程在進(jìn)程中,信號賦值只有在過程結(jié)束時起作用,而變量賦值是立結(jié)束時起作用,而變量賦值是立即進(jìn)行的。即進(jìn)行的。2-2-4 信號和信號和變量的比較變量的比較 (1)信號和變

57、量的對應(yīng)關(guān)系不同:信號和變量的對應(yīng)關(guān)系不同:信號代表電路內(nèi)部信號或連信號代表電路內(nèi)部信號或連接線路;而變量則不是。接線路;而變量則不是。 (2)信號和變量聲明的位置不同信號和變量聲明的位置不同:信號聲明在子程序、進(jìn)程的外:信號聲明在子程序、進(jìn)程的外部;而變量聲明在子程序、進(jìn)程的內(nèi)部。部;而變量聲明在子程序、進(jìn)程的內(nèi)部。 (3)信號為全局量信號為全局量,而變量只在定義它的域中才可見而變量只在定義它的域中才可見。因此,。因此,變量不能在兩個進(jìn)程之間傳遞信息。變量不能在兩個進(jìn)程之間傳遞信息。 (4)在一個進(jìn)程中多次為一個信號賦值時,只有最后一個值會起在一個進(jìn)程中多次為一個信號賦值時,只有最后一個值會

58、起作用;而變量則不同,每次賦值都會改變它的值。作用;而變量則不同,每次賦值都會改變它的值。(5)賦值不同。賦值不同。在進(jìn)程中,信號賦值只有在進(jìn)程結(jié)束時起作用,在進(jìn)程中,信號賦值只有在進(jìn)程結(jié)束時起作用,而變量賦值是立即進(jìn)行的。而且賦值符號不同:信號賦值為而變量賦值是立即進(jìn)行的。而且賦值符號不同:信號賦值為“=”,變量賦值為,變量賦值為“:=”。Library ieee; Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;一位一位BCD碼的加法器碼的加法器Entity bcdadder is Port( a,b : in std

59、_logic_vector(3 downto 0); result : out std_logic_vector(4 downto 0);End bcdadder;Architecture Na of bcdadder is constant adjnum : integer:=6; -常數(shù)定義常數(shù)定義signal binadd : std_logic_vector(4 downto 0); -信號信號 Begin binadd9 then tmp:=adjnum; else tmp:=0; end if;result= binadd+tmp;end process;End Na;2-3 信號

60、信號運算符運算符 VHDL提供了四種類型運算符號:提供了四種類型運算符號:邏輯運算符邏輯運算符關(guān)系運算符關(guān)系運算符算術(shù)運算符算術(shù)運算符連接運算符連接運算符VHDL運算符運算符邏輯運算符邏輯運算符 and 邏輯與邏輯與or邏輯或邏輯或nand與非與非nor 或非或非xor 異或異或xnor同或同或not 邏輯非邏輯非上述邏輯運算在庫上述邏輯運算在庫ieee的程序包的程序包std_logic_1164中定義。中定義。 VHDL運算符運算符關(guān)系運算符關(guān)系運算符 =等于等于/= 不等于不等于小于小于大于大于= 大于或等于大于或等于 注:其中注:其中=操作符也用于表示信號的賦值操作。操作符也用于表示信號的賦值操作。上述運算在

溫馨提示

  • 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

提交評論