使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B09622030
簡介 大綱 : 使用VHDL設計一個二進制轉七段顯示器 之解碼電路。 用具 : 一條8對8排線 一條4對4排線 Lattice電路IC板 輸入電腦程式資料 原理 : w,x,y,z分別為一個開關,a~g分別為一 個LED燈。
真值表 這個七段顯示器,是使用0來驅動,所以0=燈亮,1=燈不亮 數值 輸入 w x y z 輸出 a b c d e f g 1 2 3 1 2 3 4 5 6 7 8 9 10 X
程式 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity BCD2SEG is --電路名稱 port( --輸入、輸出之接腳 w,x,y,z :in std_logic; --輸入接腳 a,b,c,d,e,f,g:out std_logic --輸出接腳 ); end; architecture Behav of BCD2SEG is --電路結構 signal i :std_logic_vector(3 downto 0); --訊號i 從i3~i0 signal t :std_logic_vector(6 downto 0); --訊號t從t3~t0 begin i(3)<=w ; i(2)<=x ; i(1)<=y ; i(0)<=z; --i(3)搬入W,後面依此類推 process(i) --處理訊號i
程式 if i=“0000” then t<=“0000001”; --如果i=“0000” 則 t 搬入“0000001” elsif i="0001" then t<="1001111"; --如果i=“0001” 則 t 搬入“1001111” elsif i="0010" then t<="0010010"; --如果i=“0010” 則 t 搬入“0010010” elsif i="0011" then t<="0000110"; --如果i=“0011” 則 t 搬入“0000110” elsif i="0100" then t<="1001100"; --如果i=“0100” 則 t 搬入“1001100” elsif i="0101" then t<="0100100"; --如果i=“0101” 則 t 搬入“0100100” elsif i="0110" then t<="0100000"; --如果i=“0110” 則 t 搬入“0100000” elsif i="0111" then t<="0001111"; --如果i=“0111” 則 t 搬入“0001111” elsif i="1000" then t<="0000000"; --如果i=“1000” 則 t 搬入“0000000” elsif i="1001" then t<="0001100"; --如果i=“1001” 則 t 搬入“0001100” else t<=“XXXXXXX”; --其他則t搬入don’t care end if; --結束if end process; --結束process a<=t(6) ; b<=t(5) ; c<=t(4) ; d<=t(3) ; e<=t(2) ; f<=t(1) ; g<=t(0) ; --設定群組 end Behav;
(左圖)當輸入為0000,七段顯示器印出0 (右圖)當輸入為0001,七段顯示器印出1
(左圖)當輸入為0010,七段顯示器印出2 (右圖)當輸入為0011,七段顯示器印出3
(左圖)當輸入為0100,七段顯示器印出4 (右圖)當輸入為0101,七段顯示器印出5
(左圖)當輸入為0110,七段顯示器印出6 (右圖)當輸入為0111,七段顯示器印出7
(左圖)當輸入為1000,七段顯示器印出8 (右圖)當輸入為1001,七段顯示器印出9
老師上課教導我們的程式用法 , 與程式的相關知識。 參考資料 老師上課教導我們的程式用法 , 與程式的相關知識。 數位邏輯設計課本。