第6章VHDL設(shè)計進階_第1頁
第6章VHDL設(shè)計進階_第2頁
第6章VHDL設(shè)計進階_第3頁
第6章VHDL設(shè)計進階_第4頁
第6章VHDL設(shè)計進階_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA 技術(shù)實用教程技術(shù)實用教程第第 6 6 章章 VHDL設(shè)計進階設(shè)計進階 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.1 常數(shù)常數(shù) 常數(shù)定義的一般表述如下:常數(shù)定義的一般表述如下:CONSTANT 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型 := 表達式表達式 ; CONSTANT FBT : STD_LOGIC_VECTOR := 010110 ; - 標(biāo)準(zhǔn)位矢類型標(biāo)準(zhǔn)位矢類型 CONSTANT DATAIN : INTEGER := 15 ; - 整數(shù)類型整數(shù)類型 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.2 變量變量 變量賦值的一般表述如下:變量賦值的一般表述如下:目標(biāo)變量名

2、目標(biāo)變量名 := 表達式表達式 定義變量的一般表述如下:定義變量的一般表述如下: VARIABLE 變量名變量名 : 數(shù)據(jù)類型數(shù)據(jù)類型 := 初始值初始值 ; VARIABLE a : INTEGER RANGE 0 TO 15 ;-變量變量a定義為常數(shù),取值范圍是定義為常數(shù),取值范圍是0到到5 VARIABLE d : STD_LOGIC := 1 ;-變量變量a定義為標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型定義為標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型, 初始值是初始值是1 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.3 信號信號 SIGNAL 信號名:信號名: 數(shù)據(jù)類型數(shù)據(jù)類型 := 初始值初始值 ; 目標(biāo)信號名目標(biāo)信號名

3、 = 表達式表達式 AFTER 時間量時間量; SIGNAL a,b,c,y,z: INTEGER ; .PROCESS (a,b,c)BEGIN y = a + b ; z = c a ; y = b ;END PROCESS ; 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 信號信號SIGNAL變量變量VARIABLE基本用法基本用法用于作為電路中的信號連線用于作為電路中的信號連線用于作為進程中局部數(shù)據(jù)存儲用于作為進程中局部數(shù)據(jù)存儲單元單元適用范圍適用范圍在整個結(jié)構(gòu)體內(nèi)的任何地方都在整個結(jié)構(gòu)體內(nèi)的任何地方都能適用能適用只能在所定義的進

4、程中使用只能在所定義的進程中使用行為特性行為特性在進程的最后才對信號賦值在進程的最后才對信號賦值立即賦值立即賦值表表6-1 6-1 信號與變量賦值語句功能的比較信號與變量賦值語句功能的比較 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 【例【例6-1】. . . ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1 THEN QQ := D1 ; END IF; END PROCESS ; Q1 = QQ; EN

5、D ; 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 【例【例6-2】 . . . ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN QQ = D1 ; END IF; END PROCESS ; Q1 = QQ; END ; 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 【例【例6-3】 LIBRARY IEEE ; U

6、SE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN A = D1 ; B = A ;Q1 = B ;END IF; END PROCESS ; END ; X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦

7、值 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 DQDQDQDQD1Q1D1Q1CLKCLK 圖圖6-1 例例6-3的的RTL電路電路 圖圖6-2 D觸發(fā)器電路觸發(fā)器電路 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 【例【例6-4】LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE

8、A,B : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1 THEN A := D1 ; B := A ; Q1 = B ; END IF; END PROCESS ; END ; X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 【例【例6-5】 SIGNAL in1,in2,e1, . : STD_LOGIC ; . PROCESS(in1,in2, . . .) VARIABLE c1,. . . : STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN IF in1 = 1 THEN . - 第第 1 行

9、行 e1 = 1010 ; - 第第 2 行行 . IF in2 = 0 THEN . . . - 第第 15+n 行行 . c1 := 0011 ; - 第第 30+m 行行 . END IF; END PROCESS; 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 X康芯科技康芯科技【例【例6-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 I

