自停式向下計數器 通訊一甲 B09622048 楊穎穆
目錄 目的 設計原理 程式 實驗結果 資料來源
目的 使用VHDL設計一個自停式向下計數器電路,此電路有RESET功能, CLOCK輸入後向下開始計數。 將電路加以模擬 將程式燒錄到IC執行 將以上原理撰寫成PPT格式報告交出
設計原理 z y clock x reset 當reset=‘0’ , y 設定為 x 值,否則clock計數向下, 計數到’0’即不動。 bin2seg y clock x reset
設計原理 自停式計數器 : 計數到某一數值便停止不再計數下去 5 4 1 3 2 自停式向下計數器
程式 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity test is --IC內部要做的電路名稱 port( --接腳 reset,clock: in std_logic; --輸入腳位reset,clock x:in std_logic_vector(3 downto 0); --輸入腳位 x z:out std_logic_vector(6 downto 0) --輸出腳位 z ); end;
architecture Behav of test is --電路內部結構 signal y: std_logic_vector(3 downto 0); --內部輸入訊號 begin process(reset,clock,x) --處理影響的輸入訊號 if(reset='0') then y<=x; --當reset=‘0’時,X會搬入Y,從我們設定的X值開始計數 else if(clock'event and clock='1')then --判別clock此訊號是否由'0'--->'1'的上昇緣 if(y="0000")then y<="0000"; --判別計數器輸出是否已經是‘0',則設定輸出由'0'開始 else y<=y-‘1’; --不是,則計數器輸出繼續減'1' end if; --結束if程式 end if; --結束if程式 end if; --結束if程式 end process; --結束process程式
process(y) --處理y輸入的訊號 begin if (y="0000") then z<="0000001"; --輸入為"0000"七段會顯示為'0' elsif (y="0001") then z<="1001111"; --輸入為"0001"七段會顯示為'1' elsif (y="0010") then z<="0010010"; --輸入為"0010"七段會顯示為'2' elsif (y="0011") then z<="0000110"; --輸入為"0011"七段會顯示為'3' elsif (y="0100") then z<="1001100"; --輸入為"0100"七段會顯示為'4' elsif (y="0101") then z<="0100100"; --輸入為"0101"七段會顯示為'5' elsif (y="0110") then z<="0100000"; --輸入為"0110"七段會顯示為'6' elsif (y="0111") then z<="0001111"; --輸入為"0111"七段會顯示為'7' elsif (y="1000") then z<="0000000"; --輸入為"1000"七段會顯示為'8' elsif (y="1001") then z<="0000100"; --輸入為"1001"七段會顯示為'9' elsif (y="1010") then z<="0001000"; --輸入為"1010"七段會顯示為'a' elsif (y="1011") then z<="1100000"; --輸入為"1011"七段會顯示為'b' elsif (y="1100") then z<="0110001"; --輸入為"1100"七段會顯示為'c' elsif (y="1101") then z<="1000010"; --輸入為"1101"七段會顯示為'd' elsif (y="1110") then z<="0110000"; --輸入為"1110"七段會顯示為'e' else z<="0111000"; --輸入為"1111"七段會顯示為'f' end if; --結束if程式 end process; --結束process程式 end Behav; --程式結束
實驗結果(1) 當我x輸入為“1000”時,輸出端就會顯示為8,然後我按下clock就會向下開始計數,直到0就停止不在計數下去。
實驗結果(2) 當我x輸入為“0100”時,輸出端就會顯示為4,然後我按下clock就會向下開始計數,直到0就停止不在計數下去。
資料來源 “數位邏輯”這本書。 王志湖老師上課所教授的內容。
END