第11章 VHDL設(shè)計(jì)初步_第1頁(yè)
第11章 VHDL設(shè)計(jì)初步_第2頁(yè)
第11章 VHDL設(shè)計(jì)初步_第3頁(yè)
第11章 VHDL設(shè)計(jì)初步_第4頁(yè)
第11章 VHDL設(shè)計(jì)初步_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、vhdl 設(shè)計(jì)初步物理科學(xué)與電子工程系參考資料v1 潘松,黃繼業(yè). eda技術(shù)實(shí)用教程. 北京,科學(xué)出版社. 2002v2潘松,黃繼業(yè). 現(xiàn)代dsp技術(shù). 西安,西安電子科技大學(xué)出版社. 2003v vhdl是非常高速集成電路硬件描述語(yǔ)言是非常高速集成電路硬件描述語(yǔ)言 ( (very high speed integrated circuit hardware description language)的英文縮寫(xiě)。的英文縮寫(xiě)。v語(yǔ)法和風(fēng)格語(yǔ)法和風(fēng)格:(1 1)類(lèi)似與現(xiàn)代高級(jí)編程語(yǔ)言,如)類(lèi)似與現(xiàn)代高級(jí)編程語(yǔ)言,如c語(yǔ)言。語(yǔ)言。(2)vhdl描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。描述的是硬件,

2、它包含許多硬件特有的結(jié)構(gòu)。 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 ieee; use ieee.std_logic_1164.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 入門(mén)的最有效

3、的方法是通過(guò)具體電路實(shí)例引出對(duì)應(yīng)的vhdl 表述,通過(guò)這些有針對(duì)性的表述進(jìn)而學(xué)習(xí)相關(guān)的語(yǔ)句語(yǔ)法,再通過(guò)多個(gè)類(lèi)似實(shí)例的學(xué)習(xí),逐步完備vhdl 的基本語(yǔ)法知識(shí)和提高電路的描述和設(shè)計(jì)能力。據(jù)此,全章通過(guò)數(shù)個(gè)簡(jiǎn)單、完整而典型的vhdl 設(shè)計(jì)示例,使讀者初步了解用vhdl 表達(dá)和設(shè)計(jì)電路的方法,并對(duì)由此而引出的vhdl 語(yǔ)言現(xiàn)象和語(yǔ)句規(guī)則能逐步趨向系統(tǒng)的了解。 由于用硬件描述語(yǔ)言來(lái)對(duì)電子線(xiàn)路的表達(dá)和設(shè)計(jì)是eda 建模和實(shí)現(xiàn)技術(shù)中最基本和最重要的方法,其它的許多方法都是建筑在這一基礎(chǔ)之上的,如使用matlab/dsp builder的設(shè)計(jì)方案、圖形方式的狀態(tài)機(jī)輸入法、原理圖輸入法等等。因此vhdl 的學(xué)習(xí)

4、在eda技術(shù)的掌握中具有十分重要的地位。1 簡(jiǎn)單組合電路的vhdl 描述 2選1 多路選擇器是典型的組合電路,本章以此電路的vhdl 表述與設(shè)計(jì)為例,引出相關(guān)的vhdl 結(jié)構(gòu)、語(yǔ)句表述、數(shù)據(jù)規(guī)則和語(yǔ)法特點(diǎn),并加以詳細(xì)說(shuō)明。1.1 多路選擇器的多路選擇器的vhdl 描述描述 2 選1 多路選擇器的電路模型,或元件圖如圖3-1 所示。例3-1 是其vhdl 的完整描述,即可使用vhdl 綜合器直接綜合出實(shí)現(xiàn)即定功能的邏輯電路,對(duì)應(yīng)的邏輯電路如圖3-2 所示,因而可以認(rèn)為是此多路選擇器的內(nèi)部電路結(jié)構(gòu)。v注意,電路的功能可以是唯一的,但其電路的結(jié)構(gòu)方式不是唯一的,它決定于綜合器的基本元件庫(kù)的來(lái)源、優(yōu)化

5、方向和約束的選擇、目標(biāo)器件(指fpga/cpld)的結(jié)構(gòu)特點(diǎn)等等。 圖中,a 和b 分別為兩個(gè)數(shù)據(jù)輸入端的端口名,s 為通道選擇控制信號(hào)輸入端的端口名,y為輸出端的端口名?!癿ux21a”是設(shè)計(jì)者為此器件取的名稱(chēng)(好的名稱(chēng)應(yīng)該體現(xiàn)器件的基本功能特點(diǎn))?!纠?-1】entity mux21a isport ( a, b : in bit; s : in bit; y : out bit );end entity mux21a;architecture one of mux21a isbegin y fb),當(dāng)s 為高電平時(shí), y 輸出fb,而當(dāng)s 為低電平時(shí),y 輸出fa。顯然,圖3-3 的波型

6、證實(shí)了vhdl 邏輯設(shè)計(jì)的正確性。v注意, 以上各例的實(shí)體和結(jié)構(gòu)體分別是以“ end entity xxx ” 和“ end architecture xx ”語(yǔ)句結(jié)尾的,這是符合vhdl 的ieee std 1076_1993 版的語(yǔ)法要求的。若根據(jù)vhdl87 版本,即ieee std 1076_1987 的語(yǔ)法要求,這兩條結(jié)尾語(yǔ)句只需寫(xiě)成“end;”或“end xx”。但考慮到目前絕大多數(shù)常用的eda 工具中的vhdl 綜合器都兼容兩種vhdl 版本的語(yǔ)法規(guī)則,且許多最新的vhdl 方面的資料,仍然使用vhdl87版本語(yǔ)言規(guī)則,因此,出于實(shí)用的目的,對(duì)于以后出現(xiàn)的示例,不再特意指出vhd

7、l 兩種版本的語(yǔ)法差異處。但對(duì)于不同的eda 工具,仍需根據(jù)設(shè)計(jì)程序不同的vhdl 版本表述,在綜合前作相應(yīng)的設(shè)置。v【例3-2】見(jiàn)文件夾mux21a1 entity mux21a is port ( a, b : in bit; s : in bit; y : out bit ); end entity mux21a; architecture one of mux21a is signal d,e : bit; begin d = a and (not s) ; e = b and s ; y = d or e ; end architecture one ;【例3-3】見(jiàn)文件夾mux21

