計(jì)算機(jī)硬件課程設(shè)計(jì)指導(dǎo)書(shū)_第1頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)指導(dǎo)書(shū)_第2頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)指導(dǎo)書(shū)_第3頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)指導(dǎo)書(shū)_第4頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、38/38可編程集成電路基礎(chǔ)1.1 概述1.2 在系統(tǒng)可編程邏輯器件的結(jié)構(gòu) 1.2.1 ispLSI1016 1.2.2 編程接口和編程 硬件描述語(yǔ)言VHDL基礎(chǔ) 2.1 概述2.2 VHDL語(yǔ)言語(yǔ)法規(guī)則2.2.1 標(biāo)識(shí)符 ( Identifiers) 2.2.2 數(shù)據(jù)對(duì)象 ( Data Objects )2.2.3 數(shù)據(jù)類(lèi)型 ( Data Types )2.2.4 運(yùn)算符 ( Operators)2.3 VHDL的語(yǔ)句結(jié)構(gòu)分類(lèi)2.3.1 庫(kù)2.3.2 實(shí)體說(shuō)明2.3.3 結(jié)構(gòu)定義2.4 順序語(yǔ)句2.4.1 信號(hào)賦值語(yǔ)句2.4.2 變量賦值語(yǔ)句2.4.3 if_then_else語(yǔ)句2.4.4

2、 case_when語(yǔ)句2.5 并行語(yǔ)句2.5.1 when_else語(yǔ)句2.5.2 with_select_when語(yǔ)句 2.6 結(jié)構(gòu)體的子結(jié)構(gòu)描述2.6.1 block語(yǔ)句2.6.2 Proess ( 進(jìn)程 ) 語(yǔ)句2.6.3 子程序2.6.4 程序包 2.7 基本邏輯電路設(shè)計(jì)ispDesignEXPERT 開(kāi)發(fā)系統(tǒng)設(shè)計(jì)示例第二章 硬件描述語(yǔ)言VHDL基礎(chǔ)2.1 概 述隨著集成電路的設(shè)計(jì)規(guī)模的增大和復(fù)雜程度日益增高,傳統(tǒng)的數(shù)字電路設(shè)計(jì)方法不適合設(shè)計(jì)大規(guī)模的系統(tǒng)。眾多軟件公司開(kāi)發(fā)研制了具有自己特色的電路硬件描述語(yǔ)言(Hardware Description Language,HDL),存在著

3、很大的差異,因此,需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,作為可相互交流的設(shè)計(jì)環(huán)境。美國(guó)國(guó)防部在80年代初提出了VHSIC(Very High Speed Integrated Circuit)計(jì)劃,其目的是為大規(guī)模集成電路設(shè)計(jì),建立一項(xiàng)新的描述方法。1981年提出了一種新的HDL,稱(chēng)之為VHSIC Hardware Description Language,簡(jiǎn)稱(chēng)為VHDL,VHDL語(yǔ)言可描述一個(gè)數(shù)字電路的輸入、輸出以 與相互間的行為與功能,它特有的層次性設(shè)計(jì)語(yǔ)法結(jié)構(gòu)適合大型設(shè)計(jì)項(xiàng)目的團(tuán)隊(duì)合作,是目前最通用的硬件描述語(yǔ)言。這種語(yǔ)言有如下的諸多優(yōu)點(diǎn):1. 可描述復(fù)雜的數(shù)字電路系統(tǒng);2成為國(guó)際的硬件

4、描述語(yǔ)言標(biāo)準(zhǔn),1987年被采納為IEEE1076標(biāo)準(zhǔn)3與硬件獨(dú)立,一個(gè)設(shè)計(jì)可用于不同的硬件結(jié)構(gòu),而且設(shè)計(jì)時(shí)不必了解過(guò)多的硬件細(xì)節(jié);4有豐富的軟件支持VHDL的綜合和仿真,從而能在設(shè)計(jì)階段就能發(fā)現(xiàn)設(shè)計(jì)中的Bug,縮短設(shè)計(jì)時(shí)間,降低成本;5VHDL有良好的可讀性,容易理解。2.2 VHDL語(yǔ)言的語(yǔ)法規(guī)則2.2.1VHDL標(biāo)識(shí)符(Identifiers)基本標(biāo)識(shí)符由字母、數(shù)字和下劃線組成;第一個(gè)字符必須是字母;最后一個(gè)字符不能是下劃線;不允許連續(xù)2個(gè)下劃線;保留字(關(guān)鍵字)不能用于標(biāo)識(shí)符;大小寫(xiě)是等效的。數(shù)據(jù)對(duì)象 ( Data Objects )VHDL中常用的數(shù)據(jù)對(duì)象有:常量、信號(hào)和變量,常量相當(dāng)

5、于電路中的恒定電平,信號(hào)和變量相當(dāng)于電路中的連線和連線上的信號(hào)值。1 常量 (Constant)常量聲明即為一個(gè)常量名賦予一個(gè)固定值,其一般格式為:CONSTANT 常量名:數(shù)據(jù)類(lèi)型:=表達(dá)式;常量可在Library、Entity、Architecture、Process 中進(jìn)行定義,其有效范圍也相應(yīng)限定。例如:CONSTANT w: integer := 8;- “w” 是整數(shù)類(lèi)型的常數(shù),其值為“8”2 信號(hào) (Signal)信號(hào)沒(méi)有方向性,是一個(gè)全局量,用于進(jìn)程之間的通信,聲明電路內(nèi)部的信號(hào)。在Entity中和Architecture中聲明,信號(hào)聲明語(yǔ)句格式為:SIGNAL 信號(hào)名:數(shù)據(jù)類(lèi)

6、型 約束條件:=表達(dá)式;例如:SIGNAL GROUND: BIT : = 0 ;符號(hào)“:=”表示直接賦值,用于指定信號(hào)的初始值。信號(hào)賦值語(yǔ)句的格式為: 信號(hào)名 = 表達(dá)式 AFTER 時(shí)間表達(dá)式;其中時(shí)間表達(dá)式指定延遲時(shí)間,如果省略AFTER語(yǔ)句,則延遲時(shí)間取默認(rèn)值。3 變量 (Variable)變量屬于臨時(shí)數(shù)據(jù),沒(méi)有物理意義,只能在Process和Function中定義,并只在其內(nèi)部有效。其聲明格式為:variable 變量名: 數(shù)據(jù)類(lèi)型 約束條件:=表達(dá)式;例如:variable count: INTEGER RANCE 0 TO 255:=10;變量count為整數(shù)類(lèi)型,RANCE 0

