版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《EDA設(shè)計實習(xí)》報告</p><p><b> 本課程設(shè)計目錄:</b></p><p><b> <1></b></p><p><b> <2></b></p><p><b> <3></
2、b></p><p><b> <4></b></p><p><b> <5></b></p><p> 課程設(shè)計的目的: </p><p> 本課程設(shè)計主要是基于VHDL文本輸入法設(shè)計電子密碼鎖,隨著社會物質(zhì)財富的日益增長,安全防盜已成為全社會關(guān)注的問題。
3、基于EDA技術(shù)設(shè)計的電子密碼鎖,以其價格便宜、安全可靠、使用方便,受到了人們的普遍關(guān)注。而以現(xiàn)場可編程邏輯器件(FPGA)為設(shè)計載體,以硬件描述語言(VHDE)為主要表達方式,以QuartusⅡ開發(fā)軟件和GW48EDA開發(fā)系統(tǒng)為設(shè)計工具設(shè)計的電子密碼鎖,由于其能夠?qū)崿F(xiàn)數(shù)碼輸入、數(shù)碼清除、密碼解除、密碼更改、密碼上鎖和密碼解除等功能,因此,能夠滿足社會對安全防盜的要求。</p><p> 系統(tǒng)設(shè)計實現(xiàn)的基本功能&
4、lt;/p><p> 密碼輸入:每按下一個數(shù)字鍵,就輸入一個數(shù)值,并在顯示器上顯示出該數(shù)值。同時將先前輸入的數(shù)據(jù)依次左移一個數(shù)字位置。</p><p> 密碼清除:按下清除鍵可清除前面所有的輸入值,清除成為“0000”。</p><p> 密碼更改:按下更改鍵可將目前數(shù)據(jù)設(shè)定為新的密碼。</p><p> 密碼上鎖:按下上鎖鍵可將密碼鎖上
5、鎖。</p><p> 密碼解除:按下解除鍵首先檢查輸入的密碼是否正確,密碼正確即解鎖。</p><p> 三、電子密碼鎖的結(jié)構(gòu)原理</p><p> 根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下的設(shè)計方法。3.1 電子密碼鎖的整體結(jié)構(gòu)電子密碼鎖的整體結(jié)構(gòu)如圖1所示,它包括密碼鎖輸入模塊、控制模塊和顯示模塊等。</p><p><b
6、> 原理圖:</b></p><p><b> 圖1</b></p><p> 《1》密碼鎖輸入模塊</p><p> 密碼鎖的輸入模塊由時序產(chǎn)生電路、鍵盤掃描電路、鍵盤譯碼電路和按鍵存儲電路組成。如下圖示:</p><p><b> 圖2</b></p>
7、<p><b> 時序產(chǎn)生電路</b></p><p> 產(chǎn)生電路中使用的三種不同頻率的工作脈沖波形,即系統(tǒng)時鐘脈沖、彈跳消除取樣信號和鍵盤掃描信號。</p><p><b> 鍵盤掃描電路</b></p><p> 掃描電路的作用是提供鍵盤掃描信號,掃描信號變化順序依次是1110—1101—1011—0
8、111—1110.-----依序地周而復(fù)始。</p><p><b> c.鍵盤譯碼電路</b></p><p> 上述鍵盤中的按鍵分為數(shù)字按鍵和文字按鍵,每一個按鍵可能負責(zé)不同的功能,例如清除鍵、上鎖鍵和解鎖鍵等。數(shù)字按鍵主要是用來輸入數(shù)字的,但是鍵盤所產(chǎn)生的輸出是無法直接拿來用作密碼鎖控制電路的輸入的;另外,不同的按鍵具有不同的功能,所以必須由鍵盤譯碼電路來規(guī)
9、劃每個按鍵的輸出形式,以便執(zhí)行相應(yīng)的動作。</p><p><b> 按鍵存儲電路</b></p><p> 因為每一次掃描會產(chǎn)生新的按鍵數(shù)據(jù),可能會覆蓋前面的數(shù)據(jù),所以需要一個按鍵存儲電路。將整個鍵盤掃描完畢后的結(jié)果記錄下來。</p><p> 按鍵位置與數(shù)碼關(guān)系(表)圖3</p><p> 圖4所示是密碼鎖輸
10、入模塊的仿真波形</p><p> 《2》密碼鎖控制模塊</p><p> 密碼鎖的控制電路是整個電路的控制中心,主要完成對數(shù)字按鍵輸入和功能按鍵輸入的響應(yīng)控制。</p><p> a.?dāng)?shù)字按鍵輸入的響應(yīng)控制</p><p> 如果按下數(shù)字鍵,第一個數(shù)字會從顯示器的最右端開始顯示,此后每新按下一個數(shù)字時,顯示器上的數(shù)字必須左移一位,一
11、邊將新的數(shù)字顯示出來。</p><p> 假如要更改輸入的數(shù)字,可以按倒退按鍵來清除前一個輸入的數(shù)字,或者按清除鍵清除所有輸入的數(shù)字,再重新輸入四位數(shù)。</p><p> 由于這里設(shè)計的是一個四位的電子密碼鎖,所以當(dāng)輸入的數(shù)字鍵超過四個時,電路不予理會,而且不再顯示第四個以后的數(shù)字。</p><p> b.功能按鍵輸入響應(yīng)控制</p><p
12、> 清除鍵:清除所有的輸入數(shù)字,即做歸零動作。</p><p> 上鎖鍵:按下此鍵時可將密碼鎖的門上鎖(上鎖前必須先設(shè)定一個四位的電子密碼)。</p><p> 解除鍵:按下此建輝檢查輸入的密碼是否正確,若密碼正確無誤則解鎖。</p><p> 圖4所示是密碼鎖控制模塊的仿真波形</p><p> 《3》密碼鎖譯碼模塊:本電
13、子密碼鎖的顯示模塊比較簡單,其作用是將控制模塊的BCD碼輸出轉(zhuǎn)換為7段顯示編碼,然后驅(qū)動數(shù)碼管,其仿真波形如圖6所示。</p><p> 電子密碼鎖的整合和驗證要完成電子密碼鎖的設(shè)計,還必須將上述三個功能模塊進行整合。其整合電路圖如圖1所示。電子密碼鎖整個系統(tǒng)的仿真如下圖示:</p><p><b> 四、設(shè)計的心得體會</b></p><
14、p> 此次的設(shè)計是參考了《EDA技術(shù)實驗與課程設(shè)計》里的程序,不過由于程序里面出現(xiàn)了不少的語法錯誤,使得在編譯時出現(xiàn)了20多個錯誤,不過在看過書后,細心地檢查過程序后方能糾正過來。在糾正的過程中獲益良多。 在EDA軟件平臺上,用硬件描述語言VHDL完成設(shè)計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。感覺EDA還是很有研究價值的,
15、能大大的減少設(shè)計者的工作量。</p><p> 從編寫程序到完成此次課程設(shè)計,親自操作軟件起來從生硬到熟練,現(xiàn)在能較嫻熟的運用QuartusⅡ。</p><p><b> 附:VHDL源程序</b></p><p><b> 密碼鎖輸入模塊</b></p><p> LIBRARY IEEE
16、 ; </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY SR IS</p><p>
17、 PORT(CLK_1K: IN STD_LOGIC;</p><p> KEY_IN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);&
18、lt;/p><p> FLAG_N: OUT STD_LOGIC;</p><p> FLAG_F: OUT STD_LOGIC;</p><p> CQD: OUT STD_LOGIC;</p><p> KSEL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CSR:
19、 OUT STD_LOGIC_VECTOR(1 DOWNTO 0));</p><p><b> END SR;</b></p><p> ARCHITECTURE ONE OF SR IS</p><p> SIGNAL C_QD: STD_LOGIC;</p><p> SIGNAL C_SR: STD_LO
20、GIC_VECTOR(1 DOWNTO 0); </p><p> SIGNAL N,F: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SIGNAL FN,FF: STD_LOGIC;</p><p> SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>
21、 SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0);</p><p> SIGNAL C: STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p><b> BEGIN </b></p><p> DATA_N<=N;</p><p> DATA_F<
22、=F;</p><p> FLAG_N<=FN;</p><p> FLAG_F<=FF;</p><p> CQD<=C_QD;</p><p> CSR<=C_SR;</p><p> KSEL<=SEL;</p><p> C(0)<=KEY
23、_IN(0);</p><p> C(1)<=KEY_IN(1);</p><p> C(2)<=KEY_IN(2);</p><p> COUNTER: BLOCK IS</p><p><b> BEGIN </b></p><p> PROCESS(CLK_1K)IS
24、</p><p><b> BEGIN</b></p><p> IF(CLK_1K'EVENT AND CLK_1K='1')THEN</p><p><b> Q<=Q+1;</b></p><p><b> END IF;</b>&l
25、t;/p><p> C_QD<=Q(3);</p><p> C_SR<=Q(5 DOWNTO 4);</p><p> END PROCESS;</p><p> SEL<="1110" WHEN C_SR=0 ELSE</p><p> "1101"
26、WHEN C_SR=1 ELSE</p><p> "1011" WHEN C_SR=2 ELSE</p><p> "0111" WHEN C_SR=3 ELSE</p><p><b> "1111";</b></p><p> END BLOCK
27、COUNTER;</p><p> KEY_DECODER: BLOCK</p><p> SIGNAL Z: STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b> BEGIN </b></p><p> PROCESS(C_QD)</p><p><
28、b> BEGIN</b></p><p> Z<=C_SR&C;</p><p> IF(C_QD'EVENT AND C_QD='1') THEN</p><p><b> CASE Z IS</b></p><p> WHEN"11101&q
29、uot;=>N<="0000";</p><p> WHEN"00011"=>N<="0001";</p><p> WHEN"00101"=>N<="0010";</p><p> WHEN"00110"
30、=>N<="0011";</p><p> WHEN"01011"=>N<="0100";</p><p> WHEN"01101"=>N<="0101";</p><p> WHEN"01110"=>
31、;N<="0110";</p><p> WHEN"10011"=>N<="0111";</p><p> WHEN"10101"=>N<="1000";</p><p> WHEN"10110"=>N&l
32、t;="1001";</p><p> WHEN OTHERS=>N<="1111";</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> IF C_QD'EVE
33、NT AND C_QD='1' THEN</p><p> CASE Z IS </p><p> WHEN"11011"=>F<="0100";</p><p> WHEN"11110"=>F<="0001";</p><
34、;p> WHEN OTHERS=>F<="1000";</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> FN<=NOT(N(3)
35、AND N(2)AND N(1)AND N(0));</p><p> FF<=F(2) OR F(0);</p><p> END BLOCK KEY_DECODER;</p><p> END ARCHITECTURE ONE;</p><p><b> 密碼鎖控制模塊</b></p>&
36、lt;p> LIBRARY IEEE ; </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CTRL
37、IS</p><p> PORT (DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> FLAG_N: IN STD_LOGIC;</p><p> FLAG_F: IN STD_LOGI
38、C;</p><p> MIMAIN: BUFFER STD_LOGIC;</p><p> SETIN: BUFFER STD_LOGIC;</p><p> OLD: BUFFER STD_LOGIC;</p><p> CQD: IN STD_LOGIC;</p><p> ENLOCK: OUT ST
39、D_LOGIC;</p><p> DATA_BCD: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));</p><p> END ENTITY CTRL;</p><p> ARCHITECTURE ONE OF CTRL IS</p><p> SIGNAL ACC,REG: STD_LOGIC_VECTOR
40、(15 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CQD,FLAG_F) IS </p><p><b> BEGIN </b></p><p> IF CQD'EVENT AND CQD='0' THEN
41、</p><p> IF FLAG_F='1' THEN </p><p> IF(DATA_F="0100") THEN </p><p> ACC<="1111111111111111";</p><p> MIMAIN<='0'; SETIN&l
42、t;='0'; OLD<='0';</p><p> ELSIF(DATA_F="0001") THEN</p><p> IF(MIMAIN='0' AND SETIN='0') THEN</p><p> CASE ACC(7 DOWNTO 0) IS</p&g
43、t;<p> WHEN"00010001"=>ENLOCK<='1';</p><p> WHEN"10011001"=>MIMAIN<='1'; ACC<="1111111111111111";</p><p> WHEN"0101010
44、1"=>SETIN<='1'; ACC<="1111111111111111"; </p><p><b> OLD<='1';</b></p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;
45、</b></p><p> ELSIF(MIMAIN='1') THEN </p><p> IF ACC=REG THEN</p><p> ENLOCK<='0';</p><p> MIMAIN<='0';</p><p><b
46、> ELSE</b></p><p> MIMAIN<='0';</p><p><b> END IF;</b></p><p> ELSIF(SETIN='1') THEN</p><p> IF(OLD='1') THEN</p
47、><p> IF(ACC=REG) THEN</p><p><b> OLD<='0';</b></p><p><b> ELSE</b></p><p> SETIN<='0';</p><p><b> OL
48、D<='0';</b></p><p><b> END IF;</b></p><p><b> ELSE</b></p><p> IF(ACC<"1001100110011001") THEN</p><p><b>
49、 REG<=ACC;</b></p><p> SETIN<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b><
50、/p><p><b> END IF;</b></p><p> ELSIF FLAG_N='1' THEN </p><p> ACC<=ACC(11 DOWNTO 0)&DATA_N;</p><p><b> END IF;</b></p>&l
51、t;p><b> END IF;</b></p><p> END PROCESS;</p><p> DATA_BCD<=ACC;</p><p> END ARCHITECTURE ONE;</p><p><b> 密碼鎖譯碼模塊</b></p><p
52、> LIBRARY IEEE ; </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY YM IS</p><p> PORT(DATA_BCD: IN STD_LOGIC_VECTO
53、R(3 DOWNTO 0);</p><p> DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b> END YM;</b></p><p> ARCHITECTURE ONE OF YM IS</p><p><b> BEGIN</b&g
54、t;</p><p> PROCESS(DATA_BCD)</p><p><b> BEGIN</b></p><p> CASE DATA_BCD IS</p><p> WHEN"0000"=>DOUT7<="0111111";</p>&l
55、t;p> WHEN"0001"=>DOUT7<="0000110";</p><p> WHEN"0010"=>DOUT7<="1011011";</p><p> WHEN"0011"=>DOUT7<="1001111";
56、</p><p> WHEN"0100"=>DOUT7<="1100110";</p><p> WHEN"0101"=>DOUT7<="1101101";</p><p> WHEN"0110"=>DOUT7<="
57、1111101";</p><p> WHEN"0111"=>DOUT7<="0000111";</p><p> WHEN"1000"=>DOUT7<="1111111";</p><p> WHEN"1001"=>DO
58、UT7<="1101111";</p><p> WHEN OTHERS=>DOUT7<="0000000";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END ARCHITECTU
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計---電子密碼鎖
- eda課程設(shè)計—電子密碼鎖
- eda電子密碼鎖課程設(shè)計
- 電子密碼鎖——eda課程設(shè)計
- eda電子密碼鎖課程設(shè)計
- eda課程設(shè)計—電子密碼鎖
- eda課程設(shè)計--電子密碼鎖
- eda課程設(shè)計報告--電子密碼鎖
- eda課程設(shè)計報告--電子密碼鎖
- 課程設(shè)計報告-基于vhdl的電子密碼鎖設(shè)計
- eda課程設(shè)計報告-- 電子密碼鎖設(shè)計
- eda課程設(shè)計報告---電子密碼鎖設(shè)計
- 基于vhdl電子密碼鎖設(shè)計
- eda綜合課程設(shè)計---電子密碼鎖的設(shè)計
- 電子密碼鎖eda技術(shù)課程設(shè)計
- 電子密碼鎖課程設(shè)計--基于數(shù)字電路的電子密碼鎖
- 電子密碼鎖課程設(shè)計--基于數(shù)字電路的電子密碼鎖
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
評論
0/150
提交評論