10、Ssignal muxval : integer range 7 downto 0;BEGINprocess(i0,i1,i2,i3,a,b)begin muxval = 0;if (a = 1) then muxval = muxval + 1; end if;if (b = 1) then muxval q q q q null;end case;end process; END body_mux4; X康芯科技康芯科技【例【例6-7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a

11、, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(i0,i1,i2,i3,a,b)variable muxval : integer range 7 downto 0;begin muxval := 0;if (a = 1) then muxval := muxval + 1; end if;if (b = 1) then muxval := muxval + 2; end if;case muxval is when 0 = q q q q null;en

12、d case;end process; END body_mux4; X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 圖圖6-3 例例6-6的的RTL電路(電路(Synplify綜合)綜合) X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 圖圖6-4 例例6-7的的RTL電路(電路(Synplify綜合)綜合) X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦值 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 圖圖6-5 例例6-6中錯誤的工作時序中錯誤的工作時序 X康芯科技康芯科技6.1.4 進程中的信號與變量賦值進程中的信號與變量賦

13、值 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 圖圖6-6 例例6-7中正確的工作時序中正確的工作時序 X康芯科技康芯科技【例【例6-8】Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT IS PORT (CLK,C0 : IN STD_LOGIC; -時鐘和進位輸入時鐘和進位輸入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); -移位模式控制字移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -待加載移位的數(shù)據(jù)待加載移位的數(shù)據(jù) QB : OUT STD_LOGIC_VECTOR(7 D

14、OWNTO 0); -移位數(shù)據(jù)輸出移位數(shù)據(jù)輸出 CN : OUT STD_LOGIC); -進位輸出進位輸出END ENTITY;ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC ; BEGIN PROCESS (CLK,MD,C0) BEGIN IF CLKEVENT AND CLK = 1 THEN CASE MD IS WHEN 001 = REG(0) = C0 ; REG(7 DOWNTO 1) = REG(6 DOWNTO 0); CY RE

15、G(0) = REG(7); (接下頁)(接下頁)X康芯科技康芯科技(接上頁)(接上頁)REG(7 DOWNTO 1) REG(7) = REG(0); REG(6 DOWNTO 0) REG(7) = C0 ; REG(6 DOWNTO 0) = REG(7 DOWNTO 1); CY REG(7 DOWNTO 0) REG = REG ; CY = CY ; -保持保持 END CASE; END IF; END PROCESS;QB(7 DOWNTO 0) = REG(7 DOWNTO 0); CN = CY; -移位后輸出移位后輸出END BEHAV; X康芯科技康芯科技6.1.4 進

