版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、電子與信息工程學(xué)院eda課程設(shè)計(jì)報(bào)告( 2011 2012 學(xué)年 第 一 學(xué)期)課程設(shè)計(jì)題目:四位密碼鎖內(nèi)容和要求:1. 掌握vhdl語言的使用,學(xué)會(huì)用vhdl語言來編程解決實(shí)際問題;2. 學(xué)會(huì)使用eda開發(fā)軟件設(shè)計(jì)小型綜合電路,掌握仿真的技巧;3. 學(xué)會(huì)應(yīng)用開發(fā)系統(tǒng)實(shí)現(xiàn)硬件電路,檢驗(yàn)電路的功能。設(shè)計(jì)內(nèi)容(原理圖以及相關(guān)說明、調(diào)試過程、結(jié)果)實(shí)驗(yàn)?zāi)康模?. 掌握vhdl語言的使用,學(xué)會(huì)用vhdl語言來編程解決實(shí)際問題;2. 學(xué)會(huì)使用eda開發(fā)軟件設(shè)計(jì)小型綜合電路,掌握仿真的技巧;3. 學(xué)會(huì)應(yīng)用開發(fā)系統(tǒng)實(shí)現(xiàn)硬件電路,檢驗(yàn)電路的功能。實(shí)驗(yàn)要求:用vhdl語言設(shè)計(jì)一個(gè)密碼鎖,用波形仿真驗(yàn)證其功能后,
2、實(shí)現(xiàn)到gw48實(shí)驗(yàn)系統(tǒng)。功能描述:用于模仿密碼鎖的工作過程。完成密碼鎖的核心控制功能。功能要求:設(shè)計(jì)一個(gè)密碼鎖,平時(shí)處于等待狀態(tài)。管理員可以設(shè)置或更改密碼。如果不預(yù)置密碼,密碼缺省為“1234”。用戶如果需要開鎖,按相應(yīng)的按鍵進(jìn)入輸入密碼狀態(tài),輸入4位密碼,按下確定鍵后,若密碼正確,鎖打開;若密碼錯(cuò)誤,將提示密碼錯(cuò)誤,要求重新輸入,三次輸入都錯(cuò)誤,將發(fā)出報(bào)警信號(hào)。報(bào)警后,只有管理員作相應(yīng)的處理才能停止報(bào)警。用戶輸入密碼時(shí),若輸入錯(cuò)誤,在按下確定鍵之前,可以通過按取消鍵重新輸入。正確開鎖后,用戶處理完畢后,按下確定鍵,系統(tǒng)回到等待狀態(tài)。系統(tǒng)操作過程中,只要密碼鎖沒有打開,如果60秒沒有對(duì)系統(tǒng)操作
3、,系統(tǒng)回到等待狀態(tài)。要求密碼在輸入過程中被依次顯示,即先輸入的為密碼的第一位,總是顯示在最左邊。用兩個(gè)發(fā)光二極管模擬顯示,其中一個(gè)顯示當(dāng)前的工作模式,滅表示用戶模式,亮表示管理員模式;另外一個(gè)指示鎖的狀態(tài),滅表示鎖處于鎖定,亮表示鎖被開啟。注意:用兩個(gè)按鍵實(shí)現(xiàn)密碼輸入,key1選擇輸入的是第幾位密碼,key2輸入密碼數(shù)字。功能描述:初始狀態(tài):初次使用密碼鎖時(shí),要先用reset鍵初始化。初始狀態(tài)下,用戶密碼為“1234”,管理員密碼為“0000”。用戶開鎖:默認(rèn)情況下,密碼鎖處于用戶使用狀態(tài)。如果當(dāng)前為管理員狀態(tài),則按下user鍵回到用戶狀態(tài)。用戶開鎖時(shí),輸入四位數(shù)用戶密碼,可以從out_cod
4、e6的輸出狀態(tài)確定密碼輸入狀態(tài)。如輸入錯(cuò)誤則按下clear清除前一位輸入。輸入完畢后按enter,如果密碼正確,則開鎖,否則重新輸入密碼。開鎖后再次按下enter鍵則關(guān)鎖,回到等待狀態(tài)。三次密碼輸入錯(cuò)誤,警報(bào)器alarming為1。要管理員輸入管理員密碼解除警報(bào)。此時(shí)哪怕用戶再輸對(duì)密碼也沒用。管理員解除警報(bào):當(dāng)用戶三次密碼輸入錯(cuò)誤的時(shí)候,alarming為1,此時(shí),只要管理員密碼輸入正確后,按下clear鍵,alarming為0,報(bào)警取消。管理員修改密碼:在非警報(bào)和為開鎖狀態(tài)下,任何時(shí)候按admin鍵進(jìn)入管理員狀態(tài)。按chgcode選擇修改密碼,先選擇修改的是用戶密碼還是管理員密碼。修改用戶密
5、碼則按user鍵,修改管理員密碼則按admin鍵。然后分別輸入舊密碼,新密碼,新密碼要輸入兩次。舊密碼與所要修改的密碼對(duì)應(yīng)。如舊密碼輸入錯(cuò)誤,則無法修改;當(dāng)驗(yàn)證不成功即兩次新密碼不相同時(shí),修改密碼失敗。返回等待狀態(tài)。成功后也返回等待狀態(tài)。定時(shí)返回:用戶在未開鎖狀態(tài)下,60s沒有按鍵輸入,則返回等待狀態(tài),但不包括alarming狀態(tài)。只要是alarming,則只有管理輸入管理員密碼才能解鎖并按下clear消除警報(bào)。設(shè)計(jì)思路:設(shè)計(jì)密碼鎖時(shí),采用自頂向下的設(shè)計(jì)方法。將整個(gè)系統(tǒng)分成幾個(gè)子模塊:輸入輸出模塊,控制模塊,按鍵設(shè)置模塊和60s計(jì)時(shí)器模塊。 控制模塊是整個(gè)程序的主要部分,采用狀態(tài)循環(huán)的辦法,以
6、用戶每按下一次按鍵為計(jì)量單位,劃分狀態(tài),以實(shí)現(xiàn)各種功能。60s計(jì)時(shí)器模塊是完成60s沒有按鍵則返回等待狀態(tài)這一功能的主要模塊。這個(gè)模塊的核心思想是一個(gè)變量numtime計(jì)數(shù)。變量numtime的初始值為0,在無報(bào)警為開鎖的情況下,時(shí)鐘每秒發(fā)出一個(gè)上升沿信號(hào),計(jì)數(shù)一次,如有按鍵則numtime清零,否則計(jì)數(shù)到60即“111100”則返回信號(hào)back變?yōu)?,返回等待狀態(tài)。按鍵設(shè)置模塊是將各種功能按鍵用高低電平賦值,便于調(diào)用。 eda設(shè)計(jì)方法(1) 前端設(shè)計(jì)(系統(tǒng)建模rtl 級(jí)描述)后端設(shè)計(jì)(fpgaasic)系統(tǒng)建模 (2) ip 復(fù)用 (3) 前端設(shè)計(jì) (4) 系統(tǒng)描述:建立系統(tǒng)的數(shù)學(xué)模型。 (
7、5) 功能描述:描述系統(tǒng)的行為或各子模塊之間的數(shù)據(jù)流圖。 (6) 邏輯設(shè)計(jì):將系統(tǒng)功能結(jié)構(gòu)化,通常以文本、原理圖、邏輯圖、 布爾表達(dá)式來表示設(shè)計(jì)結(jié)果。 (7) 仿真:包括功能仿真和時(shí)序仿真,主要驗(yàn)證系統(tǒng)功能的正確性及時(shí)序 特性。 按照設(shè)計(jì)要求編寫代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity e_lock is port( clk,user,admin,clear,enter,chgcode,res,key1,key
8、2:in std_logic; num:in std_logic_vector(9 downto 0); openlock:buffer std_logic; alarming,o_ua,o_chgcode,chgcode_ua:out std_logic; out_code4:out std_logic_vector(3downto 0) ); end e_lock;architecture behave of e_lock istype states is (ss,sw,s0,s1,s2,s3,s4,s5,s6,s7);signal state:states;signal one_key,
9、code0,code1,code2,code3:std_logic_vector(3 downto 0);signal user_code,admin_code:std_logic_vector(15 downto 0); -用戶密碼 管理員密碼signal temp_code,old_code:std_logic_vector(15 downto 0); -當(dāng)前密碼 舊密碼signal new_ctime:std_logic_vector(1 downto 0);signal key:std_logic_vector(7 downto 0);signal alarm,inkey,ifnum,
10、s_ua,chg_c,c_ua,back:std_logic;signal out_code:std_logic_vector(3 downto 0);signal numtime:std_logic_vector(9 downto 0);begin temp_code=code0&code1&code2&code3; key=user&admin&chgcode&enter&clear&res&key1&key2; inkey=user or admin or chgcode or enter or clear or key1 or key2; ifnum=not(one_key(3) an
11、d (one_key(2) or one_key(1); -ifnum=1,the key is a num o_ua=s_ua;-表明當(dāng)前狀態(tài)為管理員或是用戶 chgcode_ua=c_ua;-表明當(dāng)前更改的密碼為用戶密碼或是管理員密碼 o_chgcode=chg_c;-當(dāng)狀態(tài)為“1”時(shí)表明正在修改密碼 out_code4=out_code; alarming=alarm; main:process(res,clk) variable n,m:std_logic_vector(1 downto 0):=00; variable new1_code,new2_code:std_logic_ve
12、ctor(15 downto 0); begin if (res=1)then state=ss;-出廠狀態(tài),用來初始化密碼鎖的各項(xiàng)設(shè)置 user_code=0001001000110100;-1234 admin_code=0000000000000000;-0000 n:=00; s_ua=0; c_ua=0; chg_c=0; new_ctime=00; alarm state if back=1 then state=sw; elsif (ifnum=1 and alarm=0 and chg_c=0 ) then code3=one_key; out_code=0001; state
13、=s1; elsif (ifnum=1 and c_ua=0 and chg_c=1 ) then old_code=user_code; code3=one_key; out_code=0001; state=s1; elsif (ifnum=1 and alarm=1 and s_ua=1 and chg_c=0 ) then code3=one_key; out_code=0001; state=s1; elsif (ifnum=1 and c_ua=1 and chg_c=1 ) then old_code=admin_code; code3=one_key; out_code=000
14、1; state=s1; elsif (one_key=0011and chg_c=0 )then s_ua=1; state=s0; elsif (one_key=0100and chg_c=0 and alarm=0) then s_ua=0; state if back=1 then state=sw; elsif(ifnum=1)then code2=one_key; out_code=0011; state=s2; elsif (one_key=0000)then -clear out_code=0000; state=s0; elsif (one_key=0100 and chg_
15、c=0) then -user out_code=0000; s_ua=0; state=s0; elsif (one_key=0011 and chg_c=0) then -admin out_code=0000; s_ua=1; state if back=1 then state=sw; elsif(ifnum=1)then code1=one_key; out_code=0111; state=s3; elsif (one_key=0000)then out_code=0001; state=s1; elsif (one_key=0100 and chg_c=0) then out_c
16、ode=0000; s_ua=0; state=s0; elsif (one_key=0011 and chg_c=0) then out_code=0000; s_ua=1; state if back=1 then state=sw; elsif(ifnum=1)then code0=one_key; out_code=1111; state=s4; elsif (one_key=0000)then out_code=0011; state=s2; elsif (one_key=0100 and chg_c=0) then out_code=0000; s_ua=0; state=s0;
17、elsif (one_key=0011 and chg_c=0) then out_code=0000; s_ua=1; state if back=1 then state=sw; elsif (one_key=0001 and chg_c=0)then -enter state=s5; out_code=0000; elsif (one_key=0001 and chg_c=1and m=00)then -enter out_code=0000; if (old_code=temp_code) then m:=01; state=s0; else state=sw; end if; els
18、if (one_key=0001 and chg_c=1and m=01)then -enter out_code=0000; new1_code:=temp_code; m:=10; state=s0; elsif (one_key=0001 and chg_c=1and m=10)then -enter out_code=0000; new2_code:=temp_code; if (new1_code=new2_code and c_ua=0) then user_code=new2_code; state=sw; elsif(new1_code=new2_code and c_ua=1
19、)then admin_code=new2_code; state=sw; elsif(new1_code/=new2_code) then state=sw; end if; elsif (one_key=0000)then -clear out_code=0111; state if (s_ua=0 and temp_code=user_code) then openlock=1; state=s6; elsif (s_ua=0and temp_code/=user_code) then n:=n+1; if n=11 then alarm=1; state=s0; out_code=00
20、00; else state=s0; out_code=0000; end if; elsif (s_ua=1 and temp_code=admin_code) then state=s6; elsif(s_ua=1 and temp_code/=admin_code) then state if back=1 then state=sw; elsif(one_key=0001)then-enter state=sw; elsif(one_key=0000and alarm=1) then -clear alarm=0; state=s0; out_code=0000; elsif(one_
21、key=0010) then chg_c=1; state m:=00; if back=1 then state=sw; elsif(one_key=0100)then c_ua=0; old_code=user_code; state=s0; elsif(one_key=0011)then c_ua=1; old_code=admin_code; state alarm=0; s_ua=0; c_ua=0; m:=00; n:=00; openlock=0; out_code=0000; chg_c=0; stateone_keyone_keyone_keyone_keyone_keyone_keyone_keyone_keyone_key=1111; end case; end if;end process input;process(inkey,res,clk,alarm,openlock)variable numtime:std_logic_vector(5 downto 0):=000000;beginif(res=1) then numtime:=000000; back=0;elsif (openlock=1 or inkey=1)or alarm=1) then
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒吧飲料冷藏柜租賃合同模板
- 軟件開發(fā)股權(quán)合作協(xié)議
- 建筑住宅分包合同
- 2025版孔麗與張明離婚后財(cái)產(chǎn)分割及共同債務(wù)承擔(dān)協(xié)議書3篇
- 棒球場遮陽棚安裝合同
- 物流公司合作合同
- 醫(yī)療設(shè)備維修服務(wù)合同
- 投資者關(guān)系與市場信任
- 通信工程二級(jí)建造師合同模板
- 企業(yè)失業(yè)保險(xiǎn)金申請(qǐng)表
- 汽車底盤維修實(shí)訓(xùn)考核表(共24頁)
- 煉鐵廠3#燒結(jié)主抽風(fēng)機(jī)拆除安全專項(xiàng)方案
- 四年級(jí)上冊英語期末復(fù)習(xí)課件綜合復(fù)習(xí)及檢測講義 牛津上海版一起
- 2020年污水處理廠設(shè)備操作維護(hù)必備
- 初中英語語法課堂教學(xué)設(shè)計(jì)有效性的探討
- LSS-250B 純水冷卻器說明書
- 《煤礦開采學(xué)》課程設(shè)計(jì)實(shí)例
- (完整版)todo,doingsth初中魔鬼訓(xùn)練帶答案
- 福建省青少年科技教育協(xié)會(huì)章程
- 防止返貧監(jiān)測工作開展情況總結(jié)范文
- 2015年度設(shè)備預(yù)防性維護(hù)計(jì)劃表
評(píng)論
0/150
提交評(píng)論