顯示電路研發(fā)設計_第1頁
顯示電路研發(fā)設計_第2頁
顯示電路研發(fā)設計_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第9章顯示電路設計本章重點討論輸出結(jié)果在數(shù)碼管上的顯示。 電子線路輸出一般都是 用燈的亮與不亮來表示輸出的高低電平,這種顯示不直觀。數(shù)碼管顯 示能夠更加直觀、形象的描述現(xiàn)象。9.1兩輸入或門輸出顯示兩輸入或門是數(shù)字邏輯電路中最基本的門電路,電路圖如下:真值表:aby000011101111兩輸入或門的程序設計可以有多種方式設計。輸出結(jié)果主要通過38譯碼器譯碼轉(zhuǎn)換為7段顯示碼的輸入,其電路程序設計如下: 矚慫潤 厲釤瘞睞櫪廡賴。library ieee;use ieee.std _lo gic_1164.all;use ieee.std_logic_ un sig ned.all;*ENTIT

2、Y or1 ISPORT(a,b:IN STD_LOGIC;out_c: out stdo gic_vector(7 dow nto 0);out_38: out std_logic_vector(2 dow nto 0);END or1;*architecture rtl OF or1 ISsig nal y:std_logic;begi ny<=a OR b;out_38 <= "000"out_c <= "00111111" whe n y='O' else"00000110"END rtl;波

3、形圖如下:9.2 3進制計數(shù)器上一章講到過3進制計數(shù)器的設計原理,按照一般的顯示需要兩個 燈顯示結(jié)果,在這里我們用一個數(shù)碼管顯示。 讓讀者能夠更加直觀的 理解3進制計數(shù)器的記數(shù)過程。其程序設計如下:聞創(chuàng)溝燴鐺險愛氌 譴凈。頂層文件設計:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dsp3 ISPORT(enable:IN STD_LOGIC;clk:IN STD_LOGIC;out_38: out std_logic_vector(2 downto 0);segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );E

4、ND dsp3;ARCHITECTURE rt1 OF dsp3 ISCOMPONENT count3PORT(enable:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINU0:count3 PORT MAP(enable,clk,q);out_38 <= "000"segment <= "00111111" when q="00&quo

5、t; else"00000110" when q="01" else"1011011"END rt1;再該程序中用 COMPONENT 命令調(diào)用了 3 進制計數(shù)器的設計程 序,其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count3 ISPORT(enable:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END count3

6、;ARCHITECTURE rt1 OF count3 ISSIGNAL q_tmp:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN process(clk) beginIF(clk'event and clk='1')thenif(enable='1')then if(q_tmp="10")thenq_tmpv=(others二>'0');elseq_tmp<=q_tmp+1;end if;end if;end if;q<=q_tmp;end process;end rt1;波

7、形圖如下:100 .On? 200.0ns300.0ns00 .Uns GDO.Dns 600.0n57 CD. 0ns 800.0ns900. DdllIIhdIenablef elk0 ou)302. .3601-tv segmantG segmenl5 segment-e segment segment segmenll ssgmenlO1 訂1aHOii19.3 24進制計數(shù)器24進制計數(shù)器顯示和3進制計數(shù)器的顯示思路一樣。不同之處在 于前者需要兩個數(shù)碼管,在設計時必須考慮選擇數(shù)碼管。在任何自頂 向下的VHDL設計描述中,設計人員常常將整個設計的系統(tǒng)劃分為 幾個模塊,然后采用結(jié)構(gòu)描述方

8、式對整個系統(tǒng)進行描述。殘騖樓諍錈瀨濟溆塹籟。頂層結(jié)構(gòu)體的VHDL源代碼24 進制計數(shù)器顯示程序設計過程中就包含了記數(shù)部分、 顯示部分。 另外為了使記數(shù)準確, 我們必須要獲得穩(wěn)定的頻率, 即還包括穩(wěn)定的 頻率源部分。下面我們給出頂層結(jié)構(gòu)體的 VHDL 源代碼。其中 3 個 模塊以元件的形式給出, 首先在結(jié)構(gòu)體的說明部分進行元件說明, 然 后在結(jié)構(gòu)體中進行例化調(diào)用。 同時在結(jié)構(gòu)體的說明部分定義了中間信 號,主要用來在模塊之間傳遞信息 。 釅錒極額閉鎮(zhèn)檜豬訣錐。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.

9、ALL;ENTITY clock ISPORT(clk:IN STD_LOGIC;enable:IN STD_LOGIC;sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END clock;ARCHITECTURE rt1 OF clock ISCOMPONENT clk_div1000 PORT(clk:IN STD_LOGIC;clk_div:out STD_LOGIC);end component;component count24PORT(enable:IN STD_LOGIC;

10、clk0:IN STD_LOGIC;qh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);ql:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component displayPORT(clk:IN STD_LOGIC;qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ql:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:out STD_LOGIC_VECTOR(2 DOWNTO 0);segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); end com

11、ponent;signal qh: STD_LOGIC_VECTOR(3 DOWNTO 0); signal ql: STD_LOGIC_VECTOR(3 DOWNTO 0);signal clk0:STD_LOGIC;beginu0:clk_div1000 PORT MAP(clk,clk0);u1:count24 PORT MAP(enable,clk0,qh,ql);u2:display PORT MAP(clk,qh,ql,sel,segment);end rt1;9.3.2 頻率源 VHDL 源代碼為了獲得的穩(wěn)定的頻率源,我們才用 1000 赫茲頻率作為輸入,用 1000 進制 計數(shù)

12、器分頻得到 1 赫茲頻率。其程序如下: 彈貿(mào)攝爾霽斃攬磚鹵 廡。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div1000 ISPORT(clk:IN STD_LOGIC;clk_div:out STD_LOGIC);END clk_div1000;ARCHITECTURE rt1 OF clk_div1000 ISSIGNAL q_tmp:integer range 0 to 999;BEGINprocess(clk)beginIF(clk'event and

13、clk='1')thenif(q_tmp=999)thenq_tmp<=0;elseq_tmp<=q_tmp+1;end if;end process;process(clk)beginIF(clk'event and clk='1')thenif(q_tmp=999)thenclk_div<='1'elseclk_div<='0'end if;end if;end process;end rt1;9.3.3 計數(shù)部分 VHDL 源代碼24 進制計數(shù)器的計數(shù)主要是 24 進制,在這里我們把 24 分

14、為個位 和十位設計。其 VHDL 源代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count24 ISPORT(enable:IN STD_LOGIC;clk0:IN STD_LOGIC;-cout:out STD_LOGIC;qh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);ql:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count24;ARCHITECTURE rt1 OF count24 ISSIGNAL qh_

15、temp,ql_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);謀蕎 摶篋飆鐸懟類蔣薔。BEGINprocess(clk0)beginIF(clk0'event and clk0='1')thenif (enable='1') thenif (qh_temp="0010" and ql_temp="0011") then qh_temp<="0000"ql_temp<="0000"elseif (ql_temp="1001"

16、) then ql_temp<="0000"qh_temp<=qh_temp+1;elseql_temp<=ql_temp+1;end if;end if;qh二qh_temp;qlv二ql_temp;end process;end rt1;934顯示模塊VHDL源代碼顯示模塊的輸入信號主要來自于計數(shù)部分的輸出信息。在輸出信號中,我們采用循環(huán)點亮兩個 LED七段顯示數(shù)碼管顯示輸出。我們通 過信號來進行2個LED七段顯示數(shù)碼的選擇,從而將輸出信號送到 相應的LED七段顯示數(shù)碼上完成24進制計數(shù)器的結(jié)果顯示。模塊框 圖如下: 廈礴懇蹣駢時盡繼價騷。qhql計時

17、位選電路qOqlq3七段顯示譯碼segment0 se呂ment1 segment 2 segmen13 segment4 segment5 segment 6enablecount8R Q 衣elCLK從圖中可以看出,顯示模塊有四個部分構(gòu)成:八進制計數(shù)器、計時位選擇電路、七段顯示譯碼電路。在外部時鐘信號 clk 的作用下, 8 進制計數(shù)器的輸出從 000 到 111 按順序循環(huán)變化,輸出信號為se。信號seI作為計時位選擇電路的選 擇信號,用來選擇對應位的數(shù)據(jù)并將其轉(zhuǎn)換為四位位矢量。 最后將計 時位選擇電路的輸出信號 q 送到七段顯示譯碼電路的輸入端口, 將其 轉(zhuǎn)換成用來點燃 LED 七段顯

18、示數(shù)碼管的 segment 信號 。 煢楨廣鰳鯡選塊網(wǎng)羈 淚。下面描述顯示模塊中的四個子電路,然后描述其總體功能。 8 進 制計數(shù)器 VHDL 源代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count8 ISPORT(cIk:IN STD_LOGIC;seI:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END count8;ARCHITECTURE rt1 OF count8 ISSIGNAL seI_tmp:STD_LOGIC_VECTOR(2 DO

19、WNTO 0);BEGINprocess(cIk)beginIF(cIk'event and cIk='1')thenif(seI_tmp="111")thensel_tmp<=(others=>'0');elsesel_tmp<=sel_tmp+1;end if;end if;sel<=sel_tmp;end process;end rt1;計時位選擇電路的功能是根據(jù) 8 進制計數(shù)器的計數(shù)輸出的選擇信 號來選擇對應計時顯示位的計時數(shù)據(jù), 作為送致七段顯示譯碼電路的 輸入數(shù)據(jù)。在計時位選擇電路中我們要將輸入數(shù)據(jù)

20、都轉(zhuǎn)化成 4 位寬度 的數(shù)據(jù)。其 VHDL 源代碼如下: 鵝婭盡損鵪慘歷蘢鴛賴。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY time_choose ISPORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ql:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END time_choose;ARCHITECTURE rt1 OF time_choose ISBE

21、GINPROCESS(sel,qh,ql)BEGINCASE sel ISWHEN "000"=>q<=ql;WHEN "001"=>q<=qh;WHEN OTHERS=>q<="XXXX"END CASE;END PROCESS;END rt1;七段顯示譯碼電路的功能是將顯示的數(shù)據(jù)轉(zhuǎn)換成用來點燃LED七段顯示數(shù)碼管的segment信號。其VHDL源代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY seg7 ISPORT(q:IN STD_LO

22、GIC_VECTOR(3 DOWNTO 0);segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END seg7;ARCHITECTURE rt1 OF seg7 ISBEGINPROCESS(q)BEGINCASE q ISWHEN "0000"=>segment<="0111111"WHEN "0001"=>segment<="0000110"WHEN "0010"=>segment<="1011011"

23、WHEN "0011"=>segment<="1001111"WHEN "0100"=>segment<="1100110"WHEN "0101"=>segment<="1101101"WHEN "0110"=>segment<="1111101"WHEN "0111"=>segment<="0100111"WHEN "1000

24、"=>segment<="1111111"WHEN "1001"=>segment<="1101111"WHEN OTHERS=>segment<="XXXXXXX"END CASE;END PROCESS;END rt1;下面對 24進制計數(shù)器顯示模塊總體功能描述。 在描述 24 進制計數(shù) 器顯示模塊時, 我們以引用元件的形式來調(diào)用以上描述的子電路。 其 VHDL 源代碼如下: 籟叢媽羥為贍僨蟶練淨。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY display ISPORT(clk:IN STD_LOGIC;qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ql:IN STD_LOGIC_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論