




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第八章第八章 超高速集成電路硬件超高速集成電路硬件 描述語言描述語言VHDLVHDL簡介8-1 VHDL語言的基本組成語言的基本組成8-2 VHDL數(shù)據(jù)類型和屬性數(shù)據(jù)類型和屬性8-3 VHDL的行為描述的行為描述8-4 VHDL的結(jié)構(gòu)描述的結(jié)構(gòu)描述小結(jié)小結(jié) 傳統(tǒng)的電路系統(tǒng)設(shè)計方法的步驟從狀態(tài)圖的簡化,傳統(tǒng)的電路系統(tǒng)設(shè)計方法的步驟從狀態(tài)圖的簡化,寫出最簡邏輯表達(dá)式,到繪出電路原理圖。這在不是寫出最簡邏輯表達(dá)式,到繪出電路原理圖。這在不是較大的電路系統(tǒng)中,工程師可以用一定的時間,了解較大的電路系統(tǒng)中,工程師可以用一定的時間,了解電路的原理。若電路系統(tǒng)非常龐大,工程師就不容易電路的原理。若電路系統(tǒng)非
2、常龐大,工程師就不容易在電路原理圖上了解電路的原理,而且對繪圖者也是在電路原理圖上了解電路的原理,而且對繪圖者也是一項(xiàng)非常煩瑣的工作。因此眾多軟件公司開發(fā)研制了一項(xiàng)非常煩瑣的工作。因此眾多軟件公司開發(fā)研制了具有自己特色的電路硬件描述語言(具有自己特色的電路硬件描述語言(Hardware Description Language,HDL),這些硬件描述語言必),這些硬件描述語言必然有很大的差異,工程師一旦選用某種硬件描述語言然有很大的差異,工程師一旦選用某種硬件描述語言作為輸入工具,就被束縛在這個硬件設(shè)計環(huán)境之中,作為輸入工具,就被束縛在這個硬件設(shè)計環(huán)境之中,不能在眾多的軟件工具中選擇一個最佳組
3、合作為自己不能在眾多的軟件工具中選擇一個最佳組合作為自己的最優(yōu)設(shè)計環(huán)境。因此,硬件設(shè)計工程師需要一種強(qiáng)的最優(yōu)設(shè)計環(huán)境。因此,硬件設(shè)計工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語言,作為可相互交流的設(shè)大的、標(biāo)準(zhǔn)化的硬件描述語言,作為可相互交流的設(shè)計環(huán)境。計環(huán)境。 美國國防部在美國國防部在80年代初提出了年代初提出了VHSIC(Very High Speed Integrated Circuit)計劃,其目標(biāo)之)計劃,其目標(biāo)之一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工藝極限以及完成藝極限以及完成10萬門級以上的設(shè)計,建立一項(xiàng)萬門級以上的設(shè)計,建立一項(xiàng)新的描述方
4、法。新的描述方法。1981年提出了一種新的年提出了一種新的HDL,稱,稱之為之為VHSIC Hardware Description Language,簡,簡稱為稱為VHDL,這種語言的成就有兩個方面:,這種語言的成就有兩個方面:1. 描述復(fù)雜的電路系統(tǒng)描述復(fù)雜的電路系統(tǒng);2. VHDL成為硬件描述語言的標(biāo)準(zhǔn)成為硬件描述語言的標(biāo)準(zhǔn)。VHDL的主要優(yōu)點(diǎn)是:的主要優(yōu)點(diǎn)是: 1.覆蓋面廣,描述能力強(qiáng),是一個多層次的硬件描述語言。覆蓋面廣,描述能力強(qiáng),是一個多層次的硬件描述語言。即設(shè)計的原始描述可以是非常簡練的描述,經(jīng)過層層細(xì)化求即設(shè)計的原始描述可以是非常簡練的描述,經(jīng)過層層細(xì)化求精,最終成為可直接付
5、諸生產(chǎn)的電路級或版圖參數(shù)描述,整精,最終成為可直接付諸生產(chǎn)的電路級或版圖參數(shù)描述,整個過程都可以在個過程都可以在VHDL的環(huán)境下進(jìn)行。的環(huán)境下進(jìn)行。 2.VHDL有良好的可讀性,即可以被計算機(jī)接受,也容有良好的可讀性,即可以被計算機(jī)接受,也容易被理解。用易被理解。用VHDL書寫的原文件書寫的原文件,即是程序,又是文檔,即是程序,又是文檔,即是技術(shù)人員之間交換信息的文件,又可作為合同簽約者即是技術(shù)人員之間交換信息的文件,又可作為合同簽約者之間的文件。之間的文件。 3.VHDL本身的生命期長,因?yàn)楸旧淼纳陂L,因?yàn)閂HDL的硬件描述與工的硬件描述與工藝技術(shù)無關(guān),不會因工藝變化而使描述過時。與工藝
6、技術(shù)藝技術(shù)無關(guān),不會因工藝變化而使描述過時。與工藝技術(shù)有關(guān)的參數(shù)可通過有關(guān)的參數(shù)可通過VHDL提供的屬性加以描述,工藝改變提供的屬性加以描述,工藝改變時,只需修改相應(yīng)程序中的屬性參數(shù)即可。時,只需修改相應(yīng)程序中的屬性參數(shù)即可。 4.支持大規(guī)模設(shè)計的分解和已有設(shè)計的支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用,一個大規(guī)模設(shè)計不可能一個人獨(dú)再利用,一個大規(guī)模設(shè)計不可能一個人獨(dú)立完成,它將由多人,多項(xiàng)目組來共同完立完成,它將由多人,多項(xiàng)目組來共同完成。成。VHDL為設(shè)計的分解和設(shè)計的再利用為設(shè)計的分解和設(shè)計的再利用提供了有力的支持。提供了有力的支持。VHDL的主要優(yōu)點(diǎn)是:的主要優(yōu)點(diǎn)是: 5.VHDL已成為
7、已成為IEEE承認(rèn)的一個工業(yè)標(biāo)承認(rèn)的一個工業(yè)標(biāo)準(zhǔn),事實(shí)上已成為通用硬件描述語言。準(zhǔn),事實(shí)上已成為通用硬件描述語言。8-1 VHDL的基本組成的基本組成 VHDL可以把任意復(fù)雜的電路系統(tǒng)視作一個??梢园讶我鈴?fù)雜的電路系統(tǒng)視作一個模塊,一個模塊可主要分為三個組成部分:塊,一個模塊可主要分為三個組成部分: 每個模塊中的程序包有每個模塊中的程序包有IEEE標(biāo)準(zhǔn)的標(biāo)準(zhǔn)程序標(biāo)準(zhǔn)的標(biāo)準(zhǔn)程序包或設(shè)計者自身設(shè)計的程序包,而且調(diào)用的數(shù)量包或設(shè)計者自身設(shè)計的程序包,而且調(diào)用的數(shù)量不限。模塊中的程序包是設(shè)計中的子程序和公用不限。模塊中的程序包是設(shè)計中的子程序和公用數(shù)據(jù)類型的集合,是構(gòu)成設(shè)計工具的工具箱,工數(shù)據(jù)類型的集
8、合,是構(gòu)成設(shè)計工具的工具箱,工具箱中最基本的工具是數(shù)據(jù)類型包,調(diào)用此標(biāo)準(zhǔn)具箱中最基本的工具是數(shù)據(jù)類型包,調(diào)用此標(biāo)準(zhǔn)程序包的程序包的VHDL語言是:語言是:一一、參數(shù)部分、參數(shù)部分程序包程序包例例1:LIBRARY ieee;USE ieee.std_logic_1164.all;調(diào)用程序包調(diào)用程序包語句語句標(biāo)標(biāo)準(zhǔn)準(zhǔn)程程序序包包定定義義程程序序包包 這兩句設(shè)置在這兩句設(shè)置在VHDL程序的前面,表示以后程序的前面,表示以后在實(shí)體或結(jié)構(gòu)體中要用在實(shí)體或結(jié)構(gòu)體中要用到數(shù)據(jù)類型包中的數(shù)據(jù)到數(shù)據(jù)類型包中的數(shù)據(jù)類型。類型。 模塊中僅有一個設(shè)計實(shí)體,模塊中僅有一個設(shè)計實(shí)體,它提供該設(shè)計模塊的公共信息,它提供該
9、設(shè)計模塊的公共信息,是是VHDL設(shè)計電路的最基本部設(shè)計電路的最基本部分。分。VHDL設(shè)計的電路系統(tǒng)是設(shè)計的電路系統(tǒng)是可以分層次的,所以設(shè)計的??梢苑謱哟蔚?,所以設(shè)計的模塊系統(tǒng)實(shí)體即可以是頂層實(shí)體,塊系統(tǒng)實(shí)體即可以是頂層實(shí)體,又可以是最底層實(shí)體。又可以是最底層實(shí)體。二、接口部分二、接口部分設(shè)計實(shí)體:設(shè)計實(shí)體:調(diào)用程序包調(diào)用程序包語句語句標(biāo)標(biāo)準(zhǔn)準(zhǔn)程程序序包包定定義義程程序序包包實(shí)體實(shí)體 及實(shí)及實(shí)體聲體聲明語明語句句ENTITY kxor ISkxor PORT(a1,b1:IN std_logic;a1b1 c1:OUT std_logic);c1END kxor;例例 2 實(shí)體部分的大寫單詞實(shí)體
10、部分的大寫單詞ENTITY、IS、PORT、IN、OUT和和END為關(guān)鍵字。在為關(guān)鍵字。在ENTITY.END之之間表示實(shí)體內(nèi)容,間表示實(shí)體內(nèi)容,ENTITY后的字符串后的字符串kxor表示表示實(shí)體的名稱,即電路的符號名。端口(引腳)信實(shí)體的名稱,即電路的符號名。端口(引腳)信息關(guān)鍵字息關(guān)鍵字PORT中的語句有三個端口,描述了信中的語句有三個端口,描述了信號的流向,分別是兩個輸入(號的流向,分別是兩個輸入(IN)模式)模式a1和和b1,一個是輸出(一個是輸出(OUT)模式)模式c1,端口信息除了輸入,端口信息除了輸入輸出之外,還可以是雙向、緩沖器等。輸出之外,還可以是雙向、緩沖器等。std_l
11、ogic表示信號取值的類型為標(biāo)準(zhǔn)邏輯位,除了標(biāo)準(zhǔn)邏表示信號取值的類型為標(biāo)準(zhǔn)邏輯位,除了標(biāo)準(zhǔn)邏輯位之外,還可以是實(shí)數(shù)、整數(shù)、無符號數(shù)、物輯位之外,還可以是實(shí)數(shù)、整數(shù)、無符號數(shù)、物理以及以上數(shù)據(jù)類型組成的記錄和數(shù)組集合,信理以及以上數(shù)據(jù)類型組成的記錄和數(shù)組集合,信號類型也可以是設(shè)計者定義。號類型也可以是設(shè)計者定義。三、描述部分三、描述部分結(jié)構(gòu)體:結(jié)構(gòu)體: 當(dāng)異或門的符號和外部端口當(dāng)異或門的符號和外部端口a1、b1和和c1確定之后,就要確定確定之后,就要確定實(shí)體的內(nèi)部電路,使之與實(shí)體相實(shí)體的內(nèi)部電路,使之與實(shí)體相對應(yīng)。電路描述部分稱之為結(jié)構(gòu)對應(yīng)。電路描述部分稱之為結(jié)構(gòu)體體ARCHITECTURE,它
12、描述實(shí),它描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸體硬件的互連關(guān)系、數(shù)據(jù)的傳輸和變換以及動態(tài)行為。一個實(shí)體和變換以及動態(tài)行為。一個實(shí)體可以對應(yīng)多個結(jié)構(gòu)體,每個結(jié)構(gòu)可以對應(yīng)多個結(jié)構(gòu)體,每個結(jié)構(gòu)體可以代表該硬件的某一方面特體可以代表該硬件的某一方面特性,例如行為特性,結(jié)構(gòu)特性。性,例如行為特性,結(jié)構(gòu)特性。調(diào)用程序包調(diào)用程序包語句語句標(biāo)標(biāo)準(zhǔn)準(zhǔn)程程序序包包定定義義程程序序包包實(shí)體實(shí)體 及實(shí)及實(shí)體聲體聲明語明語句句結(jié)結(jié)構(gòu)構(gòu)體體1結(jié)結(jié)構(gòu)構(gòu)體體2結(jié)結(jié)構(gòu)構(gòu)體體nARCHITECTURE kxor_arc OF kxor IS例例3BEGIN c1 = (NOT a1 AND b1) OR (a1 AND NOT b
13、1);END kxor_arc;kxora1b1c1a1b1c18-2 VHDL數(shù)據(jù)類型和屬性數(shù)據(jù)類型和屬性 VHDL硬件描述語言中涉及到了許多信號,變量和常硬件描述語言中涉及到了許多信號,變量和常量,它們用來保持一個數(shù)據(jù)。量,它們用來保持一個數(shù)據(jù)。 保持?jǐn)?shù)據(jù)的信號,變量和常量,在保持?jǐn)?shù)據(jù)的信號,變量和常量,在VHDL中稱為中稱為目標(biāo),每一個目標(biāo)都有一個數(shù)據(jù)類型確定目標(biāo)保持的目標(biāo),每一個目標(biāo)都有一個數(shù)據(jù)類型確定目標(biāo)保持的那一類數(shù)據(jù)。那一類數(shù)據(jù)。 VHDL是一種非常嚴(yán)格的數(shù)據(jù)類型化語言,規(guī)定每個信是一種非常嚴(yán)格的數(shù)據(jù)類型化語言,規(guī)定每個信號,常量或變量和每個表達(dá)式有一個唯一的確定數(shù)據(jù)類型,號,常
14、量或變量和每個表達(dá)式有一個唯一的確定數(shù)據(jù)類型,一般說,在表達(dá)式中分配數(shù)值給目標(biāo)時的數(shù)據(jù)類型不可以一般說,在表達(dá)式中分配數(shù)值給目標(biāo)時的數(shù)據(jù)類型不可以被混用。被混用。每個目標(biāo)和表達(dá)式的類型靜態(tài)地確定。每個目標(biāo)和表達(dá)式的類型靜態(tài)地確定。在在VHDL中有三類目標(biāo):信號、變量和常量。中有三類目標(biāo):信號、變量和常量。 信號和變量可以賦予一系列的值,而常量一次信號和變量可以賦予一系列的值,而常量一次僅被分配一個值。僅被分配一個值。 變量和信號又有不同,賦予信號的數(shù)值要到未來變量和信號又有不同,賦予信號的數(shù)值要到未來的某個時刻,信號才接受當(dāng)前的數(shù)值,而賦予變量的的某個時刻,信號才接受當(dāng)前的數(shù)值,而賦予變量的數(shù)
15、值,變量立即接受當(dāng)前的數(shù)值。數(shù)值,變量立即接受當(dāng)前的數(shù)值。目標(biāo)的一般形式如下:目標(biāo)的一般形式如下: 目標(biāo)目標(biāo) : := ;目標(biāo)目標(biāo):是一個或多個代表著目標(biāo)種類的字符串,多個目:是一個或多個代表著目標(biāo)種類的字符串,多個目 標(biāo)時用標(biāo)時用“,”號分開。號分開。 目標(biāo)目標(biāo) : := ;目標(biāo)種類目標(biāo)種類:信號信號、變量變量和和常量常量。信號信號:它可以表示把元件的端口連接在一起的互連線。:它可以表示把元件的端口連接在一起的互連線。 變量變量:用于對暫時數(shù)據(jù)的局部存儲,變量只在進(jìn)程和子:用于對暫時數(shù)據(jù)的局部存儲,變量只在進(jìn)程和子 程序內(nèi)部定義。程序內(nèi)部定義。 常量常量:對某些特定類型數(shù)據(jù)賦予的數(shù)值。:對某
16、些特定類型數(shù)據(jù)賦予的數(shù)值。表達(dá)式表達(dá)式:表達(dá)式是為了規(guī)定目標(biāo)的初始值,這是缺省部分。:表達(dá)式是為了規(guī)定目標(biāo)的初始值,這是缺省部分。目標(biāo)類型目標(biāo)類型:為了規(guī)定目標(biāo)的特征,:為了規(guī)定目標(biāo)的特征,VHDL含有很寬范圍的含有很寬范圍的數(shù)據(jù)類型。數(shù)據(jù)類型。VHDL除了有基本的數(shù)據(jù)類型之外,設(shè)計者還除了有基本的數(shù)據(jù)類型之外,設(shè)計者還可以建立自己新的數(shù)據(jù)類型,類型說明部分規(guī)定類型名和可以建立自己新的數(shù)據(jù)類型,類型說明部分規(guī)定類型名和類型范圍,它的一般形式是:類型范圍,它的一般形式是:TYPE IS ;標(biāo)量類型、復(fù)合類型、子類型、文件類型和尋址類型。標(biāo)量類型、復(fù)合類型、子類型、文件類型和尋址類型。標(biāo)量類型包括
17、所有的簡單類型:如整數(shù)、實(shí)數(shù)等標(biāo)量類型包括所有的簡單類型:如整數(shù)、實(shí)數(shù)等復(fù)合類型包括數(shù)組和記錄復(fù)合類型包括數(shù)組和記錄尋址類型在一般編輯語言中等價為指針尋址類型在一般編輯語言中等價為指針文件類型用設(shè)計者定義的文件類型為設(shè)計者提供說明的文件對象文件類型用設(shè)計者定義的文件類型為設(shè)計者提供說明的文件對象子類型主要是對現(xiàn)有類型加以限制子類型主要是對現(xiàn)有類型加以限制VHDL可用數(shù)據(jù)類型有五類:可用數(shù)據(jù)類型有五類:一、一、 標(biāo)量數(shù)據(jù)類型標(biāo)量數(shù)據(jù)類型標(biāo)量數(shù)據(jù)類型是基本的數(shù)據(jù)類型,它包括整數(shù)類型、標(biāo)量數(shù)據(jù)類型是基本的數(shù)據(jù)類型,它包括整數(shù)類型、實(shí)數(shù)類型、物理類型和枚舉類型。實(shí)數(shù)類型、物理類型和枚舉類型。一個目標(biāo)的
18、數(shù)值有可能經(jīng)常更換或者說是包含多個值,一個目標(biāo)的數(shù)值有可能經(jīng)常更換或者說是包含多個值,但一個目標(biāo)一次只能被一種類型說明。但一個目標(biāo)一次只能被一種類型說明。物理類型要提供一個基本單位,然后在這個基本單位物理類型要提供一個基本單位,然后在這個基本單位上定義多個或零個次級單位,每個次級單位都是基本上定義多個或零個次級單位,每個次級單位都是基本單位的整數(shù)倍。單位的整數(shù)倍。枚舉類型在形式上是定義括弧括起來的字符串文字表,枚舉類型在形式上是定義括弧括起來的字符串文字表,一個字符串文字在枚舉類型定義中只能出現(xiàn)一次,但一個字符串文字在枚舉類型定義中只能出現(xiàn)一次,但允許同樣一個字符串文字出現(xiàn)在不同的枚舉類型的字
19、允許同樣一個字符串文字出現(xiàn)在不同的枚舉類型的字符串文字表中,枚舉類型的字符串文字表中的文字是符串文字表中,枚舉類型的字符串文字表中的文字是由設(shè)計者定義的,這些字母可以是單個字母,也可以由設(shè)計者定義的,這些字母可以是單個字母,也可以是一個字符串,例如是一個字符串,例如BREAKFAST, Lunch, a等。等。 下面舉兩個下面舉兩個VHDL程序加深理解程序加深理解枚舉枚舉類型的使用。類型的使用。P A C K A G E m e a l s _ p k g I S T Y P E m e a l I S ( b re a k f a s t , l u n c h , d i n n e r
20、) ;END meals_pkg;例例2:USE work . meals_pkg . all;ENTITY meals IS PORT(previous_meal:IN meal; next_meal:OUT meal);END meals;ARCHITECTURE meals_arc OF meals ISBEGIN WITH previous_meal SELECT next_meal = breakfast WHEN dinner, lunch WHEN breakfast, dinner WHEN lunch;END meals_arc;二、復(fù)合數(shù)據(jù)類型二、復(fù)合數(shù)據(jù)類型 復(fù)合類型是由
21、數(shù)組類型和記錄類型組成,它們的元復(fù)合類型是由數(shù)組類型和記錄類型組成,它們的元素是標(biāo)量類型的元素。數(shù)組類型是由相同的標(biāo)量元素素是標(biāo)量類型的元素。數(shù)組類型是由相同的標(biāo)量元素組成,即同構(gòu)復(fù)合類型,數(shù)組可以是一維二維或多維。組成,即同構(gòu)復(fù)合類型,數(shù)組可以是一維二維或多維。例如例如TYPE matrix IS ARRAY(row,column) OF std_logic;TYPE r_ma IS ARRAY( 1 TO 10, 1 TO 40) OF std_logic; TYPE word IS ARRAY(15 DOWNTO 0) OF BIT;TYPE column IS RANGE 1 TO 4
22、0; TYPE row IS RANGE 1 TO 10;CONSTANT ROM : BIT_VECTOR(0 TO 15);ARCHITECTURE rom_arc OF rom ISBEGIN PROCESS(cs,x1,x2,x3,x4) VARIABLE n:NATURAL RANGE 0 TO 15; CONSTANT rom0:std_logic_vector(0 TO 15):= “0101010101010101”; CONSTANT rom1:std_logic_vector(0 TO 15):= “0011001100110011”; CONSTANT rom2:std_
23、logic_vector(0 TO 15):= “0000111100001111”; CONSTANT rom3:std_logic_vector(0 TO 15):= “0000000011111111”;下面舉一個VHDL程序說明一維數(shù)組實(shí)現(xiàn)164的ROM。LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom IS PORT(cs,x1,x2,x3,x4:IN std_logic; d0,d1,d2,d3:OUT std_logic);END rom; BEGIN IF cs= 1 THEN n:=0; IF x1 = 1 THEN n:
24、= n+1; END IF; IF x2 = 1 THEN n:= n+2; END IF; IF x3 = 1 THEN n:= n+4; END IF; IF x4 = 1 THEN n:= n+8; END IF; d0 = rom0(n) AFTER 10 ns; d1 = rom1(n) AFTER 10 ns; d2 = rom2(n) AFTER 10 ns; d3 = rom3(n) AFTER 10 ns; ELSE d0 = Z AFTER 10 ns; d1 = Z AFTER 10 ns; d2 = Z AFTER 10 ns; d3 = Z AFTER 10 ns;
25、END IF; END PROCESS; END rom_arc; 在結(jié)構(gòu)體說明區(qū)(在結(jié)構(gòu)體說明區(qū)(ARCHITECTURE和和BEGIN之間)被之間)被說明的目標(biāo),僅可以在此結(jié)構(gòu)體中引用或在結(jié)構(gòu)體中的任何說明的目標(biāo),僅可以在此結(jié)構(gòu)體中引用或在結(jié)構(gòu)體中的任何進(jìn)程語句中被引用,稱此目標(biāo)為局部信號。進(jìn)程語句中被引用,稱此目標(biāo)為局部信號。數(shù)據(jù)類型的全局化和局部化數(shù)據(jù)類型的全局化和局部化 前面已經(jīng)討論前面已經(jīng)討論VHDL描述語言的組成是由程序包、實(shí)體、描述語言的組成是由程序包、實(shí)體、結(jié)構(gòu)體(結(jié)構(gòu)體中有進(jìn)程)、以及子程序而組成,不同的目標(biāo)結(jié)構(gòu)體(結(jié)構(gòu)體中有進(jìn)程)、以及子程序而組成,不同的目標(biāo)可以在指定的
26、組成部分內(nèi)加以說明??梢栽谥付ǖ慕M成部分內(nèi)加以說明。 如果一個目標(biāo)在實(shí)體說明部分被說明,那么在本實(shí)體和本如果一個目標(biāo)在實(shí)體說明部分被說明,那么在本實(shí)體和本實(shí)體內(nèi)部的任何結(jié)構(gòu)體和任何進(jìn)程中都可以引用在實(shí)體中說明實(shí)體內(nèi)部的任何結(jié)構(gòu)體和任何進(jìn)程中都可以引用在實(shí)體中說明的目標(biāo),稱為全局信號;的目標(biāo),稱為全局信號;VHDL中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說明。中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說明。信 號信 號 : 實(shí) 體 、 結(jié) 構(gòu) 體 說 明 區(qū) 、 程 序 包 和 子 程 序 。: 實(shí) 體 、 結(jié) 構(gòu) 體 說 明 區(qū) 、 程 序 包 和 子 程 序 。變量變量:進(jìn)程語句說明區(qū)和子
27、程序。:進(jìn)程語句說明區(qū)和子程序。常量常量:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。標(biāo)量類型標(biāo)量類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。復(fù)合類型復(fù)合類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。文 件 類 型文 件 類 型 : 子 程 序 和 進(jìn) 程 語 句 說 明 區(qū) 。: 子 程 序 和 進(jìn) 程 語 句 說 明 區(qū) 。尋址類型尋址類型:進(jìn)程語句說明區(qū)。:進(jìn)程語句說明區(qū)。VHDL的屬性的屬性 VHDL中的屬性使得中的屬性使得VH
28、DL程序更加簡明扼要,更程序更加簡明扼要,更加容易理解,加容易理解,VHDL的屬性在時序程序中幾乎處處可的屬性在時序程序中幾乎處處可見,如值類屬性的左邊界、右邊界、上下邊界以及值見,如值類屬性的左邊界、右邊界、上下邊界以及值類屬性的長度,還可以檢測信號上升沿和下降沿以及類屬性的長度,還可以檢測信號上升沿和下降沿以及前一次發(fā)生的事件等等。前一次發(fā)生的事件等等。 VHDL的屬性可歸納為,信號類屬性、函數(shù)類屬性、的屬性可歸納為,信號類屬性、函數(shù)類屬性、 值類屬性、類型類屬性和范圍類屬性。本節(jié)介紹值類值類屬性、類型類屬性和范圍類屬性。本節(jié)介紹值類屬性及函數(shù)信號類屬性。屬性及函數(shù)信號類屬性。TYPE b
29、it IS ARRAY(63 DOWNTO 32) OF BIT; VARIABLE left_range,right_range,uprange,lowrange:INTEGER;BEGIN l e f t _ r a n g e : = b i t L E F T ; - - re t u r n s 6 3 right_range:= bitRIGHT; -returns 32 uprange:= bitHIGH; -returns 63 lowrange:= bitLOW; -returns 32 值類屬性值類屬性:值類屬性用于返回數(shù)組的邊界或長度,首先舉一例值類屬性用于返回數(shù)組的邊界
30、或長度,首先舉一例數(shù)組邊界的例子說明類型屬性。數(shù)組邊界的例子說明類型屬性。例例8:TYPE bit IS ARRAY(0 TO 7) OF BIT;TYPE bit1 IS ARRAY(8 TO 31) OF BIT; VA R I A B L E l e n 1 , l e n 2 : I N T E G E R ;BEGIN len1:=bitLENGTH; -return 8 len2:=bit1LENGTH; -return 24 下面再舉一個值類數(shù)組屬性的例子,讓其返下面再舉一個值類數(shù)組屬性的例子,讓其返回數(shù)組范圍的總長度?;財?shù)組范圍的總長度。例例: 它可用來檢查一個信號的變化,并且
31、變化剛它可用來檢查一個信號的變化,并且變化剛剛發(fā)生,既推斷出在信號上發(fā)生了一個跳變。剛發(fā)生,既推斷出在信號上發(fā)生了一個跳變。 函數(shù)信號屬性:函數(shù)信號屬性用來返回有關(guān)信函數(shù)信號屬性:函數(shù)信號屬性用來返回有關(guān)信號行為功能的信息,它反映一個信號是否正好有值號行為功能的信息,它反映一個信號是否正好有值的變化或事件的發(fā)生,如的變化或事件的發(fā)生,如clkEVENT,這個屬性為,這個屬性為“EVENT”,對檢查時鐘邊沿觸發(fā)是很有效的。,對檢查時鐘邊沿觸發(fā)是很有效的。下面舉一個例子,說明函數(shù)信號屬性的用法下面舉一個例子,說明函數(shù)信號屬性的用法IF clk= 1 AND clkEVENT THEN q = d;
32、END IF; 上述語句中用到了函數(shù)信號屬性上述語句中用到了函數(shù)信號屬性clkEVENT,說明,說明如果時鐘信號如果時鐘信號clk為高電平,并且事件剛剛發(fā)生,也就為高電平,并且事件剛剛發(fā)生,也就是說是時鐘上升沿有效,此時是說是時鐘上升沿有效,此時q得到得到d的信號。的信號。8-3 VHDL的行為描述的行為描述 在在VHDL硬件描述語言中,描述電路邏輯的程硬件描述語言中,描述電路邏輯的程序稱為序稱為行為描述行為描述,行為描述有,行為描述有并行行為描述并行行為描述、進(jìn)程進(jìn)程行為描述行為描述和和順序行為描述順序行為描述。 三個行為即可以是相互獨(dú)立,成為單一的行為三個行為即可以是相互獨(dú)立,成為單一的行
33、為描述體,又可以相互聯(lián)系,成為混合描述體,如進(jìn)描述體,又可以相互聯(lián)系,成為混合描述體,如進(jìn)程行為描述行為程行為描述行為之間之間是并行行為,進(jìn)程行為體的是并行行為,進(jìn)程行為體的內(nèi)內(nèi)部部是順序行為。是順序行為。一、一、VHDL的并行行為的并行行為 在典型的編程語言如在典型的編程語言如C或或Pascal中,每個賦值語句按規(guī)定的次中,每個賦值語句按規(guī)定的次序,一個接在另一個之后順序執(zhí)行,執(zhí)行的次序由源文件決定。序,一個接在另一個之后順序執(zhí)行,執(zhí)行的次序由源文件決定。 在在VHDL中,結(jié)構(gòu)體的內(nèi)部沒有規(guī)定語句的次序,執(zhí)行的次序中,結(jié)構(gòu)體的內(nèi)部沒有規(guī)定語句的次序,執(zhí)行的次序僅由對語句中的敏感信號發(fā)生的事件
34、決定,且語句是同時執(zhí)行,產(chǎn)僅由對語句中的敏感信號發(fā)生的事件決定,且語句是同時執(zhí)行,產(chǎn)生其并行型。生其并行型。結(jié)構(gòu)體中并行賦值語句的一般格式如下:結(jié)構(gòu)體中并行賦值語句的一般格式如下: = 該一般形式讀作對象得到表達(dá)式的值,其作用是將表達(dá)式的信號該一般形式讀作對象得到表達(dá)式的值,其作用是將表達(dá)式的信號值分配給對象,也就是說每當(dāng)表達(dá)式的信號值變化時執(zhí)行該語句。值分配給對象,也就是說每當(dāng)表達(dá)式的信號值變化時執(zhí)行該語句。 每個表達(dá)式都至少有一個敏感信號,每當(dāng)敏感信號改變其每個表達(dá)式都至少有一個敏感信號,每當(dāng)敏感信號改變其值時,這個信號賦值語句就執(zhí)行,值時,這個信號賦值語句就執(zhí)行, 在所有的并行語句中,兩
35、個以上的并行賦值語句在字面在所有的并行語句中,兩個以上的并行賦值語句在字面上的順序并不表明它們的執(zhí)行順序,上的順序并不表明它們的執(zhí)行順序,例如下面的兩個結(jié)構(gòu)體在功能上是等價的。例如下面的兩個結(jié)構(gòu)體在功能上是等價的。ENTITY exe IS PORT(a1,a2:IN BIT; b1,b2:OUT BIT);END exe;ARCHITECTURE exe_arc1 OF exe ISBEGIN b1 = a1 AND b2; b2 = NOT a1 OR a2;END exe_arc1;ARCHITECTURE exe_arc2 OF exe ISBEGIN b2 = NOT a1 OR a
36、2; b1 = a1 AND b2;END exe_arc2;a1a2b1b2 另一種并行信號賦值語句是選擇信號賦值語句,它們的每一另一種并行信號賦值語句是選擇信號賦值語句,它們的每一個賦值語句都需要給出一個表達(dá)式,同時給出與該表達(dá)式的每個個賦值語句都需要給出一個表達(dá)式,同時給出與該表達(dá)式的每個可能值相關(guān)聯(lián)的信號可能值相關(guān)聯(lián)的信號 選擇信號賦值語句的一般形式如下:選擇信號賦值語句的一般形式如下: WITH SELECT = WHEN , WHEN , WHEN ; 一個典型的四路數(shù)據(jù)選擇器的一個典型的四路數(shù)據(jù)選擇器的VHDL程序說明程序說明WITH一般一般形式的用法形式的用法ENTITY se
37、ls IS PORT(d0,d1,d2,d3:IN BIT; s :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sels;ARCHITECTURE sels_arc OF sels ISBEGIN WITH s SELECT out1 = d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3;END sels_arc;d0d1d2d3sout1sels 仍以四路數(shù)據(jù)選擇器為例,討論另一個較為復(fù)雜的并仍以四路數(shù)據(jù)選擇器為例,討論另一個較為復(fù)雜的并行信號賦值語句的例子,以便更詳細(xì)地說明并行概念,行信號賦值語句的例子,以便更
38、詳細(xì)地說明并行概念,下面是四輸入數(shù)據(jù)選擇器的第二個下面是四輸入數(shù)據(jù)選擇器的第二個VHDL程序。程序。例:例:LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(I0,I1,I2,I3,A,B:IN std_logic; Q :OUT std_logic);END mux4;ARCHITECTURE mux4_arc OF mux4 IS SIGNAL sel :INTEGER ;BEGIN Q = I0 AFTER 10 ns WHEN sel= 0 ELSE I1 AFTER 10 ns WHEN sel= 1 ELSE
39、 I2 AFTER 10 ns WHEN sel= 2 ELSE I3 AFTER 10 ns ; sel = 0 WHEN A= 0 AND B= 0 ELSE 1 WHEN A= 1 AND B= 0 ELSE 2 WHEN A= 0 AND B= 1 ELSE 3 ;END mux4_arc;二、二、VHDL的進(jìn)程行為的進(jìn)程行為 VHDL除了并行行為之外,還有順序行為。順序行為執(zhí)行除了并行行為之外,還有順序行為。順序行為執(zhí)行的順序是一個接在另一個之后嚴(yán)格執(zhí)行。的順序是一個接在另一個之后嚴(yán)格執(zhí)行。順序行為的語句存在于順序行為的語句存在于VHDL程序中的程序中的進(jìn)程行為進(jìn)程行為之中。之中。而
40、進(jìn)程行為之間是并行行為語句而進(jìn)程行為之間是并行行為語句。進(jìn)程行為語句的一般形式如下進(jìn)程行為語句的一般形式如下: :PROCESS BEGIN WAIT ON ; WAIT UNTIL ; WAIT FOR ; END PROCESS; 進(jìn)程行為的說明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境、它進(jìn)程行為的說明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境、它包括包括子程序說明子程序說明、屬性說明屬性說明和和變量說明變量說明等等在這里只給出在這里只給出變量說明變量說明的一個例子,變量說明的一般形式為的一個例子,變量說明的一般形式為VARIABLE : ;下面進(jìn)程說明區(qū)中說明了變量下面進(jìn)程說明區(qū)中說明了變量count,進(jìn)
41、程也可對變量賦值。,進(jìn)程也可對變量賦值。 PROCESS VARIABLE count:INTEGER:= 0; BEGIN count:= count+1; WAIT FOR 1000 ns; END PROCESS; 整個實(shí)體模塊中的每個進(jìn)程行為語句,可以在任何時候被整個實(shí)體模塊中的每個進(jìn)程行為語句,可以在任何時候被激活,所有被激活的進(jìn)程是并行執(zhí)行的激活,所有被激活的進(jìn)程是并行執(zhí)行的 下面舉一個三八通用譯碼器程序的例子,說明進(jìn)程語句下面舉一個三八通用譯碼器程序的例子,說明進(jìn)程語句如何工作。如何工作。LIBRARY ieee; USE ieee.std_logic_1164.all; USE
42、 ieee.std_logic_arith.all; ENTITY decoder IS PORT(sel : IN UNSIGNED(2 DOWNTO 0); dout : OUT UNSIGNED(7 DOWNTO 0); END decoder;ARCHITECTURE decoder_arc OF decoder IS SIGNAL sel1 :INTEGER; BEGIN PROCESS(sel) BEGINsel1 dout dout dout dout dout dout dout dout = (1,0,0,0,0,0,0,0) AFTER 5 ns; END CASE; EN
43、D PROCESS; END decoder_arc; 此例不像上例那樣等待時間到此例不像上例那樣等待時間到1000ns以后再激活進(jìn)程,而以后再激活進(jìn)程,而是只要是只要sel的值一發(fā)生改變就激活進(jìn)程,從第一句執(zhí)行直到滿足的值一發(fā)生改變就激活進(jìn)程,從第一句執(zhí)行直到滿足條件后再被掛起。條件后再被掛起。下例是另一種激活進(jìn)程的方式:下例是另一種激活進(jìn)程的方式:ENTITY reg IS PORT(d,clk:IN BIT; q1,q2:OUT BIT); END reg; ARCHITECTURE reg_arc OF reg IS BEGIN PROCESS BEGIN WAIT UNTIL clk
44、= 1; q1 = d; END PROCESS; PROCESS BEGIN WAIT UNTIL clk= 0; q2 = d; END PROCESS; END reg_arc;進(jìn)程行為語句之間是進(jìn)程行為語句之間是并行關(guān)系,進(jìn)程行為并行關(guān)系,進(jìn)程行為語句內(nèi)部是順序關(guān)系。語句內(nèi)部是順序關(guān)系。VHDL的每個結(jié)構(gòu)的每個結(jié)構(gòu)體中可以有多個進(jìn)程體中可以有多個進(jìn)程行為語句。行為語句。它的關(guān)鍵之處是:它的關(guān)鍵之處是:三、三、VHDL的順序行為的順序行為順序行為語句可分為兩大類:順序行為語句可分為兩大類:條件控制類條件控制類,循環(huán)控制類循環(huán)控制類 在這兩類中選出六種在這兩類中選出六種 IF、CASE、F
45、OR、WHILE.LOOP、EXIT和和ASSERT進(jìn)行討論進(jìn)行討論 IF THEN ; ELSIF THEN ; ELSIF THEN ; ELSE ; END IF;1、IF語句語句IF語句的一般形式為:語句的一般形式為:ARCHITECTURE alarm_arc OF alarm ISBEGIN下面舉例說明下面舉例說明IF條件語句的用法。條件語句的用法。例例: 用用VHDL設(shè)計一家用告警系統(tǒng)的控制邏輯,它有來自傳感設(shè)計一家用告警系統(tǒng)的控制邏輯,它有來自傳感器的三個輸入信號器的三個輸入信號smoke、door、water和準(zhǔn)備傳輸?shù)礁婢O(shè)備和準(zhǔn)備傳輸?shù)礁婢O(shè)備的三個輸出觸發(fā)信號的三個輸出
46、觸發(fā)信號fire_alarm、burg_alarm、water_alarm以以及使能信號及使能信號en和和alarm_en。VHDL程序描述如下:程序描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY alarm IS PORT(smoke,door,water:IN std_logic; en,alarm_en :IN std_logic; fire_alarm,burg_alarm,water_alarm:OUT std_logic);END alarm;PROCESS(smoke,door,water,en,alarm_en) BEG
47、IN IF (smoke= 1) AND (en= 0) THEN fire_alarm = 1; ELSE fire_alarm = 0; END IF;IF (door= 1) AND (en= 0) AND (alarm_en= 0) THEN burg_alarm = 1; ELSE burg_alarm = 0; END IF;IF (water= 1) AND (en= 0) THEN water_alarm = 1; ELSE water_alarm = 0; END IF; END PROCESS; END alarm_arc;2、CASE 語句語句CASE語句的一般形式:語句
48、的一般形式:CASE IS WHEN ; WHEN | ; WHEN ; WHEN OTHERS ;END CASE; CASE語句是語句是VHDL提供的另一種形式的控制語句,每當(dāng)提供的另一種形式的控制語句,每當(dāng)單個表達(dá)式的值在多個起作用的項(xiàng)中選擇時,用此語句是較合單個表達(dá)式的值在多個起作用的項(xiàng)中選擇時,用此語句是較合適的,它根據(jù)所給表達(dá)式的值或域,選擇適的,它根據(jù)所給表達(dá)式的值或域,選擇“=”后面的執(zhí)行語句。后面的執(zhí)行語句。用用CASE語句應(yīng)該注意三個問題:語句應(yīng)該注意三個問題: 一,是關(guān)鍵字一,是關(guān)鍵字WHEN的數(shù)量不作限制,但不容許兩的數(shù)量不作限制,但不容許兩個語句用一個值;個語句用一個
49、值; 二,是所有二,是所有WHEN后面的值在后面的值在CASE語句中合起來的語句中合起來的值域中的全部;值域中的全部;三,是三,是WHEN的次序可以任意排定的次序可以任意排定信號可被看作兩個元件之間數(shù)據(jù)傳輸?shù)耐?,信號可被看作兩個元件之間數(shù)據(jù)傳輸?shù)耐罚?-4 VHDL的結(jié)構(gòu)描述實(shí)體主要描述元件、端口與信號。實(shí)體主要描述元件、端口與信號。元件是硬件的描述,即門、芯片或者電路板。元件是硬件的描述,即門、芯片或者電路板。端口是元件與外界的連接點(diǎn),數(shù)據(jù)通過端口進(jìn)入或流出元件。端口是元件與外界的連接點(diǎn),數(shù)據(jù)通過端口進(jìn)入或流出元件。而信號則是作為硬件連線的一種抽象描述,它即能保持變化而信號則是作為硬件連線的一種抽象描述,它即能保持變化的數(shù)據(jù),又可以連接各個子元件。的數(shù)據(jù),又可以連接各個子元件。下面舉例說
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校福利房管理制度
- 學(xué)校茶水房管理制度
- 學(xué)生會人事管理制度
- 學(xué)生課堂上管理制度
- 安保部工作管理制度
- 安全痕跡化管理制度
- 安防部宿舍管理制度
- 定制類店面管理制度
- 實(shí)訓(xùn)室創(chuàng)意管理制度
- 客車站風(fēng)險管理制度
- 物流司機(jī)獎罰管理制度
- 7數(shù)滬科版期末考試卷-2024-2025學(xué)年七年級(初一)數(shù)學(xué)下冊期末考試模擬卷02
- 德陽研學(xué)旅行課程的融合開發(fā)與實(shí)踐發(fā)展策略研究
- 病理學(xué)考試題庫
- 2025年全國普通高校招生全國統(tǒng)一考試數(shù)學(xué)試卷(新高考Ⅰ卷)含答案
- 事業(yè)單位考試(面試)試題附答案
- HYDRUS-2D3D學(xué)習(xí)手冊資料
- 生物●廣東卷丨2024年廣東省普通高中學(xué)業(yè)水平選擇性考試生物試卷及答案
- 數(shù)字化轉(zhuǎn)型項(xiàng)目管理試題及答案
- 2025年上海市七年級語文下學(xué)期期末考試復(fù)習(xí)(基礎(chǔ)知識+課內(nèi)古詩文+課外文言文)
- 北京市海淀區(qū)2023-2024學(xué)年高二下學(xué)期期末考試英語試卷(含答案)
評論
0/150
提交評論