CPLD_FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)--數(shù)字密碼鎖.doc
《CPLD_FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)--數(shù)字密碼鎖.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《CPLD_FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)--數(shù)字密碼鎖.doc(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 CPLD/FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目: 數(shù)字密碼鎖 院 (系): 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí): xxxxxxxx 學(xué)生姓名: xxxxx 學(xué) 號(hào): xxxxxxxxxx 指導(dǎo)教師: xxxx 20 16年 4 月 11 日至20 16 年 5 月 6 日武昌首義學(xué)院制CPLD/FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)任務(wù)書一、設(shè)計(jì)題目數(shù)字密碼鎖。二、設(shè)計(jì)主要內(nèi)容1. 掌握睿智FPGA開發(fā)板的基本構(gòu)造和功能,并能設(shè)計(jì)一些簡(jiǎn)單的功能。2. 學(xué)會(huì)用VHDL語(yǔ)言來設(shè)計(jì)一些基本的邏輯模塊。3. 了解時(shí)序邏輯的設(shè)計(jì)方式,并運(yùn)用在密碼鎖的設(shè)計(jì)上。4. 精通數(shù)字編碼,AD/DA方式在程序中的運(yùn)作方式。
2、5. 狀態(tài)機(jī)的使用,實(shí)現(xiàn)密碼比對(duì)和儲(chǔ)存讀取功能。三、原始資料1. CPLD/FPGA設(shè)計(jì)及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 -馬玲;2. CPLD/FPGA設(shè)計(jì)及應(yīng)用馬玲,彭敏;四、要求的設(shè)計(jì)成果1. 熟練運(yùn)用QuartusII來設(shè)計(jì)邏輯時(shí)序的模塊;2. 熟悉設(shè)計(jì)一個(gè)成果的過程;3. 更深一步的學(xué)習(xí)VHDL語(yǔ)言;4. 運(yùn)用FPGA開發(fā)板設(shè)計(jì)數(shù)字密碼鎖,并具備消隱、設(shè)置密碼和三次報(bào)錯(cuò)的功能。五、進(jìn)程安排第1天:老師講解課程設(shè)計(jì)目的、意義,布置課題任務(wù),學(xué)生分組選題。第2天:學(xué)生根據(jù)所選課題自己下去通過網(wǎng)絡(luò)或者其他途徑尋找課題相關(guān)設(shè)計(jì)資料。第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è)計(jì)報(bào)告。六、主要參考資料1. CPLD/FPGA設(shè)計(jì)及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 -馬玲;2. CPLD/FPGA設(shè)計(jì)及應(yīng)用馬玲,彭敏;指導(dǎo)教師(簽名): 2016 年 4 月 10 日目 錄1課程設(shè)計(jì)目的52課程設(shè)計(jì)題目描述和要求 53課程設(shè)計(jì)報(bào)告內(nèi)容53.1設(shè)計(jì)思路及原理 53.2設(shè)計(jì)需要解決的問題 53.3設(shè)計(jì)過程 64總結(jié)115.附錄 124數(shù)字密碼鎖設(shè)計(jì)1. 課程設(shè)計(jì)目的l 設(shè)計(jì)一個(gè)四位十進(jìn)制的密碼鎖。l 跟深一步的理解FPGA的用途,精通相應(yīng)的開發(fā)板。2. 課程設(shè)計(jì)題目描
4、述和要求a) :密碼鎖串行輸入四位十進(jìn)制數(shù)字口令b) :輸入口令全部正確即開鎖c) :口令輸入最大次數(shù)3次,要求在完全輸入四位之后進(jìn)行判斷口令正確與否;輸入3次之后還不能開鎖,進(jìn)入鎖死狀態(tài)d) 有相應(yīng)的顯示功能e) 可以對(duì)輸入的口令消隱f) 開鎖后能再次上鎖3. 課程設(shè)計(jì)報(bào)告的內(nèi)容1) 設(shè)計(jì)思路及原理i. 密碼鎖原理利用邏輯電路將外接輸入的電信號(hào)轉(zhuǎn)化為時(shí)序電路,經(jīng)過內(nèi)部設(shè)定的規(guī)則,當(dāng)輸入的信號(hào)經(jīng)過處理后的時(shí)序邏輯達(dá)到內(nèi)部設(shè)定的條件是開啟某一種狀態(tài)及時(shí)解鎖狀態(tài),當(dāng)沒達(dá)到那種條件時(shí)始終保持一種或多種狀態(tài)。ii. 密碼鎖的設(shè)計(jì)要求 設(shè)計(jì)密碼鎖的系統(tǒng)描述:數(shù)字密碼鎖在設(shè)定口令和開鎖時(shí)要求輸入四位十進(jìn)制
5、數(shù)據(jù),當(dāng)輸入狀態(tài)開啟時(shí),輸入正確顯示一種狀態(tài),如果錯(cuò)誤則顯示錯(cuò)誤次數(shù)加1,累計(jì)3次鎖死狀態(tài)并報(bào)警,如果不輸入則一直保持原來狀態(tài);當(dāng)檢測(cè)到儲(chǔ)存狀態(tài)時(shí),輸入密碼并存儲(chǔ)改變?cè)械膬?chǔ)存密碼;當(dāng)檢測(cè)到消隱信號(hào)時(shí),將不顯示輸入的數(shù)據(jù)。 2) 設(shè)計(jì)中需要解決的問題01. 時(shí)鐘掃描讀取輸入的信號(hào):過小,還沒檢測(cè)到就進(jìn)入下次判斷或者多記一次,過大,響應(yīng)過慢,加上消斗模塊后容易引起碼間干擾不易讀取信號(hào)02. 密碼讀?。鹤x入按鍵開關(guān)信號(hào)要將信號(hào)處理編碼送入顯示和密碼比較狀態(tài)03. 密碼比較:首先是要將存入的數(shù)字進(jìn)行存儲(chǔ)和邏輯排序,然后將輸入的數(shù)據(jù)進(jìn)行一一比對(duì),并進(jìn)行計(jì)數(shù),正確與否輸出狀態(tài)信號(hào)04. 顯示模塊:將輸入
6、模式、開鎖狀態(tài)、密碼存儲(chǔ)狀態(tài)和鎖死狀態(tài)等的顯示狀態(tài)顯示的編碼05. 開發(fā)板引腳的配置等3) 設(shè)計(jì)過程l 密碼鎖的系統(tǒng)描述a) 輸入輸出端口定義:Sdin:輸入十進(jìn)制數(shù)信號(hào)按鍵(由于按鍵不夠,將09數(shù)據(jù)以按鍵按下次數(shù)來編譯)Lock:上鎖按鍵Sec:解鎖按鍵Clr:確認(rèn)按鍵Set:密碼存儲(chǔ)按鍵Crack:開鎖狀態(tài)按鍵Clk:輸入數(shù)字確定按鍵Dout:送現(xiàn)輸出信號(hào)端Yn:選碼信號(hào)S3鎖死b) 系統(tǒng)狀態(tài)轉(zhuǎn)換圖S2錯(cuò)誤S1解鎖 錯(cuò)誤 累計(jì)次數(shù)=3 解鎖 錯(cuò)誤次數(shù)3S0初始S4開鎖 密碼正確設(shè)置 上鎖c) 編碼規(guī)則輸入信號(hào)編碼信號(hào)邏輯意義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 時(shí)鐘模塊 由于輸入時(shí)鐘是50MHZ,一般掃描頻率一般1000HZ左右,過50分頻得到1M的頻率后經(jīng)過后續(xù)得到兩路時(shí)鐘來分別接入按鍵和比對(duì)模塊。l 輸入設(shè)置輸
8、入模塊,由于進(jìn)行消斗處理用D觸發(fā)器來消抖動(dòng),將輸入的信號(hào)送入輸出,時(shí)序時(shí)鐘推遲一個(gè)周期。l 計(jì)數(shù)模塊和按鍵累積計(jì)數(shù)將輸入的信號(hào)進(jìn)行A/D轉(zhuǎn)換,根據(jù)確認(rèn)按鍵的輸入來計(jì)數(shù)時(shí)序,將輸入的3個(gè)數(shù)字按順序送入下個(gè)模塊;計(jì)數(shù)模塊達(dá)到3次輸出alert報(bào)警。l 編碼和處理模塊將輸入的十進(jìn)制信號(hào)轉(zhuǎn)化成斷碼,將時(shí)序邏輯進(jìn)行編碼來選碼管。l 選碼模塊將時(shí)序信號(hào)進(jìn)行編碼。4) 設(shè)計(jì)得到的成果及現(xiàn)象l 得到的總體結(jié)構(gòu):l 引腳配置:l 實(shí)物圖:1. 初始狀態(tài):2. 解鎖狀態(tài):3. 上鎖狀態(tài):4. 總結(jié)l 在這次課設(shè)中雖然遇到很多麻煩,剛剛開始用自己的方法編寫了個(gè)簡(jiǎn)單的密碼比對(duì),但缺乏很多功能,而且在消斗方面很不完善,
9、容易屬錯(cuò)誤,現(xiàn)象出不來,后來網(wǎng)上搜了一個(gè),但由于時(shí)鐘沒有完善,所以出錯(cuò),后來看懂了也可以調(diào),但各個(gè)模塊的時(shí)鐘不一,所以難以完善,后來看了指導(dǎo)書上才做出來。l 在VHDL語(yǔ)言上有了很大的完善和提高,對(duì)基本的設(shè)計(jì)都應(yīng)該沒問題了,但還需要努力。l 在設(shè)計(jì)過程中需要細(xì)心、冷靜。5. 附頁(yè)(程序)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;時(shí)鐘分頻: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;編碼計(jì)數(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è)計(jì)成績(jī)?cè)u(píng)定表成績(jī)?cè)u(píng)定項(xiàng) 目比例得 分平時(shí)成績(jī)(百分制記分)30%業(yè)務(wù)考核成績(jī)(百分制記分)70%總評(píng)成績(jī)(百分制記分)100%評(píng)定等級(jí)優(yōu) 良 中 及格 不及格指導(dǎo)教師(簽名):20 年 月 日23
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020高考化學(xué)熱門專題:原理綜合透題型析課件
- 現(xiàn)代中國(guó)的教育說課稿課件
- 蒸餾和熔點(diǎn)沸點(diǎn)的測(cè)定和溫度計(jì)的校正
- 臨時(shí)起搏器的護(hù)理
- 恒成實(shí)業(yè)網(wǎng)絡(luò)推廣方案
- 勿為小惡優(yōu)秀課件-粵教版
- 人教版初中地理七年級(jí)上冊(cè)人口與人種課件7
- 誡子書課件文檔
- 軟件測(cè)試計(jì)劃書與測(cè)試用例編寫課件
- 人教版五年級(jí)數(shù)學(xué)上冊(cè)課件3小數(shù)除法第2課時(shí)除數(shù)是整數(shù)的小數(shù)除法課件
- 太白酒2002年全國(guó)推廣營(yíng)銷企劃案
- 滬教版小學(xué)語(yǔ)文三年級(jí)上冊(cè)《小狗杜克》課件1
- 我們的情感世界課件7-人教版
- 擔(dān)保產(chǎn)品案例講解及其風(fēng)險(xiǎn)控制設(shè)計(jì)(含法律相關(guān)規(guī)范)
- 【部編版】四年級(jí)語(yǔ)文上冊(cè)《2.走月亮》ppt課件