7、 TO 255是對(duì)類(lèi)型INTEGER的附加限制,該語(yǔ)句一旦執(zhí)行,立即將初始值10賦予變量。2.2.3數(shù)據(jù)類(lèi)型VHDL的數(shù)據(jù)類(lèi)型定義非常嚴(yán)格,規(guī)定每一個(gè)對(duì)象都必須有明確的數(shù)據(jù)類(lèi)型。不同類(lèi)型之間的數(shù)據(jù)不可直接代入,連接不同數(shù)據(jù)類(lèi)型的信號(hào)為非法。賦予一個(gè)值的對(duì)象只有一個(gè)類(lèi)型,且只能具有該類(lèi)型的值。1. 定義數(shù)據(jù)類(lèi)型在std庫(kù)中有一個(gè)標(biāo)準(zhǔn)程序包,其中定義了一些預(yù)定義的數(shù)據(jù)類(lèi)型。用VHDL編寫(xiě)程序時(shí),該庫(kù)自動(dòng)打開(kāi),所以使用這些數(shù)據(jù)類(lèi)型時(shí),不需要再次打開(kāi)。常用的預(yù)定義的數(shù)據(jù)類(lèi)型如下:(1)整數(shù)(Integer) VHDL的算術(shù)運(yùn)算符均定義范圍為32位的整數(shù)。描述算術(shù)運(yùn)算時(shí),一般使用整數(shù)類(lèi)型,但是使用整數(shù)很

8、難表示未知或三態(tài)等邏輯狀態(tài)。(2)實(shí)數(shù)(Real) 實(shí)數(shù)取值范圍為-1.0E38+1.0E38。由于處理實(shí)數(shù)的運(yùn)算需要大量資源,故一般可編程邏輯器件開(kāi)發(fā)系統(tǒng)中的VHDL綜合器不支持這種數(shù)據(jù)類(lèi)型。(3)位(Bit)和位矢量(Bit_Vector) 位和位矢量類(lèi)型的通用性強(qiáng)。位只能取值0或1,其值放在單引號(hào)中;位矢量為雙引號(hào)括的一組位數(shù)據(jù),一般表示總線的狀態(tài),如:“001100” X”00cce2000” X表示是十六進(jìn)制。(4)布爾(Boolean) 布爾數(shù)據(jù)類(lèi)型經(jīng)常用于邏輯關(guān)系運(yùn)算中,其取值只有TRUE或FALSE。(5)字符(CHARACTER) 當(dāng)對(duì)一個(gè)變量執(zhí)行字符賦值操作時(shí),應(yīng)先聲明后賦

9、值。例如將字符A賦給變量C,聲明如下: variable C: character;然后執(zhí)行賦值操作: C:= A; 其中字符A放在單引號(hào)中。(6)時(shí)間(Time)時(shí)間是一個(gè)物理量,其格式如下: TYPE 數(shù)據(jù)類(lèi)型名 Is 范圍; UNITS 基本單位; 單位; END UNITS; 例如,在STD庫(kù)中的STANDARD程序包中,如下定義時(shí)間類(lèi)型: TYPE Time IS -2147483647 TO 2147483647; UNITS fs;ps=1000 fs;us=1000 ps;us=1000 ns;ms=1000 us;sec=1000 ms;min=60 sec;hr=60 mi

10、n;END UNITS;2. IEEE預(yù)定義的標(biāo)準(zhǔn)邏輯數(shù)據(jù)類(lèi)型VHDL的標(biāo)準(zhǔn)數(shù)據(jù)“BIT”類(lèi)型是一個(gè)不可描述高阻狀態(tài)的邏輯數(shù)據(jù)類(lèi)型,定義為該類(lèi)型的數(shù)據(jù)對(duì)象的取值是0或1。在IEEE庫(kù)中的程序包STD_LOGIC_1164中定義了包含高阻(Z)和不定(X)狀態(tài)的標(biāo)準(zhǔn)邏輯位和邏輯矢量數(shù)據(jù) STD_LOGIC和STD_ LOGIC_VECTOR類(lèi)型。使用這類(lèi)數(shù)據(jù)類(lèi)型時(shí),必須寫(xiě)出庫(kù)聲明語(yǔ)句和使用程序包集合的聲明語(yǔ)句。3. 用戶定義的數(shù)據(jù)類(lèi)型 VHDL允許用戶根據(jù)芯片的資源和實(shí)際的需要定義數(shù)據(jù)類(lèi)型。用戶定義的數(shù)據(jù)類(lèi)型格式:TYPE 數(shù)據(jù)類(lèi)型名 數(shù)據(jù)類(lèi)型名 數(shù)據(jù)類(lèi)型定義;可以由用戶定義的數(shù)據(jù)類(lèi)型有:枚舉(

11、Enumerated)類(lèi)型、整數(shù)(Integer)類(lèi)型、實(shí)數(shù)(Real)類(lèi)型、數(shù)組(Array)類(lèi)型、存取(Access)類(lèi)型、文件(File)類(lèi)型、記錄(Record)類(lèi)型與時(shí)間(Time)類(lèi)型(物理類(lèi)型),常用類(lèi)型有:(1)枚舉類(lèi)型枚舉類(lèi)型是一種特殊的數(shù)據(jù)類(lèi)型,用符號(hào)表示一組實(shí)際的二進(jìn)制數(shù)。這種類(lèi)型適合表示有限狀態(tài)機(jī)的狀態(tài),有助于改善復(fù)雜電路的可讀性。定義格式:TYPE 數(shù)據(jù)類(lèi)型名 IS (元素,元素,);例如:TYPE states IS (stO, stl, st2, st3);在綜合過(guò)程中,通常自動(dòng)編碼枚舉類(lèi)型。例如將上述語(yǔ)句中的stO編碼為0,以后的元素依次加1。(2)整數(shù)(Int

12、eger)和實(shí)數(shù)(Real)類(lèi)型整數(shù)和實(shí)數(shù)類(lèi)型在標(biāo)準(zhǔn)程序包中已定義。在實(shí)際應(yīng)用中,由于數(shù)據(jù)類(lèi)型的取值范圍比較小,故應(yīng)重新定義。特別要注意限定取值范圍,以提高芯片的利用率。例如,有很多開(kāi)始學(xué)習(xí)編寫(xiě)VHDL程序的初學(xué)者,往往忘記添加定義整數(shù)類(lèi)型名的約束范圍,編寫(xiě)程序后,綜合也可通過(guò)。但是將該程序轉(zhuǎn)換為具體的在系統(tǒng)可編程邏輯芯片的熔絲圖文件時(shí),開(kāi)發(fā)可編程邏輯器件的系統(tǒng)卻顯示該芯片的資源不夠,即使一個(gè)使用非常少的邏輯門(mén)和寄存器即可完成的簡(jiǎn)單程序也不能夠滿足要求。這是因?yàn)椴患蛹s束范圍時(shí),EDA開(kāi)發(fā)軟件將該整數(shù)類(lèi)型名的整數(shù)范圍定義為默認(rèn)范圍,占用芯片內(nèi)部的資源非常多。定義格式:TYPE 數(shù)據(jù)類(lèi)型名 Is