8、a2 entity mux21a is port ( a, b, s: in bit; y : out bit ); end entity mux21a; architecture one of mux21a is begin process (a,b,s) begin if s = 0 then y = a ; else y = b ; end if; end process;v end architecture one ;圖3-3 mux21a功能時(shí)序波形3.1.2 相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法說(shuō)明 以下將對(duì)例3-1 至例3-3 中出現(xiàn)的相關(guān)語(yǔ)句結(jié)構(gòu)和語(yǔ)法含義作出說(shuō)明: 1. 實(shí)體表達(dá) vhdl 完

9、整的、可綜合的程序結(jié)構(gòu)必須能完整地表達(dá)一片專(zhuān)用集成電路asic 器件的端口結(jié)構(gòu)和電路功能,即無(wú)論是一片74ls138 還是一片cpu,都必須包含實(shí)體和結(jié)構(gòu)體兩個(gè)最基本的語(yǔ)言結(jié)構(gòu)。這里將含有完整程序結(jié)構(gòu)(包含實(shí)體和結(jié)構(gòu)體)的vhdl 表述稱(chēng)為設(shè)計(jì)實(shí)體。如前所述,實(shí)體描述的是電路器件的端口構(gòu)成和信號(hào)屬性,它的最簡(jiǎn)表式如下:【例3-4】 entity e_name is port ( p_name : port_m data_type; . p_namei : port_mi data_type ); end entity e_name; 上式中,entity、is、port 和end entity

10、 都是描述實(shí)體的關(guān)鍵詞,在實(shí)體描述中必須包含這些關(guān)鍵詞。在編輯中,關(guān)鍵詞不分大寫(xiě)和小寫(xiě)。實(shí)體名端口信號(hào)名端口模式數(shù)據(jù)類(lèi)型 2. 實(shí)體名 例3-4 中的e_name 是實(shí)體名,是標(biāo)識(shí)符,具體取名由設(shè)計(jì)者自定。由于實(shí)體名實(shí)際上表達(dá)的應(yīng)該設(shè)計(jì)電路的器件名,所以最好根據(jù)相應(yīng)電路的功能來(lái)確定,如4 位二進(jìn)制計(jì)數(shù)器,實(shí)體名可取為counter4b;8 位二進(jìn)制加法器,實(shí)體名可取為adder8b,等等。但應(yīng)注意,不應(yīng)用數(shù)字或中文定義實(shí)體名,也不應(yīng)用與eda 工具庫(kù)中已定義好的元件名作為實(shí)體名,如or2、latch 等,且不能用數(shù)字起頭的實(shí)體名,如74lsxx。 3. 端口語(yǔ)句和端口信號(hào)名 描述電路的端口及其

11、端口信號(hào)必須用端口語(yǔ)句port( )引導(dǎo),并在語(yǔ)句結(jié)尾處加分號(hào)“;”。例3-4 中的p_name 是端口信號(hào)名,如例3-1 中的端口信號(hào)名分別是a、b、s 和y。4. 端口模式 在例3-4中的port_m表達(dá)端口模式,可綜合的端口模式有四種,它們分別是“in”、“out”、“inout”和“buffer”,用于定義端口上數(shù)據(jù)的流動(dòng)方向和方式: in:輸入端口,定義的通道為單向只讀模式。規(guī)定數(shù)據(jù)只能由此端口被讀入實(shí)體。 out:輸出端口,定義的通道為單向輸出模式。規(guī)定數(shù)據(jù)只能通過(guò)此端口從實(shí)體向外流出,或者說(shuō)可以將實(shí)體中的數(shù)據(jù)向此端口賦值。 inout:定義的通道確定為輸入輸出雙向端口。即從端口的

12、內(nèi)部看,可以對(duì)此端口進(jìn)行賦值,或通過(guò)此端口讀入外部的數(shù)據(jù)信息;而從端口的外部看,信號(hào)既可由此端口流出,也可向此端口輸入信號(hào)。如 ram 的數(shù)據(jù)口,單片機(jī)的i/o 口等。 buffer:緩沖端口,其功能與inout 類(lèi)似,區(qū)別在于當(dāng)需要輸入數(shù)據(jù)時(shí),只允許內(nèi)部回讀輸出的信號(hào),即允許反饋。如計(jì)數(shù)器設(shè)計(jì),可將計(jì)數(shù)器輸出的計(jì)數(shù)信號(hào)回讀,以作下一計(jì)數(shù)值的初值。與inout 模式相比,buffer 回讀的信號(hào)不是由外部輸入的,而是由內(nèi)部產(chǎn)生,向外輸出的信號(hào)。 5. 數(shù)據(jù)類(lèi)型 例3-4 中的data_type 是數(shù)據(jù)類(lèi)型名。例3-1 中,端口信號(hào)a、b、s 和y 的數(shù)據(jù)類(lèi)型都定義為bit。由于vhdl 中任何

13、一種數(shù)據(jù)對(duì)象的應(yīng)用都必須嚴(yán)格限定其取值范圍和數(shù)值類(lèi)型,即對(duì)其傳輸或存儲(chǔ)的數(shù)據(jù)的類(lèi)型要作明確的界定,因此,在vhdl 設(shè)計(jì)中,必須預(yù)先定義好要使用的數(shù)據(jù)類(lèi)型,這對(duì)于大規(guī)模電路描述的排錯(cuò)是十分有益的。相關(guān)的數(shù)據(jù)類(lèi)型有integer 類(lèi)型、boolean 類(lèi)型、std_logic 類(lèi)型和bit 類(lèi)型等。 bit 數(shù)據(jù)類(lèi)型的信號(hào)規(guī)定的取值范圍是邏輯位1和0。在vhdl 中,邏輯位0 和1 的表達(dá)必須加單引號(hào),否則vhdl 綜合器將0 和1 解釋為整數(shù)數(shù)據(jù)類(lèi)型integer。 bit 數(shù)據(jù)類(lèi)型可以參與邏輯運(yùn)算或算術(shù)運(yùn)算,其結(jié)果仍是位的數(shù)據(jù)類(lèi)型。vhdl 綜合器用一個(gè)二進(jìn)制位表示bit。將例3-1 中的端

14、口信號(hào)a、b、s 和y 的數(shù)據(jù)類(lèi)型都定義為bit表示:a、b、s 和y 的取值范圍,或者說(shuō)數(shù)據(jù)范圍都被限定在邏輯位1和0的二值范圍內(nèi)。6. 結(jié)構(gòu)體表達(dá) 結(jié)構(gòu)體的一般表達(dá)如例3-5 所示?!纠?-5】 architecture arch_name of e_name is 說(shuō)明語(yǔ)句 begin (功能描述語(yǔ)句) end architecture arch_name ; 上式中,architecture、of、is、begin 和end architecture 都是描述結(jié)構(gòu)體的關(guān)鍵詞,在描述中必須包含它們。arch_name 是結(jié)構(gòu)體名,是標(biāo)識(shí)符。 說(shuō)明語(yǔ)句包括在結(jié)構(gòu)體中,用以說(shuō)明和定義數(shù)據(jù)對(duì)象

