使用VHDL設計-七段顯示 通訊一甲 B09622048 楊穎穆
目錄 目的 設計原理 真值表 程式 實驗結果 參考資料
目的 1. 使用VHDL設計一個二進制轉七段顯示器之解碼電路 2. 將電路加以模擬 3. 將程式燒錄到IC執行 2. 將電路加以模擬 3. 將程式燒錄到IC執行 4. 將以上原理撰寫成PPT格式報告交出 5. 將以上原理與操作過程講述一便並錄製成影音檔交出
設計原理 七段顯示器和一般解碼器設計原理相同,只是在共陽極的設計時,LED亮邏輯為‘0’不亮為‘1’,在共陰極的設計時,LED亮邏輯為‘1’不亮為‘0’ 。 ip0 ip1 ip2 ip3 Op1 op3 op5 op7 op2 op4 op6 Vcc
真值表 ip(ip0,ip1,ip2,ip3) op(op1,op2,op3,op4,op5,op6,op7) 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
ip(ip0,ip1,ip2,ip3) op(op1,op2,op3,op4,op5,op6,op7) 8 1 0 0 0 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 1 1 0 0 A 1 0 1 0 0 0 0 1 0 0 0 b 1 0 1 1 1 1 0 0 0 0 0 C 1 1 0 0 0 1 1 0 0 0 1 d 1 1 0 1 1 0 0 0 0 1 0 E 1 1 1 0 0 1 1 0 0 0 0 F 1 1 1 1 0 1 1 1 0 0 0
程式 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity bcd2seg1 is --IC內部要做的電路名稱 port( --接腳 ip:in std_logic_vector(3 downto 0); --ip為輸入腳,且內部有三位元數 op:out std_logic_vector(6 downto 0) --op為輸出腳,且內部有七位元數 ); end;
architecture behav of bcd2seg1 is --電路內部結構 begin process(ip) --處理ip輸入的訊號 if (ip="0000") then op<="0000001"; --輸入為"0000"七段會顯示為'0' elsif (ip="0001") then op<="1001111"; --輸入為"0001"七段會顯示為'1' elsif (ip="0010") then op<="0010010"; --輸入為"0010"七段會顯示為'2' elsif (ip="0011") then op<="0000110"; --輸入為"0011"七段會顯示為'3' elsif (ip="0100") then op<="1001100"; --輸入為"0100"七段會顯示為'4' elsif (ip="0101") then op<="0100100"; --輸入為"0101"七段會顯示為'5' elsif (ip="0110") then op<="0100000"; --輸入為"0110"七段會顯示為'6' elsif (ip="0111") then op<="0001111"; --輸入為"0111"七段會顯示為'7' elsif (ip="1000") then op<="0000000"; --輸入為"1000"七段會顯示為'8' elsif (ip="1001") then op<="0000100"; --輸入為"1001"七段會顯示為'9' elsif (ip="1010") then op<="0001000"; --輸入為"1010"七段會顯示為'a' elsif (ip="1011") then op<="1100000"; --輸入為"1011"七段會顯示為'b' elsif (ip="1100") then op<="0110001"; --輸入為"1100"七段會顯示為'c' elsif (ip="1101") then op<="1000010"; --輸入為"1101"七段會顯示為'd' elsif (ip="1110") then op<="0110000"; --輸入為"1110"七段會顯示為'e' else op<="0111000"; --輸入為"1111"七段會顯示為'f ' end if; --結束if程式 end process; --結束process程式 end behav; --程式結束
實驗結果(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’。
實驗結果(6) 當開關撥為”1010”的時候,七段顯示會顯示為’A’。 當開關撥為”1011”的時候,七段顯示會顯示為’b’。
實驗結果(7) 當開關撥為”1100”的時候,七段顯示會顯示為’C’。 當開關撥為”1101”的時候,七段顯示會顯示為’d’。
實驗結果(8) 當開關撥為”1110”的時候,七段顯示會顯示為’E’。 當開關撥為”1111”的時候,七段顯示會顯示為’F’。
參考資料 主要的資料內容是參考王志湖老師上課所教授的內容及“數位邏輯”這本書。
END