13、數(shù)據(jù)類(lèi)型定義 約束范圍;例如:TYPE digit IS INTEGER RANGE 0 TO 9;TYPE digit IS REAL RANGE -10 TO 10;(3)數(shù)組(Array)類(lèi)型數(shù)組是一樣類(lèi)型數(shù)據(jù)集合形成的一個(gè)新的數(shù)據(jù)類(lèi)型,可以是一維或多維數(shù)組,定義格式為:TYPE 數(shù)據(jù)類(lèi)型名 IS ARRAY 范圍 OF 原數(shù)據(jù)名例如:TYPE word IS ARRAY (15 DOWNTO 0) OF BIT;其中15指定數(shù)組元素的個(gè)數(shù)為16個(gè),DOWNTO指定下標(biāo)以降序變化。例如:TYPE matrix IS ARRAY (1 TO 8,1 TO 8) OF BIT;TO指定下標(biāo)以

14、升序變化,按低到高的順序排列8個(gè)元素。為了使整個(gè)設(shè)計(jì)保持一致的設(shè)計(jì)風(fēng)格,建議采用關(guān)鍵字“DOWNTO”說(shuō)明數(shù)組或向量。向量最高位的下標(biāo)值最大,并且處于向量的最左邊。(4)記錄(Record)類(lèi)型記錄將不同類(lèi)型的數(shù)據(jù)和數(shù)據(jù)名組織在一起形成一個(gè)新的數(shù)據(jù)類(lèi)型,其定義格式為:TYPE 數(shù)據(jù)類(lèi)型名 IS RECORD元素名:數(shù)據(jù)類(lèi)型名;元素名:數(shù)據(jù)類(lèi)型名;END RECORD;例如:TYPE bank IS RECORDaddr0:STD_ LOGIC_VECTOR(7 DOWNTO 0);r0: INTEGER;END RECORD;4. 屬性 VHDL中可以具有屬性(attribute)的項(xiàng)(ite

15、ms)如下: (1)類(lèi)型和子類(lèi)型。 (2)過(guò)程和函數(shù)。 (3)信號(hào)、變量和常量。 (4)實(shí)體、結(jié)構(gòu)體、配置和程序包。 (5)元件。(6)語(yǔ)句標(biāo)號(hào)。 屬性是上述項(xiàng)目的特征,通過(guò)預(yù)定義屬性描述語(yǔ)句可以得到預(yù)定義項(xiàng)目的有關(guān)值、功能、類(lèi)型和范圍。預(yù)定義的屬性類(lèi)型有:類(lèi)型(TYPES)、數(shù)組、信號(hào)和字符串。定義屬性的一般格式為:項(xiàng)目名屬性表示符;(1)類(lèi)型(TYPES)的屬性常用類(lèi)型屬性有: TLEFT:T中最左端的值。 TRIGHT:T中最右端的值。 THIGH:T中的最大值。 TLOW:T中的最小值。 TPOS(n):參數(shù)n在T中位置序號(hào)。 TVAL(n)T中位置為n的值。 TSUCC(n):得到的

16、值為T(mén)VAL(TPOS(n)+1)。 TPRED(n):得到的值為T(mén)VAL(TPOS(n)-1)。 TLEFTOF(n):得到靠近輸入n的左邊的值。 TRIGHTOF(n):得到靠近輸入n的右邊的值。 例如: TYPE number IS INTEGER 0 TO 9;i :=numberLEFT; -i=0i :=numberRIGHT; -i=9 i :=numberHIGH; -i=9 i :=numberLOW; -i=0(2)數(shù)組屬性 常用的數(shù)組屬性有: ALEFT(n):索引號(hào)n的區(qū)間的左端位置序號(hào)。 ARIGHT(n):索引號(hào)n的區(qū)間的右端位置序號(hào)。 AfHIGH(n):索引號(hào)n

17、的區(qū)間的高端位置序號(hào)。 ALOW(n):索引號(hào)n的區(qū)間的低端位置序號(hào)。 ALENGTH(n):索引號(hào)n的區(qū)間的長(zhǎng)度值。 ARANGE(n):索引號(hào)n的區(qū)間的范圍。 例如: TYPE bitll IS ARRAY (10 TO 20) OF BIT;VARIABLE len: INTEGER; len:=bitllLENGTH; -len=11(3)信號(hào)屬性 sDELAYED(t):延時(shí)t個(gè)時(shí)間單位的信號(hào)。sSTABLE(t):在t個(gè)時(shí)間單位內(nèi),如果沒(méi)有時(shí)間發(fā)生,返回TRUE:否則返回FALSE。sQUIET(t):如果該信號(hào)在t個(gè)時(shí)間單位內(nèi)沒(méi)有發(fā)生變化,返回TRUE:否則返回FALSE。sTR

18、ANSACTION:建立一個(gè)BIT類(lèi)型的信號(hào),當(dāng)s每次改變時(shí),該BIT信號(hào)翻轉(zhuǎn)。sEVENT:若在當(dāng)前模擬周期內(nèi),該信號(hào)發(fā)生了某個(gè)事件(信號(hào)值變化),返回TRUE:否則返回FALSE。事件(EVENT)要求信號(hào)值發(fā)生變化。sACTIVE:若在當(dāng)前模擬周期內(nèi)該信號(hào)發(fā)生事件處理,返回TRUE:否則返回FALSE。信號(hào)的活躍(ACTIVE)指信號(hào)值的任何變化。sLAST_EVENT:該信號(hào)前一個(gè)事件發(fā)生到現(xiàn)在所經(jīng)過(guò)的時(shí)間。sLAST_VALUE:該信號(hào)在最近一個(gè)事件發(fā)生以前的值。sLAST_ACTIVE;從前一個(gè)事件處理到現(xiàn)在所經(jīng)過(guò)的時(shí)間。例如: 表示一個(gè)上升沿時(shí)鐘clk:clkEVENT AND

19、clk=1; 一種方法NOT clkSTABLE AND clk=1; 另種方法 表示一個(gè)下降沿時(shí)鐘clk:clkEVENTAND clk=0;2.2.4.VHDL 運(yùn)算符VHDL 為構(gòu)造計(jì)算數(shù)值的表達(dá)式提供了許多預(yù)定義運(yùn) 算符。預(yù)定義運(yùn) 算符可分四種類(lèi)型:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符與連接運(yùn)算符。分組算符運(yùn)算二元運(yùn)算符+-*/modrem*加減乘除求模求余乘方一元運(yùn)算符+-abs正號(hào)負(fù)號(hào)求絕對(duì)值關(guān)系運(yùn)算符=/=相等不等小于大于小于等于 *大于等于二元邏輯運(yùn)算andornandnorxor邏輯與邏輯或與非或非異或一元邏輯運(yùn)算not求補(bǔ)連接&連接 *注:(1)其中 = 操作符也用于表示賦值

