版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息技術(shù)學(xué)院可編程邏輯器件原理及應(yīng)用課程綜合設(shè)計報告書姓 名: 景顯冬 班 級: B1106 學(xué) 號: 04 時 間: 2013.12.31 指導(dǎo)教師: 李海成 設(shè)計題目密碼鎖設(shè)計設(shè)計要求和任務(wù)數(shù)據(jù)輸入:每按一個數(shù)字鍵,就輸入一個數(shù)值,并在顯示器上的最右方顯示出該數(shù)值,并將先前已經(jīng)輸入的數(shù)據(jù)依序左移一個數(shù)字位置。數(shù)碼清除:按下此鍵可清除前面所有的輸入值,清除成為“0000”。密碼更改:按下此鍵時將目前的數(shù)字設(shè)定成新的密碼。激活電鎖:按下此鍵可將密碼鎖上鎖。解除電鎖:按下此鍵會檢查輸入的密碼是否正確,密碼正確即開鎖。設(shè)計過程設(shè)計方案 本系統(tǒng)采用模塊化的設(shè)計,整個系統(tǒng)分為數(shù)字按鍵輸入、時鐘輸入、功
2、能按鍵輸入、數(shù)字譯碼塊、功能譯碼模塊、核心處理模塊、輸出處理模塊、顯示譯碼電路八個模塊。整體電路如圖1.1所示。數(shù)字按鍵輸入時鐘模塊功能按鍵輸入數(shù)字譯碼模塊功能譯碼模塊核心處理模塊輸出處理模塊顯示譯碼電路圖1.1 數(shù)字密碼鎖總方框圖硬件電路的設(shè)計4位數(shù)字密碼鎖包括五個基本邏輯模塊,分別為:數(shù)字按鍵輸入模塊(numinput)、功能按鍵輸入模塊(funcinput)、核心處理模塊(core)、輸出處理模塊(allout)、七段譯碼器模塊(dataout)。數(shù)字按鍵輸入-numinput說明:讀取數(shù)字鍵09。按鍵為矩陣形式,高電平表示按鍵未按下,低電平表示按鍵按下。經(jīng)數(shù)字按鍵輸入模塊處理后輸出4位
3、二進制代碼,“0000”“1001”分別表示09,用“1010”表示其他無效輸入。如表2.1所示。設(shè)計過程表2.1 數(shù)字按鍵輸入模塊(numinput)的數(shù)據(jù)輸入輸出按鍵數(shù)字按鍵掃描輸出Numinput二進制輸出對應(yīng)十進制數(shù)字01101111000000101111101000112011111100010231011011100113410111011010045101111010101561011111001106711010111011178110110111000891101110110019其他按鍵其他101010(1)numinput-數(shù)字按鍵輸入模塊程序:library ieee
4、;use ieee.std_logic_1164.all;entity numinput isport(numin :IN std_logic_vector(7 downto 0);numstate,clk :IN std_logic;numout :OUT std_logic_vector(3 downto 0);end numinput;architecture one of numinput issignal state :std_logic;signal mem :std_logic_vector(7 downto 0);beginprocess(clk)beginif clk'
5、;event and clk='1' then設(shè)計過程if state/=numstate thenif mem/=numin thencase numin iswhen "11011110" => numout<="0000"-"0"when "01111101" => numout<="0001"-"1"when "01111110" => numout<="0010"-"
6、;2"when "10110111" => numout<="0011"-"3"when "10111011" => numout<="0100"-"4"when "10111101" => numout<="0101"-"5"when "10111110" => numout<="0110"-"6"
7、when "11010111" => numout<="0111"-"7"when "11011011" => numout<="1000"-"8"when "11011101" => numout<="1001"-"9"when others => numout<="1010"end case;state<=numstate;else num
8、out<="1010"end if;mem<=numin;end if;end if;end process;end one;(2)數(shù)字按鍵輸入模塊仿真圖:設(shè)計過程圖2.1 數(shù)字按鍵輸入模塊仿真圖由圖可知,當(dāng)數(shù)字按鍵輸入模塊的輸入依次為"11011110"、"01111101"、"01111110"、"10110111"、"10111011"、"10111101"、"10111110"、"11010111"
9、;、"11011011"、"11011101"時,numout輸出依次輸出“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”;當(dāng)為其他按鍵輸入時,numout輸出均為“1010”。(3)數(shù)字按鍵輸入-numinput符號文件:圖2.2 數(shù)字按鍵輸入-numinput符號文件功能按鍵輸入模塊 - funcinput讀取矩陣按鍵區(qū)控制功能按鍵 清除鍵、改密鍵、上鎖鍵、解鎖鍵。高電平表示按鍵未按下,低電平表示按鍵按下。按照“清除,改設(shè)計過程密,上鎖,解鎖”順序讀取按鍵時,只
10、能輸出一位控制信號。輸出的信號為3位二進制代碼,“001”“100”,依次表示“清除按鍵、改密按鍵、上鎖,解鎖”,用“000”表示輸入不為功能按鍵信號。表2.2 控制功能按鍵輸入模塊(funcinput)的輸出輸入數(shù)據(jù)功能按鍵功能按鍵掃描輸出Funcinput二進制輸出對應(yīng)十進制數(shù)字清除鍵111001110011改密鍵111011010102上鎖鍵111011100113解鎖鍵111010111004其他按鍵其他0000(1)Funcinput-功能按鍵輸入模塊程序:library ieee;use ieee.std_logic_1164.all;entity funcinput isport
11、( funcin:IN std_logic_vector(7 downto 0);constate,clk:IN std_logic;conout:OUT std_logic_vector(2 downto 0);end funcinput;architecture one of funcinput issignal state:std_logic;signal mem:std_logic_vector(7 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif constate/=state th
12、enstate<=constate;設(shè)計過程if mem/=funcin then with funcin selectconout<="001" when "11100111" , -清除鍵"010" when "11101101",-改密鍵"011" when "11101110", -上鎖鍵"100" when "11101011" , -解鎖鍵"000" when others;mem<=f
13、uncin;else conout<="000"end if;end if;end if;end process;end one;(2)功能按鍵輸入模塊仿真圖:圖2.3 功能按鍵輸入模塊仿真圖由圖可知:當(dāng)功能按鍵輸入模塊的輸入依次為“11100111”、“ 11101101”、“ 11101110”、“ 11101011”時,conout輸出依次為“001”、“010”、“011”、“100”, 當(dāng)為其他按鍵輸入時,conout輸出均為“000”。(3)功能按鍵輸入模塊-funcinput符號文件:設(shè)計過程圖2.4 功能按鍵輸入模塊 -funcinput符號文件 核心
14、處理模塊-core核心處理模塊將根據(jù)輸入(數(shù)字按鍵輸入以及功能按鍵輸入)來改變存儲器狀態(tài)、數(shù)碼管顯示以及LED燈顯示(紅燈亮為上鎖,綠燈亮為解鎖)。(1)Core-核心處理程序:library ieee;use ieee.std_logic_1164.all;entity core isport( numin:in std_logic_vector(3 downto 0);conin:in std_logic_vector(2 downto 0);clk:in std_logic;dataa,datab,datac,datad:out std_logic_vector(3 downto 0);
15、ledr,ledg,numout,conout:out std_logic);end entity;architecture one of core istype lockstate is (unlock,locked);signal numa,numb,numc,numd,codea,codeb,codec,coded:std_logic_vector(3 downto 0);signal numstate,constate:std_logic;signal locksta:lockstate;beginprocess(clk,numin,conin)設(shè)計過程if clk'event
16、 and clk='1' then-上升沿if numin/="1010" then-當(dāng)不是其他鍵時numd<=numc;numc<=numb;numb<=numa;numa<=numin;-移位end if;if conin/="000" thenif conin="001" then-清除鍵按下numa<="0000"-全部清零numb<="0000"numc<="0000"numd<="0000&
17、quot;elsif conin="010" then -改密鍵按下if locksta/=locked then-鎖并不是上鎖狀態(tài)codea<=numa;codeb<=numb;codec<=numc;coded<=numd;end if;elsif conin="011" then -上鎖鍵按下if locksta/=locked thennuma<="0000"numb<="0000"numc<="0000"numd<="0000&
18、quot;locksta<=locked; -鎖定密碼鎖end if;elsif conin="100" then -解鎖鍵按下設(shè)計過程if locksta=locked then if numa=codea and numb=codeb then -輸入正確密碼if numc=codec and numd=coded thenlocksta<=unlock; -鎖開end if;end if;end if;end if;end if;if locksta=locked then -若鎖鎖定ledr<='1' -led等高電平,紅燈閃爍le
19、dg<='0'elseledr<='0'ledg<='1'end if;dataa<=numa;datab<=numb;datac<=numc;datad<=numd;if numstate='1' then numstate<='0'else numstate<='1'end if;if constate='1' then constate<='0'else constate<='1'
20、end if;numout<=numstate;conout<=constate;設(shè)計過程end if;end process;end one;(2)核心處理模塊仿真圖:當(dāng)數(shù)字按鍵輸入為有效輸入(即輸入的按鍵為數(shù)字按鍵09時),此時雖輸入9位數(shù)字,但只有前四位有效,所以密碼應(yīng)為“1234”。 若conin輸入為“011”(即按下上鎖鍵),此時可以看到ledr為高電平,所以此時紅燈閃爍一次,表示密碼鎖已上鎖。仿真波形圖如下:圖2.5 核心處理模塊仿真圖(一)圖2.6 核心處理模塊仿真圖(二)由圖可知:若conin輸入為“100”時(解鎖時),當(dāng)再次輸入密碼“1234”,并此時ledg
21、輸出為低電平(綠燈亮)。Dataa輸出密碼“1234”,則表示此時密碼鎖已解鎖。(3)核心處理模塊-core符號文件:設(shè)計過程圖2.7 處理核心模塊-core符號文件 輸出處理模塊allout對處理核心模塊core輸出的數(shù)據(jù)進行刷新,使數(shù)碼管及時顯示刷新的數(shù)字。(1)Allout-輸出處理程序:library ieee;use ieee.std_logic_1164.all;entity allout isport( dataa,datab,datac,datad:in std_logic_vector(3 downto 0);clk:in std_logic;dataout:out std_
22、logic_vector(3 downto 0);outsel:out std_logic_vector(1 downto 0);end allout;architecture one of allout issignal timer:std_logic_vector(1 downto 0);beginprocess(clk)beginif clk'event and clk='1' then-上升沿設(shè)計過程if timer="00" thendataout<=dataa;outsel<="00"timer<=&
23、quot;01"elsif timer="01" thendataout<=datab;outsel<="01"timer<="10"elsif timer="10" thendataout<=datac;outsel<="10"timer<="11"elseataout<=datad;outsel<="11"timer<="00"end if;end if;end pro
24、cess;end one;(2)輸出處理模塊仿真圖:圖2.8 輸出處理模塊仿真圖設(shè)計過程 當(dāng)輸出密碼為“0123”時,經(jīng)過輸出處理模塊的處理后,能刷新輸出密碼“0123”對應(yīng)的二進制“0000”、“0001”、“0010”、“0011”,當(dāng)密碼改為“5678”時,該模塊也能對應(yīng)刷新出新密碼對應(yīng)二進制“0101”、“0110”、“0111”、“1000”。(3)輸出處理模塊allout符號文件:圖2.9輸出處理模塊allout符號文件七段譯碼器模塊dataout把4位2進制數(shù)翻譯成數(shù)碼管代碼,使輸入的密碼或修改的密碼能及時顯示在數(shù)碼管上。(1)Dataout-七段譯碼器模塊程序:library
25、ieee;use ieee.std_logic_1164.all;entity dataout isport( datain:IN std_logic_vector(3 downto 0);dataout:OUT std_logic_vector(6 downto 0);end dataout;architecture one of dataout isbeginprocess(datain)begincase datain is設(shè)計過程when "0000" => dataout<="1111110" -數(shù)碼管顯示0when "0
26、001" => dataout<="0110000" -數(shù)碼管顯示1when "0010" => dataout<="1101101" -數(shù)碼管顯示2when "0011" => dataout<="1111001" -數(shù)碼管顯示3when "0100" => dataout<="0110011" -數(shù)碼管顯示4when "0101" => dataout<=&quo
27、t;1011011" -數(shù)碼管顯示5when "0110" => dataout<="1011111" -數(shù)碼管顯示6when "0111" => dataout<="1110000" -數(shù)碼管顯示7when "1000" => dataout<="1111111" -數(shù)碼管顯示8when "1001" => dataout<="1111011" -數(shù)碼管顯示9when othe
28、rs => dataout<="0000000" -不顯示end case;end process;end one;(2)Dataout-七段譯碼器模塊仿真圖:圖2.10 七段譯碼器模塊仿真圖由圖可知:當(dāng)七段譯碼器的輸入信號(datain)為“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”,輸出信號(dataout)依次為:“1111110”、“ 0110000”、“ 1101101”、“ 1111001”、“ 0110011”、“ 1011011”、“ 1011111”、
29、“ 1110000”、 “1111111”、“ 1111011”,當(dāng)conin輸入信號為其他時,譯碼輸出為“0000000”。表2.3 七段譯碼器的輸入及譯碼對照表設(shè)計過程二進制譯碼輸入二進制譯碼輸出數(shù)碼管顯示數(shù)字000011111100000101100001001011011012001111110013010001100114010110110115011010111116011111100007100011111118100111110119其他輸入0000000無顯示(3)輸出處理模塊Dataout符號文件:圖2.11 輸出處理模塊allout符號文件 軟件設(shè)計四位密碼鎖的電路設(shè)計原理圖如下:設(shè)計過程設(shè)計過程 圖3.1 四位密碼鎖的電路設(shè)計原理圖系統(tǒng)仿真該四位數(shù)字密碼鎖的設(shè)計是一個實時的系統(tǒng),對于每一個按鍵的操作都是在時鐘的上升沿完成的,是一個動態(tài)的邏輯關(guān)系;而系統(tǒng)輸出為數(shù)碼管顯示的實時輸
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 同意簽訂合同的紀(jì)要
- 《夏商周秦漢大事》課件
- 2025年海南貨運從業(yè)資格證恢復(fù)考試題
- 2025年濱州貨運資格證考試真題
- 2025年山東貨運上崗證模擬考試0題
- 2025年江西貨運從業(yè)資證孝試模似題庫
- 2025年達州道路運輸從業(yè)資格證考試模擬試題
- 治安院務(wù)公開管理辦法
- 智能家居大白施工合同
- 航空航天木地板施工合同
- 《籃球:原地持球交叉步突破》教案(三篇)
- 稀土新材料在新能源技術(shù)領(lǐng)域的應(yīng)用
- 2024年無人駕駛航空植保技能大賽理論考試題庫(含答案)
- 2024山東高速集團社會招聘189人高頻難、易錯點500題模擬試題附帶答案詳解
- 2024年人教部編本七年級上冊教學(xué)比賽說課材料16《誡子書》說課稿
- PLC入門課程課件
- 2025年研究生考試考研法律碩士綜合(非法學(xué)498)試卷及解答參考
- 2024年《妊娠期肝內(nèi)膽汁淤積癥臨床診治和管理指南》解讀
- 2024秋國家開放大學(xué)《形勢與政策》大作業(yè)參考答案
- Unit1Topic1考點梳理課件八年級英語上冊
- 陜西省西安市周至縣2025屆初三中考測試(一)數(shù)學(xué)試題理試題含解析
評論
0/150
提交評論