16、程中的信號與變量賦值進程中的信號與變量賦值 6.1 數(shù)據(jù)對象數(shù)據(jù)對象 圖圖6-7 例例6-8中帶進位循環(huán)左移仿真波形(中帶進位循環(huán)左移仿真波形(MD=001) X康芯科技康芯科技6.2.1 三態(tài)門設(shè)計三態(tài)門設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 【例【例6-9】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_s IS port ( enable : IN STD_LOGIC; datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VE

17、CTOR(7 DOWNTO 0) );END tri_s ; ARCHITECTURE bhv OF tri_s ISBEGINPROCESS(enable,datain) BEGIN IF enable = 1 THEN dataout = datain ; ELSE dataout =ZZZZZZZZ ; END IF ;END PROCESS;END bhv;X康芯科技康芯科技6.2.1 三態(tài)門設(shè)計三態(tài)門設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 圖圖6-8 8位位3態(tài)控制門電路(態(tài)控制門電路(Synplify綜合)綜合) X康芯科技康芯科技6.2.2 雙向端口設(shè)

18、計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 【例【例6-10】library ieee;use ieee.std_logic_1164.all;entity tri_state isport (control : in std_logic; in1: in std_logic_vector(7 downto 0); q : inout std_logic_vector(7 downto 0); x : out std_logic_vector(7 downto 0);end tri_state;architecture body_tri of tri_stat

19、e isbeginprocess(control,q,in1)beginif (control = 0) then x = q ; else q = in1; x=ZZZZZZZZ ;end if;end process;end body_tri; X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 【例【例6-11】(以上部分同上例以上部分同上例)process(control,q,in1)beginif (control=0) then x = q ; q = ZZZZZZZZ; else q = in1; x =ZZZZZ

20、ZZZ;end if;end process;end body_tri; X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 1.0s 1.5s 2.0s 2.5s 3.0s 3.5s 圖圖6-9 例例6-10的仿真波形圖的仿真波形圖 X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 圖圖6-10 例例6-11的仿真波形圖的仿真波形圖 1.0s 1.5s 2.0s 2.5s 3.0s 3.5s X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向

21、和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 圖圖6-11 例例6-10的綜合結(jié)果(的綜合結(jié)果(Synplify綜合)綜合) X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 圖圖6-12 例例6-11的綜合結(jié)果(的綜合結(jié)果(Synplify綜合)綜合) X康芯科技康芯科技6.2.3 三態(tài)總線電路設(shè)計三態(tài)總線電路設(shè)計 【例【例6-12】 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tristate2 IS port ( input3, input2, input1, in

22、put0 : IN STD_LOGIC_VECTOR (7 DOWNTO 0); enable : IN STD_LOGIC_VECTOR(1 DOWNTO 0); output : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END tristate2 ; ARCHITECTURE multiple_drivers OF tristate2 ISBEGINPROCESS(enable,input3, input2, input1, input0 ) BEGIN IF enable = 00 THEN output = input3 ; ELSE output Z);

23、END IF ; IF enable = 01 THEN output = input2 ; ELSE output Z); END IF ; (接下頁)(接下頁) X康芯科技康芯科技6.2.3 三態(tài)總線電路設(shè)計三態(tài)總線電路設(shè)計 (接上頁)(接上頁)IF enable = 10 THEN output = input1 ; ELSE output Z); END IF ; IF enable = 11 THEN output = input0 ; ELSE output Z); END IF ;END PROCESS;END multiple_drivers; X康芯科技康芯科技6.2.2 雙

24、向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 【例【例6-13】 (注:(注:MaxplusII不支持本例)不支持本例)library ieee;use ieee.std_logic_1164.all;entity tri2 isport (ctl : in std_logic_vector(1 downto 0); datain1, datain2,datain3, datain4 : in std_logic_vector(7 downto 0); q : out std_logic_vector(7 downto 0) );end tri2;arc

25、hitecture body_tri of tri2 isbegin q Z) ; q Z) ; q Z) ; q Z) ;end body_tri; X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 6.2 雙向和三態(tài)電路信號賦值例解雙向和三態(tài)電路信號賦值例解 圖圖6-13 例例6-12錯誤的綜合結(jié)果(錯誤的綜合結(jié)果(Synplify綜合結(jié)果)綜合結(jié)果) X康芯科技康芯科技6.2.2 雙向端口設(shè)計雙向端口設(shè)計 圖圖6-14 例例6-13正確正確的綜合結(jié)果的綜合結(jié)果(Synplify綜合結(jié)果)綜合結(jié)果) X康芯科技康芯科技6.3 IF語句概述語句概述 (1) IF 條件句條件句 Then

26、 順序語句順序語句 END IF ; (2) IF 條件句條件句 Then 順序語句順序語句 ELSE 順序語句順序語句 END IF ; (3) IF 條件句條件句 Then IF 條件句條件句 Then . END IF END IF (4) IF 條件句條件句 Then 順序語句順序語句ELSIF 條件句條件句 Then順序語句順序語句.ELSE 順序語句順序語句END IF X康芯科技康芯科技6.3 IF語句概述語句概述 【例【例6-14】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts ISPORT (a

27、, b, c: IN BOOLEAN; output: OUT BOOLEAN); END control_stmts; ARCHITECTURE example OF control_stmts IS BEGIN PROCESS (a, b, c) VARIABLE n: BOOLEAN; BEGIN IF a THEN n := b; ELSE n := c; END IF; output = n; END PROCESS; END example; X康芯科技康芯科技6.3 IF語句概述語句概述 輸輸 入入輸輸 出出din0 din1 din2 din3 din4 din5 din6 d

