版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、《數(shù)字電路與系統(tǒng)設(shè)計》EDA實驗,VHDL設(shè)計初步,主講:任愛鋒電子工程學院Email:afren@mail.xidian.edu.cn,《數(shù)字電路與系統(tǒng)設(shè)計》EDA實驗,內(nèi)容安排:,電子工程學院必修課(☆)硬件描述語言(VHDL or VerilogHDL) (10學時☆)電子工程學院必修課及限選、校任選課(※)EDA設(shè)計工具軟件及實驗 (10學時☆※)SOPC及Nios II嵌入式系統(tǒng)設(shè)計 (
2、10學時※)綜合設(shè)計實驗 (10學時☆※),西安電子科技大學國家電工電子教學基地西電-Altera EDA/SOPC聯(lián)合實驗室及培訓中心(E樓II-401),,第1部分 VHDL設(shè)計初步,《數(shù)字電路與系統(tǒng)設(shè)計》EDA實驗,VHDL歷史回顧,VHDL 語言是美國國防部(DOD)在 20 世紀 80 年代初為實現(xiàn)其高速集成電路計劃(VHSIC-Very High Speed Integrated Circuit)而提出的一
3、種硬件描述語言(HDL-Hardware Description Language),以作為各合同商之間提交復(fù)雜電路設(shè)計文檔的一種標準方案,VHDL的含義為超高速集成電路硬件描述語言。1987年被采納為IEEE 1076標準(VHDL’87)。1993年被更新為IEEE 1164標準(VHDL’93)。,VHDL—VHSIC Hardware Description Language,,,HDL 的出現(xiàn)是為了適應(yīng)電子系統(tǒng)設(shè)計的日益
4、復(fù)雜性。若以計算機軟件的設(shè)計與電路設(shè)計做個類比:,機器碼好比晶體管/MOS管;,匯編語言好比電路網(wǎng)表;,HDL語言就如同高級語言。,幾種常用的HDL語言: (1)VHDL硬件描述語言:功能強,規(guī)范性好; (2)VerilogHDL硬件描述語言:功能強、靈活性高; (3)ABEL硬件描述語言:屬于較低級的硬件描述語言; (4)AHDL硬件描述語言:Altera公司開發(fā),語法簡
5、單,但不通用。 其中:VHDL和VerilogHDL已成為IEEE標準。,VHDL—VHSIC Hardware Description Language,VHDL在語法和風格上類似于現(xiàn)代高級編程語言。但要注意,VHDL畢竟描述的是硬件,它包含許多硬件特有的結(jié)構(gòu)。 HDL是用文字化方法描述電子電路與系統(tǒng)。,計算機語言描述特點是 :順序性,HDL語言描述的特點是:并行性,VHDL—VHSIC Hardwa
6、re Description Language,VHDL與計算機語言的區(qū)別,運行的基礎(chǔ) 計算機語言是在CPU+RAM構(gòu)建的平臺上運行 VHDL設(shè)計的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路執(zhí)行方式計算機語言基本上以串行的方式執(zhí)行VHDL在總體上是以并行方式工作驗證方式計算機語言主要關(guān)注于變量值的變化VHDL要實現(xiàn)嚴格的時序邏輯關(guān)系,《數(shù)字電路與系統(tǒng)設(shè)計》回顧,組合邏輯電路,時序邏輯電路,分析,設(shè)計,真值表,分析,設(shè)計,,
7、,,,,與、或、非與非、或非異或、同或,RS觸發(fā)器D觸發(fā)器T觸發(fā)器JK觸發(fā)器,,主要內(nèi)容安排,1 多路選擇器的VHDL描述,2 時序電路的VHDL描述,3 更復(fù)雜電路的VHDL描述,5 VHDL設(shè)計練習,4 有限狀態(tài)機(狀態(tài)轉(zhuǎn)移圖)設(shè)計,1 多路選擇器的VHDL描述,例1.1 2選1多路選擇器的VHDL描述,2選1輸入/輸出端口(實體-Entity),,電路功能實現(xiàn)(結(jié)構(gòu)體-Architecture),?,
8、例1.1 2選1多路選擇器的實體描述,1 多路選擇器的VHDL描述,說明:以關(guān)鍵字ENTITY引導(dǎo),以END (ENTITY) xxx結(jié)尾的語句部分,稱為實體。描述電路的外部情況及接口性質(zhì)。,ENTITY mux21 IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21;ARCHI
9、TECTURE one OF mux21 IS BEGIN y <= a WHEN s = '0' ELSE b ;END ARCHITECTURE one ;,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述1 (行為描述),,說明:以關(guān)鍵字ARCHITECTURE引導(dǎo),以END (ARCHITECTURE) xxx結(jié)尾的語句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。,1 多路選擇
10、器的VHDL描述,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述2 (原理圖描述),1 多路選擇器的VHDL描述,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述3 (布爾方程描述),1 多路選擇器的VHDL描述,說明:以上三種結(jié)構(gòu)體描述都是并行語句,例1.1 2選1多路選擇器的結(jié)構(gòu)體描述4 (進程描述),1 多路選擇器的VHDL描述,…… ARCHITECTURE one OF mux21 ISBEGIN PROCESS (
11、a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ; END IF; END PROCESS;END ARCHITECTURE one ;,,--a,b,s 為敏感信號表,2選1多路選擇器功能時序波形,例1.1 2選1多路選擇器的EDA軟件
12、仿真結(jié)果,1 多路選擇器的VHDL描述,1.1 實體表達(ENTITY),1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明,ENTITY 實體名 IS [ GENERIC (類屬表);] PORT (端口表);END [ENTITY] 實體名;,實體在電路中主要是說明該電路的輸入、輸出關(guān)系,更具體地說就是用來定義實體與外部的連
13、接關(guān)系以及需傳送給實體的參數(shù)。,ENTITY 實體名 IS [ GENERIC (類屬表);] PORT (端口表);END [ENTITY] 實體名;,(1)類屬表:用以將信息參數(shù)傳遞到實體。(2)端口表:指明實體的輸入、輸出信號及其模式、數(shù)據(jù)類型。,,PORT (端口名:端口模式 數(shù)據(jù)類型; {端口名:端口模式
14、數(shù)據(jù)類型} );,英文字母+數(shù)字,數(shù)據(jù)流動方向,主要有“位”和“位矢量”兩類,,,,,,設(shè)計者自己命名的名稱(文件名),,,注意簡單地說 In 不可以出現(xiàn)在賦值符號(<= 或:=)的左邊 out不可以出現(xiàn)在賦值符號(<= 或:=)的右邊 buffer可以出現(xiàn)在賦值符號(<= 或:=)的兩邊,In 信號只能被引用,不能被賦值out 信號只能被
15、賦值,不能被引用buffer 信號可以被引用,也可以被賦值,例:,VHDL中任何一種數(shù)據(jù)對象(信號、變量、常數(shù))必須嚴格限定其取值范圍。 VHDL 中一個對象只能有一種類型,施加于該對象的操作必須與該類型相匹配。 常用數(shù)據(jù)類型有:BIT,BIT_VECTOR,STD_LOGIC,STD_LOGIC_VECTOR,INTEGER,BOOLEAN等,1.2 結(jié)構(gòu)體表達(ARCHITECTURE),1 多路
16、選擇器的VHDL描述,ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [定義語句] 內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等定義;BEGIN [功能描述語句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,以關(guān)鍵字ARCHITECTURE引導(dǎo),以END (ARCHITECTURE) xxx結(jié)尾的語句部分,稱為結(jié)構(gòu)體。描述電路的內(nèi)部邏輯功能或電路結(jié)構(gòu)。,結(jié)構(gòu)體名稱的命令:它是該結(jié)構(gòu)體的唯一
17、名稱?!癘F”后面緊跟的實體名表明了該結(jié)構(gòu)體所對應(yīng)的是哪一個實體。用 “IS”來結(jié)束結(jié)構(gòu)體的命名。,ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [定義語句] 內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,定義語句:位于“ARCHITECTURE”和“BEGIN”之間。用于對結(jié)構(gòu)體內(nèi)部所使用的信號常數(shù)、數(shù)據(jù)
18、類型和函數(shù)等進行定義。如:,ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [定義語句] 內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,SIGNAL cont:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL co_1:STD_LOGIC;CONSTANT m:TIME:=2ns;
19、TYPE STATE IS (INIT,DAD,ADC,SRF,F(xiàn)RF);,功能描述語句:處于“BEGIN”和“END”之間。具體描述了結(jié)構(gòu)體的行為及其連接關(guān)系。,ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [定義語句] 內(nèi)部信號,常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN [功能描述語句];END [ARCHITECTURE] 結(jié)構(gòu)體名;,,結(jié)構(gòu)體功能可以用三種方式進行描述,即:
20、 行為描述、數(shù)據(jù)流描述、結(jié)構(gòu)描述。,Ⅰ.結(jié)構(gòu)體的行為描述(behavioral) 結(jié)構(gòu)體的行為描述表示輸入與輸出間轉(zhuǎn)換的關(guān)系,是對設(shè)計實體按算法的路徑來描述。行為描述在 EDA 工程中稱為高層次描述或高級描述。,看例題!,例:如圖所示的半加器,其功能真值表已經(jīng)給出,寫出它的行為描述。,,半加器真值表:,(ENTITY部分省略) ARCHITECTURE alg_ha OF half
21、_adder IS BEGIN PROCESS (a , b) BEGIN IF a=‘0’ AND b=‘0’ THEN c<=‘0’ ; s<=‘0’ ELSIF a=‘1’ AND b=‘1’ THEN c
22、<=‘1’ ; s<=‘0’; ELSE c<=‘0’ ; s<=‘1’; END IF; END PROCESS; END alg_ha;,高層次的功能描述,不必考慮在電路中到底是怎樣實現(xiàn)的。,Ⅱ.結(jié)構(gòu)體的數(shù)據(jù)流描述(dataflow) 它反映了從
23、輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯變換,或者說描述了數(shù)據(jù)流程的運動路徑、運動方向和運動結(jié)果。Ⅲ.結(jié)構(gòu)體的結(jié)構(gòu)化描述(structural) 結(jié)構(gòu)化描述給出了實體內(nèi)部結(jié)構(gòu)、所包含的模塊或元件間互連關(guān)系;與實體外部引線的對應(yīng)關(guān)系。,練習: 試用上面的兩種方法描述半加器的功能。,,結(jié)構(gòu)體中三種描述方式的比較,布爾函數(shù)定義明白,連接關(guān)系清晰,電路模塊化清晰,優(yōu) 點,小門數(shù)設(shè)計,不易描述復(fù)雜電路,修改
24、不易,數(shù)據(jù)流描述,電路層次化設(shè)計,電路不易理解、繁瑣、復(fù)雜,結(jié)構(gòu)化描述,適用場合,缺 點,描述方式,,,,,,,,,,電路特性清楚明了,大型復(fù)雜的電路模塊設(shè)計,進行綜合效率相對較低,行為描述,信號賦值符 “<=”,表式中的等號“=”沒有賦值的含義,只是一種數(shù)據(jù)比較符號。,1.3 賦值符號和數(shù)據(jù)比較符號,1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明,1.4 邏輯操作符,1 多路選擇器的V
25、HDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明,VHDL共有7種基本邏輯操作符: AND(與)、OR(或)、NOT(取反)、NAND (與非)、 NOR(或非)、XOR(異或)、XNOR(同或),要求數(shù)據(jù)類型: BIT BOOLEAN STD_LOGIC,……ARCHITECTURE one OF mux21 IS BEGIN y <= a
26、 WHEN s = '0' ELSE b ;END ARCHITECTURE one ;,1.5 WHEN_ELSE條件信號賦值語句,1 多路選擇器的VHDL描述,例1.1VHDL描述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明,賦值目標 <= 表達式 WHEN 賦值條件 ELSE 表達式 WHEN 賦值條件 ELSE …
27、… 表達式 ;,在VHDL中,所有的順序語句,如“IF_THEN_ELSE_END IF”,都必須放在由“PROCESS…END PROCESS”引導(dǎo)的進程結(jié)構(gòu)中。 在一個結(jié)構(gòu)體(ARCHITECTURE)中可以包含任意個進程語句,所有的進程語句都是并行語句,而進程PROCESS引導(dǎo)的內(nèi)部語句結(jié)構(gòu)屬于順序語句。,1.4 進程語句和順序語句,1 多路選擇器的VHDL描述,例1.1VHDL描
28、述中出現(xiàn)的相關(guān)語句結(jié)構(gòu)和語法說明,1 小結(jié),在2選1的VHDL描述中出現(xiàn)的語言現(xiàn)象歸納:,實體: Entity結(jié)構(gòu)體:Architecture端口定義: Port( )端口模式:In/Out/Inout…數(shù)據(jù)類型:Bit、Std_Logic信號賦值符:<=條件比較符:=邏輯操作符:AND…,IF條件語句:IF……END IF并行條件語句:WHEN…ELSE進程語句:Process…End Process
29、順序語句:由進程語句引導(dǎo)并行語句:簡單賦值語句 when….else語句 select語句,,,2 時序電路的VHDL描述,例2.1 D觸發(fā)器的VHDL描述,最簡單、最具有代表性的時序電路是D觸發(fā)器。對D觸發(fā)器的描述包含了VHDL對時序電路的最基本和典型的表達方式,也包含了VHDL中許多最具特色的語言現(xiàn)象。,(實體-Entity),,電路功能描述(
30、結(jié)構(gòu)體-Architecture),?,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS -- 端口聲明 PORT (CLK, D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END ENTITY DFF1;
31、ARCHITECTURE bhv OF DFF1 IS --結(jié)構(gòu)體描述 SIGNAL Q1 : STD_LOGIC ; --類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點BEGIN PROCESS (CLK) -- 進程 BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ;
32、 END IF; END PROCESS ; Q <= Q1 ; --將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線--是注釋符號)END ARCHITECTURE bhv;,例2.1 D觸發(fā)器的VHDL描述,VHDL電路描述與設(shè)計平臺和硬件實現(xiàn)對象 (組合或時序邏輯) 無關(guān)。,例2.1中D觸發(fā)器的VHDL描述的語言現(xiàn)象說明,2.1 完整VHDL程序基本構(gòu)成,庫(Library)
33、和程序包(Package),程序包:定義了一組數(shù)據(jù)類型說明、常量說明、元件說明和子程序說明。以供其它多個設(shè)計實體引用。,庫:是專門存放預(yù)先編譯好的程序包的地方,這樣它們就可以在其它設(shè)計中被調(diào)用。,庫/程序包就是為了使一組類型說明,常量說明和子程序說明對多個設(shè)計實體都成為可見的而提供的一種結(jié)構(gòu)。它們?nèi)缤珻語言中的*.h文件,定義了一些類型說明,函數(shù)一樣。,例如: LIBRARY IEEE;
34、 USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; IEEE是IEEE標準庫的標志名,兩個USE語句使得以下設(shè)計可使用程序包std_logic_1164, std_logic_unsigned中所有預(yù)定義的內(nèi)容,如std_logic,in,out的定義等。,格式: LIBRAR
35、Y ; USE ..ALL;,庫(Library)和程序包(Package),常用標準庫std和ieee庫中的程序包,庫(Library)和程序包(Package),BIT數(shù)據(jù)類型定義: TYPE BIT IS('0','1'); 即BIT數(shù)據(jù)類型僅可取值‘0’或‘1’;,STD_LOGIC數(shù)據(jù)類型定義:
36、 TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); 工業(yè)標準邏輯類型,取值‘U’,‘X’,‘0’,‘1’,‘Z’, ‘W’, ‘L’, ‘H’和‘-’,2.2 標準邏輯位數(shù)據(jù)類型STD_LOGIC,ENTITY DFF1
37、 IS -- 端口聲明 PORT (CLK, D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END ENTITY DFF1;,ENTITY mux21 IS PORT (a, b, : IN BIT ;
38、 S : IN BIT ; y : OUT BIT ); END ENTITY mux21 ;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號定義和數(shù)據(jù)對象,信號(Signal):,信號的使用和定義范圍是實體、結(jié)構(gòu)體和程序包,在進程和子程序的順序語句中不允許定義信號。(只有
39、信號才能把進程外的信息帶入進程內(nèi)部,或?qū)⑦M程內(nèi)的信息帶出進程),SIGNAL 信號名: 數(shù)據(jù)類型 := 初始值;,信號賦值語句:目標信號名<=表達式;,VARIABLE 變量名: 數(shù)據(jù)類型 :=初始值;,變量賦值語句: 目標變量名:=表達式;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號定義和數(shù)據(jù)對象,變量(Variable):,
40、在VHDL中,變量是一個局部量,作為臨時的數(shù)據(jù)存儲單元,只能在進程和子程序的順序語句中使用。變量定義中的初始值僅對仿真有效,實際的綜合器并不支持設(shè)置初始值。,CONSTANT 常量名: 數(shù)據(jù)類型:= 表達式;,ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN……,2.3 信號定義和數(shù)據(jù)對象,常量(Constant):,常量的定義主要是為了程序更容易閱讀和修改。在
41、所有的VHDL結(jié)構(gòu)中都可以定義常量,如實體、結(jié)構(gòu)體、程序包、進程和子程序等。常量是一個恒定不變的值。,’EVENT,2.4 上升沿檢測表式和信號屬性函數(shù)EVENT,……PROCESS (CLK) -- 進程 BEGIN IF CLK’EVENT AND CLK = '1' THEN Q1 <= D ; END IF;
42、 END PROCESS ;……,,邊沿檢測語句,用信號屬性函數(shù)EVENT來測定某信號的跳變邊沿,即,2.5 不完整條件語句與時序電路,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS -- DFF 端口聲明 PORT (CLK, D : IN STD_LOGIC ;
43、 Q : OUT STD_LOGIC );END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) -- 進程 BEGIN IF CLK'EVENT AND CLK = '1' THEN
44、 Q1 <= D ; END IF; END PROCESS ; Q <= Q1 ; END ARCHITECTURE bhv;,,IF語句中沒有利用ELSE明確指出當IF語句不滿足條件時如何操作,即不完整條件語句。,IF語句表示:,完整的條件語句只能構(gòu)成組合邏輯電路。,IF語句表示:,,2.5 不完整條件語句與時序電路,2.5 不完整條件語句與時序電路,例a
45、:,2.5 不完整條件語句與時序電路,例b:,2.6 實現(xiàn)時序電路的VHDL不同表述,,CLK信號定義為STD_LOGIC數(shù)據(jù)類型,有9種取值,該描述并不能保證CLK是從“0”到“1”的上升沿跳變。,,...PROCESS (CLK) BEGIN IF CLK’EVENT AND (CLK='1') AND (CLK’LAST_VALUE='0') THEN
46、Q <= D ; --確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,...PROCESS (CLK)BEGIN -- 同上 IF CLK='1' AND CLK'LAST_VALUE='0' THEN Q <= D ; END IF; EN
47、D PROCESS ;,2.6 實現(xiàn)時序電路的VHDL不同表述,CLK’LAST_VALUE=‘0’為真,表示CLK在變化之前時刻為‘0’。,,,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ;
48、 ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) THEN Q1 <= D ; END IF; END PROCESS ; Q <
49、= Q1 ; END ;,Rising_edge( )是IEEE庫中STD_LOGIC_1164標準程序包內(nèi)預(yù)定義的函數(shù),該函數(shù)只能用于標準邏輯位數(shù)據(jù)類型STD_LOGIC的信號。因此,在實體前必須打開STD_LOGIC_1164程序包。,...PROCESS BEGIN wait until CLK = '1' ; Q <= D ;END PROCE
50、SS;,當進程中使用wait語句后,就不必列出敏感信號表。,2.6 實現(xiàn)時序電路的VHDL不同表述,...PROCESS (CLK)BEGIN IF CLK = '1' THEN Q <= D ; END IF; END PROCESS ;,將CLK放入敏感信號表中,CLK邊沿的檢測由PROCESS和IF語句結(jié)合實現(xiàn)。注:D信號并沒有在敏感表中。,上
51、升沿觸發(fā)DFF的仿真波形:,,,,,2.6 實現(xiàn)時序電路的VHDL不同表述,...PROCESS (CLK,D) BEGIN IF CLK = '1' THEN Q <= D ; END IF; END PROCESS ;,電平觸發(fā)DFF,即在CLK為高電平‘1’時,輸出Q隨D的變化而變化,而CLK為‘0’時輸出保持不變。 注:D信號在敏感表中。,
52、電平觸發(fā)DFF的仿真波形:,,,,,2.6 實現(xiàn)時序電路的VHDL不同表述,2 小結(jié),VHDL 庫:Library語句,包括IEEE庫、標準庫STD、工作庫Work等;程 序 包:USE語句,如Std_logic_1164程序包、Standard程序包等;數(shù)據(jù)類型:Std_logic,定義值中包括‘0’、‘1’、‘Z’和‘X’;數(shù)據(jù)對象:信號Signal、變量Variable、常量Constant;信號屬性:信號屬性函數(shù)E
53、VENT、LAST_VALUE;時鐘檢測:上升沿檢測Clk’event AND Clk=‘1’、Rising_edge( )。時序電路:不完整條件語句產(chǎn)生時序電路。,3 更復(fù)雜電路的VHDL描述,時序電路中,一般計數(shù)器的輸入/輸出信號包括:,,?,Entity,Architecture,,電路設(shè)計,3.1 計數(shù)器的VHDL描述,ENTITY CNT4 IS PORT ( CLK : IN BIT ;
54、 Q : BUFFER INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1
55、9; THEN Q <= Q + 1 ; END IF; END PROCESS ;END bhv;,【例1】: 4位二進制加法計數(shù)器,注意:(1) Q的端口模式為BUFFER; (2) Q的數(shù)據(jù)類型為INTEGER。,注意,?,ENTITY CNT4 IS PORT ( CLK :
56、IN BIT ; Q : BUFFER INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND C
57、LK = '1' THEN Q <= Q + 1 ; --如何理解? END IF; END PROCESS ;END bhv;,【例1】: 4位二進制加法計數(shù)器,注意,注意:在使用整數(shù)時,VHDL綜合器要求必須使用“Range”限定范圍,否則無法綜合。,,,VHDL中規(guī)定,算術(shù)操作符“+”、“-”的數(shù)據(jù)類型(除
58、特殊說明,如重載函數(shù))只能是整形“INTEGER”。,整數(shù)的表達不加引號,而邏輯位的數(shù)據(jù)必須加引號,如‘1’、‘0’、“101”。,整數(shù)(Integer)類型,VHDL中整數(shù)常量的書寫方式:,3.2 計數(shù)器設(shè)計的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運算符重載ENTITY CNT4 IS
59、 PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS
60、 (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ; --“+” 運算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHI
61、TECTURE bhv;,,,←①,←②,←③,,3.2 計數(shù)器設(shè)計的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運算符重載ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT
62、 STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = &
63、#39;1' THEN Q1 <= Q1 + 1 ; --“+” 運算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHITECTURE bhv;,,,←①,←②,←③,,3.2 計數(shù)器設(shè)計的其他表述方法,LIBRARY IEEE ; USE IEEE.STD_
64、LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 運算符重載ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv
65、OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ;
66、 --“+” 運算符重載 END IF; END PROCESS ; Q <= Q1 ;END ARCHITECTURE bhv;,,,←①,←②,←③,,3.3 不同工作方式的時序電路設(shè)計,例3.3.1:設(shè)計一個異步清零、有使能輸入的十進制計數(shù)器。,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsign
67、ed.all;ENTITY cntm10 IS -- 實體聲明 PORT( clk, rst, en : IN std_logic; --時鐘、清零、使能信號 co : OUT std_logic; --進位輸出 qcnt : buffer std_logic_vector(3 downto
68、 0)); END ENTITY cntm10;,,ARCHITECTURE behave OF cntm10 IS --結(jié)構(gòu)體描述BEGIN PROCESS (clk,rst) VARIABLE cqi :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF(rst=‘1’) THEN cqi :=(others=>’
69、0’); --計數(shù)器復(fù)位(高有效) ELSIF (clk‘EVENT AND clk = ’1‘) THEN --檢測時鐘上升沿 IF (en=‘1’) THEN --檢測是否允許計數(shù)(不完全條件語句) IF cqi ’0’); --計數(shù)狀態(tài)=9,下一狀態(tài)清零 END IF;
70、 END IF; END IF; IF cqi = 9 THEN co <= ‘1’; --計數(shù)狀態(tài)=9,輸出進位信號 ELSE co <=‘0’; END IF; qcnt <= cqi; --將計數(shù)值輸出到端口
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電路及EDA實驗系統(tǒng)設(shè)計及其應(yīng)用.pdf
- 數(shù)字電路eda課程設(shè)計數(shù)字跑表
- 數(shù)字電路與系統(tǒng).
- 數(shù)字電路eda課程設(shè)計--多功能數(shù)字電子鐘
- 數(shù)字電路與數(shù)字邏輯
- 數(shù)字電路設(shè)計
- 基于EDA技術(shù)《數(shù)字電路》綜合教學實驗儀的設(shè)計與制作.pdf
- 淺談物理電路與數(shù)字電路
- 信號系統(tǒng)與數(shù)字電路大綱
- 大工數(shù)字電路與系統(tǒng)作業(yè)答案
- 數(shù)字電路與邏輯設(shè)計試題
- 數(shù)字電路與邏輯設(shè)計試卷
- 數(shù)字電路容錯設(shè)計與研究.pdf
- 數(shù)字電路與邏輯設(shè)計習題
- 低頻與數(shù)字電路課程設(shè)計
- 低頻與數(shù)字電路課程設(shè)計
- 任務(wù)驅(qū)動式教學法在《數(shù)字電路eda設(shè)計》中的應(yīng)用
- 數(shù)字電路綜合設(shè)計案例
- 數(shù)字電路課程設(shè)計
- 數(shù)字電路課程設(shè)計
評論
0/150
提交評論