15、、數(shù)據(jù)類(lèi)型、元件調(diào)用聲明等等。說(shuō)明語(yǔ)句并非是必須的,(功能描述語(yǔ)句)則不同,結(jié)構(gòu)體中必須給出相應(yīng)的電路功能描述語(yǔ)句,可以是并行語(yǔ)句,順序語(yǔ)句或它們的混合。 一般地,一個(gè)可綜合的,完整的vhdl 程序有比較固定的結(jié)構(gòu)。設(shè)計(jì)實(shí)體中,一般首先出現(xiàn)的是各類(lèi)庫(kù)及其程序包的使用聲明,包括未以顯式表達(dá)的工作庫(kù)work 庫(kù)的使用聲明,然后是實(shí)體描述,最后是結(jié)構(gòu)體描述,而在結(jié)構(gòu)體中可以含有不同的邏輯表達(dá)語(yǔ)句結(jié)構(gòu)。如前所述,在此把一個(gè)完整的可綜合的vhdl 程序設(shè)計(jì)構(gòu)建為設(shè)計(jì)實(shí)體(獨(dú)立的電路功能結(jié)構(gòu)),而其程序代碼常被稱(chēng)為vhdl 的rtl 描述。7. 賦值符號(hào)和數(shù)據(jù)比較符號(hào) 例3-1 中的表達(dá)式y(tǒng)= a 表示輸

16、入端口a 的數(shù)據(jù)向輸出端口y 傳輸;但也可以解釋為信號(hào)a 向信號(hào)y 賦值。在vhdl 仿真中賦值操作y= a并非立即發(fā)生的,而是要經(jīng)歷一個(gè)模擬器的最小分辨時(shí)間后,才將a 的值賦予y 。在此不妨將 看成是實(shí)際電路存在的固有延時(shí)量。vhdl 要求賦值符“=”兩邊的信號(hào)的數(shù)據(jù)類(lèi)型必須一致。 例3-1 中,條件判斷語(yǔ)句when_else 通過(guò)測(cè)定表式 s=0 的比較結(jié)果,以確定由哪一端口向y 賦值。條件語(yǔ)句when_else 的判定依據(jù)是表式 s=0 輸出的結(jié)果。表式中的等號(hào)“=”沒(méi)有賦值的含義,只是一種數(shù)據(jù)比較符號(hào)。其表式輸出結(jié)果的數(shù)據(jù)類(lèi)型是布爾數(shù)據(jù)類(lèi)型boolean。boolean 類(lèi)型的取值分別

17、是:true(真)和false(偽)。即當(dāng)s 為高電平時(shí),表式 s=0 輸出“false”;當(dāng)s 為低電平時(shí),表式 s =0 輸出“true”。在vhdl 綜合器或仿真器中分別用1和0表達(dá)true 和false。布爾數(shù)據(jù)不是數(shù)值,只能用于邏輯操作或條件判斷。 用于條件語(yǔ)句的判斷表達(dá)式可以是一個(gè)值,也可以是更復(fù)雜的邏輯或運(yùn)算表達(dá)式,如: if a then . - 注意,a 的數(shù)據(jù)類(lèi)型必須是boolean if (s1=0)and(s2=1)or(cb+1) then .8. 邏輯操作符 例3-2 中出現(xiàn)的文字and、or 和not 是邏輯操作符號(hào)。vhdl 共有7 種基本邏輯操作符,它們是an

18、d(與)、or(或)、nand(與非)、nor(或非)、xor(異或)、xnor(同或)和not(取反)。信號(hào)在這些操作符的作用下可構(gòu)成組合邏輯。邏輯操作符所要求的操作數(shù)(操作對(duì)象)的數(shù)據(jù)類(lèi)型有3 種,即bit、boolean 和std_logic。 注意,與其他hdl 用某種符號(hào)表達(dá)邏輯操作符不同,vhdl 中直接用對(duì)應(yīng)的英語(yǔ)文字表達(dá)邏輯操作符號(hào),這更明確顯示了vhdl 作為硬件行為描述語(yǔ)言的特征。9. 條件語(yǔ)句 例3-3 利用if_then_else 表達(dá)的vhdl 順序語(yǔ)句的方式,同樣描述了一個(gè)多路選擇器的電路行為。其結(jié)構(gòu)體中的if 語(yǔ)句的執(zhí)行順序類(lèi)似于軟件語(yǔ)言,首先判斷如果s 為低電平

19、,則執(zhí)行y=a 語(yǔ)句,否則(當(dāng)s 為高電平),則執(zhí)行語(yǔ)句y=b。由此可見(jiàn)vhdl 的順序語(yǔ)句同樣能描述并行運(yùn)行的組合電路。注意,if 語(yǔ)句必須以語(yǔ)句“end if;”結(jié)束。10. when_else 條件信號(hào)賦值語(yǔ)句 例3-1 中出現(xiàn)的是條件信號(hào)賦值語(yǔ)句,這是一種并行賦值語(yǔ)句,其表達(dá)方式如下: 賦值目標(biāo) = 表達(dá)式 when 賦值條件 else 表達(dá)式 when 賦值條件 else . 表達(dá)式 ; 在結(jié)構(gòu)體中的條件信號(hào)賦值語(yǔ)句的功能與在進(jìn)程中的if 語(yǔ)句相同,在執(zhí)行條件信號(hào)語(yǔ)句時(shí),每一“賦值條件”是按書(shū)寫(xiě)的先后關(guān)系逐項(xiàng)測(cè)定的,一旦發(fā)現(xiàn)(賦值條件= true),立即將“表達(dá)式”的值賦給“賦值目標(biāo)

20、”信號(hào)。 注意,由于條件測(cè)試的順序性,條件信號(hào)賦值語(yǔ)句中的第一子句具有最高賦值優(yōu)先級(jí),第二句其次,如此類(lèi)推。例如在以下程序中,如果當(dāng)p1 和p2 同時(shí)為1時(shí),z 獲得的賦值是a 而不可能是b 。還應(yīng)該注意,相對(duì)于在同一結(jié)構(gòu)體中的其它語(yǔ)句,此類(lèi)賦值語(yǔ)句作為一個(gè)完整的語(yǔ)句,屬于并行語(yǔ)句。 z = a when p1 = 1 else b when p2 = 1 else c ;11. 進(jìn)程語(yǔ)句和順序語(yǔ)句 由例3-3 可見(jiàn),順序語(yǔ)句“if_then_else_end if;”是放在由“process. end process”引導(dǎo)的語(yǔ)句中的。由process 引導(dǎo)的語(yǔ)句稱(chēng)為進(jìn)程語(yǔ)句。在vhdl 中,

