古詩詞大全網 - 成語解釋 - EDA課程設計——數字電子鐘 設計壹個電子時鐘,要求可以顯示時、分、秒,用戶可以設置時間。 擴展功能:秒

EDA課程設計——數字電子鐘 設計壹個電子時鐘,要求可以顯示時、分、秒,用戶可以設置時間。 擴展功能:秒

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity code is

port( clk: in std_logic;--電路工作時的時鐘信號

clk1: in std_logic;--鬧鈴產生需要的時鐘信號

k: in std_logic;--高電平表示輸入1

led: out std_logic;--輸入正確時亮

led1: out std_logic;--輸入錯誤時亮

reset: in std_logic;-- 按下時復位

want: in std_logic;--是否修改密碼

alarm: out std_logic;--輸出鬧鈴聲

show: out std_logic_vector(3 downto 0));--提示作用

end;

architecture a of code is

signal temp: std_logic_vector(3 downto 0);--輸入壹位加1

signal code: std_logic_vector(7 downto 0);--儲存密碼

signal getcode: std_logic_vector(7 downto 0);--儲存修改後的密碼

signal counter: std_logic_vector(3 downto 0);--計數

signal allow: std_logic;--是否允許修改密碼

signal ring:std_logic;--是否接通鬧鈴

begin

process(clk)

begin

if ring='1' then

alarm<=clk1;--鬧鈴接通

else

alarm<='0';--鬧鈴截至

end if;

if reset='1' then--按下reset後,密碼歸為初始密碼

getcode<="00000000";--初始密碼

counter<="0000";--內部計數

code<="11001000";--密碼

led<='0';

led1<='0';

allow<='0';

elsif clk'event and clk='1' then--輸入clk脈沖,則接收1位密碼

getcode<=getcode(6 downto 0)&k;--將這1位密碼並入getcode中的最後壹位

if counter="1000" then--輸入為8位數碼時比較

if code=getcode then

led<='1';--正確燈亮

led1<='0';

ring<='0';

allow<='1';--允許修改密碼

elsif allow='1' and want='1' then--如果允許輸入且想輸入

code<=getcode;--輸入新密碼

led<='0';

led1<='0';

else

allow<='0';

led<='0';

led1<='1';--錯誤燈亮

ring<='1';--鬧鈴響

end if;

counter<="0000";--重新計數

else

counter<=counter+1; --累加

temp<=temp+1;--為防止泄露密碼,特別設置

end if;

end if;

show <= temp;

end process;

end;