版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 隨著電子技術(shù)的發(fā)展,具有防盜報(bào)警等功能的電子密碼鎖代替密碼量少、安全性差的機(jī)械式密碼鎖已是必然趨勢。電子密碼鎖與普通機(jī)械鎖相比,具有許多獨(dú)特的優(yōu)點(diǎn):保密性好,防盜性強(qiáng),可以不用鑰匙,記住密碼即可開鎖等。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件,其編碼器與解碼器的生成為軟件方式。在實(shí)際應(yīng)用中,由于程序容易
2、跑飛,系統(tǒng)的可靠性能較差。</p><p> 本文主要闡述了一種基于現(xiàn)場可編程門陣列FPGA器件的電子密碼鎖的設(shè)計(jì)方法。用FPGA器件構(gòu)造系統(tǒng),所有算法完全由硬件電路來實(shí)現(xiàn),使得系統(tǒng)的工作可靠性大為提高。由于FPGA具有現(xiàn)場可編程功能,當(dāng)設(shè)計(jì)需要更改時(shí),只需更改FPGA中的控制和接口電路,利用EDA工具將更新后的設(shè)計(jì)下載到FPGA中即可,無需更改外部電路的設(shè)計(jì),大大提高了設(shè)計(jì)的效率。因此,采用FPGA開發(fā)的數(shù)字
3、系統(tǒng),不僅具有很高的工作可靠性,而且升級也極其方便。</p><p> 本文采用EDA技術(shù),利用Quartus II工作平臺(tái)和硬件描述語言,設(shè)計(jì)了一種電子密碼鎖,并通過一片F(xiàn)PGA芯片實(shí)現(xiàn)。</p><p> 關(guān)鍵詞:電子密碼鎖;FPGA;硬件描述語言;EDA</p><p><b> Abstract</b></p>&l
4、t;p> With the development of electronic technology, electronic password lock with burglar alarm and other functions replacing less password and poor security mechanical code lock is an inevitable trend. compared elec
5、tronic password lock with ordinary mechanical locks, it has many unique advantages : confidentiality, and security in nature, do not use the key, remember password can unlock it etc .Most electronic password locks we use
6、d now is based upon SCM technology ,SCM is its mainly device ,and the</p><p> This paper mainly expatiates a design method of electronic password lock based upon Field Programmable Gate Array device. We use
7、 FPGA devices to construct system , all of the algorithm entirely achieved by the hardware circuit , because of FPGA has the function of ISP , when the design needs to be changed We only need to change the control and in
8、terface circuit of FPGA,EDA tools are used to download the updated design to FPGA without changing the design of the external circuit , this greatly enh</p><p> Key words: electronic password lock;FPGA;hard
9、ware description language;EDA </p><p><b> 目 錄</b></p><p> 1 緒論 (標(biāo)題部分的格式很多不對,檢查修改)1</p><p> 1.1 本課題研究的國內(nèi)外現(xiàn)狀及其發(fā)展2</p><p> 1.2 本課題研究的目的和意義2</p>&
10、lt;p> 2 關(guān)鍵技術(shù)簡介4</p><p> 2.1 FPGA硬件設(shè)計(jì)描述4</p><p> 2.1.1FPGA的設(shè)計(jì)流程4</p><p> 2.1.2VHDL語言的基本結(jié)構(gòu)6</p><p> 2.1.3自上而下(TOP DOWN)的設(shè)計(jì)方法7</p><p> 2.2 設(shè)計(jì)
11、語言、仿真平臺(tái)與開發(fā)系統(tǒng)8</p><p> 2.3 用QuartusⅡ進(jìn)行系統(tǒng)開發(fā)的設(shè)計(jì)流程8</p><p> 3 系統(tǒng)總體設(shè)計(jì)9</p><p> 3.1 電子密碼鎖設(shè)計(jì)的原理9</p><p> 3.2 方案的提出10</p><p> 3.3 系統(tǒng)設(shè)計(jì)要求11</p>&l
12、t;p> 3.4 系統(tǒng)設(shè)計(jì)描述11</p><p> 3.5 各功能模塊描述12</p><p> 3.6 系統(tǒng)流程13</p><p> 4 系統(tǒng)詳細(xì)設(shè)計(jì)15</p><p> 4.1 輸入模塊15</p><p> 4.1.1時(shí)序產(chǎn)生電路15</p><p>
13、 4.1.2按鍵消抖電路15</p><p> 4.1.3鍵盤掃描電路17</p><p> 4.1.4鍵盤譯碼電路19</p><p> 4.1.5鍵盤輸入模塊的實(shí)現(xiàn)20</p><p> 4.2 電子密碼鎖控制模塊21</p><p> 4.2.1控制模塊的描述21</p&g
14、t;<p> 4.2.2控制模塊的狀態(tài)圖與ASM圖21</p><p> 4.2.3控制模塊的實(shí)現(xiàn)23</p><p> 4.3 電子密碼鎖顯示模塊24</p><p> 4.3.1數(shù)碼管顯示原理24</p><p> 4.3.2譯碼顯示的實(shí)現(xiàn)27</p><p><b&
15、gt; 5 系統(tǒng)仿真28</b></p><p> 5.1 系統(tǒng)的有關(guān)編譯與仿真28</p><p> 5.2 去抖模塊的仿真28</p><p> 5.3 密碼鎖輸入電路的仿真29</p><p> 5.4 密碼鎖控制電路的仿真30</p><p> 5.5 系統(tǒng)整體仿真31<
16、;/p><p> 5.6 數(shù)碼管譯碼器仿真32</p><p><b> 6 .結(jié)束語33</b></p><p><b> 致謝34</b></p><p><b> 參考文獻(xiàn)35</b></p><p><b> 緒論 <
17、;/b></p><p> 隨著大規(guī)模和超大規(guī)模可編程器件在FPGA技術(shù)支持下的廣泛應(yīng)用,使現(xiàn)代化</p><p> 設(shè)計(jì)計(jì)算已進(jìn)入一個(gè)全新的階段,從設(shè)計(jì)思想、設(shè)計(jì)工具一直到實(shí)現(xiàn)方式都發(fā)生了諸多變化。</p><p> 在FPGA技術(shù)中,最為引人矚目的是以現(xiàn)代電子技術(shù)為特征的邏輯設(shè)計(jì)仿真測試技術(shù)。改技術(shù)只需通過計(jì)算機(jī)就能對所設(shè)計(jì)的電子系統(tǒng)從不同層次的性能
18、特點(diǎn)上進(jìn)行一些列準(zhǔn)確測試和仿真;在完成實(shí)際系統(tǒng)的設(shè)計(jì)后,還能對系統(tǒng)上的目標(biāo)器件進(jìn)行邊界掃描測試。隨著技術(shù)的發(fā)展,科技的日趨夜新電子密碼鎖種類比較多,發(fā)展更是快。電子密碼鎖系統(tǒng)主要由電子鎖體、電子密匙等部分組成,一把電子密匙里能存放多組開鎖密碼,用戶在使用過程中能夠隨時(shí)修改開鎖密碼,更新或配制鑰匙里開鎖密碼。一把電子鎖可配制多把鑰匙。下面就是現(xiàn)在主流電子密碼鎖。</p><p> 遙控式電子防盜鎖目前常見的遙控式
19、電子防盜鎖主要有光遙控和無線電遙控兩類。鍵盤式電子密碼鎖從目前的技術(shù)水平和市場認(rèn)可程度看,使用最為廣泛的是鍵盤式電子密碼鎖,該產(chǎn)品主要應(yīng)用于保險(xiǎn)箱、保險(xiǎn)柜和金庫,還有一部分應(yīng)用于保管箱和運(yùn)鈔車??ㄊ诫娮臃辣I鎖使用各種“卡”作為鑰匙的電子防盜鎖是當(dāng)前最為活躍的產(chǎn)品,無論卡的種類如何多種多樣,按照輸入卡的操作方式,都可分為接觸式卡和非接觸式卡兩大類。生物特征防盜鎖人的某些與生俱來的個(gè)性特征(如手、眼睛、聲音的特征)幾乎不可重復(fù),作為“鑰匙”
20、就是唯一的(除非被逼迫或傷害),因此,利用生物特征做密碼的電子防盜鎖,也特別適合金融業(yè)注重“驗(yàn)明正身”的行業(yè)特點(diǎn)。</p><p> 本文介紹的基于FPGA的電子密碼鎖電路具有顯示接口,顯示時(shí)可以是明文也可以是密文星號。由于FPGA具有ISP功能,當(dāng)用戶需要更改時(shí),如增加口令位數(shù)和更改口令權(quán)限管理時(shí),只需更改FPGA中的控制和接口電路,利用EDA工具將更新后的設(shè)計(jì)下載到FPGA中即可,無需更改外部電路,這就大大
21、提高了設(shè)計(jì)效率。而且采用FPGA設(shè)計(jì)的電子密碼鎖與單片機(jī)控制的電子密碼鎖相比結(jié)構(gòu)簡單、具有更高的系統(tǒng)保密性和可靠性。這種基于FPGA的電子密碼鎖可以應(yīng)用在辦公室、倉庫、賓館等人員經(jīng)常變動(dòng)的場所。 </p><p> FPGA技術(shù)是現(xiàn)代電子工程領(lǐng)域的一門新技術(shù),提供了基于計(jì)算機(jī)和信息技術(shù)的電路系統(tǒng)設(shè)計(jì)的方法。它是從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測試(CAT)和計(jì)算機(jī)輔助工程(CAE
22、)等技術(shù)發(fā)展而來的。設(shè)計(jì)者只需要對系統(tǒng)功能進(jìn)行描述,在FPGA工具的幫助下即可完成系統(tǒng)設(shè)計(jì),從而為電子產(chǎn)品的設(shè)計(jì)和開發(fā)縮短了實(shí)踐降低了成本,提高了系統(tǒng)的可靠性。</p><p> 本課題研究的國內(nèi)外現(xiàn)狀及其發(fā)展</p><p> 隨著人們生活水平的提高和安全意識的加強(qiáng),對安全的要求也就越來越高。鎖自古以來就是把守護(hù)門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制
23、鎖者長期以來研制的主題。隨著電子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運(yùn)而生,電子密碼鎖就是其中之一。據(jù)有關(guān)資料介紹,電子密碼鎖的研究從20世紀(jì)30年代就開始了,在一些特殊場所早就有所應(yīng)用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機(jī)械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多
24、的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實(shí)用的還是按鍵式電子密碼鎖。</p><p> 20世紀(jì)80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,所以對它的研究一直沒有明顯進(jìn)展。</p><p> 目前,在西方發(fā)達(dá)國家,電子密
25、碼鎖技術(shù)相對先進(jìn),種類齊全,電子密碼鎖已被廣泛應(yīng)用于智能門禁系統(tǒng)中,通過多種更加安全,更加可靠的技術(shù)實(shí)現(xiàn)大門的管理。在我國電子鎖整體水平尚處于國際上70年代左右,電子密碼鎖的成本還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進(jìn)國際先進(jìn)水平,現(xiàn)國內(nèi)有幾個(gè)廠生產(chǎn)供應(yīng)市場。但國內(nèi)自行研制開發(fā)的電子鎖,其市場結(jié)構(gòu)尚未形成,應(yīng)用還不廣泛。國內(nèi)的不少企業(yè)也引進(jìn)了世界上先進(jìn)的技術(shù),發(fā)展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我
26、國也能得到廣泛應(yīng)用。</p><p> 目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件,其編碼器與解碼器的生成為軟件方式。在實(shí)際應(yīng)用中,由于程序容易跑飛,系統(tǒng)的可靠性能較差。基于現(xiàn)場可編程邏輯門陣列FPGA器件的電子密碼鎖,用FPGA器件構(gòu)造系統(tǒng),所有算法完全由硬件電路來實(shí)現(xiàn),使得系統(tǒng)的工作可靠性大為提高。由于FPGA具有現(xiàn)場可編程功能,當(dāng)設(shè)計(jì)需要更改時(shí),只需更改FPGA中的控制和接口電路,利用
27、EDA工具將更新后的設(shè)計(jì)下載到FPGA中即可,無需更改外部電路的設(shè)計(jì),大大提高了設(shè)計(jì)的效率。</p><p> 本課題研究的目的和意義</p><p> 為了使現(xiàn)在的電子密碼鎖更能智能化的管理,讓人們更能方便的使用,讓其具有更高的安全性和經(jīng)濟(jì)性,針對基于單片機(jī)的電子密碼鎖的不足之處,本文采用EDA技術(shù),利用QuartusⅡ工作平臺(tái)硬件描述語言,設(shè)計(jì)一種電子密碼鎖,并通過一片F(xiàn)PGA芯片
28、實(shí)現(xiàn)。采用VHDL語言使用自頂向下的方法對系統(tǒng)進(jìn)行了描述,并在FPGA芯片CycloneⅡ上實(shí)現(xiàn)。設(shè)計(jì)充分利用了FPGA的資源可編程特性,可高效率的對系統(tǒng)進(jìn)行升級與改進(jìn)。設(shè)計(jì)的密碼鎖可設(shè)置任意密碼,比一般的四位密碼鎖具有更高的安全可靠性,因此,采用FPGA 開發(fā)的數(shù)字系統(tǒng),不僅具有很高的工作可靠性,其升級與改進(jìn)也極其方便,應(yīng)用前景十分良好。</p><p><b> 關(guān)鍵技術(shù)簡介</b>&
29、lt;/p><p> FPGA硬件設(shè)計(jì)描述</p><p><b> FPGA的設(shè)計(jì)流程</b></p><p> FPGA設(shè)計(jì)流程包括系統(tǒng)設(shè)計(jì)和設(shè)計(jì)實(shí)現(xiàn),系統(tǒng)方案完成之后即進(jìn)入設(shè)計(jì)實(shí)現(xiàn)階段的工作,他以系統(tǒng)方案為輸入,進(jìn)行RTL級描述、功能仿真(RTL級仿真)、邏輯綜合、布線前門級仿真、適配(布局布線)、時(shí)序仿真(布線后門級仿真)、時(shí)序分析、
30、器件編程、系統(tǒng)驗(yàn)證一系列流程的處理才能完成FPGA芯片的設(shè)計(jì),其設(shè)計(jì)流程如圖2.1所示。需要說明的是,如果仿真驗(yàn)證不對或者某一步有錯(cuò),就要返回修改。有必要檢查和修改的地方有RTL級描述、系統(tǒng)方案、約束和測試激勵(lì)等。一般情況下,對RTL級的描述即原理圖或者HDL設(shè)計(jì)代碼的修改最多也最有效。修改后要重新走一遍流程。有時(shí)要反復(fù)修改,經(jīng)過多次這樣的迭代才能完成最后的設(shè)計(jì)。</p><p> 在理論上,把VLSI(Ult
31、ra Large Scale Integration,超大規(guī)模集成電路)的設(shè)計(jì)描述為6個(gè)層次[1,2],即系統(tǒng)級(系統(tǒng)功能、參數(shù)定義)、算法級(描述系統(tǒng)功能行為)、RTL級、門級(邏輯門)、電路級(晶體管)、版圖級(物理工藝)。每一級又都分3個(gè)側(cè)面來描述:行為域描述、結(jié)構(gòu)域描述、物理域描述。但在實(shí)際情況中往往把算法級行為域描述或者RTL級行為域描述都稱為行為級描述。</p><p> 圖2.1 系統(tǒng)設(shè)計(jì)流程(左
32、邊的箭頭線太短了,最好和右邊對稱)</p><p> 對于FPGA的設(shè)計(jì)而言,不需要關(guān)心電路級和版圖級,只考慮系統(tǒng)級、算法級、RTL級、門級4個(gè)層次的行為域描述和結(jié)構(gòu)域描述即可。上述的FPGA系統(tǒng)設(shè)計(jì)中的系統(tǒng)實(shí)際上是指系統(tǒng)級和算法級,而“RTL級描述”主要是指RTL級行為域的描述。在門級,由綜合工具產(chǎn)生的門級網(wǎng)表來描述。</p><p> FPGA的設(shè)計(jì)流程和相關(guān)概念說明如下:<
33、/p><p> 庫:指FPGA器件廠家提供的工藝庫和EDA工具提供的標(biāo)準(zhǔn)通用庫(如IEEE庫等)。工藝庫中有各種宏功能模塊和基本功能單元,含有他們的行為級模型、門級模型、布線模型等信息。</p><p> 需要說明的是,系統(tǒng)行為仿真和RTL級功能仿真有時(shí)要用到某種功能模塊,例如RAM模型。對于RAM模型的控制信號,不同的廠家其規(guī)定不一定相同,如寫使能信號,有的廠家規(guī)定高電平有效,有的廠家規(guī)
34、定低電平有效。其實(shí),在廠家提供的工藝庫中, RAM模型有行為級模型、門級模型、版圖級模型等。而行為級模型只是規(guī)定其功能,無延時(shí)信息,跟工藝無關(guān),但門級模型和版圖級模型跟工藝密切相關(guān)。解決的方法是系統(tǒng)行為仿真時(shí)可以使用高級語言自己建立一個(gè)模型或者調(diào)用廠家?guī)熘刑峁┑男袨榧壞P停δ芊抡鏁r(shí)調(diào)用行為級模型,時(shí)序仿真時(shí)調(diào)用門級模型。</p><p> 測試激勵(lì):指測試文件,他調(diào)用FPGA設(shè)計(jì)的頂層模塊,同時(shí)產(chǎn)生頂層模塊需
35、要的輸入信號,稱之為激勵(lì)信號,使用行為描述即可,不要求可綜合。仿真時(shí)他作為最頂層的文件,從而可以觀察FPGA的輸出是否正確。所有的仿真都可使用同一個(gè)測試激勵(lì)。</p><p> 約束:指對邏輯綜合和布局布線時(shí)的約束。包括器件型號、速度、面積、功耗、引腳分配、時(shí)鐘網(wǎng)絡(luò)資源的分配、模塊在器件中的定位等約束。一部分在軟件中設(shè)置,一部分以約束文件的形式存在。</p><p> VHDL語言的基
36、本結(jié)構(gòu)</p><p> VHDL(Very high speed integrated circuit Hardware Description Language)硬件描述語言從高于邏輯級的抽象層次上描述硬件的功能、信號連接關(guān)系及定時(shí)關(guān)系。VHDL的設(shè)計(jì)流程如2.2圖。</p><p> 圖2.2 VHDL的設(shè)計(jì)流程</p><p> 一個(gè)完整的VHDL語
37、言程序通常包含實(shí)體(Entity)、結(jié)構(gòu)體(Architecture)、配置(Configuration)、包集合(Package)和庫(Library)五個(gè)部分。</p><p><b> 1、實(shí)體</b></p><p> 實(shí)體說明部分是說明一個(gè)器件的外觀視圖,即從器件外部看到的器件外貌,其中包括器件的端口,同時(shí)也可以定義參數(shù),并把參數(shù)從外部傳入模塊內(nèi)部,主要
38、用于描述所設(shè)計(jì)的系統(tǒng)的外部接口。</p><p><b> 2、結(jié)構(gòu)體</b></p><p> 結(jié)構(gòu)體是描述一個(gè)器件的內(nèi)部視圖,是次級設(shè)計(jì)單元。在其對應(yīng)的初級設(shè)計(jì)單元實(shí)體說明被編譯并且被并入設(shè)計(jì)庫之后,它就可以單獨(dú)地被并入該設(shè)計(jì)庫中。結(jié)構(gòu)體描述一個(gè)設(shè)計(jì)的結(jié)構(gòu)和行為,把一個(gè)設(shè)計(jì)的輸入和輸出之間的關(guān)系建立起來。一個(gè)設(shè)計(jì)可以有多個(gè)結(jié)構(gòu),分別代表該器件的不同實(shí)現(xiàn)方案。根
39、據(jù)對一個(gè)器件設(shè)計(jì)由抽象到具體的過程,可把結(jié)構(gòu)體的描述方式分為三個(gè)層次:行為描述方式、寄存器傳輸描述方式(RTL)和結(jié)構(gòu)描述方式。</p><p><b> 3、庫</b></p><p> 庫是經(jīng)編譯后的實(shí)體、結(jié)構(gòu)體、包集合和配置的集合。使用庫時(shí)總要在設(shè)計(jì)單元的前面予以說明。一旦說明,庫中的數(shù)據(jù)對該設(shè)計(jì)單元就是可見的,從而共享已經(jīng)編譯過的設(shè)計(jì)結(jié)果。VHDL語言中存
40、在的庫大致有IEEE庫、STD庫、ASIC廠家提供的庫、用戶定義的庫和現(xiàn)行作業(yè)庫。</p><p><b> 4、包集合</b></p><p> 包集合屬庫中的一個(gè)層次,是一種可編譯的源設(shè)計(jì)單元。它收集了VHDL語言中所用到的信號、常數(shù)、數(shù)據(jù)類型、函數(shù)和過程的說明等。用戶可以構(gòu)造一個(gè)包集合,用以存放常數(shù)、數(shù)據(jù)類型、函數(shù)和過程,該包集合經(jīng)編譯后便自動(dòng)加到WORK庫
41、中。使用庫中的包集合時(shí),在打開庫后要用USE語句說明,例如:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD-LOGIC-1164.ALL;</p><p><b> 5、配置</b></p><p> 配置語句從一個(gè)庫中為一個(gè)實(shí)體選擇一個(gè)特定的結(jié)構(gòu)體,是一種放在庫中的被
42、編輯單元,并有相應(yīng)的配置名。通過配置技術(shù),可以選取多種不同的結(jié)構(gòu)體,以便對一個(gè)設(shè)計(jì)任務(wù)采用仿真工具進(jìn)行多種配置的性能實(shí)驗(yàn)。另外,配置說明和規(guī)定的特性還可以用在多層描述中。</p><p> 自上而下(TOP DOWN)的設(shè)計(jì)方法</p><p> 自上而下的設(shè)計(jì)方法是現(xiàn)代電子系統(tǒng)的新型設(shè)計(jì)策略,它從設(shè)計(jì)的總體要求出發(fā),自上而下地逐步從系統(tǒng)數(shù)學(xué)模型的設(shè)計(jì)與仿真,到數(shù)據(jù)流級的設(shè)計(jì)與仿真,選
43、擇系統(tǒng)設(shè)計(jì)方案,最后完成系統(tǒng)硬件的整體設(shè)計(jì)。VHDL的自上而下的設(shè)計(jì)方法不僅體現(xiàn)在它的基本結(jié)構(gòu)由描述外視特性的實(shí)體與描述內(nèi)視行為和結(jié)構(gòu)的結(jié)構(gòu)體構(gòu)成,同一實(shí)體可以有一個(gè)以上的結(jié)構(gòu)體,以便設(shè)計(jì)方案的選擇,還體現(xiàn)在系統(tǒng)硬件設(shè)計(jì)過程的三個(gè)層次:行為級描述與仿真、RTL級描述與仿真、邏輯綜合與門級仿真。邏輯綜合與所使用的邏輯綜合工具有關(guān),由邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的EDIF(Electronic Design Interchange
44、 Format)網(wǎng)表。EDIF網(wǎng)表是一種標(biāo)準(zhǔn)接口,它是一個(gè)以ASCII字符為基礎(chǔ)的中間互換格式,被大多數(shù)供應(yīng)商提供的CAE/CAD系統(tǒng)所支持。半導(dǎo)體制造廠基于這種網(wǎng)表生成ASIC芯片的制造工藝,F(xiàn)PGA則基于這種網(wǎng)表生成用以配置FPGA芯片的位流文件。這三種仿真貫穿系統(tǒng)硬件設(shè)計(jì)的全過程,從而可以在系統(tǒng)設(shè)計(jì)早期發(fā)現(xiàn)設(shè)計(jì)中存在的問題,與傳統(tǒng)的自下而上的后期仿真相比大大縮短系統(tǒng)的設(shè)計(jì)周期,并且利于方案的綜合評價(jià)與選取。這是</p>
45、<p> 設(shè)計(jì)語言、仿真平臺(tái)與開發(fā)系統(tǒng)</p><p><b> ?。?)硬件描述語言</b></p><p> 電子密碼鎖的設(shè)計(jì)采用了功能強(qiáng)大的通用硬件描述語言VHDL,它具有很強(qiáng)的行為描述能力,設(shè)計(jì)方法靈活,可以支持自頂向下(Top Down)和基于庫(Library-Based)的設(shè)計(jì)方法,硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān),能輕易地改變設(shè)
46、計(jì)的規(guī)模和結(jié)構(gòu),標(biāo)準(zhǔn)、規(guī)范易于共享與復(fù)用,易于向ASIC移植。</p><p> (2)QuartusⅡ軟件開發(fā)工具</p><p> 本設(shè)計(jì)采用的軟件開發(fā)工具是美國Altera公司的QuartusⅡ,它支持多種設(shè)計(jì)輸入方法,包括原理圖輸入、文本輸入(如AHDL,VHDL,Verilog HDL文本文件)和第三方EDA工具輸入文件(如EDIF,HDL,VQM文件),利用該工具所配備的編
47、輯、編譯、仿真綜合、芯片編程等功能,可將設(shè)計(jì)電路圖或電路描述程序變成基本的邏輯單元寫入到可編程的芯片中(如FPGA芯片),做成ASIC芯片。</p><p> ?。?)EDA實(shí)驗(yàn)開發(fā)系統(tǒng)</p><p> 設(shè)計(jì)中采用的EDA實(shí)驗(yàn)開發(fā)系統(tǒng),主要用于提供可編程邏輯器件的下載電路及EDA實(shí)驗(yàn)開發(fā)的外圍資源,供硬件驗(yàn)證用。一般包括:①實(shí)驗(yàn)或開發(fā)所需的各類基本信號發(fā)生模塊;②FPGA/CPLD輸出
48、信息顯示模塊;③監(jiān)控程序模塊;④目標(biāo)芯片適配座以及上面的FPGA/CPLD目標(biāo)芯片和下載電路。</p><p> 用QuartusⅡ進(jìn)行系統(tǒng)開發(fā)的設(shè)計(jì)流程</p><p> 使用QuartusⅡ進(jìn)行電子密碼鎖設(shè)計(jì)的流程為</p><p> ?。?)編寫VHDL程序(使用VHDL File)(見附錄);</p><p> ?。?)編譯VHD
49、L程序(使用Compiler);</p><p> (3)仿真驗(yàn)證VHDL程序(使用Waveform Editor, Simulator);</p><p> ?。?)進(jìn)行芯片的時(shí)序分析(使用Timing Analyzer);</p><p> ?。?)安排芯片管腳位置(使用Floorplan Editor);</p><p> ?。?)下
50、載程序至芯片(使用Programmer)。</p><p><b> 系統(tǒng)總體設(shè)計(jì)</b></p><p> 電子密碼鎖設(shè)計(jì)的原理</p><p><b> 1、編碼總量的確定</b></p><p> 電子密碼鎖隨機(jī)開鎖成功的概率定義為:</p><p><b
51、> P=1/NT</b></p><p> 其中P為隨機(jī)開鎖成功概率,NT為密碼編碼總量。顯然要使密碼鎖保密安全性高,NT應(yīng)盡可能大,使P趨于零,但NT越大,相應(yīng)電路越復(fù)雜,密碼的記憶與操作也越麻煩。故NT應(yīng)有合理的上限和下限。</p><p> 下限NTL的選擇應(yīng)使密碼落在隨機(jī)開鎖可能成功的操作時(shí)區(qū)以外。若每一次開鎖操作時(shí)間為t,為便于做隨機(jī)試驗(yàn),將NT分為n段并
52、期望在1/n段的1/2處開鎖成功。此時(shí)</p><p><b> p=1/2n</b></p><p> 則隨機(jī)開鎖試驗(yàn)期望成功的時(shí)間為:</p><p> Tr=NT×t/2n</p><p> 假定系統(tǒng)設(shè)計(jì)不考慮誤碼輸入的保護(hù),密碼鎖在無保護(hù)的情況下使操作人員任意作隨機(jī)開鎖試驗(yàn)的時(shí)間為TEN,則:&
53、lt;/p><p> NTL=(2n×TEN t)×x,其中x為最低安全系數(shù)。即:</p><p> TEN=(NTL×t/2n)/x</p><p> 顯然若使NT>=NTL,則Tr>TEN,則使分段隨機(jī)試驗(yàn)不易成功。</p><p> 由此可得出數(shù)字密碼鎖的編碼總量設(shè)定是系統(tǒng)設(shè)計(jì)安全性、保密性
54、的首要技術(shù)指標(biāo)。一般來說,當(dāng)NT選定之后,NT的上限NTH原則上是越大越安全,但一般設(shè)計(jì)時(shí)取NTH=(10~1000)NTL較為合理。</p><p><b> 2、編碼制式的選擇</b></p><p> 編碼制式應(yīng)根據(jù)NT的大小選取,可分為如下三種:</p><p> (1)密碼的各位都可以重碼:NT1=ai;</p>
55、<p> ?。?)密碼的非相鄰位可以重碼:NT2=a(a-1)i;</p><p> ?。?)密碼的任何一位都不能重碼:NT3=a(a-1)……(a-i+1)。</p><p> 其中a為基數(shù),i為位數(shù),a和i的選取應(yīng)該滿足NT≥NTL , a=2,3,4,10,12,14,16。</p><p> 現(xiàn)在以最常用的a=10,i=6為例,可以計(jì)算出NT2
56、=0159NT 1,NT 3=0.15N T1,所以編碼制式考慮是否重碼對NT有很大影響。</p><p> 另外,相同制式下不同的基底對編碼總量NT會(huì)有影響,而且基底的選擇也會(huì)影響到硬件電路的設(shè)計(jì)。</p><p> 本文設(shè)計(jì)的密碼鎖采用十進(jìn)制編碼,密碼各位允許重碼,為簡化電路設(shè)計(jì),密碼鎖口令采用對串行脈沖計(jì)數(shù)的方式輸入。</p><p> 3、誤碼輸入的保
57、護(hù)措施</p><p> 如前所述,電子密碼鎖的設(shè)計(jì)應(yīng)考慮自身的安全保密性,由于編碼和捕捉密碼的實(shí)驗(yàn)都是隨機(jī)的,若要使P=1 NT趨近于0,必須采取誤碼輸入的保護(hù)措施。假定設(shè)定的誤碼輸入次數(shù)不超過三次,誤碼達(dá)到三次時(shí)系統(tǒng)應(yīng)關(guān)閉主控電路,拒絕大于三次的密碼輸入,并且系統(tǒng)進(jìn)入報(bào)警狀態(tài)。系統(tǒng)正常狀態(tài)的恢復(fù)可采用萬能密碼輸入或者系統(tǒng)掉電恢復(fù)。</p><p><b> 方案的提出&l
58、t;/b></p><p> 方案一:采用數(shù)字電路控制。雖然采用數(shù)字密碼鎖電路的好處是設(shè)計(jì)簡單,但是由于其是純電路實(shí)際,在系統(tǒng)運(yùn)行時(shí),延時(shí)會(huì)比較嚴(yán)重。</p><p> 方案二:通過單片機(jī)實(shí)現(xiàn),現(xiàn)在一種新的方案就是采用一種是用以AT89S51為核心的單片機(jī)控制方案。雖然有靈活的設(shè)計(jì)和豐富的IO端口,但是單片機(jī)設(shè)計(jì)的缺點(diǎn)是程序運(yùn)行時(shí)容易出現(xiàn)跑飛現(xiàn)象。</p><
59、p> 通過以上比較顯然單片機(jī)方案有較大的活動(dòng)空間,不但能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級,但是由于所學(xué)知識不能將其有效的應(yīng)用,現(xiàn)有環(huán)境不能滿足,而且單片機(jī)的密碼鎖有一定的不足之處,在運(yùn)行時(shí)程序有時(shí)會(huì)產(chǎn)生PC指針錯(cuò)誤,還有基于現(xiàn)在所學(xué)知識的應(yīng)用,所以基于以上比較提出了第三種方案。</p><p> 方案三:利用FPGA設(shè)計(jì)電子密碼鎖,其成本低,設(shè)計(jì)方便(有相應(yīng)的
60、開發(fā)板),現(xiàn)有資源充足,實(shí)現(xiàn)比較容易,更利于系統(tǒng)的維護(hù)改進(jìn)和升級,可靠性更高,更安全。</p><p> 通過以上比較描述,本設(shè)計(jì)采用基于FPGA的電子密碼鎖設(shè)計(jì)方案。</p><p><b> 系統(tǒng)設(shè)計(jì)要求</b></p><p> 設(shè)計(jì)一個(gè)具有較高安全性和較低成本的通用電子密碼鎖,具體功能要求如下:</p><p&
61、gt; (1)數(shù)碼輸入:每按下一個(gè)數(shù)字鍵,就輸入一個(gè)數(shù)值,并在顯示器上的顯示出</p><p> 該數(shù)值,同時(shí)將先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置。</p><p> ?。?)數(shù)碼清除:按下此鍵可清除前面所有的輸入值,清除為“0000”。</p><p> (3)密碼更改:按下此鍵時(shí)會(huì)將目前的數(shù)字設(shè)定成新的密碼。</p><p> (
62、4)激活電鎖:按下此鍵可將密碼鎖上鎖。</p><p> ?。?)解除電鎖:按下此鍵會(huì)檢查輸入的密碼是否正確,密碼正確即開鎖。</p><p> (6)數(shù)字位退格:按下此鍵可清除最低的數(shù)字位,并使各位向右移。</p><p> ?。?)萬能密碼:為了怕使用者忘記密碼,系統(tǒng)可在設(shè)計(jì)時(shí)考慮設(shè)計(jì)一個(gè)萬用密碼,不論原來密碼是什么,只要輸入萬能密碼就能開鎖。</p&g
63、t;<p><b> 系統(tǒng)設(shè)計(jì)描述</b></p><p> 本系統(tǒng)為一個(gè)簡潔型的電子密碼鎖,該系統(tǒng)以開發(fā)板為主要核心,采用4*4的鍵盤,前10個(gè)鍵為數(shù)字鍵,8個(gè)數(shù)碼管顯示密碼輸入,后面的按鍵實(shí)現(xiàn)電子密碼鎖的各個(gè)功能,總體外觀如圖3.1所示。</p><p> 圖3.1 電子密碼外觀圖</p><p> 上圖為在實(shí)驗(yàn)開發(fā)板
64、上實(shí)現(xiàn),使用開發(fā)板有十六個(gè)按鍵,分別對應(yīng)數(shù)字0到9和各個(gè)功能鍵,LED顯示為開發(fā)板上數(shù)碼管顯示。</p><p><b> 各功能模塊描述</b></p><p> 電子密碼鎖主要由四個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路、密碼鎖顯示電路和報(bào)警模塊。也就是說,設(shè)計(jì)分為四個(gè)大的功能模塊。圖3.2為數(shù)字電子密碼鎖系統(tǒng)總體框圖。</p><p&
65、gt; 圖3.2 數(shù)字電子密碼功能模塊圖</p><p> ?。?) 密碼鎖輸入電路包括時(shí)序產(chǎn)生電路、鍵盤掃描電路、鍵盤彈跳消除電路、鍵盤譯碼電路等幾個(gè)小的功能電路。</p><p> 模塊的功能是:將用戶通過鍵盤輸入的數(shù)字密碼,確認(rèn)密碼是否輸入,產(chǎn)生電路中使用的三種不同頻率的工作脈沖波形,即系統(tǒng)時(shí)鐘脈沖、彈跳消除取樣信號和鍵盤掃描信號;為了加強(qiáng)按鍵按下的準(zhǔn)確性加了去抖模塊。<
66、/p><p> 作為電子密碼鎖的輸入電路,數(shù)字密碼輸入電路可采用一個(gè)4×4的通用開發(fā)板上的鍵盤作為本設(shè)計(jì)的輸入設(shè)備。開發(fā)板鍵盤具有低成本、可靠性高、構(gòu)成電路簡單、技術(shù)成熟和應(yīng)用廣泛等特點(diǎn),因此將其應(yīng)用到通用電子密碼鎖中還是比較適宜的。</p><p> ?。?) 密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲(chǔ)電路,密碼的清除、變更、存儲(chǔ)、激活電鎖電路(寄存器清除信號發(fā)生電路),密碼核對(數(shù)值
67、比較電路),解鎖電路(開/關(guān)門鎖電路)、報(bào)警電路等幾個(gè)小的功能電路。</p><p> 模塊功能:用于密碼的更改,密碼的清除,以及對密碼鎖的工作狀態(tài)更改,對輸入密碼次數(shù)的計(jì)數(shù)功能,還有就是更智能化,更符合人們的思維,按鍵的時(shí)候都是習(xí)慣看輸入數(shù)字的移位情況。</p><p> ?。?)密碼顯示電路主要將顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成相對應(yīng)的編碼。如,若選用七段數(shù)碼管顯示電路,主要將待顯示數(shù)據(jù)的B
68、CD碼轉(zhuǎn)換成數(shù)碼器的七段顯示驅(qū)動(dòng)編碼。</p><p> 數(shù)字電子密碼鎖的顯示信息電路可采用LED數(shù)碼管顯示和液晶屏幕顯示兩種。液晶顯示具有高速顯示、高可靠性、易于擴(kuò)展和升級等優(yōu)點(diǎn),但是普通液晶顯示屏存在亮度低、對復(fù)雜環(huán)境的適應(yīng)能力差等缺點(diǎn),在低亮度的環(huán)境下還需要加入其它輔助的照明設(shè)備,驅(qū)動(dòng)電路設(shè)計(jì)相對復(fù)雜,因此本設(shè)計(jì)的顯示電路使用通用的LED數(shù)碼管。</p><p> 通過上面所描述
69、的系統(tǒng)結(jié)構(gòu)可知,通用的電子密碼鎖主要由三個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。</p><p> 從圖3.2系統(tǒng)的總體走向圖可知:通過時(shí)序產(chǎn)生鍵盤掃描信號,由鍵盤輸入密碼或者功能按鍵,當(dāng)然在這過程中要經(jīng)過按鍵去抖,最后將將所輸入的鍵盤值譯碼得到具體的數(shù)字或者功能鍵;將輸入值輸入鍵盤數(shù)據(jù)存儲(chǔ)器,在這里面可以將鍵盤值存儲(chǔ)或者清除,再經(jīng)過比較電路,比較輸入值與原來存儲(chǔ)的是否一致,如果一致則開啟
70、鎖,如果不一致則報(bào)警(在報(bào)警后可以通過輸入萬能密碼或者斷電復(fù)位等可以解決);在經(jīng)過存儲(chǔ)電路時(shí),同時(shí)將所輸入的值通過LED顯示出來,顯示將通過BCD譯碼電路,將所獲取的值顯示在LED數(shù)碼管上。</p><p><b> 系統(tǒng)流程</b></p><p> 系統(tǒng)流程圖如圖4.1:(不能光有一個(gè)圖,必須配有對圖的文字說明,把系統(tǒng)的流程說清楚)</p>&l
71、t;p> 圖3.3 系統(tǒng)流程圖</p><p><b> 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p><b> 輸入模塊</b></p><p><b> 時(shí)序產(chǎn)生電路</b></p><p> 本時(shí)序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時(shí)鐘脈沖(它是系統(tǒng)
72、內(nèi)部所有時(shí)鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號、鍵盤掃描信號。</p><p> 當(dāng)一個(gè)系統(tǒng)中需使用多種操作頻率的脈沖波形時(shí),最方便的方法之一就是利用一計(jì)數(shù)器來產(chǎn)生各種需要的頻率。也就是先建立一個(gè)N位計(jì)數(shù)器,N的大小根據(jù)電路的需求決定,N的值越大,電路可以分頻的次數(shù)就越多,這樣就可以獲得更大的頻率變化,以便提供多種不同頻率的時(shí)鐘信號。若輸入時(shí)鐘為CLK,N位計(jì)數(shù)器的輸出為Q[N-1..0],則Q(0)
73、為CLK的2分頻脈沖信號,Q(1)為CLK的4分頻脈沖信號,Q(2)為CLK的8分頻脈沖信號……Q(N-1)為CLK的2N分頻脈沖信號;Q(5 DOWNTO 4)取得的是一個(gè)脈沖波形序列,其值依00-01-10-11-00-01周期性變化,其變化頻率為CLK的32分頻。我們利用以上規(guī)律即可得到各種我們所需要頻率的信號或信號序列。</p><p> CLK_1K:時(shí)鐘信號</p><p>
74、 SIGNAL K_SRCLK: STD_LOGIC ; --鍵盤輸入采樣時(shí)鐘</p><p> SIGNAL K_POS: STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p><b> --按鍵位置信號</b></p><p> SIGNAL KSCAN:STD_LOGIC_VECTOR(3 DOWNTO 0
75、); --鍵盤掃描信號</p><p> KEY IN:STD_LOGIC_VECTOR(2 DOWNTO 0);--按鍵輸入信號</p><p> KSRCLK:STD_LOGIC;--鍵盤輸入采樣時(shí)鐘</p><p><b> 按鍵消抖電路</b></p><p> 由于設(shè)計(jì)采用的矩陣式鍵盤是機(jī)械開關(guān)結(jié)構(gòu),因
76、此在開關(guān)切換的瞬間會(huì)在接觸點(diǎn)出現(xiàn)信號來回彈跳的現(xiàn)象,對于電子密碼鎖這種靈敏度較高的電路這種彈跳將很可能會(huì)造成誤動(dòng)作輸入,從而影響到密碼鎖操作的正確性。</p><p> 彈跳現(xiàn)象產(chǎn)生的原因是,雖然每次只是按下按鍵一次然后放掉,然而實(shí)際產(chǎn)生的按鍵信號卻不知跳動(dòng)一次,經(jīng)過取樣信號的檢查后,將會(huì)造成誤判斷,以為鍵盤按了兩次。</p><p> 圖4.2 彈跳現(xiàn)象產(chǎn)生錯(cuò)誤的抽樣結(jié)果 </
77、p><p> 如果調(diào)整抽樣頻率,彈跳現(xiàn)象就可以獲得改善。</p><p> 圖4.3 調(diào)整抽樣頻率后得到的抽樣結(jié)果</p><p> 因此必須加上彈跳消除電路,避免誤操作信號的發(fā)生。特別要注意的是,彈跳消除電路所使用的脈沖信號的頻率必須比其他電路使用的脈沖信號的頻率更高;通常將掃描電路的工作頻率定在100KHz左右,而將彈跳消除電路的工作頻率定在200KHZ左右,
78、其工作頻率通常是前者的2倍或者更高。</p><p> debounce: block is</p><p><b> begin</b></p><p> u1:debouncing port map (d_in=>key_in(0),d_out=>c(0),</p><p> clk=>c_
79、debounce);</p><p> u2:debouncing port map (d_in=>key_in(1),d_out=>c(1),</p><p> clk=>c_debounce);</p><p> u3:debouncing port map (d_in=>key_in(2),d_out=>c(2),</
80、p><p> clk=>c_debounce);</p><p> end block debounce;</p><p> 按鍵消抖部分是由兩個(gè)小的模塊集成為一個(gè)去抖電路的,所以在此分開介紹此兩個(gè)模塊。</p><p> Dcfq模塊:dcfq 模塊的主要程序</p><p> if clrn='
81、0' and prn='1' then </p><p><b> q<='0';</b></p><p> elsif clrn='1' and prn='0' then</p><p><b> q<='1';</b&g
82、t;</p><p> elsif clk'event and clk='1' then</p><p><b> q<=d;</b></p><p><b> end if;</b></p><p> 此段程序作用是判斷輸入信號是否有效, 如有效則輸出,無效清
83、零。</p><p> debouncing 模塊主要程序如下:</p><p> u1:dcfq port map (clk=>clk,clrn=>inv_d,prn=>vcc,d=>vcc,q=>q0);</p><p> u2:dcfq port map (clk=>clk,clrn=>q0,prn=>vc
84、c,d=>vcc,q=>q0);</p><p> process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> d0<=not q1;</p><
85、;p><b> d1<=d0;</b></p><p><b> end if;</b></p><p> end process;</p><p> dd0<=d0;dd1<=d1;qq1<=q1; qq0<=q0;</p><p> d_out<
86、;=not (d1 and not d0);</p><p> d_out1<=not q1;</p><p> end architecture art;</p><p> 這段程序的作用就是通過對信號的分頻處理,從而將按鍵產(chǎn)生的不規(guī)則信號轉(zhuǎn)換為便于識別的按鍵信號,達(dá)到消除抖動(dòng)的目的。</p><p><b> 鍵盤
87、掃描電路</b></p><p> 掃描電路的作用是用來提供鍵盤掃描信號的,掃描信號變化的順序依次為1110-1101-1011-0111-1110……依序的周而復(fù)始。掃描時(shí)依序分別掃描四列按鍵,當(dāng)掃描信號為1110時(shí)掃描KY3這一排按鍵;當(dāng)掃描信號為1101室,掃描KY2這一排按鍵;當(dāng)掃描信號為1011時(shí),掃描KY1這一排按鍵;當(dāng)掃描信號為0111時(shí),掃描KY0這一排按鍵。每掃描一排按鍵就檢查一次
88、是否有鍵被按下,如果這排沒有按鍵被按下就忽略,反之,如果出現(xiàn)被按下的鍵則立刻進(jìn)行按鍵編碼的動(dòng)作,且將編碼的結(jié)果儲(chǔ)存于寄存器中。</p><p> --掃描信號發(fā)生器 </p><p> counter: block is</p><p><b> begin</b></p><p> process (clk_1
89、k) is</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 ;<
90、;/b></p><p> k_srclk<=q(7);</p><p> k_pos<=q(9 downto 8);</p><p> end process ;</p><p> scan <="1110" when k_pos=0 else</p><p>
91、"1101" when k_pos=1 else</p><p> "1011" when k_pos=2 else</p><p> "0111" when k_pos=3 else</p><p><b> "1111";</b></p>&
92、lt;p> end block counter;</p><p> 鍵盤掃描電路的作用是提供鍵盤掃描信號,掃描信號變化的順序?yàn)?110- -1101-1011-0111-1110……周而復(fù)始。掃描信號0111代表掃描的為*、0、#這一排按鍵, 當(dāng)*這個(gè)按鍵被按下時(shí), 由CSR[1..0]讀出的值為11,按鍵位置的數(shù)碼關(guān)系如表4.6所列。</p><p> 表4.1 按鍵位置的數(shù)
93、碼關(guān)系</p><p><b> 鍵盤譯碼電路</b></p><p> 在密碼輸入電路中,按鍵又分為數(shù)字按鍵和文字按鍵,每一個(gè)按鍵可能負(fù)責(zé)不同的功能,例如清除鍵、上鎖鍵和解鎖鍵等。數(shù)字按鍵主要是用來輸入數(shù)字的,但是鍵盤所產(chǎn)生的輸出是無法直接拿來用作密碼鎖控制電路的輸入的,另外,不同的按鍵具有不同的功能,所以必須由鍵盤譯碼電路來規(guī)劃每個(gè)按鍵的輸出形式,以便執(zhí)行相應(yīng)
94、的動(dòng)作。</p><p> 鍵盤譯碼電路主要將所對應(yīng)的鍵盤值設(shè)定成所要用的功能鍵,其主要程序如下:</p><p> z<=k_pos & c;</p><p> if (k_srclk'event and k_srclk = '1') then </p><p> case z is </
95、p><p> when "11101"=>n<="0000";</p><p> when "00011"=>n<="0001";</p><p> when "00101"=>n<="0010";</p
96、><p> when "00110"=>n<="0011";</p><p> when "01011"=>n<="0100";</p><p> when "01101"=>n<="0101";</p&
97、gt;<p> when "01110"=>n<="0110";</p><p> when "10011"=>n<="0111";</p><p> when "10101"=>n<="1000";</p&g
98、t;<p> when "10110"=>n<="1001";</p><p> when others =>n<="1111";</p><p><b> end case;</b></p><p><b> end if;&l
99、t;/b></p><p> if k_srclk 'event and k_srclk='1' then</p><p> case z is </p><p> when "11011" =>f<="0100";</p><p> when &quo
100、t;11110" =>f<="0001";</p><p> when others =>f<="1000";</p><p><b> end case;</b></p><p><b> end if;</b></p>&l
101、t;p><b> 鍵盤輸入模塊的實(shí)現(xiàn)</b></p><p> 生成符號圖如4.7:</p><p> 圖4.7 鍵盤輸入電路符號圖</p><p><b> 模塊外部信號端口:</b></p><p> clk_1k:時(shí)鐘脈沖輸入端口,為系統(tǒng)提供工作的時(shí)鐘脈沖。</p>
102、<p> key_in:按鍵輸入端口,為按鍵輸入提供輸入信號。</p><p> kscan:鍵盤掃描序列(仿真時(shí)用),為按鍵掃描提供信號。</p><p> data_n:數(shù)字輸出端口,為數(shù)字的輸出提供信號。</p><p> data_f:功能輸出端口,為功能的輸出提供信號。</p><p> flag_n::數(shù)字
103、輸出標(biāo)志,用于識別數(shù)字是否輸出。</p><p> flag_f:功能輸出標(biāo)志,用于識別功能是否輸出。</p><p> ksrclk:鍵盤輸入采樣時(shí)鐘。</p><p> kpos:按鍵位置,用于識別按鍵所在位置提供信號。</p><p><b> 模塊內(nèi)部信號:</b></p><p>
104、; scan:鍵掃信號“00-01-10-11”寄存器</p><p> k_ksrclk:去抖時(shí)鐘信號,為去抖提供信號。</p><p> c:鍵盤輸入去抖后的寄存器,用于鍵盤去抖后存儲(chǔ)鍵盤輸入的寄存器。</p><p> n,f:數(shù)字、功能按鍵譯碼值的寄存器,用于存儲(chǔ)數(shù)字、功能按鍵譯碼后的值。</p><p> fn,ff:數(shù)字
105、、功能按鍵標(biāo)志值數(shù)字、功能按鍵。</p><p> q:模塊內(nèi)部信號,用于識別各個(gè)信號所用。</p><p> k_pos:按鍵位置信號,用于提供按鍵位置所在信號。</p><p><b> 電子密碼鎖控制模塊</b></p><p><b> 控制模塊的描述</b></p>
106、<p> 控制鎖的控制模塊是整個(gè)電路的控制中心,主要完成對數(shù)字按鍵輸入和功能按鍵輸入的相應(yīng)控制。</p><p> 1、數(shù)字按鍵輸入的響應(yīng)控制</p><p> ?。?)如果按下數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示其的最右端開始顯示,此后每新按一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須左移一個(gè)數(shù)碼管,以便將新的數(shù)字顯示出來。</p><p> ?。?)假如要更改輸入的數(shù)字,
107、可以按倒退按鍵來清除前一個(gè)輸入的數(shù)字,或者按清除鍵清除所有出入的數(shù)字,再重新輸入四位數(shù)。</p><p> ?。?)由于這里設(shè)計(jì)的是一個(gè)四位的電子密碼鎖,所以當(dāng)輸入的數(shù)字鍵超過預(yù)設(shè)位數(shù)時(shí),電路不予理會(huì),而且不再顯示以后的數(shù)字。</p><p> 2、功能按鍵輸入的響應(yīng)控制</p><p> ?。?)清除鍵:清除所有的輸入數(shù)字,即作歸零動(dòng)作。</p>
108、<p> ?。?)激活電鎖鍵:按下此鍵時(shí)可將密碼鎖的門上鎖(上鎖前必須預(yù)先設(shè)定一個(gè)四位的數(shù)字密碼)。</p><p> ?。?)解除電鎖鍵:按下此鍵會(huì)檢查輸入的密碼是否正確,若密碼正確無誤則開門。</p><p> 使用電子密碼鎖的時(shí)候,只會(huì)用到三種工作模式,其中輸入文字模式用的是數(shù)字按鍵,只有上鎖和開鎖兩個(gè)模式必須占用功能按鍵。但是在實(shí)際操作中,難免會(huì)有按錯(cuò)鍵的情況發(fā)生,使得
109、“清除輸入”功能是用的機(jī)率很高,所以在設(shè)計(jì)中共設(shè)置了兩個(gè)功能按鍵,其中“接觸電鎖”和“清除電鎖”共用一個(gè)功能按鍵,另一個(gè)功能按鍵是“激活電鎖”。 </p><p> 控制模塊的狀態(tài)圖與ASM圖</p><p> 控制模塊的狀態(tài)圖如4.8圖所示:</p><p> 4.8 控制模塊的狀態(tài)圖</p><p> 初始狀態(tài),允許口令設(shè)置操作,
110、送入KSRCLK后返回初始狀態(tài)。解鎖狀態(tài), 送入ENLOCK信號時(shí)進(jìn)人解鎖狀態(tài), 允許三次解鎖錯(cuò)誤。錯(cuò)誤狀態(tài), 解鎖錯(cuò)誤進(jìn)入錯(cuò)誤狀態(tài), 判斷解鎖錯(cuò)誤次數(shù)是否達(dá)到三次進(jìn)而確定下一狀態(tài)。錯(cuò)誤狀態(tài), 解鎖錯(cuò)誤次數(shù)達(dá)到三次進(jìn)人報(bào)警狀態(tài)。開鎖狀態(tài),解鎖正確即進(jìn)人開鎖狀態(tài)。由狀態(tài)轉(zhuǎn)換圖得到的控制模塊的ASM圖如4.9: </p><p> 圖4.9 控制模塊的ASM圖</p><p><b&g
111、t; 控制模塊的實(shí)現(xiàn)</b></p><p><b> 生成符號圖4.10</b></p><p> 圖4.10 控制模塊電路符號圖</p><p><b> 模塊外部信號端口:</b></p><p> data_n:數(shù)字輸入端口,用于提供數(shù)字輸入信號。</p>
112、<p> data_f:功能輸入端口,用于提供功能輸入信號。</p><p> flag_n:數(shù)字輸入標(biāo)志,用于識別數(shù)字是否輸入。</p><p> flag_f:功能輸入標(biāo)志,用于識別功能是否輸入。</p><p> ksrclk:鍵盤輸入采樣時(shí)鐘,用于提供鍵盤輸入的采樣時(shí)鐘。</p><p> enlock:密碼鎖控
113、制信號輸出端口,提供密碼鎖控制信號輸出。</p><p> data_bcd:按鍵顯示輸出端口,用于提供按鍵顯示輸出信號。</p><p> mimain:密碼輸入標(biāo)志,用于提供密碼輸入信號。</p><p> setin:密碼設(shè)定標(biāo)志,提供密碼設(shè)置信號。</p><p> old:舊密碼設(shè)置標(biāo)志,提供舊密碼設(shè)置標(biāo)志。</p&g
114、t;<p><b> 模塊內(nèi)部信號:</b></p><p> acc:暫存鍵盤輸入信息</p><p> reg:密碼存儲(chǔ)位置</p><p><b> 電子密碼鎖顯示模塊</b></p><p><b> 數(shù)碼管顯示原理</b></p>
115、<p> 數(shù)字顯示主要由LED數(shù)碼管實(shí)現(xiàn)。LED可單獨(dú)使用,也可組裝成分段式或點(diǎn)陣式LED顯示器件。分段式顯示器由7條線段圍成8型,每一段包含一個(gè)發(fā)光二極管,外加正向電壓時(shí)二極管導(dǎo)通,發(fā)出清晰的光,有紅、黃、綠等色??梢园凑障嚓P(guān)的規(guī)律控制各個(gè)發(fā)光段的亮、滅,這樣就能達(dá)到顯示各種字形或者符號的目的。圖4.11介紹了左邊右邊是共陰式和共陽式LED數(shù)碼管的原理圖,以及共陰式的連接法和驅(qū)動(dòng)原理。</p><p&
116、gt; 圖4.11 七段數(shù)碼管電路圖</p><p> BCD七段譯碼器的輸入時(shí)一位BCD碼(以D、C、B、A表示),輸出是數(shù)碼管各段的驅(qū)動(dòng)信號(以Fa~Fg表示),也稱4——7譯碼器。若用它驅(qū)動(dòng)共陰極LED數(shù)碼管,則輸出應(yīng)為高有效,即輸出高1時(shí),相應(yīng)顯示段發(fā)光。例如,當(dāng)輸入8421碼DCBA=0100時(shí),應(yīng)顯示4,即要求同時(shí)點(diǎn)亮b、c、f、g段,熄滅a、d、e段,故譯碼器的輸出應(yīng)為Fa~Fg=0110011
117、,這也是一組代碼,常稱為段碼。同理,根據(jù)組成0~9這10個(gè)字形的要求可以列出8421BCD七段譯碼器的真值表,見表4.12。</p><p> 表4.2 七段譯碼器真值表</p><p><b> 主要程序設(shè)計(jì)如下:</b></p><p> CASE DATA_BCD IS</p><p> WHEN &qu
118、ot;0000" =>DOUT7<= "0111111";</p><p> WHEN "0001" =>DOUT7<= "0000110";</p><p> WHEN "0010" =>DOUT7<= "1011011";</p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---基于fpga的電子密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文-基于fpga電子密碼鎖設(shè)計(jì)
- 基于fpga的電子密碼鎖設(shè)計(jì)
- 基于fpga的電子密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文基于cpld_fpga的電子密碼鎖設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子密碼鎖設(shè)計(jì)
- 基于fpga的電子密碼鎖的設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于fpga的電子密碼鎖的設(shè)計(jì)論文(帶仿真)
- 電子密碼鎖的畢業(yè)設(shè)計(jì)
- fpga課程論文-基于fpga設(shè)計(jì)的電子密碼鎖
- 電子密碼鎖畢業(yè)設(shè)計(jì)論文
- 基于fpga的verilog的電子密碼鎖設(shè)計(jì)
- 論文-基于fpga的電子密碼鎖的設(shè)計(jì)
- 基于fpga的密碼鎖設(shè)計(jì)
- 基于fpga的電子密碼鎖電路設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)論文
評論
0/150
提交評論