20、操作;(2) 連接運(yùn)算符&用于位的連接。用于一維數(shù)組時(shí),右邊的內(nèi)容接在左邊之后形成一個(gè)新的數(shù)組。例如:a 和 b 都是具有兩位長(zhǎng)度的位矢量,用連接符號(hào)連接后 (y = a & b;),y(3) = a(1), y(0)= b(0)。VHDL語(yǔ)句結(jié)構(gòu)分類(lèi)VHDL的程序結(jié)構(gòu)由三部分構(gòu)成:庫(kù)、實(shí)體說(shuō)明和結(jié)構(gòu)定義。2.3.1. 庫(kù) (LIBRARY)庫(kù)是專(zhuān)門(mén)存放預(yù)編譯程序包 (package) 的地方, 這樣它們就可以在其它設(shè)計(jì)中被調(diào)用。最常用的資源庫(kù)為IEEE庫(kù),包含有IEEE標(biāo)準(zhǔn)的程序包,其中std_logic_1164是重要的程序包,大部分基于數(shù)字系統(tǒng)的程序包均以此程序包中所設(shè)定的標(biāo)準(zhǔn)為基礎(chǔ)。一

21、般使用程序包中的數(shù)據(jù)類(lèi)或子程序時(shí),需要首先聲名程序包所在的庫(kù)(使用LIBERARY語(yǔ)句)和程序包的名稱(chēng)(使用USE語(yǔ)句, USE 語(yǔ)句后跟保留字 ALL, 表示使用庫(kù)/ 程序包中的所有定義。)例 庫(kù)內(nèi)資源使用舉例LIBRARY ieee; - IEEE 標(biāo)準(zhǔn)庫(kù)的標(biāo)志名USE ieee.std_logic_1164.ALL; - 程序包名USE ieee.std_logic_unsigned.ALL;前兩條語(yǔ)句表示打開(kāi)IEEE標(biāo)準(zhǔn)庫(kù)中的std_logic_1164程序包中的所有資源。“ieee.std_logic_unsigned” 庫(kù)允許對(duì) “std_logic” 類(lèi)型的信號(hào)使用某些運(yùn)算符。V

22、HDL語(yǔ)言描述的對(duì)象稱(chēng)為實(shí)體(ENTITY),實(shí)體可以代表如CPU那樣的復(fù)雜電路,也可以代表一塊電路板、一個(gè)芯片或一個(gè)門(mén)電路。一個(gè)基本設(shè)計(jì)實(shí)體(Design Entity)由實(shí)體說(shuō)明(Entity Declaration )和結(jié)構(gòu)體 (Architecture Body)兩部分構(gòu)成。實(shí)體說(shuō)明部分規(guī)定了設(shè)計(jì)單元的公共信息(輸入輸出端口信號(hào)或引腳),而結(jié)構(gòu)體部分定義了設(shè)計(jì)單元具體的內(nèi)部特性。2.3.2 實(shí)體說(shuō) 明(entity)實(shí)體是設(shè)計(jì)中最基本的模塊,用來(lái)定義一個(gè)IC引腳規(guī)格與基本參數(shù)。其結(jié)構(gòu)如下:ENTITY實(shí)體名 IS類(lèi)屬參數(shù)說(shuō)明;端口說(shuō)明;END實(shí)體名;實(shí)體的通信點(diǎn)是端口 (PORT) ,

23、端口說(shuō)明是對(duì)基本設(shè)計(jì)實(shí)體單元與外部接口的描述,一般書(shū)寫(xiě)格式為:PORT ( 端口名,端口名,:模式 數(shù)據(jù)類(lèi)型名;端口名,端口名,:模式 數(shù)據(jù)類(lèi)型名;端口名,端口名,:模式 數(shù)據(jù)類(lèi)型名;);每個(gè)端口必須定義:信號(hào)名: 端口信號(hào)名在實(shí)體中必須是唯一的屬性: 它包括模式 (MODE): 決定信號(hào)的方向;類(lèi)型 (TYPE): 端口所采用的數(shù)據(jù)類(lèi)型。端口模式 (MODE) 有以下幾種類(lèi)型:IN 信號(hào)進(jìn)入實(shí)體但并不輸出OUT 信號(hào)輸 出 到實(shí)體外 部,但 不會(huì)在內(nèi)部反饋使用INOUT 信號(hào)是雙向的 (既可以進(jìn)入實(shí)體,也可以離開(kāi)實(shí)體)BUFFER 信號(hào)輸出到實(shí)體外部, 但同時(shí)也在實(shí)體內(nèi)部反饋VHDL語(yǔ)言有1

24、0種數(shù)據(jù)類(lèi)型,在邏輯電路設(shè)計(jì)中可以用std_logic說(shuō)明的位邏輯數(shù)據(jù)bit,也可以使用 std_logic_vector 說(shuō)明的位矢量 bit_vector 。在使用時(shí),須在實(shí)體說(shuō)明之前增加兩條語(yǔ)句:LIBRARYIEEE;IEEE庫(kù)USEIEEE.STD_LOGIC_1164.ALL; 調(diào)用其中STD_LOGIC_1164程序包中所有的資源 (.ALL)例 實(shí)體的表述方法舉例如下圖所示,D 是 16-bit 輸入總線,CLK, Reset, 和 OE 是輸入信號(hào),Q 是 16-bit 三態(tài)輸出總線,AD 是 16-bit 雙向總線,INT 是輸出信號(hào), 但也在內(nèi)部使用,AS 是三態(tài)輸出信號(hào)

25、圖1. 實(shí)體my_design1的外部端口實(shí)體 my_design1 的VHDL 表述為:ENTITY my_design1 isPORT (d:IN std_logic_vector (15 downto 0);clk,reset,oe:IN std_logic;q:OUT std_logic_vector (15 downto 0);ad:INOUT std_logic_vector (15 downto 0);int:BUFFER std_logic;as:OUT std_logic);END my_design1;結(jié)構(gòu)體 (Architecture)結(jié)構(gòu)體描述了實(shí)體中具體的邏輯功能,格

