2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論