28、in7 output0 output1 output2 x x x x x x x 0 0 0 0 x x x x x x 0 1 1 0 0 x x x x x 0 1 1 0 1 0 x x x x 0 1 1 1 1 1 0 x x x 0 1 1 1 1 0 0 1 x x 0 1 1 1 1 1 1 0 1 x 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1表表6-2 8線線-3線優(yōu)先編碼器真值表線優(yōu)先編碼器真值表 注:注:表中的表中的“x”為任意,類似為任意,類似VHDL中的中的“”值。值。 X康芯科技康芯科技【例【例6-15】LIBRARY I

29、EEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 2) );END coder;ARCHITECTURE behav OF coder IS SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS (din) BEGIN IF (din(7)=0) THEN output = 000 ; ELSIF (din(6)=0) THEN out

30、put = 100 ; ELSIF (din(5)=0) THEN output = 010 ; ELSIF (din(4)=0) THEN output = 110 ; ELSIF (din(3)=0) THEN output = 001 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 011 ; ELSE output so so so so so NULL ; END CASE; END PROCESS; X康芯科技康芯科技6.4.3 進程要點進程要點 6.4 進程語句歸納進程語句歸納 3. 進程

31、必須由敏感信號的變化來啟動進程必須由敏感信號的變化來啟動 4. 進程語句本身是并行語句進程語句本身是并行語句 X康芯科技康芯科技【例【例6-16】ENTITY mul ISPORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT );END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT;BEGINp_a : PROCESS (a, b, selx) BEGIN IF (selx = 0) THEN temp = a; ELSE temp = b; END IF; END PROCESS p_a

32、; p_b: PROCESS(temp, c, sely) BEGIN IF (sely = 0) THEN data_out = temp; ELSE data_out = c; END IF; END PROCESS p_b;END ex; X康芯科技康芯科技6.4.3 進程要點進程要點 6.4 進程語句歸納進程語句歸納 5. 信號是多個進程間的通信線信號是多個進程間的通信線 6. 一個進程中只允許描述對應(yīng)于一個時鐘信號的同步時序邏輯一個進程中只允許描述對應(yīng)于一個時鐘信號的同步時序邏輯 X康芯科技康芯科技6.5 并行語句例解并行語句例解 【例【例6-17】ARCHITECTURE data

33、flow OF mux ISSIGNAL seiect : INTEGER RANGE 15 DOWNTO 0;BEGINSelect = 0 WHEN s0=0 AND s1=0 ELSE 1 WHEN s0=1 AND s1=0 ELSE 2 WHEN s0=0 AND s1=1 ELSE 3 ; x = a WHEN select=0 ELSE b WHEN select=1 ELSE c WHEN select=2 ELSE d ;. . . X康芯科技康芯科技6.6 仿真延時仿真延時 6.6.1 固有延時固有延時 z = x XOR y AFTER 5ns ; z = x XOR y

34、 ; B = A AFTER 20ns ;-固有延時模型固有延時模型 X康芯科技康芯科技6.6 仿真延時仿真延時 6.6.2 傳輸延時傳輸延時 B = TRANSPORT A AFTER 20 ns;- 傳輸延時模型傳輸延時模型 I116I117I113I118I119I120BBAA40ns302010040ns3020100圖圖6-15 固有延時輸入輸出波形固有延時輸入輸出波形 圖圖6-16傳輸延時輸入輸出波形傳輸延時輸入輸出波形 X康芯科技康芯科技6.6 仿真延時仿真延時 6.6.3 仿真仿真 VHDL仿真器和綜合器將自動為系統(tǒng)中的信號賦值仿真器和綜合器將自動為系統(tǒng)中的信號賦值配置一足夠