21、所有合法的順序描述語(yǔ)句都必須放在進(jìn)程語(yǔ)句中。 process 旁的(a,b,s)稱(chēng)為進(jìn)程的敏感信號(hào)表,通常要求將進(jìn)程中所有的輸入信號(hào)都放在敏感信號(hào)表中。例如,例3-3 中的輸入信號(hào)是a、b 和s,所以將它們?nèi)苛腥朊舾行盘?hào)表中。由于process 語(yǔ)句的執(zhí)行依賴(lài)于敏感信號(hào)的變化(或稱(chēng)發(fā)生事件),當(dāng)某一敏感信號(hào)(如a)從原來(lái)的1跳變到0,或者從原來(lái)的0跳變到1時(shí),就將啟動(dòng)此進(jìn)程語(yǔ)句,于是此process 至end process 引導(dǎo)的語(yǔ)句(包括其中的順序語(yǔ)句)被執(zhí)行一遍,然后返回進(jìn)程的起始端,進(jìn)入等待狀態(tài),直到下一次敏感信號(hào)表中某一信號(hào)或某些信號(hào)發(fā)生事件才再次進(jìn)入“啟動(dòng)運(yùn)行”狀態(tài)。 在一個(gè)結(jié)構(gòu)

22、體中可以包含任意個(gè)進(jìn)程語(yǔ)句,所有的進(jìn)程語(yǔ)句都是并行語(yǔ)句,而由任一進(jìn)程process 引導(dǎo)的語(yǔ)句(包含在其中的語(yǔ)句)結(jié)構(gòu)屬于順序語(yǔ)句。12. 文件取名和存盤(pán) 如果用quartusii 提供的vhdl 文本編輯器編輯vhdl 代碼文件,在保存文件時(shí),必須賦給一個(gè)正確的文件名。一般地,文件名可以由設(shè)計(jì)者任意給定,但文件后綴擴(kuò)展名必須是“.vhd”,如adder_f.vhd。但考慮到某些eda 軟件的限制和vhdl 程序的特點(diǎn),以及調(diào)用的方便性,因此建議程序的文件名盡可能與該程序的實(shí)體名一致,如例3-1 的文件名應(yīng)該是:mux21a.vhd。原則上文件名不分大小寫(xiě),但推薦使用小寫(xiě),特別是后綴。3.2

23、簡(jiǎn)單時(shí)序電路的vhdl 描述 與其他硬件描述語(yǔ)言相比,在時(shí)序電路的描述上,vhdl 具有許多獨(dú)特之處。最明顯的是vhdl 主要通過(guò)對(duì)時(shí)序器件功能和邏輯行為的描述,而非結(jié)構(gòu)上的描述使得計(jì)算機(jī)綜合出符合要求的時(shí)序電路,從而充分體現(xiàn)了vhdl 電路系統(tǒng)行為描述的強(qiáng)大功能。以下將對(duì)一個(gè)典型的時(shí)序元件d 觸發(fā)器的vhdl 描述進(jìn)行詳細(xì)分析,從而得出時(shí)序電路描述的一般規(guī)律和設(shè)計(jì)方法。3.2.1 d 觸發(fā)器 最簡(jiǎn)單、最常用,并最具代表性的時(shí)序電路是d 觸發(fā)器,它是現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)中最基本的時(shí)序單元和底層元件。d 觸發(fā)器的描述包含了vhdl 對(duì)時(shí)序電路的最基本和典型的表達(dá)方式,同時(shí)也包含了vhdl 中許多最具

24、特色的語(yǔ)言現(xiàn)象。例3-6 是對(duì)d 觸發(fā)器元件圖3-4 的描述。從vhdl 的描述上看,與例3-3 相比,例3-6 多了4 個(gè)部分: (1) 由library 引導(dǎo)的庫(kù)的說(shuō)明部分。 (2) 使用了另一種數(shù)據(jù)類(lèi)型:std_logic。 (3) 定義了一個(gè)內(nèi)部節(jié)點(diǎn)信號(hào):signal。 (4) 使用了一種新的條件判斷表式:clkevent and clk = 1。 除此之外,雖然例3-3 描述的是組合電路,而例3-6 描述的是時(shí)序電路,如果不詳細(xì)分析其中的表述含義,二例在語(yǔ)句結(jié)構(gòu)和語(yǔ)言應(yīng)用上沒(méi)有明顯的差異,也不存在如其他硬件描述語(yǔ)言(如abel、ahdl)那樣包含用于表示時(shí)序或組合邏輯的特征語(yǔ)句,更沒(méi)

25、有與特定的軟件或硬件相關(guān)的特征屬性語(yǔ)句。這也充分表明了vhdl 電路描述與設(shè)計(jì)平臺(tái)和硬件實(shí)現(xiàn)對(duì)象無(wú)關(guān)性的優(yōu)秀特點(diǎn)。【例3-6】 library ieee ; use ieee.std_logic_1164.all ; entity dff1 is port (clk : in std_logic ; d : in std_logic ; q : out std_logic ); end ; architecture bhv of dff1 is signal q1 : std_logic ; -類(lèi)似于在芯片內(nèi)部定義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn) begin process (clk,q1) begin i

26、f clkevent and clk = 1 then q1 = d ; end if; end process ; q = q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線(xiàn)-是注釋符號(hào)) end bhv3.2.2 d 觸發(fā)器vhdl 描述的語(yǔ)言現(xiàn)象說(shuō)明 以下對(duì)例3-6 中出現(xiàn)的新的語(yǔ)句語(yǔ)言現(xiàn)象作出說(shuō)明。 1. 標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型std_logic 從例3-6 可見(jiàn),d 觸發(fā)器的3 個(gè)信號(hào)端口clk、d 和q 的數(shù)據(jù)類(lèi)型都被定義為std_logic(例3-1 中,端口信號(hào)的數(shù)據(jù)類(lèi)型被定義為bit)。就數(shù)字系統(tǒng)設(shè)計(jì)來(lái)說(shuō),類(lèi)型 std_logic 比bit 包含的內(nèi)容豐富和完整得多,當(dāng)然也包含了bi