26、式如下:ARCHITECTURE 結(jié)構(gòu)體名 of 實(shí)體名 is定義語(yǔ)句 內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類(lèi)型等的定義;BEGIN并發(fā)處理語(yǔ)句;END 結(jié)構(gòu)體名;注:結(jié)構(gòu)體包含的并發(fā)描述語(yǔ)句,語(yǔ)句執(zhí)行的順序與其出現(xiàn)的次序無(wú)關(guān)。例 結(jié)構(gòu)體描述方法舉例ENTITY logic ISPORT (a,b :IN std_logic;w, x, y:OUT std_logic;z:OUT std_logic_vector (3 downto 0);END logic;ARCHITECTURE behavior of logic isBEGINy = (a AND b);w = (a OR b);x = 1;z = “

27、0101”;END behavior;2.4 順序語(yǔ)句 (Sequential語(yǔ)句 )順序描述語(yǔ)句按出現(xiàn)的次序順序執(zhí)行,出現(xiàn)在進(jìn)程(Process)或子程序中。VHDL中的順序語(yǔ)句有:2.4.1 信號(hào)賦值語(yǔ)句格式為: 信號(hào)名 = 信號(hào)變量表達(dá)式賦值符號(hào)兩邊信號(hào)量的類(lèi)型和長(zhǎng)度應(yīng)該一致。2.4.2 變量賦值語(yǔ)句格式為:變量名:= 表達(dá)式;變量賦值僅用在進(jìn)程、函數(shù)和過(guò)程中。賦值符號(hào)也可為任何對(duì)象賦初值。Process,F(xiàn)unction,Procedure中的語(yǔ)句都是順序執(zhí)行的,2.4.3 IF-THEN-ELSE該語(yǔ)句根據(jù)一個(gè)或一組條件的布爾運(yùn)算而選擇某一特定的執(zhí)行通道,其格式如下:IF THEN順

28、序處理語(yǔ)句;ELSIF THEN順序處理語(yǔ)句;ELSE順序處理語(yǔ)句;END IF;例 IF-THEN-ELSE 語(yǔ)句舉例PROCESS (sel, a, b, c, d)BEGINif (sel = “00”) then step = a;elsif (sel = “01”) thenstep = b;elsif (sel = “10”) thenstep = c;else step 順序處理語(yǔ)句;END CASE;CASE 和 IS 間的表達(dá)式取值滿足條件表達(dá)式的值時(shí),程序執(zhí)行由符號(hào)=指定的順序處理語(yǔ)句。例 CASE語(yǔ)句舉例library ieee;use ieee.std_logic_11

29、64.all;entity mux isport (a,b,c:in std_logic;output:out std_logic );end mux;ARCHITECTURE archdesign OF muxISSIGNAL option: std_logic_vector(0 TO 1);BEGINdecode: PROCESS (a, b, c, option)BEGINCASE option ISWHEN 00 = output output output output = 0;END CASE;END PROCESS decode;END archdesign;2.4.5 WAIT

30、 語(yǔ)句進(jìn)程(PROCESS)的執(zhí)行過(guò)程可以由WAIT等待語(yǔ)句控制,WAIT語(yǔ)句有以下4種格式:WAIT : 無(wú)限等待;WAIT ON (信號(hào)名表):當(dāng)其中任何一個(gè)信號(hào)發(fā)生變化,激活該進(jìn)程;WAIT UNTIL (條件表達(dá)式):當(dāng)條件表達(dá)式的取值為真時(shí),激活該進(jìn)程;WAIT FOR (時(shí)間表達(dá)式): 給出了進(jìn)程被掛起的最長(zhǎng)時(shí)間,一旦超過(guò)該值,則激活進(jìn)程。2.5 并行 (Concurrent) 語(yǔ)句并行語(yǔ)句位于進(jìn)程外部,語(yǔ)句不分先后,同時(shí)執(zhí)行。在此主要講述常用的 WHEN-ELSE 語(yǔ)句和 WITH-SELECT-WHEN 語(yǔ)句。2.5.1 WHEN-ELSE 語(yǔ)句這種條件型信號(hào)賦值語(yǔ)句根據(jù)不同的

31、條件,將不同的值賦給信號(hào),其格式如下:信號(hào)名=表達(dá)式1when 條件1 else 表達(dá)式2when 條件2 else 表達(dá)式3when 條件3 else 表達(dá)式4when 條件4 else 表達(dá)式5when 條件5 else 在每個(gè)表達(dá)式后都跟有“WHEN”指定的條件,滿足該條件時(shí),將表達(dá)式的只賦給信號(hào),最后一個(gè)表達(dá)式可以不跟條件,它表明當(dāng)上述條件都不滿足時(shí),將該表達(dá)式的值賦給信號(hào)。例 用WHEN-ELSE語(yǔ)句描述四選一多路選擇器library ieee;use ieee.std_logic_1164.all;entity mux4 is port( a,b,c,d,I,j: IN std_l

32、ogic; x: OUT std_logic);end mux4;architecture archmux of mux4issignal s : std_logic_vector (1 downto 0);begins = I&j;x = a when ( s = “00” ) else b when ( s = “01” ) else c when ( s = “10” ) else d;end archmux;2.5.2 WITH-SELECT-WHEN 語(yǔ)句選擇型信號(hào)賦值語(yǔ)句用于并行的信號(hào)賦值,其格式為:with 表達(dá)式 select 信號(hào)名=表達(dá)式1when 條件1 else 表達(dá)式

33、2when 條件2 else 表達(dá)式3when 條件3 else 表達(dá)式n-1when 條件n-1 else 表達(dá)式nwhen 條件n else 注:WITH-SELECT-WHEN 必須指明所有互斥條件例 WITH-WHEN-ELSE語(yǔ)句舉例- 四選一多路開(kāi)關(guān) (mux)library ieee;use ieee.std_logic_1164.all;entity mux isport (a, b, c, d:in std_logic;s:in std_logic_vector(1 downto 0);x:out std_logic );end mux;architecture archmu

34、x of mux isbeginwith s selectx = a when “00”,- x 根據(jù) s 的不同而賦值 b when “01”, c when “10”, d when “11”;end archmux;小結(jié):幾種語(yǔ)句的比較語(yǔ)句With-select-whenWhen-elseIf-elseCase-when選擇條件一個(gè)信號(hào)的不同值,互斥多個(gè)信號(hào)多種組合,不必互斥多個(gè)信號(hào)多種組合,不必互斥一個(gè)信號(hào)的不同值,互斥語(yǔ)句屬性并行并行順序順序用途編碼、譯碼、多路選擇器優(yōu)先編碼器,地址譯碼器優(yōu)先編碼器,地址譯碼器編碼、譯碼、多路選擇器,2.6 結(jié)構(gòu)體的子結(jié)構(gòu)描述一個(gè)結(jié)構(gòu)體可以用多個(gè)子結(jié)

35、構(gòu)組成, 有利于編程和查錯(cuò)。 VHDL語(yǔ)言可以使用3種子結(jié)構(gòu)描述語(yǔ)句,即BLOCK語(yǔ)句、PROCESS語(yǔ)句和子程序。2.6.1 BLOCK語(yǔ)句該語(yǔ)句組合結(jié)構(gòu)體中的并行描述語(yǔ)句,可增加并行描述語(yǔ)句與其結(jié)構(gòu)的可讀性,使結(jié)構(gòu)體層次清晰, 對(duì)程序的修改和移植非常有用. 該語(yǔ)句的結(jié)構(gòu)為:塊結(jié)構(gòu)名:BLOCKBEGINEND BLOCK塊結(jié)構(gòu)名;BLOCK語(yǔ)句中描述的各個(gè)語(yǔ)句可并發(fā)執(zhí)行, 舉例如下:例: 采用BLOCK語(yǔ)句描述二選一電路ENTITY mux IS PORT ( d0,d1: IN BIT;Sel: IN BIT; Q: OUT BIT );END mux;ARCHITECTURE conn

36、ect OF mux IS SIGNAL tmp1, tmp2, tmp3: BIT;BEGINcale:BLOCKBEGIN tmp1 = d0 AND sel;tmp2 = d1 AND ( NOT sel) ;tmp3 = tmp1 OR tmp2;q = tmp3;END BLOCK cale;END connect;其中, cale:為塊結(jié)構(gòu)名, SIGNAL 為信號(hào)說(shuō)明語(yǔ)句的關(guān)鍵字.2.6.2 進(jìn)程 (PROCESS)語(yǔ)句進(jìn)程 (PROCESS)用于描述順序(sequential)事件并且包含在結(jié)構(gòu)體中。順序描述語(yǔ)句按語(yǔ)句出現(xiàn)的次序順序執(zhí)行。進(jìn)程語(yǔ)句的結(jié)構(gòu)為: 進(jìn)程名 :PROCE

37、SS( 敏感信號(hào)1,敏感信號(hào)2, )BEGINEND PROCESS;進(jìn)程語(yǔ)句包括三部分 :敏感表 (Sensitivity list) :當(dāng)敏感表中 的某個(gè)信號(hào)變化時(shí)進(jìn)程被激活進(jìn)程 (PROCESS) :對(duì)行為的描述結(jié)束語(yǔ)句 (END) :描述進(jìn)程的結(jié)束進(jìn)程啟動(dòng)后,PROCESS中的語(yǔ)句將由上到下逐句執(zhí)行一遍,執(zhí)行到最后一個(gè)語(yǔ)句后,返回到開(kāi)始語(yǔ)句,等待敏感信號(hào)的出現(xiàn),因此,只要PROCESS中指定的敏感信號(hào)變化一次,該進(jìn)程就執(zhí)行一次。注:一個(gè)結(jié)構(gòu)體可以包含多個(gè)進(jìn)程語(yǔ)句;當(dāng)進(jìn)程中使用了WAIT語(yǔ)句時(shí),進(jìn)程不允許帶有敏感信號(hào)。例 簡(jiǎn)單的進(jìn)程實(shí)例:mux: PROCESS(a, b, s)- 敏感

38、表BEGINif ( s = 0 ) thenx = a; else- 定義一段進(jìn)程x = b; end if;END PROCESS mux;這里進(jìn)程mux 對(duì)于信號(hào) a, b, s敏感,無(wú)論何時(shí),信號(hào) a, b或s發(fā)生變化, 進(jìn)程中的語(yǔ)句將被重新賦值計(jì)算。2.6.3 子程序在VHDL中子程序由一系列說(shuō)明和語(yǔ)句組成,可調(diào)用其他子程序,其本身也可以嵌套子程序。子程序有過(guò)程 (PROCEDURE) 和函數(shù) (FUNCTION) 兩種類(lèi)型。函數(shù)只能用以計(jì)算數(shù)值, 而不能用以改變與函數(shù)形參相關(guān)的對(duì)象的值。因此,函數(shù)的參量只能是方式為 IN 的信號(hào)與常量,而過(guò)程的參量可以為 IN,OUT,INOUT

39、方式。過(guò)程能返回多個(gè)變量, 函數(shù)只能有一個(gè)返回值.1. 過(guò)程語(yǔ)句 ( Procedure )結(jié)構(gòu)如下:PROCEDURE 過(guò)程名(參數(shù)1:參數(shù)2:) IS 定義語(yǔ)句;(變量等定義)BEGIN順序處理語(yǔ)句;(過(guò)程處理語(yǔ)句)END 過(guò)程名注:過(guò)程中的輸入/輸出參數(shù)均應(yīng)列在緊跟過(guò)程名的括號(hào)中。例 過(guò)程舉例:ENTITY PROC IS PORT ( A: IN BIT_VECTOR (0 TO 2);M: OUT BIT_VECTOR (0 TO 2);END PROC;ARCHITECTURE EXAMPLE OF PROC ISPROCEDURE SIMPLE ( W,X,Y: IN BIT;

40、Z: OUT BIT ) ISBEGIN Z=(W AND X) OR Y;END SIMPLE;PROCESS (A)BEGINSIMPLE (A(0),A(1),A(2),M(0);SIMPLE (A(2),A(1),A(0),M(1);SIMPLE (A(1),A(2),A(0),M(2);END PROCESS;END EXAMPLE;2. 函數(shù)語(yǔ)句 ( Function )結(jié)構(gòu)如下:FUNCTION 函數(shù)名(參數(shù)1:參數(shù)2:)RETURN 數(shù)據(jù)類(lèi)型名 IS定義語(yǔ)句;BEGIN順序處理語(yǔ)句;RETURN 返回變量名;END 函數(shù)名;注:函數(shù)語(yǔ)句括號(hào)內(nèi)的所有參數(shù)都是輸入?yún)?shù)或輸入信號(hào),函

41、數(shù)必須以RETURN語(yǔ)句結(jié)束,并且返回一個(gè)值。例 函數(shù)舉例:- 此函數(shù)返回兩數(shù)中的較小數(shù)FUNCTION Min( x,y : INTEGER) RETURN INTEGER ISBEGINIF x RETURN 1;WHEN 1 = RETURN 0;WHEN z = RETURN z;END CASE;END Invert;END Logic;2.7 用VHDL描述基本邏輯電路2.7.1 描述組合電路1. 用VHDL語(yǔ)言描述一個(gè)如圖所示的三態(tài)門(mén)。doutdinen圖3 三態(tài)門(mén)程序如下: LIBRARY IEEE; USE IEEESTD_LOGIC_1164.ALL; ENTITY tri

42、_gate IS PORT(din,en : IN STD_LOGIC; Dout :OUT STD_LOGIC); END tri_gate;ARCHITECTURE example OF tri_gate IS BEGIN PROCESS (din,en) BEGIN IF en=l THEN dout = din;ELSE dout =Z;END IF; END PROCESS;END example;2. 用VHDL語(yǔ)言描述如圖所示的電路:cabm圖4 邏輯電路ENTITY combine IS PORT(a,b,c:IN BIT; m:OUT BIT);END combine; AR

43、CHITECTURE example OF combine IS PROCESS(a, b, c) VARIABLE n: BIT; BEGIN IF a=l THEN n:= b;ELSE n:= C;END IF; m = n; END PROCESS; END example;注:用進(jìn)程描述組合電路時(shí),將輸入信號(hào)a、b和c都寫(xiě)到敏感列表中,保證每個(gè)輸入信號(hào)的變化均啟動(dòng)該進(jìn)程,引起輸出信號(hào)發(fā)生變化;否則未列入敏感列表的信號(hào)變化不啟動(dòng)該進(jìn)程,這意味著該進(jìn)程描述的電路引入了鎖存器。設(shè)計(jì)時(shí)序電路D 型鎖存器描述一個(gè)時(shí)鐘信號(hào)為clk,數(shù)據(jù)輸入信號(hào)為data,輸出信號(hào)為q的鎖存器。時(shí)鐘信號(hào)clk為高

44、電平時(shí),輸出信號(hào)q隨數(shù)據(jù)信號(hào)data變化而變化;為低電平時(shí),輸出信號(hào)保持不變,電路處于鎖存狀態(tài)。程序如下:entity latch isport(data,clk:in bit;q:out bit);end latch;architecture behave Of latch iSbeginprocess(clk,data)beginif(clk= 1)thenq=data;end if;end process;end behave;上升沿觸發(fā)的D型觸發(fā)器帶有異步復(fù)位(reset,高電平有效)、異步置位(set,高電平有效)功能和上升沿觸發(fā)的D型觸發(fā)器。 程序如下: library ieee;

45、 use ieeestd_logic_1164all; entity dff is port(d,clk,reset,set:in std_logic; q:out std_logic); end dff; architecture async_set_reset of dff is BEGIN setreset:process(clk,reset,set) beginif reset= l then q= 0;elsif set= l then q= 1;elsif rising_edge(clk) then q= d;end if; end process setreset; end as

46、ync_set_reset;程序中rising_edge(clk)表示如果輸入信號(hào)clk的上升沿來(lái)到時(shí),將輸入信號(hào)d賦給輸出信號(hào)q。上升沿rising_edge和下降沿fallin_edge函數(shù)包含在標(biāo)準(zhǔn)庫(kù)ieeestd_logic_1164a11中,用于描述上升沿和下降沿有效的事件。J_K型觸發(fā)器帶有復(fù)位(-clr,低電平有效)置位(-set,低電平有效)功能和上升沿觸發(fā)的J-K型觸發(fā)器的程序如下;LIBRARY IEEE; USE IEEESTD_LOGIC _1164ALL; ENTITY jkff ISPORT (set,clr,clk,j,k :IN STD_LOGIC;q,qb :

47、OUT STD_LOGIC); END jkff ; ARCHITECTURE rtl OF jkff IS SIGNAL q_s, qb_s: STD_LOGIC; BEGIN PROCESS( set,clr,clk,j,k) BEGIN IF ( set =0) THEN q_s = l; qb_s =0;-置位; ELSIF ( clr =0) THEN q_s = 0; qb_s = 1;-復(fù)位; ELSIF (clk EVENT AND clk=1) THENIF (j =0) AND ( k =1) THEN q_s = 0; qb_s =1;ELSIF (j =1) AND (

48、 k =0) THEN q_s = 1; qb_s =0;ELSIF (j=1) AND ( k=1) THEN q_s = NOT q_s; qb_s = NOT qb_s;END IF; END IF;q = q_s;qb = qb_s;END PROCESS; END rtl;4. 計(jì)數(shù)器用VHDL描述一個(gè)具有清零和計(jì)數(shù)允許功能的十進(jìn)制計(jì)數(shù)器,輸入信號(hào)為clk,清零控制信號(hào)為clr(低電平有效),計(jì)數(shù)允許控制信號(hào)為en(高電平有效)。程序如下: library ieee; use ieeestd _logic_1164all; entity counter0 is port( clk,c

49、lr,en:in std_logic; count:out integer range 0 to 15); end; architecture counter0_arch of counter0 is begin process(clk,clr)variable countl;inteqer range 0 to 15; beginif(clr=0)thencountl:=0; elsif rising_edge(clk)thenif(en=l) thenif countl=9 thencountl:=0; elsecountl:= countl+1; end if; end if; end

50、if;count=countl;end process; end counter0 _arch;5. 寄存器 (Register) 三種描述寄存器的方法1.PROCESS (clk,d)BEGINIF (clkevent and clk=1) THEN - clk 的上升沿q = d;END IF;END PROCESS;2.PROCESS (clk,d)BEGINIF RISING_EDGE (clk) THEN q = d;END IF;END PROCESS;3.PROCESS- 沒(méi)有敏感表BEGINWAIT UNTIL clkevent AND clk = 1; - 必須是第一條q 在

51、 ispDesignEXPERT System Project Navigator主窗口中,按File=New Project 菜單建立一個(gè)新的工程文件,此時(shí)會(huì)彈出如下圖所示的 對(duì)話框,在該對(duì)話框中的 Project Type 欄中,選擇 VHDL 類(lèi)型,然后,將 該工程文件存盤(pán)為 demo.syn。step2- 在 ispDesignEXPERT System Project Navigator 主 窗 口 中,選 擇 Source=New 菜 單。 在 彈 出 的 New Source 對(duì) 話 框 中, 選 擇 VHDL Module 類(lèi) 型。此 時(shí), 軟 件 會(huì) 產(chǎn) 生 一 個(gè) 如 下

52、圖 所 示 的 New VHDL Source 對(duì) 話 框:在 對(duì) 話 框 的 各 欄 中, 分 別 填 入 如 上 圖 所 示 的 信 息。 按 OK 鈕 后, 進(jìn) 入 文 本 編 輯 器 - Text Editor 編 輯 VHDL 文 件。Step3-在 Text Editor中輸入如下用VHDL描述的二十進(jìn)制計(jì)數(shù)器的程序,存盤(pán)返回到ispDesignEXPERT System Project Navigator 項(xiàng)目引導(dǎo)器窗口,輸入的源程序文件demo.vhd顯示在Source in Project中。二十進(jìn)制計(jì)數(shù)器程序與說(shuō)明如下:library ieee;use ieee.std_l

53、ogic_1164.all;use ieee.std_logic_unsigned.all;entity demo isport(clk,clr,en: in std_logic; A,B,C,D,E: out std_logic);end demo;architecture demo_arch of demo issignal count: std_logic_vector(4 downto 0);begin A=count(0); B=count(1); C=count(2); D=count(3); E=count(4); process(clk,clr) Begin if(clr=0)

54、 then 清零(clr)信號(hào)有效時(shí), count=00000;計(jì)數(shù)器清零 elsif rising_edge(clk) then 時(shí)鐘信號(hào)的上升沿觸發(fā) if(en=1) then if(count=10011) then 計(jì)數(shù)到十進(jìn)制的19時(shí),再來(lái) count=00000;一個(gè)計(jì)數(shù)時(shí)鐘時(shí),計(jì)數(shù)器從零開(kāi)始計(jì)數(shù) else count 選中Source in Project源 程 序 區(qū) 中 的 ispLSI1016-80LJ44, 在主窗口右側(cè)選擇Compile Design命令,編譯文件demo.vhd后生成熔絲圖文件(*.jed)。一般來(lái)講,第一次輸入的VHDL源程序時(shí)都可能存在語(yǔ)法和其他輸

55、入方面的錯(cuò)誤,此時(shí)可選擇菜單 Tools=Synplicity Synplify Synthesis,出現(xiàn)如下窗口。選 Add調(diào)入demo.vhd,然后對(duì)demo.vhd文件進(jìn)行編譯、綜合。 若 整 個(gè) 編 譯、 綜 合 過(guò) 程 無(wú) 錯(cuò) 誤, 該 窗 口 在 綜 合 過(guò) 程 結(jié) 束 時(shí) 會(huì) 自 動(dòng) 關(guān) 閉。 若 在 此 過(guò) 程 中 出 錯(cuò), 雙 擊 上 述 Synplify 窗 口 中 Source Files 欄 中 的 demo.vhd 文 件 進(jìn) 行 修 改 并 存 盤(pán), 然 后 按 RUN 鈕 重 新 編 譯。Step5- 編譯和綜合各步驟通過(guò)后,要形成可以將程序下載到實(shí)驗(yàn)板上的*.j

56、ed文件,為此,在文本編輯軟件中按照程序編寫(xiě)一個(gè)引腳鎖定文件(*.prn),將程序中的輸入/輸出信號(hào)與實(shí)驗(yàn)板上的ispLSI1016芯片的具體管腳一一對(duì)應(yīng)。下面是demo中的二十進(jìn)制計(jì)數(shù)器的引腳鎖定文件demo.prn:In/out信號(hào)引腳屬性芯片引腳號(hào)ClkIn11ClrIn14EnIn24AOut15BOut16COut17DOut18Eout19此后,打開(kāi)編譯設(shè)計(jì)文件的Compile Design的Compile Properties對(duì)話框,在Pin文本框中輸入引腳鎖定文件Demo.prn,然后單擊“確定”按鈕,完成引腳鎖定功能。step6- 返回到ispDesignEXPERT Sys

57、tem Project Navigator 項(xiàng)目引導(dǎo)器窗口,選中Source in Project源 程 序 區(qū) 中 的 ispLSI1016-80LJ44, 在主窗口右側(cè)選擇Compile Design命令,編譯文件demo.vhd后生成用于下載的熔絲圖文件demo.jed。下載熔絲圖文件為了下載熔絲圖文件到實(shí)驗(yàn)板的ispLSI1016-80PLCC44芯片中,執(zhí)行如下操作:檢查實(shí)驗(yàn)板的編程接口電纜是否已連接到計(jì)算機(jī)的并行接口處,如未連好,文件存盤(pán)后關(guān)閉計(jì)算機(jī),將接口電纜連接好后開(kāi)機(jī);在ispDesignEXPERT System Project Navigator 左側(cè)的Source in

58、 Project窗口中,選中系統(tǒng)可編程邏輯器件ispLSI1016-80LJ44;在右側(cè)的窗口中,雙擊系統(tǒng)可編程邏輯器件的ISP Daisy Chain Download(蓮花鏈?zhǔn)较螺d)命令,進(jìn)入程序下載操作;雙擊LSC ISP Daisy Chain Download 系統(tǒng)中的SCAN按鈕開(kāi)始掃描操作,查找用戶實(shí)驗(yàn)板上的ispLSI器件,如果計(jì)算機(jī)的并行接口和編程接口電纜連接以與編程接口電纜和用戶電路板的連接無(wú)誤,則程序?qū)@示用戶電路板的ispLSI集成電路的型號(hào),然后提示Scan Board: successful。在Browse窗口中找到需要下載的.jed文件,并選擇PV(Program

59、 & Verify)選項(xiàng);按Ctrl+R組合鍵執(zhí)行下載操作,下載結(jié)束后,實(shí)驗(yàn)板上的5個(gè)發(fā)光二極管將開(kāi)始計(jì)數(shù)顯示。第四章 設(shè)計(jì)示例本章通過(guò)一個(gè)具有一定應(yīng)用價(jià)值的實(shí)例,詳細(xì)介紹了用VHDL語(yǔ)言從輸入設(shè)計(jì)到編程可編程芯片的各個(gè)步驟,該實(shí)例設(shè)計(jì)已在ispDesignEXPERT開(kāi)發(fā)系統(tǒng)中完成,并在TDS-1型在系統(tǒng)可編程邏輯集成電路實(shí)驗(yàn)板上得到了驗(yàn)證,關(guān)于TDS-1型在系統(tǒng)可編程邏輯集成電路實(shí)驗(yàn)板的電路原理可參見(jiàn)該系統(tǒng)的使用說(shuō)明書(shū)。設(shè)計(jì)示例:用VHDL編寫(xiě)程序?qū)崿F(xiàn)數(shù)字頻率計(jì)的控制4個(gè)十進(jìn)制計(jì)數(shù)器在單位時(shí)間內(nèi)計(jì)數(shù)、停止計(jì)數(shù)和清零等邏輯功能。如下圖所示,xclk為待測(cè)的輸入信號(hào),clk為8HZ標(biāo)準(zhǔn)信號(hào),作

60、為產(chǎn)生1秒信號(hào)的輸入信號(hào)。D0-A0為個(gè)位十進(jìn)制計(jì)數(shù)器的BCD碼輸出信號(hào),D3-A3為千位十進(jìn)制計(jì)數(shù)器的BCD碼輸出信號(hào),為實(shí)驗(yàn)板上的LED數(shù)碼管驅(qū)動(dòng)電路提供輸入信號(hào)。D0-A0D1-A1D2-A2D3-A3Xclkclk圖7 4位數(shù)字頻率計(jì)該程序由5個(gè)進(jìn)程組成,其中進(jìn)程P1-P4分別描述4個(gè)十進(jìn)制計(jì)數(shù)器,進(jìn)程P5產(chǎn)生計(jì)數(shù)器的清零信號(hào)clr和計(jì)數(shù)允許信號(hào) en,源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fre

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論