35、小而又能滿足邏輯排序的延時量,即仿真配置一足夠小而又能滿足邏輯排序的延時量,即仿真軟件的最小分辯時間,這個延時量就稱為仿真軟件的最小分辯時間,這個延時量就稱為仿真 (Simulation Delta),或稱),或稱 延時,從而使并行語句延時,從而使并行語句和順序語句中的并列賦值邏輯得以正確執(zhí)行。由此可和順序語句中的并列賦值邏輯得以正確執(zhí)行。由此可見,在行為仿真、功能仿真乃至綜合中,引入見,在行為仿真、功能仿真乃至綜合中,引入 延時延時是必需的。仿真中,是必需的。仿真中, 延時的引入由延時的引入由EDA工具自動完工具自動完成,無需設(shè)計者介入。成,無需設(shè)計者介入。 習(xí)習(xí) 題題 X康芯科技康芯科技6

36、-1. 什么是固有延時?什么是慣性延時?什么是固有延時?什么是慣性延時?6-2. 是什么?在是什么?在VHDL中,中, 有什么用處?有什么用處? 6-3. 哪些情況下需要用到程序包哪些情況下需要用到程序包STD_LOGIC_UNSIGNED?試舉一例。?試舉一例。6-4. 說明信號和變量的功能特點,應(yīng)用上的異同點。說明信號和變量的功能特點,應(yīng)用上的異同點。6-5. 在在VHDL設(shè)計中,給時序電路清設(shè)計中,給時序電路清0(復(fù)位復(fù)位)有兩種方法,它們是什么?有兩種方法,它們是什么?6-6. 哪一種復(fù)位方法必須將復(fù)位信號放在敏感信號表中?給出這兩種電哪一種復(fù)位方法必須將復(fù)位信號放在敏感信號表中?給出

37、這兩種電路的路的VHDL描述。描述。 6-7. 什么是重載函數(shù)?重載算符有何用處?如何調(diào)用重載算符函數(shù)?什么是重載函數(shù)?重載算符有何用處?如何調(diào)用重載算符函數(shù)? 習(xí)習(xí) 題題 X康芯科技康芯科技6-8. 判斷下面判斷下面3個程序中是否有錯誤,若有則指出錯誤所在,并給出完整程序。個程序中是否有錯誤,若有則指出錯誤所在,并給出完整程序。程序程序1:Signal A, EN : std_logic;Process (A, EN) Variable B : std_logic;Beginif EN = 1 then B = A; end if;end process;程序程序2:Architecture

38、 one of sample is variable a, b, c : integer;begin c LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ; END ; 實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技(4) 實驗內(nèi)容實驗內(nèi)容2:引腳鎖定及硬件測試。建議選引腳鎖定及硬件測試。建議選GW48系統(tǒng)的實驗電路模式系統(tǒng)的實驗電路模式6(參考附錄圖(參考附錄圖6),用數(shù)碼),用數(shù)碼8顯示譯

39、碼輸出顯示譯碼輸出(PIO46-PIO40),鍵,鍵8、鍵、鍵7、鍵、鍵6和和鍵鍵5四位控制輸入,硬件驗證譯碼器的工作性能。四位控制輸入,硬件驗證譯碼器的工作性能。(5) 實驗內(nèi)容實驗內(nèi)容3:用第:用第4章介紹的例化語句,按圖章介紹的例化語句,按圖6-19的方式連接成頂層設(shè)計電的方式連接成頂層設(shè)計電路(用路(用VHDL表述),圖中的表述),圖中的CNT4B是一個是一個4位二進制加法計數(shù)器,可以由位二進制加法計數(shù)器,可以由例例4-22修改獲得;模塊修改獲得;模塊DECL7S即為例即為例6-18實體元件,重復(fù)以上實驗過程。注實體元件,重復(fù)以上實驗過程。注意圖意圖6-20中的中的tmp是是4位總線,

40、位總線,led是是7位總線。對于引腳鎖定和實驗,建議選位總線。對于引腳鎖定和實驗,建議選電路模式電路模式6,用數(shù)碼,用數(shù)碼8顯示譯碼輸出,用鍵顯示譯碼輸出,用鍵3作為時鐘輸入作為時鐘輸入(每按每按2次鍵為次鍵為1個時個時鐘脈沖鐘脈沖),或直接接時鐘信號,或直接接時鐘信號clock0。(8) 實驗報告實驗報告:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括程序設(shè)計、軟件編譯、:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括程序設(shè)計、軟件編譯、仿真分析、硬件測試和實驗過程;設(shè)計程序、程序分析報告、仿真波形圖及仿真分析、硬件測試和實驗過程;設(shè)計程序、程序分析報告、仿真波形圖及其分析報告。其分析報告。 X康芯科技康芯科技