27、t 類(lèi)型。試比較以下std_logic 和bit 兩種數(shù)據(jù)類(lèi)型的程序包定義表式(其中type 是數(shù)據(jù)類(lèi)型定義語(yǔ)句)。 bit 數(shù)據(jù)類(lèi)型定義: type bit is(0,1); -只有兩種取值 std_logic 數(shù)據(jù)類(lèi)型定義: type std_logic is (u,x,0,1,z,w,l,h,-); std_logic 所定義的9 種數(shù)據(jù)的含義是:u表示未初始化的;x表示強(qiáng)未知的;0表示強(qiáng)邏輯0;1表示強(qiáng)邏輯1;z表示高阻態(tài);w 表示弱未知的;l表示弱邏輯0;h表示弱邏輯1;-表示忽略。 它們完整地概括了數(shù)字系統(tǒng)中所有可能的數(shù)據(jù)表現(xiàn)形式,所以例3-6 中的clk、d 和q 比例3-1 中

28、的a、b、s 具有更寬的取值范圍,因而其描述和實(shí)際電路有更好的適應(yīng)性。 在仿真和綜合中,將信號(hào)或其他數(shù)據(jù)對(duì)象定義為std_logic 數(shù)據(jù)類(lèi)型是非常重要的,它可以使設(shè)計(jì)者精確地模擬一些未知的和具有高阻態(tài)的線(xiàn)路情況。對(duì)于綜合器,高阻態(tài)z和-忽略態(tài)(有的綜合器用x)可用于三態(tài)的描述。std_logic 型數(shù)據(jù)在數(shù)字器件中實(shí)現(xiàn)的只有其中的4 到5 種值,即x (或/和)、0、1和z,其他類(lèi)型通常不可綜合。 注意,此例中給出的std_logic 數(shù)據(jù)類(lèi)型的定義主要是借以學(xué)習(xí)一種新的語(yǔ)法現(xiàn)象,而非d 觸發(fā)器等時(shí)序電路必須使用此類(lèi)數(shù)據(jù)類(lèi)型。2. 設(shè)計(jì)庫(kù)和標(biāo)準(zhǔn)程序包 有許多數(shù)據(jù)類(lèi)型的說(shuō)明,及類(lèi)似的函數(shù)是預(yù)先

29、放在vhdl 綜合器附帶的設(shè)計(jì)庫(kù)和程序包中的。如bit 數(shù)據(jù)類(lèi)型的定義是包含在vhdl 標(biāo)準(zhǔn)程序包standard 中的,而程序包standard 包含于vhdl 標(biāo)準(zhǔn)庫(kù)std 中。一般,為了使用bit 數(shù)據(jù)類(lèi)型,應(yīng)該在例3-1的程序上面增加如下3 句說(shuō)明語(yǔ)句: library work ; library std ; use std.standard.all ; 第2 句中的library 是關(guān)鍵詞,library std 表示打開(kāi)std 庫(kù);第3 句的use 和all 是關(guān)鍵詞,全句表示允許使用std 庫(kù)中standard 程序包中的所有內(nèi)容(.all),如類(lèi)型定義、函數(shù)、過(guò)程、常量等。

30、此外,由于要求vhdl 設(shè)計(jì)文件保存在某一文件夾,如d:myfile 中,并指定為工程project 的文件所在的目錄,vhdl 工具就將此路徑指定的文件夾默認(rèn)工作庫(kù)(worklibrary),于是在vhdl 程序前面還應(yīng)該增加 “l(fā)ibrary work;”語(yǔ)句,vhdl 工具才能調(diào)用此路徑中相關(guān)的元件和程序包。 但是,由于vhdl 標(biāo)準(zhǔn)中規(guī)定標(biāo)準(zhǔn)庫(kù)std 和工作庫(kù)work 都是默認(rèn)打開(kāi)的,因此就可以像例3-1 那樣,不必將上述庫(kù)和程序包的使用語(yǔ)句以顯式表達(dá)在vhdl 程序中。除非如例3-6 那樣,需要使用一些特殊的程序包。 使用庫(kù)和程序包的一般定義表式是: library ; use .a

31、ll ; std_logic 數(shù)據(jù)類(lèi)型定義在被稱(chēng)為std_logic_1164 的程序包中,此包由ieee 定義,而且此程序包所在的程序庫(kù)的庫(kù)名被取名為ieee。由于ieee 庫(kù)不屬于vhdl 標(biāo)準(zhǔn)庫(kù),所以在使用其庫(kù)中內(nèi)容前,必須事先給予聲明。即如例3-6 最上的兩句語(yǔ)句: library ieee ; use ieee.std_logic_1164.all ; 正是出于需要定義端口信號(hào)的數(shù)據(jù)類(lèi)型為std_logic的目的,當(dāng)然也可以定義為bit類(lèi)型或其他數(shù)據(jù)類(lèi)型,但一般應(yīng)用中推薦定義std_logic 類(lèi)型。3. 信號(hào)定義和數(shù)據(jù)對(duì)象 例3-6 中的語(yǔ)句“signal q1:std_logic

32、;”表示在描述的器件dff1 內(nèi)部定義標(biāo)識(shí)符q1 的數(shù)據(jù)對(duì)象為信號(hào)signal,其數(shù)據(jù)類(lèi)型為std_logic。由于q1 被定義為器件的內(nèi)部節(jié)點(diǎn)信號(hào),數(shù)據(jù)的進(jìn)出不像端口信號(hào)那樣受限制,所以不必定義其端口模式(如in、out 等)。定義q1 的目的是為了在設(shè)計(jì)更大的電路時(shí)使用由此引入的時(shí)序電路的信號(hào),這是一種常用的時(shí)序電路設(shè)計(jì)的方式。事實(shí)上,如果在例3-6 中不作q1 的定義,其結(jié)構(gòu)體(如將其中的賦值語(yǔ)句q1 = d 改為q = d)同樣能綜合出相同的結(jié)果,但不推薦這種設(shè)計(jì)方式。 語(yǔ)句“signal q1:std_logic;”中的signal 是定義某標(biāo)識(shí)符為信號(hào)的關(guān)鍵詞。 在vhdl 中,數(shù)

