版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 1 概述和設(shè)計(jì)要求</p><p><b> 1.1概述</b></p><p> 隨著科技的發(fā)展,電子產(chǎn)品的應(yīng)用越來越廣泛,電子電路的設(shè)計(jì)也越來越重要。隨著人們生活水平的提高,如何實(shí)現(xiàn)家庭防盜這一問題也變得尤其的突出,傳統(tǒng)的機(jī)械鎖由于結(jié)構(gòu)簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到廣大用戶的親昵。同時隨著
2、電子產(chǎn)品向智能化和微型化的不斷發(fā)展,數(shù)字邏輯電路電子芯片已成為電子產(chǎn)品研制和開發(fā)首選的控制器。用電子邏輯電路設(shè)計(jì)的密碼鎖經(jīng)實(shí)際操作表明,該密碼鎖具有安全、實(shí)用、成本低等優(yōu)點(diǎn),符合一般用鎖的需要,具有一定的現(xiàn)實(shí)意義。</p><p> 在本次課程設(shè)計(jì)中,我的的題目是電子密碼鎖,由輸入密碼、設(shè)定密碼、寄存電路、比較電路、顯示電路、修改密碼組成。主要工作部分是將輸入密碼與正確密碼進(jìn)行比較,密碼正確時紅色發(fā)光二極管亮,
3、表示開鎖成功,密碼錯誤則蜂鳴器響三秒,表示開鎖失敗。同時經(jīng)過顯示譯碼器作用到數(shù)碼顯示器顯示密碼。隨著電子產(chǎn)品向智能化和微型化的不斷發(fā)展,數(shù)字邏輯電路電子芯片已成為電子產(chǎn)品研制和開發(fā)首選的控制器。</p><p><b> 1.2設(shè)計(jì)要求</b></p><p> 利用基于所學(xué)EDA以及QuartusII7.2軟件相關(guān)知識設(shè)計(jì)一個具有較高安全性和較低成本的通用電子密
4、碼鎖,其具體功能要求如下:</p><p> (1) 數(shù)碼輸入:每按下一個數(shù)字鍵,就輸入一個數(shù)值,并在顯示器上的最右方顯示出該數(shù)值,同時將先前輸入的數(shù)據(jù)依序左移一個數(shù)字位置。</p><p> (2) 數(shù)碼清除:按下此鍵可清除前面所有的輸入值,清除成為“0000”。</p><p> (3) 密碼更改:按下此鍵時會將目前的數(shù)字設(shè)定
5、成新的密碼。</p><p> (4) 激活電鎖:按下此鍵可將密碼鎖上鎖。</p><p> (5) 解除電鎖:按下此鍵會檢查輸入的密碼是否正確,密碼正確即開鎖。 </p><p> 2功能模塊整體結(jié)構(gòu)設(shè)計(jì)</p><p> 作為通用電子密碼鎖,主要由三個部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖
6、顯示電路。</p><p> 根據(jù)以上選定的輸入設(shè)備和顯示器件,并考慮到實(shí)現(xiàn)各項(xiàng)數(shù)字密碼鎖功能的具體要求,整個電子密碼鎖系統(tǒng)的總體組成框圖如圖2.1所示。</p><p> (1) 密碼鎖輸入電路包括時序產(chǎn)生電路、鍵盤掃描電路、鍵盤彈跳消除電路、鍵盤譯碼電路等幾個小的功能電路。</p><p> (2) 密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲
7、電路,密碼的清除、變更、存儲、激活電鎖電路(寄存器清除信號發(fā)生電路),密碼核對(數(shù)值比較電路),解鎖電路(開/關(guān)門鎖電路)等幾個小的功能電路。</p><p> (3) 七段數(shù)碼管顯示電路主要將待顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成數(shù)碼器的七段顯示驅(qū)動編碼。</p><p> 圖2.1 數(shù)字電子密碼鎖系統(tǒng)總體框圖</p><p> 圖2.2是電子密碼鎖的輸入電
8、路框圖,由鍵盤掃描電路、彈跳消除電路、鍵盤譯碼電路、按鍵數(shù)據(jù)緩存器,加上外接的一個3×4矩陣式鍵盤組成。</p><p> 圖2.2電子密碼鎖的輸入電路框圖</p><p><b> 3 各模塊詳細(xì)設(shè)計(jì)</b></p><p><b> 3.1輸入電路</b></p><p><
9、;b> (1)時序產(chǎn)生電路</b></p><p> 本時序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時鐘脈沖(它是系統(tǒng)內(nèi)部所有時鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號、鍵盤掃描信號。</p><p> ?。?) 鍵盤掃描電路</p><p> 掃描電路的作用是用來提供鍵盤掃描信號(表4.1中的KY3~KY0)的,掃描信號變化的
10、順序依次為1110-1101-1011-0111-1110......依序地周而復(fù)始。 </p><p> (3) 鍵盤譯碼電路</p><p> 上述鍵盤中的按鍵可分為數(shù)字按鍵和文字按鍵,每一個按鍵可能負(fù)責(zé)不同的功能,例如清除數(shù)碼、退位、激活電鎖、開鎖等,詳細(xì)功能參見表2.3。</p><p> 表2.3 鍵盤參數(shù)表</p><p>
11、; (4) 彈跳消除電路</p><p> 彈跳消除電路的實(shí)現(xiàn)原理如圖1.6所示,先將鍵盤的輸入信號D_IN做為電路的輸入信號,CLK是電路的時鐘脈沖信號,也就是取樣信號,D_IN經(jīng)過兩級D觸發(fā)器延時后再使用RS觸發(fā)器處理。</p><p> 圖2.6 彈跳消除電路的內(nèi)部實(shí)現(xiàn)原理圖 </p><p> 此處RS觸發(fā)器的前端連接和非門的處理原則是:</p
12、><p> (1) 因?yàn)橐话闳说陌存I速度至多是10次/秒,亦即一次按鍵時間是100 ms,所以按下的時間可估算為50 ms。以取樣信號CLK的周期為8 ms計(jì),則可以取樣到6次。 </p><p> (2) 對于不穩(wěn)定的噪聲,在4 ms以下則至多抽樣一次。</p><p> (3) 在
13、觸發(fā)器之前,接上AND-NOT之后,SR的組態(tài)如表1.2所示。</p><p> 表2.2 RS觸發(fā)器真值表</p><p> ?。?) 按鍵存儲電路 </p><p> 因?yàn)槊看螔呙钑a(chǎn)生新的按鍵數(shù)據(jù),可能會覆蓋前面的數(shù)據(jù),所以需要一個按鍵存儲電路,將整個鍵盤掃描完畢后的結(jié)果記錄下來。按鍵存儲電路可以使用移位寄存器構(gòu)成。</p>&l
14、t;p> (6) 密碼鎖輸入電路模塊框圖</p><p> 輸入電路引腳圖如下圖所示,圖中CLK_1K為系統(tǒng)原始時鐘脈沖(1 kHz)</p><p> KEY_IN為鍵盤按鍵輸入,CLK_SCAN為鍵盤掃描序列輸出,DATA_N:數(shù)字輸出功能,DATA_F:功能輸出,F(xiàn)LAG_N為數(shù)字輸出標(biāo)志,F(xiàn)LAG_F為功能輸出(上鎖及開鎖)標(biāo)志,CLK_CTR是控制電路工作時鐘信號,C
15、LK_DEBOUNCE是去抖電路工作時鐘信號,大約125 Hz 。</p><p> 圖2.7. 密碼輸入模塊框圖</p><p><b> 3.2控制模塊</b></p><p> 密碼鎖的控制電路是整個電路的控制中心,主要完成對數(shù)字按鍵輸入和功能按鍵輸入的響應(yīng)控制。</p><p> (1) 數(shù)字按鍵輸入的響
16、應(yīng)控制</p><p> 1) 如果按下數(shù)字鍵,第一個數(shù)字會從顯示器的最右端開始顯示,此后每新按一個數(shù)字時,顯示器上的數(shù)字必須左移一格,以便將新的數(shù)字顯示出來。</p><p> 2) 假如要更改輸入的數(shù)字,可以按倒退按鍵來清除前一個輸入的數(shù)字,或者按清除鍵清除所有輸入的數(shù)字,再重新輸入四位數(shù)。</p><p> 3) 由于這里設(shè)
17、計(jì)的是一個四位的電子密碼鎖,所以當(dāng)輸入的數(shù)字鍵超過四個時,電路不予理會,而且不再顯示第四個以后的數(shù)字。</p><p> (2) 功能按鍵輸入的響應(yīng)控制控制功能如下:</p><p> 1) 清除鍵:清除所有的輸入數(shù)字,即做歸零動作。</p><p> 2) 激活電鎖鍵:按下此鍵時可將密碼鎖的門上鎖。(上鎖前必須預(yù)先設(shè)定一個四位的數(shù)字密碼。
18、</p><p> 3) 解除電鎖鍵:按下此鍵會檢查輸入的密碼是否正確,若密碼</p><p> 正確無誤則開門。 </p><p> 圖2.8電子密碼鎖的三種模式及關(guān)系</p><p> (3) 密碼控制模塊圖</p><p> 模塊引腳如下圖所示:圖中DATA_N[3..0]:4位行輸入
19、.DATA_N[3..</p><p> 0]:為4位列掃描輸出,F(xiàn)LAG_N和FLAG_F則對應(yīng)ENLOCK實(shí)現(xiàn)清除/上鎖功能,</p><p> CLK為全局時鐘信號,DATA_BCD[15..0]為輸出16位BCD碼,經(jīng)譯碼器后轉(zhuǎn)換</p><p><b> 為4位密碼輸出。</b></p><p> 圖2
20、.9.密碼控制模塊圖</p><p><b> 3.3顯示模塊</b></p><p> 密碼鎖顯示電路的設(shè)計(jì)比較簡單,這里直接采用四個4-7譯碼器來實(shí)現(xiàn)。BCD---七段顯示譯碼器(74LS48) 1)輸入:8421BCD碼,用A3 A2 A1 A0表示(4位)。 2)輸出:七段顯示,用Ya ~ Yg 表示(7位) </p><p&
21、gt; 圖中A[3..0]為按鍵輸入在經(jīng)過去抖電路后的的BCD碼的高4位輸入數(shù)值,經(jīng)過4-7譯碼器譯碼后輸出0~9之間的數(shù)值,因?yàn)檩斎霝?6位的BCD碼,而每一個譯碼器僅4位輸入,故一共需要4個譯碼器來實(shí)現(xiàn)密碼鎖顯示電路的設(shè)計(jì)。譯碼器引腳如下圖所示:</p><p> 圖2.10. 七段譯碼器輸入輸出引腳圖</p><p> 4 邏輯仿真與時序仿真的實(shí)現(xiàn)</p>&l
22、t;p> 1)將各個模塊連接在一起實(shí)現(xiàn)。</p><p> 將前面各個設(shè)計(jì)好的功能模塊進(jìn)行整合,可得到一個完整的電子密碼鎖系統(tǒng)的整體組裝設(shè)計(jì)原理圖,如圖1.8所示</p><p> 圖3.1密碼鎖的整體組裝設(shè)計(jì)原理</p><p> 2)各個模塊VHDL源程序及其仿真波形圖</p><p> (1) 鍵盤輸入去抖電路的VHDL
23、源程序(附仿真圖)</p><p> --DEBOUNCING.VHD</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> LIBRARY ALTERA; </p><p> USE ALTERA.MAXPLUS2.A
24、LL;</p><p> ENTITY DEBOUNCING IS</p><p> PORT(D_IN, CLK: IN STD_LOGIC; </p><p> DD1, DD0, QQ1, QQ0 : OUT STD_LOGIC; </p><p> D_OUT, D_OUT1: OUT STD_LOGIC ); </p
25、><p> END ENTITY DEBOUNCING ; </p><p> ARCHITECTURE ART OF DEBOUNCING IS</p><p> COMPONENT DCFQ IS</p><p> PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; </p><p>
26、 Q: OUT STD_LOGIC); </p><p> END COMPONENT DCFQ; </p><p> SIGNAL VCC, INV_D : STD_LOGIC ; </p><p> SIGNAL Q0, Q1 : STD_LOGIC ; </p><p> SIGNAL D1, D0 : STD_LOGI
27、C ; </p><p><b> BEGIN</b></p><p> VCC <= '1' ; </p><p> INV_D <= NOT D_IN ;</p><p> U1: DCFQ PORT MAP (CLK => CLK, CLRN => INV_D, P
28、RN => VCC, D =>VCC , Q => Q0); </p><p> U2: DCFQ PORT MAP (CLK => CLK, CLRN => Q0, PRN => VCC, D =>VCC , Q => Q1); </p><p> PROCESS (CLK)</p><p><b>
29、 BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> D0 <= NOT Q1; </p><p> D1 <= D0; </p><p><b> END IF ;</b></p>
30、<p> END PROCESS ; </p><p> DD0 <= D0; DD1 <= D1; QQ1 <= Q1; QQ0 <= Q0; </p><p> D_OUT <= NOT (D1 AND NOT D0); </p><p> D_OUT1 <= NOT Q1 ; </p>
31、;<p> END ARCHITECTURE ART; </p><p> --DCFQ.VHD</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> ENTITY DCFQ IS</p><p> PO
32、RT(CLK, CLRN, PRN, D: IN STD_LOGIC; </p><p> Q: OUT STD_LOGIC);</p><p> END ENTITY DCFQ ; </p><p> ARCHITECTURE ART OF DCFQ IS</p><p><b> BEGIN</b></
33、p><p> PROCESS (CLK, CLRN, PRN)</p><p><b> BEGIN</b></p><p> IF CLRN='0' AND PRN='1' THEN</p><p><b> Q<='0'; </b><
34、;/p><p> ELSIF CLRN='1' AND PRN='0' THEN</p><p><b> Q<='1'; </b></p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p><
35、b> Q <=D; </b></p><p><b> END IF ; </b></p><p> END PROCESS ; </p><p> END ARCHITECTURE ART; </p><p> 對上述去抖電路源程序用quartus7.2進(jìn)行時序仿真,得到仿真圖如下
36、:</p><p> 圖中輸出信號QQ0,QQ1,D_OUT1,DD0,DD1是為便于仿真時觀察中間結(jié)果而增加的觀測點(diǎn)的輸出,可以在程序中去掉,CLK為時鐘脈沖</p><p> 信號,當(dāng)檢測到有鍵按下時,即D_IN為高電平時接觸點(diǎn)出現(xiàn)信號來回彈跳的現(xiàn)象。</p><p> 圖4.1 鍵盤輸入去抖電路DEBOUNCING.VHD的仿真結(jié)果圖</p>
37、<p> (2)密碼鎖輸入電路的VHDL源程序(附仿真圖)</p><p> --KEYBOARD.VHD</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_ARITH.ALL ; <
38、;/p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL ; </p><p> ENTITY KEYBOARD IS</p><p> PORT (CLK_1K: IN STD_LOGIC ; </p><p> --系統(tǒng)原始時鐘脈沖(1 kHz)</p&g
39、t;<p> KEY_IN: IN STD_LOGIC_VECTOR (2 DOWNTO 0); --按鍵輸入</p><p> CLK_SCAN: OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; </p><p> --( 仿真時用)鍵盤掃描序列</p><p> DATA_N: OUT STD_LOGIC_
40、VECTOR(3 DOWNTO 0) ; --數(shù)字輸出</p><p> DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; --功能輸出</p><p> FLAG_N: OUT STD_LOGIC ; --數(shù)字輸出標(biāo)志</p><p> FLAG_F: OUT STD_LOGIC ;
41、--功能輸出標(biāo)志</p><p> CLK_CTR: OUT STD_LOGIC; --控制電路工作時鐘信號</p><p> CLK_DEBOUNCE: OUT STD_LOGIC; --(仿真時用)去抖電路工作時鐘信號</p><p><b> ); </b></p><p> END ENTITY KEY
42、BOARD ; </p><p> ARCHITECTURE ART OF KEYBOARD IS</p><p> COMPONENT DEBOUNCING IS</p><p> PORT(D_IN: IN STD_LOGIC ; </p><p> CLK: IN STD_LOGIC ; </p><p&g
43、t; D_OUT: OUT STD_LOGIC ) ; </p><p> END COMPONENT DEBOUNCING; </p><p> SIGNAL CLK: STD_LOGIC ; --電路工作時鐘脈沖</p><p> SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOWNTO 0); </
44、p><p> --鍵掃信號“00-01-10-11”寄存器</p><p> SIGNAL C_DEBOUNCE: STD_LOGIC ; </p><p><b> --去抖時鐘信號</b></p><p> SIGNAL C: STD_LOGIC_VECTOR(2 DOWNTO 0) ; </p&
45、gt;<p> --鍵盤輸入去抖后的寄存器</p><p> SIGNAL N , F: STD_LOGIC_VECTOR(3 DOWNTO 0) ; </p><p> --數(shù)字、功能按鍵譯碼值的寄存器</p><p> SIGNAL FN , FF: STD_LOGIC ; </p><p> --數(shù)字、
46、功能按鍵標(biāo)志值數(shù)字、功能按鍵</p><p> SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0) ; </p><p><b> BEGIN</b></p><p><b> --內(nèi)部連接</b></p><p> DATA_N <= N ; <
47、;/p><p> DATA_F <= F ; </p><p> FLAG_N <= FN ; </p><p> FLAG_F <= FF ; </p><p> CLK_CTR <= CLK ; </p><p> --掃描信號發(fā)生器 </p><p&g
48、t; COUNTER : BLOCK IS</p><p> SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); </p><p> SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0); </p><p> --1110-1101-1011-0111 </p><p>
49、<b> BEGIN</b></p><p> PROCESS (CLK_1K) IS </p><p><b> BEGIN</b></p><p> IF CLK_1K'EVENT AND CLK_1K ='1' THEN</p><p>
50、Q <= Q+1; </p><p><b> END IF; </b></p><p> C_DEBOUNCE <= Q(2) ; --去抖時鐘信號, 大約125 Hz </p><p> C_KEYBOARD <= Q(2 DOWNTO 1) ; </p><p> -- 產(chǎn)生鍵掃信
51、號***“00-01-10-11”, 大約16 Hz</p><p> --C_DEBOUNCE <= Q(1) ; --仿真時用 </p><p> --C_KEYBOARD <= Q(5 DOWNTO 4) ; --仿真時用</p><p> CLK <= Q(0) ; </p><p> EN
52、D PROCESS; </p><p> CLK_DEBOUNCE<=C_DEBOUNCE; </p><p> SEL <= "1110" WHEN C_KEYBOARD=0 ELSE</p><p> "1101" WHEN C_KEYBOARD=1 ELSE</p>&
53、lt;p> "1011" WHEN C_KEYBOARD=2 ELSE</p><p> "0111" WHEN C_KEYBOARD=3 ELSE</p><p><b> "1111"; </b></p><p> CLK_SCAN <= SEL ; </
54、p><p> END BLOCK COUNTER ; </p><p><b> --鍵盤去抖</b></p><p> DEBOUNUING : BLOCK IS</p><p><b> BEGIN</b></p><p> U1: DEBOUNCING PORT
55、MAP (D_IN => KEY_IN(0) , D_OUT => C(0), </p><p> CLK => C_DEBOUNCE); </p><p> U2: DEBOUNCING PORT MAP (D_IN => KEY_IN(1) , D_OUT => C(1), </p><p> CLK => C_DEBO
56、UNCE); </p><p> U3: DEBOUNCING PORT MAP (D_IN => KEY_IN(2) , D_OUT => C(2), </p><p> CLK => C_DEBOUNCE ); </p><p> END BLOCK DEBOUNUING ; </p><p><b>
57、 --鍵盤譯碼</b></p><p> KEY_DECODER : BLOCK </p><p> SIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO 0) ; --按鍵位置</p><p><b> BEGIN</b></p><p> PROCESS(CLK)<
58、;/p><p><b> BEGIN</b></p><p> Z <= C_KEYBOARD & C ; </p><p> IF CLK'EVENT AND CLK = '1' THEN</p><p><b> CASE Z IS</b></
59、p><p> WHEN "11101" => N <= "0000" ; --0</p><p> WHEN "00011" => N <= "0001" ; --1</p><p> WHEN "00101" => N <
60、;= "0010" ; --2</p><p> WHEN "00110" => N <= "0011" ; --3</p><p> WHEN "01011" => N <= "0100" ; --4</p><p> WH
61、EN "01101" => N <= "0101" ; --5</p><p> WHEN "01110" => N <= "0110" ; --6</p><p> WHEN "10011" => N <= "0111"
62、; --7</p><p> WHEN "10101" => N <= "1000" ; --8</p><p> WHEN "10110" => N <= "1001" ; --9</p><p> WHEN OTHERS => N &
63、lt;= "1111" ; </p><p> END CASE ; </p><p><b> END IF ; </b></p><p> IF CLK'EVENT AND CLK = '1' THEN</p><p> CASE Z IS</p>
64、<p> WHEN "11011" => F <= "0100" ; --*_LOCK</p><p> WHEN "11110" => F <= "0001" ; --#_UNLOCK</p><p> WHEN OTHERS => F <= &q
65、uot;1000" ; </p><p> END CASE ; </p><p><b> END IF ; </b></p><p> END PROCESS ; </p><p> FN <= NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ; &l
66、t;/p><p> FF <= F(2) OR F(0) ; </p><p> END BLOCK KEY_DECODER ; </p><p> END ARCHITECTURE ART;</p><p> 說明 1、鍵盤譯碼電路除了負(fù)責(zé)將鍵盤送出的數(shù)據(jù)進(jìn)行譯碼外,另外就是在譯碼的同時,必須判別所按下的是數(shù)字鍵還是功能鍵。<
67、;/p><p> 2、若為數(shù)字鍵,則flag_numb=1,且out_num 輸出BCD 碼顯示電路。</p><p> 3、若為功能鍵,則flag_func=1,且out_func 輸出4 位碼,并送往電鎖控制電路。</p><p> 4、對密碼鎖輸入模塊仿真如下圖:圖中的輸出信號CLK_SCAN,C_DEBOUNCE是為便于仿真時觀察中間結(jié)果而增加的觀測點(diǎn)的輸
68、出,F(xiàn)LAG_N為數(shù)字輸出標(biāo)志,當(dāng)輸入為數(shù)字時為高電平,DATA_F為功能輸出(4位),F(xiàn)LAG_F為功能輸出標(biāo)志當(dāng)按鍵輸入為退格鍵或確認(rèn)鍵時為高電平輸出,DATA_N為數(shù)字輸出,即在數(shù)字輸出標(biāo)志為高電平時確認(rèn)輸出數(shù)值。</p><p> 圖4.2輸入電路仿真結(jié)果圖 </p><p> (3)密碼鎖控制電路的VHDL源程序(附仿真圖)</p><p> --C
69、TRL.VHD</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_ARITH.ALL; </p><p> USE IEEE.STD_
70、LOGIC_UNSIGNED.ALL; </p><p> ENTITY CTRL IS</p><p> PORT (DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0); </p><p> DATA_F: IN STD_
71、LOGIC_VECTOR(3 DOWNTO 0); </p><p> FLAG_N: IN STD_LOGIC; </p><p> FLAG_F: IN STD_LOGIC; </p><p> CLK: IN STD_LOGIC;
72、160;</p><p> ENLOCK: OUT STD_LOGIC; --1: LOCK, 0: UNLOCK</p><p> DATA_BCD: OUT STD_LOGIC_VECTOR (15 DOWNTO 0)); </p>&l
73、t;p> END ENTITY CTRL ; </p><p> ARCHITECTURE ART OF CTRL IS</p><p> SIGNAL ACC, REG: STD_LOGIC_VECTOR (15 DOWNTO 0);
74、160;</p><p> --ACC用于暫存鍵盤輸入的信息,REG用于存儲輸入的密碼</p><p> SIGNAL NC: STD_LOGIC_VECTOR (2 DOWNTO 0); </p><p> SIGNAL RR2, CLR, BB, QA,
75、160;QB: STD_LOGIC; </p><p> SIGNAL R1, R0: STD_LOGIC; </p><p><b> BEGIN</b></p><p> --寄存器清零信號的產(chǎn)生進(jìn)程</p><p> PROCESS(CLK)<
76、;/p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> R1<=R0; R0<=FLAG_F; </p><p><b> E
77、ND IF; </b></p><p> RR2<=R1 AND NOT R0; </p><p> CLR<=RR2; </p><p> END PROCESS; </p><p> --按鍵輸入數(shù)據(jù)的存儲、清零進(jìn)程&
78、lt;/p><p> KEYIN_PROCESS : BLOCK IS</p><p> SIGNAL RST, D0, D1: STD_LOGIC ; </p><p><b> BEGIN </b></p><p>
79、; RST <= RR2; </p><p> PROCESS(FLAG_N, RST) IS</p><p><b> BEGIN</b></p><p> IF RST = '1' THEN <
80、/p><p> ACC <= "0000000000000000" ; --CLEAR INPUT</p><p> NC <= "000" ; </p><p><b> ELSE<
81、/b></p><p> IF FLAG_N'EVENT AND FLAG_N = '1' THEN </p><p> IF NC < 4 THEN</p><p> ACC &l
82、t;= ACC(11 DOWNTO 0) & DATA_N ; </p><p> NC <= NC + 1 ; </p><p><b> END IF; </b></p><p&
83、gt;<b> END IF ; </b></p><p><b> END IF ; </b></p><p> END PROCESS ; </p><p> END BLOCK KEYIN_PROCE
84、SS ; </p><p> --上鎖/開鎖控制進(jìn)程</p><p> LOCK_PROCESS : BLOCK IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK, DATA_F) IS</p&
85、gt;<p><b> BEGIN</b></p><p> IF (CLK'EVENT AND CLK = '1') THEN</p><p> IF NC = 4 THEN</p><p&g
86、t; IF DATA_F(2) = '1' THEN --上鎖控制信號有效 </p><p> REG <= ACC ; --密碼存儲</p><p> QA <= '1' ;
87、0; QB <= '0'; </p><p> ELSIF DATA_F(0) = '1' THEN --開鎖控制信號有效</p><p> IF REG = ACC THEN --密碼核對&l
88、t;/p><p> QA<= '0'; QB <= '1' ; </p><p><b> END IF ; </b></p><p> ELSIF ACC
89、0;= "1000100010001000" THEN </p><p> --設(shè)置“8888”為萬用密碼</p><p> QA <= '0' ; QB<= '1'; </p>&l
90、t;p><b> END IF ; </b></p><p><b> END IF; </b></p><p><b> END IF ; </b></p><p> END PROCESS
91、60;; </p><p> END BLOCK LOCK_PROCESS ; </p><p> --輸出上鎖/開鎖控制信號</p><p> ENLOCK <= QA AND NOT QB ; </p><p&g
92、t;<b> --輸出顯示信息</b></p><p> DATA_BCD<= ACC ; </p><p> END ARCHITECTURE ART; </p><p> 對密碼控制電路模塊進(jìn)行時序仿真如下圖: FLAG_N為數(shù)字輸出標(biāo)志,高電平時確認(rèn)輸出數(shù)字,F(xiàn)LA
93、G_F為功能輸出標(biāo)志,密碼控制模塊根據(jù)4位按鍵輸入在判斷其為功能輸入還是數(shù)字輸入后輸出16位BCD碼。</p><p> 圖4.3密碼鎖控制電路仿真結(jié)果圖 </p><p> (4)密碼鎖顯示電路七段譯碼器設(shè)計(jì)源程序(仿真圖)</p><p> LIBRARY IEEE ;</p><p> USE IEEE.STD_LOGIC_11
94、64.ALL ;</p><p> ENTITY DECL7S IS</p><p> PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;</p><p><b> END ;<
95、;/b></p><p> ARCHITECTURE one OF DECL7S IS </p><p><b> BEGIN</b></p><p> PROCESS( A )</p><p><b> BEGIN</b></p><p><b>
96、 CASE A IS</b></p><p> WHEN "0000" => LED7S <="0111111" ;</p><p> WHEN "0001" => LED7S <="0000110" ;</p><p> WHEN "
97、0010" => LED7S <="1011011" ;</p><p> WHEN "0011" => LED7S <="1001111" ;</p><p> WHEN "0100" => LED7S <="1100110" ;<
98、/p><p> WHEN "0101" => LED7S <="1101101" ;</p><p> WHEN "0110" => LED7S <="1111101" ;</p><p> WHEN "0111" => LED7
99、S <="0000111" ;</p><p> WHEN "1000" => LED7S <="1111111" ; </p><p> WHEN "1001" => LED7S <="1101111" ;</p><p>
100、WHEN "1010" => LED7S <="1110111" ;</p><p> WHEN "1011" => LED7S <="1111100" ;</p><p> WHEN "1100" => LED7S <="0111001&q
101、uot; ;</p><p> WHEN "1101" => LED7S <="1011110" ;</p><p> WHEN "1110" => LED7S <="1111001" ;</p><p> WHEN "1111" =&g
102、t; LED7S <="1110001" ;</p><p> WHEN OTHERS => NULL ;</p><p> END CASE ;</p><p> END PROCESS ;</p><p><b> END ;</b></p><p>
103、 對七段數(shù)碼顯示譯碼器源程序仿真如下圖,執(zhí)行功能如下:將輸入的BCD碼的高4位進(jìn)行轉(zhuǎn)換,如圖中輸入為1011時,輸出7C;輸入為1000時,輸出為7F。</p><p> 圖4.4 七段數(shù)碼顯示譯碼器仿真波形</p><p><b> 5 設(shè)計(jì)結(jié)論</b></p><p> 根據(jù)系統(tǒng)設(shè)計(jì)原理圖,圖中CLK為輸入信號系統(tǒng)原始時鐘脈沖(1 k
104、Hz),KEY_IN[2..0]為按鍵輸入信號,即當(dāng)有鍵按下時時鐘脈沖信號檢測到有信號輸入,KEYBOARD模塊對輸入信號進(jìn)行鍵盤掃描處理,判斷按下的是數(shù)字鍵還是功能鍵,每次的輸入數(shù)值都會通過七段譯碼器顯示結(jié)果,最后在核定密碼真確后則開鎖。</p><p><b> 6參考文獻(xiàn)</b></p><p> [1] 宋武烈,等.《EDA技術(shù)實(shí)用教程》. 湖北科學(xué)技術(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)—電子密碼鎖
- eda電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖——eda課程設(shè)計(jì)
- eda電子密碼鎖課程設(shè)計(jì)
- eda課程設(shè)計(jì)—電子密碼鎖
- eda課程設(shè)計(jì)--電子密碼鎖
- eda課程設(shè)計(jì)報(bào)告--電子密碼鎖
- eda課程設(shè)計(jì)報(bào)告--電子密碼鎖
- eda課程設(shè)計(jì)報(bào)告-- 電子密碼鎖設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告---電子密碼鎖設(shè)計(jì)
- eda密碼鎖課程設(shè)計(jì)
- 電子密碼鎖eda技術(shù)課程設(shè)計(jì)
- eda綜合課程設(shè)計(jì)---電子密碼鎖的設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- eda課程設(shè)計(jì)數(shù)字密碼鎖
- 課程設(shè)計(jì)--電子密碼鎖
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
評論
0/150
提交評論