41、圖圖6-18共陰數(shù)碼管及其電路共陰數(shù)碼管及其電路 圖圖6-19 計數(shù)器和譯碼器連接電路的頂層文件原理圖計數(shù)器和譯碼器連接電路的頂層文件原理圖實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技6-2. 八位數(shù)碼掃描顯示電路設(shè)計八位數(shù)碼掃描顯示電路設(shè)計(1) 實驗?zāi)康模簩嶒災(zāi)康模簩W(xué)習(xí)硬件掃描顯示電路的設(shè)計。學(xué)習(xí)硬件掃描顯示電路的設(shè)計。(2) 實驗原理:實驗原理:圖圖6-20所示的是所示的是8位數(shù)碼掃描顯示電路,其中每個數(shù)碼管的位數(shù)碼掃描顯示電路,其中每個數(shù)碼管的8個個段:段:h、g、f、e、d、c、b、a(h是小數(shù)點)都分別連在一起,是小數(shù)點)都分別連在一起,8個數(shù)碼管分個數(shù)碼管分別由別由8個選通信號

42、個選通信號k1、k2、k8來選擇。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)來選擇。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。如在某一時刻,閉。如在某一時刻,k3為高電平,其余選通信號為低電平,這時僅為高電平,其余選通信號為低電平,這時僅k3對應(yīng)的對應(yīng)的數(shù)碼管顯示來自段信號端的數(shù)據(jù),而其它數(shù)碼管顯示來自段信號端的數(shù)據(jù),而其它7個數(shù)碼管呈現(xiàn)關(guān)閉狀態(tài)。根據(jù)這種個數(shù)碼管呈現(xiàn)關(guān)閉狀態(tài)。根據(jù)這種電路狀況,如果希望在電路狀況,如果希望在8個數(shù)碼管顯示希望的數(shù)據(jù),就必須使得個數(shù)碼管顯示希望的數(shù)據(jù),就必須使得8個選通信號個選通信號k1、k2、k8分別被單獨選通,并在此同時,在段信號輸入口加上希望在該分別被單獨選通,并在此同時,在

43、段信號輸入口加上希望在該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,就能實現(xiàn)掃描顯示的對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,就能實現(xiàn)掃描顯示的目的。目的。 實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技圖圖6-20 8位數(shù)碼掃描顯示電路位數(shù)碼掃描顯示電路 X康芯科技康芯科技【例【例6-19】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED IS PORT ( CLK : IN STD_LOGIC; SG : OUT STD_LOGIC_VECTOR(6

44、DOWNTO 0);-段控制信號輸出段控制信號輸出 BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );-位控制信號輸出位控制信號輸出 END;ARCHITECTURE one OF SCAN_LED IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1:PROCESS( CNT8 ) BEGIN CASE CNT8 IS WHEN 000 = BT = 00000001 ; A BT = 00000010 ; A BT = 00000100 ;

45、 A BT = 00001000 ; A BT = 00010000 ; A BT = 00100000 ; A BT = 01000000 ; A BT = 10000000 ; A NULL ; END CASE ; END PROCESS P1; 接下頁接下頁X康芯科技康芯科技P2:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN CNT8 SG SG SG SG SG SG SG SG SG SG SG SG SG SG SG SG NULL ; END CASE ; END PROCESS P3; END; 接上頁接上頁實實 驗驗 與與