33、據(jù)對(duì)象(data objects)類(lèi)似于一種容器,它接受不同數(shù)據(jù)類(lèi)型的賦值。數(shù)據(jù)對(duì)象有3 類(lèi),即信號(hào)(signal)、變量(variable)和常量(constant)。在vhdl中,被定義的標(biāo)識(shí)符必須確定為某類(lèi)數(shù)據(jù)對(duì)象,同時(shí)還必須被定義為某種數(shù)據(jù)類(lèi)型。如例3-6 中的q1,對(duì)它規(guī)定的數(shù)據(jù)對(duì)象是信號(hào),而數(shù)據(jù)類(lèi)型是std_logic,前者規(guī)定了q1 的行為方式和功能特點(diǎn),后者限定了q1 的取值范圍。vhdl 規(guī)定,q1 作為信號(hào),它可以如同一根連線(xiàn)那樣在整個(gè)結(jié)構(gòu)體中傳遞信息,也可以根據(jù)程序的功能描述構(gòu)成一個(gè)時(shí)序元件;但q1 傳遞或存儲(chǔ)的數(shù)據(jù)的類(lèi)型只能包含在std_logic 的定義中。 需要注意

34、的是,語(yǔ)句“signal q1:std_logic;”僅規(guī)定了q1 的屬性特征,而其功能定位需要由結(jié)構(gòu)體中的語(yǔ)句描述具體確定。如果將q1 比喻為一瓶葡萄酒,則其特定形狀的酒瓶就是其數(shù)據(jù)對(duì)象,瓶中的葡萄酒(而非其他酒)就是其數(shù)據(jù)類(lèi)型,而這瓶酒的用處(功能)只能由擁有這酒的人來(lái)確定,即結(jié)構(gòu)體中的具體描述。4. 上升沿檢測(cè)表式和信號(hào)屬性函數(shù)event 例3-6 中的條件語(yǔ)句的判斷表式“clkevent and clk=1”是用于檢測(cè)時(shí)鐘信號(hào)clk 的上升沿的,即如果檢測(cè)到clk 的上升沿,此表達(dá)式將輸出“true”。 關(guān)鍵詞event 是信號(hào)屬性函數(shù),用來(lái)獲得信號(hào)行為信息的函數(shù)稱(chēng)為信號(hào)屬性函數(shù)。vh

35、dl 通過(guò)以下表式來(lái)測(cè)定某信號(hào)的跳變情況: event 短語(yǔ)“clockevent”就是對(duì)clock 標(biāo)識(shí)符的信號(hào)在當(dāng)前的一個(gè)極小的時(shí)間段內(nèi)發(fā)生事件的情況進(jìn)行檢測(cè)。所謂發(fā)生事件,就是clock 在其數(shù)據(jù)類(lèi)型的取值范圍內(nèi)發(fā)生變化,從一種取值轉(zhuǎn)變到另一種取值(或電平方式)。如果clock 的數(shù)據(jù)類(lèi)型定義為std_logic,則在 時(shí)間段內(nèi),clock 從其數(shù)據(jù)類(lèi)型允許的9 種值中的任何一個(gè)值向另一值跳變,如由0變成1、由1變成0或由z變成0,都認(rèn)為發(fā)生了事件,于是此表式將輸出一個(gè)布爾值true,否則為false。 如果將以上短語(yǔ)clockevent 改成語(yǔ)句:clockevent and cloc

36、k=1,則表示一旦“clockevent”在 時(shí)間內(nèi)測(cè)得clock 有一個(gè)跳變,而此小時(shí)間段之后又測(cè)得clock 為高電平1,即滿(mǎn)足此語(yǔ)句右側(cè)的clock =1的條件,于是兩者相與(and)后返回值為true,由此便可以從當(dāng)前的clock =1推斷在此前的 時(shí)間段內(nèi),clock必為0 (設(shè)clock 的數(shù)據(jù)類(lèi)型是bit)。因此,以上的表達(dá)式就可以用來(lái)對(duì)信號(hào)clock的上升沿進(jìn)行檢測(cè),于是語(yǔ)句clockevent and clock =1就成了邊沿測(cè)試語(yǔ)句。5. 不完整條件語(yǔ)句與時(shí)序電路 現(xiàn)在來(lái)分析例3-6 中對(duì)d 觸發(fā)器功能的描述。 首先考察時(shí)鐘信號(hào)clk 上升沿出現(xiàn)的情況(即滿(mǎn)足if 語(yǔ)句條

37、件的情況)。當(dāng)clk 發(fā)生變化時(shí),process 語(yǔ)句被啟動(dòng),if 語(yǔ)句將測(cè)定條件表式“clkevent and clk=1”是否滿(mǎn)足條件,如果clk 的確出現(xiàn)了上升沿,則滿(mǎn)足條件表式對(duì)是上升沿檢測(cè),于是執(zhí)行語(yǔ)句q1=d,即將d 的數(shù)據(jù)向內(nèi)部信號(hào)q1 賦值,即更新q1,并結(jié)束if 語(yǔ)句,最后將q1的值向端口信號(hào)q 輸出。至此,是否可以認(rèn)為,clk 上升沿測(cè)定語(yǔ)句clkevent andclk=1就成為綜合器構(gòu)建時(shí)序電路的必要條件呢?回答顯然是否定的。 其次再考察如果clk 沒(méi)有發(fā)生變化,或者說(shuō)clk沒(méi)有出現(xiàn)上升沿方式的跳變時(shí)if 語(yǔ)句的行為。這時(shí)由于if 語(yǔ)句不滿(mǎn)足條件,即條件表式給出“fal

38、se”,于是將跳過(guò)賦值表式q1=d,不執(zhí)行此賦值表式而結(jié)束if 語(yǔ)句。由于在此,if 語(yǔ)句中沒(méi)有利用通常的else語(yǔ)句明確指出當(dāng)if 語(yǔ)句不滿(mǎn)足條件時(shí)作何操作。顯然這是一種不完整的條件語(yǔ)句(即在條件語(yǔ)句中,沒(méi)有將所有可能發(fā)生的條件給出對(duì)應(yīng)的處理方式)。對(duì)于這種語(yǔ)言現(xiàn)象,vhdl綜合器理解為,對(duì)于不滿(mǎn)足條件,跳過(guò)賦值語(yǔ)句q1=d 不予執(zhí)行,即意味著保持q1 的原值不變(保持前一次時(shí)鐘上升沿后q1 被更新的值)。對(duì)于數(shù)字電路來(lái)說(shuō),試圖保持一個(gè)值不變,就意味著具有存儲(chǔ)功能的元件的使用,就是必須引進(jìn)時(shí)序元件來(lái)保存q1 中的原值,直到滿(mǎn)足if 語(yǔ)句的判斷條件后才能更新q1 中的值。 顯然,時(shí)序電路構(gòu)建的

