CPLD_FPGA設(shè)計及應(yīng)用課程設(shè)計--數(shù)字密碼鎖.doc
《CPLD_FPGA設(shè)計及應(yīng)用課程設(shè)計--數(shù)字密碼鎖.doc》由會員分享,可在線閱讀,更多相關(guān)《CPLD_FPGA設(shè)計及應(yīng)用課程設(shè)計--數(shù)字密碼鎖.doc(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 CPLD/FPGA設(shè)計及應(yīng)用課程設(shè)計課程設(shè)計報告題 目: 數(shù)字密碼鎖 院 (系): 信息科學(xué)與工程學(xué)院 專業(yè)班級: xxxxxxxx 學(xué)生姓名: xxxxx 學(xué) 號: xxxxxxxxxx 指導(dǎo)教師: xxxx 20 16年 4 月 11 日至20 16 年 5 月 6 日武昌首義學(xué)院制CPLD/FPGA設(shè)計及應(yīng)用課程設(shè)計任務(wù)書一、設(shè)計題目數(shù)字密碼鎖。二、設(shè)計主要內(nèi)容1. 掌握睿智FPGA開發(fā)板的基本構(gòu)造和功能,并能設(shè)計一些簡單的功能。2. 學(xué)會用VHDL語言來設(shè)計一些基本的邏輯模塊。3. 了解時序邏輯的設(shè)計方式,并運(yùn)用在密碼鎖的設(shè)計上。4. 精通數(shù)字編碼,AD/DA方式在程序中的運(yùn)作方式。
2、5. 狀態(tài)機(jī)的使用,實(shí)現(xiàn)密碼比對和儲存讀取功能。三、原始資料1. CPLD/FPGA設(shè)計及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 -馬玲;2. CPLD/FPGA設(shè)計及應(yīng)用馬玲,彭敏;四、要求的設(shè)計成果1. 熟練運(yùn)用QuartusII來設(shè)計邏輯時序的模塊;2. 熟悉設(shè)計一個成果的過程;3. 更深一步的學(xué)習(xí)VHDL語言;4. 運(yùn)用FPGA開發(fā)板設(shè)計數(shù)字密碼鎖,并具備消隱、設(shè)置密碼和三次報錯的功能。五、進(jìn)程安排第1天:老師講解課程設(shè)計目的、意義,布置課題任務(wù),學(xué)生分組選題。第2天:學(xué)生根據(jù)所選課題自己下去通過網(wǎng)絡(luò)或者其他途徑尋找課題相關(guān)設(shè)計資料。第3-7天:在實(shí)驗(yàn)室或者自己的電腦上完成課題的程序以及相關(guān)的功能仿真通過。第
3、8天:在實(shí)驗(yàn)室結(jié)合EDA實(shí)驗(yàn)箱完成程序的調(diào)試以及功能的實(shí)現(xiàn)。第9天:通過老師的驗(yàn)收并回答老師的提問。第10天:下去完成課程設(shè)計報告。六、主要參考資料1. CPLD/FPGA設(shè)計及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 -馬玲;2. CPLD/FPGA設(shè)計及應(yīng)用馬玲,彭敏;指導(dǎo)教師(簽名): 2016 年 4 月 10 日目 錄1課程設(shè)計目的52課程設(shè)計題目描述和要求 53課程設(shè)計報告內(nèi)容53.1設(shè)計思路及原理 53.2設(shè)計需要解決的問題 53.3設(shè)計過程 64總結(jié)115.附錄 124數(shù)字密碼鎖設(shè)計1. 課程設(shè)計目的l 設(shè)計一個四位十進(jìn)制的密碼鎖。l 跟深一步的理解FPGA的用途,精通相應(yīng)的開發(fā)板。2. 課程設(shè)計題目描
4、述和要求a) :密碼鎖串行輸入四位十進(jìn)制數(shù)字口令b) :輸入口令全部正確即開鎖c) :口令輸入最大次數(shù)3次,要求在完全輸入四位之后進(jìn)行判斷口令正確與否;輸入3次之后還不能開鎖,進(jìn)入鎖死狀態(tài)d) 有相應(yīng)的顯示功能e) 可以對輸入的口令消隱f) 開鎖后能再次上鎖3. 課程設(shè)計報告的內(nèi)容1) 設(shè)計思路及原理i. 密碼鎖原理利用邏輯電路將外接輸入的電信號轉(zhuǎn)化為時序電路,經(jīng)過內(nèi)部設(shè)定的規(guī)則,當(dāng)輸入的信號經(jīng)過處理后的時序邏輯達(dá)到內(nèi)部設(shè)定的條件是開啟某一種狀態(tài)及時解鎖狀態(tài),當(dāng)沒達(dá)到那種條件時始終保持一種或多種狀態(tài)。ii. 密碼鎖的設(shè)計要求 設(shè)計密碼鎖的系統(tǒng)描述:數(shù)字密碼鎖在設(shè)定口令和開鎖時要求輸入四位十進(jìn)制
5、數(shù)據(jù),當(dāng)輸入狀態(tài)開啟時,輸入正確顯示一種狀態(tài),如果錯誤則顯示錯誤次數(shù)加1,累計3次鎖死狀態(tài)并報警,如果不輸入則一直保持原來狀態(tài);當(dāng)檢測到儲存狀態(tài)時,輸入密碼并存儲改變原有的儲存密碼;當(dāng)檢測到消隱信號時,將不顯示輸入的數(shù)據(jù)。 2) 設(shè)計中需要解決的問題01. 時鐘掃描讀取輸入的信號:過小,還沒檢測到就進(jìn)入下次判斷或者多記一次,過大,響應(yīng)過慢,加上消斗模塊后容易引起碼間干擾不易讀取信號02. 密碼讀?。鹤x入按鍵開關(guān)信號要將信號處理編碼送入顯示和密碼比較狀態(tài)03. 密碼比較:首先是要將存入的數(shù)字進(jìn)行存儲和邏輯排序,然后將輸入的數(shù)據(jù)進(jìn)行一一比對,并進(jìn)行計數(shù),正確與否輸出狀態(tài)信號04. 顯示模塊:將輸入
6、模式、開鎖狀態(tài)、密碼存儲狀態(tài)和鎖死狀態(tài)等的顯示狀態(tài)顯示的編碼05. 開發(fā)板引腳的配置等3) 設(shè)計過程l 密碼鎖的系統(tǒng)描述a) 輸入輸出端口定義:Sdin:輸入十進(jìn)制數(shù)信號按鍵(由于按鍵不夠,將09數(shù)據(jù)以按鍵按下次數(shù)來編譯)Lock:上鎖按鍵Sec:解鎖按鍵Clr:確認(rèn)按鍵Set:密碼存儲按鍵Crack:開鎖狀態(tài)按鍵Clk:輸入數(shù)字確定按鍵Dout:送現(xiàn)輸出信號端Yn:選碼信號S3鎖死b) 系統(tǒng)狀態(tài)轉(zhuǎn)換圖S2錯誤S1解鎖 錯誤 累計次數(shù)=3 解鎖 錯誤次數(shù)3S0初始S4開鎖 密碼正確設(shè)置 上鎖c) 編碼規(guī)則輸入信號編碼信號邏輯意義000011000000數(shù)字“0”000111111001數(shù)字“1
7、”001010100100數(shù)字“2”001110110000數(shù)字“3”010010011011數(shù)字“4”010110010010數(shù)字“5”011010000010數(shù)字“6”011111111000數(shù)字“7”100010000000數(shù)字“8”100110010000數(shù)字“9”101011101111解鎖成功“A”101101111111解鎖失敗Others11111111其他狀態(tài)01-11000000上鎖狀態(tài)10-00011000解鎖狀態(tài)l 時鐘模塊 由于輸入時鐘是50MHZ,一般掃描頻率一般1000HZ左右,過50分頻得到1M的頻率后經(jīng)過后續(xù)得到兩路時鐘來分別接入按鍵和比對模塊。l 輸入設(shè)置輸
8、入模塊,由于進(jìn)行消斗處理用D觸發(fā)器來消抖動,將輸入的信號送入輸出,時序時鐘推遲一個周期。l 計數(shù)模塊和按鍵累積計數(shù)將輸入的信號進(jìn)行A/D轉(zhuǎn)換,根據(jù)確認(rèn)按鍵的輸入來計數(shù)時序,將輸入的3個數(shù)字按順序送入下個模塊;計數(shù)模塊達(dá)到3次輸出alert報警。l 編碼和處理模塊將輸入的十進(jìn)制信號轉(zhuǎn)化成斷碼,將時序邏輯進(jìn)行編碼來選碼管。l 選碼模塊將時序信號進(jìn)行編碼。4) 設(shè)計得到的成果及現(xiàn)象l 得到的總體結(jié)構(gòu):l 引腳配置:l 實(shí)物圖:1. 初始狀態(tài):2. 解鎖狀態(tài):3. 上鎖狀態(tài):4. 總結(jié)l 在這次課設(shè)中雖然遇到很多麻煩,剛剛開始用自己的方法編寫了個簡單的密碼比對,但缺乏很多功能,而且在消斗方面很不完善,
9、容易屬錯誤,現(xiàn)象出不來,后來網(wǎng)上搜了一個,但由于時鐘沒有完善,所以出錯,后來看懂了也可以調(diào),但各個模塊的時鐘不一,所以難以完善,后來看了指導(dǎo)書上才做出來。l 在VHDL語言上有了很大的完善和提高,對基本的設(shè)計都應(yīng)該沒問題了,但還需要努力。l 在設(shè)計過程中需要細(xì)心、冷靜。5. 附頁(程序)50分頻:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PIN1M isport(clkin:in std_logic; clkout:out std_logic);end entity PIN1M
10、;architecture bj of PIN1M isbeginprocess(clkin)variable cnttemp : INTEGER RANGE 0 To 49;begin if clkinevent and clkin=1 then if cnttemp=49 then cnttemp:=0; else if cnttemp25 then clkout=1; else clkout=0;end if;cnttemp:=cnttemp+1; end if; end if;end process;end bj;時鐘分頻:library ieee;use ieee.std_logic
11、_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fdiv isport(clk:in std_logic; divout:out std_logic);end entity fdiv;architecture bj of fdiv issignal d:std_logic_vector(3 downto 0);signal o: std_logic;beginprocess(clk)begin if clkevent and clk=1 then if d=1001 then d=000
12、0;o=not o; else d=d+1; end if; divout=o; end if;end process;end bj;觸發(fā)器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Dchu IS PORT (trig,sdin,lock,sec,clr,set,crack:IN STD_LOGIC; sdin1,lock1,sec1,clr1,set1,crack1:OUT STD_LOGIC); END; ARCHITECTURE FFQ OF Dchu IS SIGNAL Q1,Q2,Q3,Q4,Q5,Q6:STD_LOGIC;
13、 BEGIN PROCESS (Q1,Q2,Q3,Q4,Q5,Q6,trig) BEGIN IF trigEVENT AND trig=1 THEN Q1=sdin; Q2=lock; Q3=sec; Q4=clr; Q5=set; Q6=crack; END IF; END PROCESS; sdin1=Q1; lock1=Q2; sec1=Q3; clr1=Q4; set1=Q5; crack1=Q6; END FFQ;編碼計數(shù)模塊:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity
14、 s_pw isport(SDIN:in std_logic; trig:in std_logic; lock:in std_logic; sec:in std_logic; CR:in std_logic; SET:in std_logic; CRACK:in std_logic; din:out INTEGER RANGE 15 DOWNTO 0; n_err:out std_logic_vector(1 downto 0); n_cr:out std_logic_vector(1 downto 0); ALERT:out std_logic; lock_out:out std_logic
15、; sc:out std_logic; dead_lock:out std_logic);end entity s_pw;architecture bj of s_pw issignal pW_reg0:INTEGER RANGE 15 DOWNTO 0;signal pW_reg1:INTEGER RANGE 15 DOWNTO 0;signal pW_reg2:INTEGER RANGE 15 DOWNTO 0;signal pW_reg3:INTEGER RANGE 15 DOWNTO 0;signal pc_reg0:INTEGER RANGE 15 DOWNTO 0;signal p
16、c_reg1:INTEGER RANGE 15 DOWNTO 0;signal pc_reg2:INTEGER RANGE 15 DOWNTO 0;signal pc_reg3:INTEGER RANGE 15 DOWNTO 0;signal data_cnt:INTEGER RANGE 15 DOWNTO 0;signal cr_cnt: std_logic_vector(1 downto 0);signal err_cnt: std_logic_vector(1 downto 0);signal tag: std_logic;signal sb: std_logic;signal bff:
17、INTEGER RANGE 15 DOWNTO 0;beginprocess(trig)beginif trigevent and trig=1 then if sec=0 then sb=not sb;sc=sb;end if; if lock=0 then lock_out=0;end if; if tag=1 then din=11; else if SDIN=0 then din=data_cnt; if data_cnt=9 then data_cnt=0; else data_cntpW_reg0=data_cnt;cr_cntpW_reg1=data_cnt;cr_cntpW_r
18、eg2=data_cnt;cr_cntpW_reg3=data_cnt;cr_cnt=cr_cnt+1;lock_outpw_reg0pc_reg0=data_cnt;cr_cntpc_reg1=data_cnt;cr_cntpc_reg2=data_cnt;cr_cntcr_cnt=cr_cnt+1; if(pc_reg0=pw_reg0) then if(pc_reg1=pw_reg1) then if(pc_reg2=pw_reg2) then if(data_cnt=pw_reg3) then din= 10;err_cnt=00; lock_out=1; else err_cnt=e
19、rr_cnt+1; end if; else err_cnt=err_cnt+1;end if; else err_cnt=err_cnt+1; end if; else err_cntALERTtagtagtagtag=1;ALERTtag=1;ALERT=1; end case; n_cr=cr_cnt; n_err=err_cnt; end if; dead_lock=tag;end process;end bj;編碼送顯:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DIS
20、 isport(din:in std_logic_vector(3 downto 0); cr_cnt:in std_logic_vector(1 downto 0); err_cnt:in std_logic_vector(1 downto 0); set_crack:in std_logic_vector(1 downto 0); disclk:in std_logic; sec:in std_logic; lock:in std_logic; dout:out std_logic_vector(7 downto 0); encode:out std_logic_vector(2 down
21、to 0);end entity DIS;architecture bj of DIS issignal cnt:std_logic_vector(2 downto 0);signal c: std_logic;beginprocess(din,c,disclk)begin if disclkevent and disclk=1 then if cnt=100 then cnt =000;else cnt=cnt+1;end if;if cnt=000 then encodedoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=1111111
22、1; end case;else dout=00000000; end if; else if cnt=001 then encodedoutdoutdoutdoutNULL; end case; else if cnt=010 then encode doutdoutdoutdoutNULL; end case; else if cnt=011 then encodedoutdoutdout=10111111; end case; else if cnt=100 then encode=100; if lock=0 then dout =00000001; else dout=11111111; end if; end if; end if; end if; end if; end if; end if;end process;process(sec)begin if secevent and sec=1 then c=not c; end if; end process;end bj;課程設(shè)計成績評定表成績評定項 目比例得 分平時成績(百分制記分)30%業(yè)務(wù)考核成績(百分制記分)70%總評成績(百分制記分)100%評定等級優(yōu) 良 中 及格 不及格指導(dǎo)教師(簽名):20 年 月 日23
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中一年級物理必修2第七章機(jī)械能守恒定律8機(jī)械能守恒定律第一課時課件
- 二年級上冊語文第16課《風(fēng)娃娃》
- 蘇教版五年級下冊第二單元復(fù)習(xí)
- 基于加權(quán)策略的SVM多元分類器
- 弧長及扇形面積(時)課件
- 張雪門教育思想課件
- 【公開課課件】選修七Unit4-Sharing-Reading課件(同名139)
- 診斷學(xué)腹痛新專家講座
- 眼科常用檢查方法專家講座
- 無機(jī)化學(xué)課件13p區(qū)元素一
- 氣管插管術(shù)課件
- 防曬乳液和霜PPT課件
- 生育禮專題知識宣教
- 生物醫(yī)學(xué)倫理原則
- 技術(shù)創(chuàng)新與研究開發(fā)技術(shù)經(jīng)濟(jì)分析教材