46、設(shè)設(shè) 計計X康芯科技康芯科技(3) 實驗內(nèi)容實驗內(nèi)容1:說明例說明例6-19中各語句的含義,以及該例的整體功能。對該例中各語句的含義,以及該例的整體功能。對該例進行編輯、編譯、綜合、適配、仿真,給出仿真波形。實驗方式:若考慮小進行編輯、編譯、綜合、適配、仿真,給出仿真波形。實驗方式:若考慮小數(shù)點,數(shù)點,SG的的8個段分別與個段分別與PIO49、PIO48、PIO42(高位在左)、(高位在左)、BT的的8個位分別與個位分別與PIO34、PIO35、PIO41(高位在左);電路模式不限,引腳(高位在左);電路模式不限,引腳圖參考附錄圖圖參考附錄圖10。將。將GW48EDA系統(tǒng)左下方的撥碼開關(guān)全部向

47、上撥,這時實系統(tǒng)左下方的撥碼開關(guān)全部向上撥,這時實驗系統(tǒng)的驗系統(tǒng)的8個數(shù)碼管構(gòu)成圖個數(shù)碼管構(gòu)成圖6-20的電路結(jié)構(gòu),時鐘的電路結(jié)構(gòu),時鐘CLK可選擇可選擇clock0,通過跳,通過跳線選擇線選擇16384Hz信號。引腳鎖定后進行編譯、下載和硬件測試實驗。將實驗信號。引腳鎖定后進行編譯、下載和硬件測試實驗。將實驗過程和實驗結(jié)果寫進實驗報告。過程和實驗結(jié)果寫進實驗報告。(4) 實驗內(nèi)容實驗內(nèi)容2:修改例修改例6-19的進程的進程P1中的顯示數(shù)據(jù)直接給出的方式,增加中的顯示數(shù)據(jù)直接給出的方式,增加8個個4位鎖存器,作為顯示數(shù)據(jù)緩沖器,使得所有位鎖存器,作為顯示數(shù)據(jù)緩沖器,使得所有8個顯示數(shù)據(jù)都必須來

48、自緩沖器。個顯示數(shù)據(jù)都必須來自緩沖器。緩沖器中的數(shù)據(jù)可以通過不同方式鎖入,如來自緩沖器中的數(shù)據(jù)可以通過不同方式鎖入,如來自A/D采樣的數(shù)據(jù)、來自分時采樣的數(shù)據(jù)、來自分時鎖入的數(shù)據(jù)、來自串行方式輸入的數(shù)據(jù),或來自單片機等。鎖入的數(shù)據(jù)、來自串行方式輸入的數(shù)據(jù),或來自單片機等。 實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技6-3. 數(shù)控分頻器的設(shè)計數(shù)控分頻器的設(shè)計(1) 實驗?zāi)康膶嶒災(zāi)康模簩W(xué)習(xí)數(shù)控分頻器的設(shè)計、分析和測試方法。:學(xué)習(xí)數(shù)控分頻器的設(shè)計、分析和測試方法。(2) 實驗原理實驗原理:數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時,將對:數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時,將

49、對輸入的時鐘信號有不同的分頻比,數(shù)控分頻器就是用計數(shù)值可并行預(yù)置的加輸入的時鐘信號有不同的分頻比,數(shù)控分頻器就是用計數(shù)值可并行預(yù)置的加法計數(shù)器設(shè)計完成的,方法是將計數(shù)溢出位與預(yù)置數(shù)加載輸入信號相接即可,法計數(shù)器設(shè)計完成的,方法是將計數(shù)溢出位與預(yù)置數(shù)加載輸入信號相接即可,詳細設(shè)計程序如例詳細設(shè)計程序如例6-20所示。所示。(3) 分析分析:根據(jù)圖:根據(jù)圖6-21的波形提示,分析例的波形提示,分析例6-20中的各語句功能、設(shè)計原理及中的各語句功能、設(shè)計原理及邏輯功能,詳述進程邏輯功能,詳述進程P_REG和和P_DIV的作用,并畫出該程序的的作用,并畫出該程序的RTL電路圖。電路圖。實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技圖圖6-21 當(dāng)給出不同輸入值當(dāng)給出不同輸入值D時,時,F(xiàn)OUT輸出不同頻率輸出不同頻率(CLK周期周期=50ns) 100.0s 200.0s 300.0s 400.0s 實實 驗驗 與與 設(shè)設(shè) 計計X康芯科技康芯科技(4)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論