可變式計數器 通訊一甲 B09622048 楊穎穆
目錄 目的 設計原理 程式 實驗結果 資料來源
目的 使用VHDL設計一個可變式計數器電路,此電路有RESET功能, CLOCK輸入後向上開始計數。 將電路加以模擬 將程式燒錄到IC執行 將以上原理撰寫成PPT格式報告交出
設計原理 當reset=‘0’ ,y會為“0000”,否則clock計數向上,且我們現在y 設定會等於 x 值。 z bin2seg y clock x reset
設計原理 可變式計數器 : 會依照我們設定的值,從0開始計數 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 work 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 work is --電路內部結構 signal y: std_logic_vector(3 downto 0); --內部訊號 y,內部為四位元 begin process(reset,clock,x) --處理影響內部的輸入訊號reset,clock,x if(reset='0') then y<="0000"; --當reset='0'時,"0000"會搬入y,從0開始計數 else if(clock'event and clock='1')then --判別clock此訊號是否由'0'--->'1'的上昇緣 if(y=x)then y<="0000"; --判別計數器輸出是否已經是y=x,則設定輸出由'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輸入為“1100”時,輸出端就會顯示為c,然後我按下clock就會向上開始計數,計數到c時就繼續從0在開始計數。
實驗結果(2) 當我x輸入為“0011”時,輸出端就會顯示為3,然後我按下clock就會向上開始計數,計數到3時就繼續從0在開始計數。
資料來源 “數位邏輯”這本書。 王志湖老師上課所教授的內容。
END