使用VHDL設計-七段顯示 通訊一甲 B09622048 楊穎穆
目錄 1.目的 2.真值表 3.程式 4.實驗結果 5.資料來源
目的 ※主要是使用VHDL來設計七段顯示的電路,並燒進IC板裡測試它的結果,相較於上學期是使用繪畫電路圖的方式兩者有明顯的差異,不過得出來的結果是一樣的。
真值表 w x y z a b c d e f g 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 2 0 0 1 0 0 0 1 0 0 1 0 3 0 0 1 1 0 0 0 0 1 1 0 4 0 1 0 0 1 0 0 1 1 0 0 5 0 1 0 1 0 1 0 0 1 0 0 6 0 1 1 0 0 1 0 0 0 0 0 7 0 1 1 1 0 0 0 1 1 1 1 8 1 0 0 0 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 1 1 0 0 10~15 X X X X X X X
程式 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity BCD2SEG is --IC內部要做的電路名稱 port( --接腳 w,x,y,z : in std_logic; --w,x,y,z為輸入腳 a,b,c,d,e,f,g : out std_logic -- a,b,c,d,e,f,g為輸出腳 ); end;
architecture Behave of BCD2SEG is --電路內部結構 signal i : std_logic_vector(3 downto 0); --輸入訊號向下計數由3到0 signal t : std_logic_vector(6 downto 0); --輸出訊號向下計數由6到0 begin i(3)<=w; i(2)<=x; i(1)<=y; i(0)<=z; --Grouping(群組化)i(3)搬入w, i(2)搬入x, i(1)搬入y, i(0)搬入z process(i) --處理i輸入的訊號 if i=“0000” then t<=“0000001”; --輸入為“0000”七段顯示就會顯示‘0’ elsif i="0001" then t<="1001111"; --輸入為“0001”七段顯示顯示‘1’ elsif i="0010" then t<="0010010"; --輸入為“0010”七段顯示顯示‘2’ elsif i="0011" then t<="0000110"; --輸入為“0011”七段顯示顯示‘3’ elsif i="0100" then t<="1001100"; --輸入為“0100”七段顯示顯示‘4’
elsif i="0101" then t<="0100100"; --輸入為“0101”七段顯示顯示‘5’ else t<=“XXXXXXX”; --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); --Grouping(群組化)t(6)搬入a, t(5)搬入b, t(4)搬入c, t(3)搬入d, t(2)搬入e, t(1)搬入f, t(0)搬入g end Behave; --程式結束
實驗結果(1) ※當開關撥為”0000”的時候,七段顯示會顯示為’0’。然後當我開關撥為”0001”的時候,七段顯示就會顯示為’1’。這就是利用二進制轉七段顯示,所顯示出來的結果。
實驗結果(2) ※當開關撥為”0010”的時候,七段顯示會顯示為’2’。然後當開關撥為”0011”的時候,七段顯示會顯示為’3’。
實驗結果(3) ※當開關撥為”0100”的時候,七段顯示會顯示為’4’。然後當開關撥為”0101”的時候,七段顯示會顯示為’5’。
實驗結果(4) ※當開關撥為”0110”的時候,七段顯示會顯示為’6’。然後當開關撥為”0111”的時候,七段顯示會顯示為’7’。
實驗結果(5) ※當開關撥為”1000”的時候,七段顯示會顯示為’8’。然後當開關撥為”1001”的時候,七段顯示會顯示為’9’。
資料來源 ※主要的資料來源來至王志湖老師上課所教授的內容所做成的筆記及”數位邏輯”這本書。
END