39、關(guān)鍵在于利用這種不完整的條件語(yǔ)句的描述。這種構(gòu)成時(shí)序電路的方式是vhdl 描述時(shí)序電路最重要的途徑。通常,完整的條件語(yǔ)句只能構(gòu)成組合邏輯電路,如例3-3 中,if_then_else 語(yǔ)句指明了s 為1和0全部可能的條件下的賦值操作,從而產(chǎn)生了多路選擇器組合電路模塊。 然而必須注意,雖然在構(gòu)成時(shí)序電路方面,可以利用不完整的條件語(yǔ)句所具有的獨(dú)特功能構(gòu)成時(shí)序電路,但在利用條件語(yǔ)句進(jìn)行純組合電路設(shè)計(jì)時(shí),如果沒(méi)有充分考慮電路中所有可能出現(xiàn)的問(wèn)題,即沒(méi)有列全所有的條件及其對(duì)應(yīng)的處理方法,將導(dǎo)致不完整的條件語(yǔ)句的出現(xiàn),從而產(chǎn)生設(shè)計(jì)者不希望的組合與時(shí)序電路的混合體。在此,不妨比較例3-7和例3-8 的綜合結(jié)

40、果??梢哉J(rèn)為例3-7 的原意是要設(shè)計(jì)一個(gè)純組合電路的比較器,但是由于在條件語(yǔ)句中漏掉了給出當(dāng)a1b1 時(shí)q1 作何操作的表述,結(jié)果導(dǎo)致了一個(gè)不完整的條件語(yǔ)句。這時(shí),綜合器將對(duì)例3-7 的條件表述解釋為:當(dāng)條件a1b1 時(shí)對(duì)q1 不作任何賦值操作,即在此情況下保持q1 的原值,這便意味著必須為q1 配置一個(gè)寄存器,以便保存它的原值。圖3-5 所示的電路圖即為例3-7 的綜合結(jié)果。不難發(fā)現(xiàn)綜合器已為比較結(jié)果配置了一個(gè)寄存器。通常在仿真時(shí),對(duì)這類(lèi)電路的測(cè)試,很難發(fā)現(xiàn)在電路中已被插入了不必要的時(shí)序元件,這樣浪費(fèi)了邏輯資源,降低了電路的工作速度,影響了電路的可靠性。因此,設(shè)計(jì)者應(yīng)該盡量避免此類(lèi)電路的出現(xiàn)

41、。 例3-8 是對(duì)例3-7 的改進(jìn),其中的“else q1 b1 then q1 = 1 ; elsif a1 b1 then q1 b1 then q1 = 1 ; else q1 = 0 ; end if; end process ; end ;圖3-6 例3-8的電路圖(synplify綜合)圖3-5 例3-7的電路圖(synplify綜合)3.2.3 實(shí)現(xiàn)時(shí)序電路的不同表述 例3-6 通過(guò)利用表式“clkevent and clk=1”來(lái)檢測(cè)clk 的上升沿,從而實(shí)現(xiàn)了邊沿觸發(fā)寄存器的設(shè)計(jì)。事實(shí)上,vhdl 還有其他多種實(shí)現(xiàn)時(shí)序元件的方式。 嚴(yán)格地說(shuō),如果信號(hào)clk 的數(shù)據(jù)類(lèi)型是std

42、_logic,則它可能的取值有9 種,而clkevent 為真的條件是clk 在9 種數(shù)據(jù)中的任何兩種間的跳變,因而當(dāng)表式: clkevent and clk=1 為真時(shí),并不能推定clk 在 時(shí)刻前是0 (例如,它可以從z變到1),從而即使clk 有“事件”發(fā)生也不能肯定clk 發(fā)生了一次由0到1的上升沿的跳變。為了確保此clk 發(fā)生的是一次上升沿的跳變,例3-9 采用了如下的條件判斷表式: clkevent and (clk=1) and (clklast_value=0) 與event 一樣,last_value 也屬于預(yù)定義的信號(hào)屬性函數(shù),它表示最近一次事件發(fā)生前的值。clklast_

43、value=0為true,表示clk 在 時(shí)刻前為0。 clkevent and clk=1和clklast_value=0相與為真的話(huà),則保證了clk在 時(shí)刻內(nèi)的跳變是從0變到1的。例3-9、3-10、3-11 都有相同的用意,只是例3-11 調(diào)用了一個(gè)測(cè)定clk 上升沿的函數(shù)rising edge( )。 rising edge( )是vhdl 在ieee 庫(kù)中標(biāo)準(zhǔn)程序包std_logic_1164 內(nèi)的預(yù)定義函數(shù),這條語(yǔ)句只能用于標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類(lèi)型std_logic 的信號(hào)。因此必須打開(kāi)ieee 庫(kù)和程序包std_logic_1164,然后定義相關(guān)的信號(hào)(如clk)的數(shù)據(jù)類(lèi)型為標(biāo)準(zhǔn)邏輯位

44、數(shù)據(jù)類(lèi)型std_logic。在此clk 的數(shù)據(jù)類(lèi)型必須是std_logic。 測(cè)下降沿可用的語(yǔ)句有:falling edge( )、clkevent and (clk=0) 、 clk=0 and clklast_value=1 等?!纠?-9】. process (clk) begin if clkevent and (clk=1) and (clklast_value=0) then q = d ; -確保clk的變化是一次上升沿的跳變 end if; end process ;【例3-10】. process (clk) begin if clk=1 and clklast_value=

45、0 -同例3-9 then q = d ; end if; end process ;【例3-11】library ieee ;use ieee.std_logic_1164.all ;entity dff3 is port (clk,d : in std_logic ; q : out std_logic ); end ; architecture bhv of dff3 is signal q1 : std_logic; begin process (clk) begin if rising_edge(clk) - 必須打開(kāi)std_logic_1164程序包 then q1 = d ; e

46、nd if; end process ; q = q1 ; -在此,賦值語(yǔ)句可以放在進(jìn)程外,作為并行賦值語(yǔ)句end ; 例3-12 則是利用了一條wait until 語(yǔ)句實(shí)現(xiàn)時(shí)序電路設(shè)計(jì)的,含義是如果clk 當(dāng)前的值不是1,就等待并保持q 的原值不變,直到clk 變?yōu)?時(shí)才對(duì)q 進(jìn)行賦值更新。vhdl要求,當(dāng)進(jìn)程語(yǔ)句中使用wait 語(yǔ)句后,就不必列出敏感信號(hào)。 例3-13 描述的d 觸發(fā)器的clk邊沿檢測(cè)是由process 語(yǔ)句和if 語(yǔ)句相結(jié)合實(shí)現(xiàn)的。其原理是:當(dāng)clk 為0時(shí),process 語(yǔ)句處于等待狀態(tài),直到發(fā)生一次由0到1的跳變才啟動(dòng)進(jìn)程語(yǔ)句,而在執(zhí)行if 語(yǔ)句時(shí),又滿(mǎn)足了clk

47、 為1的條件,于是對(duì)q 進(jìn)行賦值更新,而此前,q 一直保持原值不變,直到下一次上跳時(shí)鐘邊沿的到來(lái)。因此例3-9 至例3-13描述的都是相同的d 觸發(fā)器,其電路的仿真測(cè)試波形如圖3-7 所示。由波形可見(jiàn),q 的變化僅發(fā)生于clk 的上升后。 與例3-13 相比,例3-14 僅在敏感信號(hào)表中多加了電路輸入信號(hào)d,但綜合后的電路功能卻發(fā)生了很大的變化。由時(shí)序圖3-8 可見(jiàn),它表現(xiàn)的是電平式觸發(fā)的鎖存器功能,與圖3-7 表現(xiàn)的波形有很大的區(qū)別。在clk 處于高電平時(shí),輸出q 隨d 的變化而變化,而clk僅在低電平時(shí)保持?jǐn)?shù)據(jù)不變。 由例3-14 的語(yǔ)句分析可知,當(dāng)clk為1不變時(shí),輸入數(shù)據(jù)d 的任何變化

48、都會(huì)啟動(dòng)進(jìn)程process,從而實(shí)現(xiàn)輸出信號(hào)q 的更新,而當(dāng)clk 原來(lái)為0時(shí),即使由于d 的變化啟動(dòng)了process,但由于不滿(mǎn)足if 語(yǔ)句的條件,q 仍然必須處于數(shù)據(jù)原值保存的狀態(tài)。顯然,例3-14 提供了一個(gè)電平型觸發(fā)的時(shí)序元件(鎖存器)的設(shè)計(jì)方法。 但需要指出,此類(lèi)功能只有maxplusii、quartusii 等eda 工具中含有,許多其他vhdl綜合器不承認(rèn)這類(lèi)語(yǔ)法表述,它們都要求將進(jìn)程中的所有輸入信號(hào)都列進(jìn)敏感信號(hào)表中,否則給予警告信息。因此,對(duì)于這種綜合器,無(wú)法利用此類(lèi)表述實(shí)現(xiàn)電平型觸發(fā)的時(shí)序元件,顯然,具體情況需要根據(jù)設(shè)計(jì)者使用的eda 軟件的功能具體確定。在一般情況下,不推

49、薦使用例3-14 的表達(dá)方式產(chǎn)生時(shí)序電路。 由例3-9 至例3-14 可見(jiàn),時(shí)序電路的建立只能利用進(jìn)程中的順序語(yǔ)句來(lái)建立。此外,考慮到多數(shù)綜合器并不理會(huì)邊沿檢測(cè)語(yǔ)句中的信號(hào)的std_logic 數(shù)據(jù)類(lèi)型,因此最常用和通用的邊沿檢測(cè)表式仍然是clkevent and clk=1?!纠?-12】. process begin wait until clk = 1 ; -利用wait語(yǔ)句 q = d ; end process;【例3-13】. process (clk) begin if clk = 1 then q = d ; -利用進(jìn)程的啟動(dòng)特性產(chǎn)生對(duì)clk的邊沿檢測(cè) end if; end

50、process ;【例3-14】. process (clk,d) begin if clk = 1 -電平觸發(fā)型寄存器 then q = d ; end if; end process ;quartus ii使用步驟v編輯vhdl文件v建立相關(guān)工程v編譯排錯(cuò)v設(shè)置波形仿真文件v仿真vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)v首先,打開(kāi)quartus ii軟件:vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)v在file菜單中選擇new,打開(kāi)新建對(duì)話(huà)框:1.注意,我們使用的是vhdl語(yǔ)言,所以這里首先要選擇新建vhdl file2.然后點(diǎn)擊okvhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)v在出現(xiàn)的名字為vhdl1.vh

51、d的文件里面可以編輯vhdl文件:1.在這里可以編輯vhdl語(yǔ)言描述的電路2.然后點(diǎn)擊保存,保存到你所指定的文件夾中,例如e:/quartusproject/mux21a。注意,所有的關(guān)于本次設(shè)計(jì)的文件都要放到這個(gè)文件夾中,包括以后的一些文件!。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)1.在這里填入文件名稱(chēng),注意文件名稱(chēng)必須要和你vhdl文件中的實(shí)體名稱(chēng)相同!2. 點(diǎn)擊“保存”后,彈出該對(duì)話(huà)框,說(shuō)你是否要給這個(gè)文件建立一個(gè)工程,點(diǎn)擊“是”。我們必須要建立一個(gè)工程。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)1.選擇一個(gè)文件夾,注意:大家一定要一個(gè)項(xiàng)目建立一個(gè)文件夾,不要

52、把好多個(gè)項(xiàng)目放在一個(gè)文件夾下面,那樣會(huì)很亂。2.輸入項(xiàng)目的名稱(chēng),一般項(xiàng)目名稱(chēng)和文件夾名稱(chēng)相同即可。默認(rèn)情況項(xiàng)目名稱(chēng)和上面建立的文件夾名稱(chēng)相同。3.輸入頂層設(shè)計(jì)實(shí)體的名稱(chēng),。默認(rèn)情況項(xiàng)目名稱(chēng)和上面建立的文件夾名稱(chēng)相同。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)1.點(diǎn)擊add all。這就是加入的文件,即名字為max21a.vhd的文件。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)1.選擇器件系列。2.選擇具體器件型號(hào)。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)1.注意,建立工程之后,這里有這樣的圖標(biāo)出現(xiàn)。2.點(diǎn)擊該圖標(biāo)進(jìn)行編譯vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)該窗口顯示編譯狀態(tài),如果有錯(cuò)誤會(huì)給出錯(cuò)誤的大致情況。顯示編譯進(jìn)度。vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)編譯完成后,給出編譯的總體情況。編譯報(bào)告vhdl實(shí)例:2選1數(shù)據(jù)選擇器的設(shè)計(jì)仿真:仿真:點(diǎn)擊file/new,彈出新建對(duì)話(huà)框:選擇other files標(biāo)簽 建

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論