999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VHDL利用PS/2鍵盤控制的密碼鎖設計

2011-01-06 03:46:44胡彩霞吳曉盼
銅陵學院學報 2011年5期
關鍵詞:進程設計

胡彩霞 吳曉盼

(黃山學院,安徽 黃山 245000)

基于VHDL利用PS/2鍵盤控制的密碼鎖設計

胡彩霞 吳曉盼

(黃山學院,安徽 黃山 245000)

介紹了一種基于FPGA芯片的電子密碼鎖設計方法,闡述了系統各模塊的功能,給出了關鍵的VHDL程序。系統利用了標準PS/2鍵盤作為輸入設備,取代了普通的矩陣式鍵盤,展示了FPGA在嵌入式系統設計中的優越性。

FPGA;VHDL;PS/2鍵盤;密碼鎖

在傳統的數字電路設計實驗中,如果要構建一個小型數字系統,通常要在數字電路試驗箱中進行繁瑣的搭線操作。由于試驗箱資源的限制使得所設計的數字系統功能會受到很大限制。而FPGA由于其集成度高和支持可在線編程的特點,修改電路設計變得如同修改程序一樣方便[1]。本文以電子密碼鎖的設計為實例,介紹了利用硬件編程語言VHDL自頂向下地進行此系統的行為描述與結構設計,并介紹了PS/2鍵盤到主機的單向通信過程。該設計中所用芯片的具體型號是XILINX公司的具有40萬門、208個管腳的SPARTAN XC3S400。設計過程中下載模式采用主串模式,將程序下載到開發板上的EPROM中,再由FPGA將EPROM中的程序讀入片內編程RAM中。采用的EDA開發工具為ISE 6,仿真工具是Modelsim 5.8a。

1.數字密碼鎖的基本功能

1.1 功能描述:

密碼鎖的設計主要達到以下四個功能:

(1)密碼鎖加密:按下F1加密鍵,再按下0到9中的任四位數字作為密碼。

(2)輸入碼激活:按下F2激活鍵,將已輸入的四位數碼作為密碼或解鎖碼。

(3)解鎖:按下F5解密鍵,輸入的解鎖碼會與原密碼會進行匹配。如果成功,則開啟密碼鎖;如果不成功,可繼續解碼,共有3次解密機會,當3次解密都不成功時,蜂鳴器產生報警信號宣告操作失敗。

(4)數碼輸入:只有在按下F1加密鍵或F5解密鍵的前提下,按下0到9的數值才能顯示到數碼管上。顯示順序是:隨機按下的數碼首先顯示在四位數碼管的最低位上,若確定此數碼是想要的數碼,再按下ENTER鍵,便將此數碼向左移動至左邊第一個未顯示的數碼管上。比如,初始時數碼管顯示為“XXXX”(X表示什么都不顯示),按下一個9后,顯示的是“XXX9”,再按下ENTER鍵后,顯示為“9XXX”。當輸入的數碼已達四位數時,按下F2激活鍵,便可將這四位數作為密碼。由于開發板上只有4個數碼管,所以密碼設定為4位,在實際中為了增加安全性,可以設置為更多位,還可將字母鍵擴展為密碼。

2.密碼鎖的頂層模塊化設計

2.1 電子密碼鎖的整體結構

電子密碼鎖的整體結構如下圖所示,總體可分為:密碼鎖輸入模塊、控制模塊和顯示模塊。

2.2 密碼鎖輸入模塊

密碼鎖輸入模塊包括PS/2鍵盤時鐘的過濾進程以及鍵盤掃描碼的接收進程。

2.2.1 鍵盤時鐘過濾進程:

PS/2鍵盤到主機單向通訊的原理如下:PS/2主從設備之間采用雙向同步串行的機制進行數據傳輸,從設備的晶振時鐘信號作為通訊過程中的同步時鐘信號。鍵盤發送到主機的每一幀數據包含11位0-1代碼,每位數據在鍵盤時鐘的下降沿被主機從數據線上讀走。如下圖所示:

這11位數據的含義分別是:起始位總是為0,以作設備同步之用,8個數據位低位在前,1個奇校驗位,1個停止位總是為1。正如鍵按下就會有掃描碼(通碼)發往主機一樣,只要鍵一釋放,也會有掃描碼(斷碼)發往主機。每個按鍵都被分配了唯一的通碼和斷碼[2]。PS/2鍵盤第二套掃描碼集中,大多數按鍵的通碼只有一個字節,一幀就可以發完,這些按鍵的斷碼一般是在通碼前面加個F0h,所以這些兩個字節的斷碼就需要兩幀來發送。比如,F1鍵的通碼是05H,斷碼是F0H、05H。按下F1后,鍵盤就會依次向主機發送05H、F0H、05H。這里,所用到的輸入按鍵都是通碼只有一個字節,斷碼有兩字節的按鍵。

鍵盤與主機間的PS/2接口含有6個引腳,其中傳遞信息的引腳分別為時鐘腳(clk)和數據腳(data)。需要注意的是,不應該直接將鍵盤時鐘信號作為接口通訊的時鐘基準信號,應該添加一個鍵盤時鐘過濾進程。這是因為雖然PS/2鍵盤內部已經有按鍵消抖電路(即硬件消抖)[3],但是不排除時鐘線的上升沿或下降沿會產生抖動,所以還是應當對的PS/2時鐘進行過濾(即軟件消抖),否則接收到的8位數據位會錯位。比如,當時鐘線上產生了一個干擾脈沖時,主機會多接收一位數據,這樣就會產生連鎖反應,導致后續的數據都接收錯誤。這里采用的解決方法是:讓PS/2鍵盤的時鐘過2次D觸發器PS2clkd(0)和PS2clkd(1)。這兩個D觸發器構成了一個單向左移的移位寄存器。因為移位寄存器具有數碼的移位和寄存功能[4]。每接收一位數據,移位寄存器就會整體左移一位,先前的最高位移出,新接收的數據入最低位。如果移位寄存器的某一次輸出是“10”,主機就認為是PS/2鍵盤時鐘信號的下降沿,然后便開始從數據線上讀取數據。這是以開發板上晶振的50Mhz頻率去查詢時鐘線上的電平變化。主要的vhdl代碼是:

這里,這個2位的移位寄存器具有串行輸入/并行輸出的功能

2.2.2 鍵盤掃描碼接收進程:

主機在接收鍵盤的掃描碼時,每接收完11位數據時,就要把這11位數據作為完整的一幀傳送給后續的進程處理。因此,在系統中就應當有一個11位的寄存器來存儲這一幀數據。并當這個11位寄存器存儲的數據已達11位時,就產生一個一幀數據已接收完畢的報告信號。這里采用了一個12位的單向右移的移位寄存器reg(11 downto 0)來接收數據并判斷是否接收完畢。這個12位的移位寄存器的低11位存放數據,最高位作為標志位。這里,reg的初始值“01111111111”,‘0’是標志位,接收第一位數據 x后,reg的值變為“x0111111111”。接收過程中,每接收一位數據,標志位就會右移一位,當標志位移到最低位時,即數據為“xxxxxxxxxx0”時,就代表有一幀已接收完畢。具體到vhdl語法,用并置運算符“&”實現此右移寄存器的移位功能。主要的vhdl代碼是:

顯然,這個12位的移位寄存器也具有串行輸入/并行輸出的功能。

因為后續的控制模塊是通過某些命令鍵輸入來觸發的,所以每當按下一個鍵后,就應當對所接收到的掃描碼進行識別,才能做出相應的操作。實現過程中發現,如果每接收一幀數據就進行識別判斷可能會影響控制進程的操作。因為,按鍵過程中可能存在一些不合法的操作。比如當按一個鍵不放時,就會周期性地連續地向主機發送通碼,即產生機打操作。如果同時按兩個鍵時,會先發送兩個鍵的通碼,再依次發送各自的斷碼,即產生組合鍵操作[7]。這就需要過濾掉那些不合法的掃描碼。由于該設計中所使用的按鍵都是一個字節通碼、兩個字節斷碼的按鍵,所以一般按一個鍵都會產生3個字節的掃描碼。這里采取的解決方法是,設置3個緩沖區reg1、reg2、reg3,先讓掃描碼在緩沖區里暫存一下。比如,按下F1后,鍵盤就會依次向主機發送05H、F0H、05H,這3個掃描碼會依次存入reg1、reg2、reg3。當reg3=reg1時,就表示有一個鍵已經按下,并且這個按鍵操作是合法的。

主要的vhdl代碼是:

當reg3=reg1時,就可以將reg1(或reg3)作為按鍵的最終掃描碼向后面的控制模塊傳遞。

2.3 密碼鎖控制模塊

密碼鎖控制模塊由掃描碼識別判斷進程、密碼鎖控制進程、密碼匹配進程組成。

2.3.1 密碼鎖控制進程

設計中,密碼鎖有專門的控制按鍵:F1加密鍵、F5解密鍵、F2密碼激活鍵、ENTER確認鍵。所以控制模塊在接收一個鍵的掃描碼后,就要對該掃描碼進行識別,以做出相應的操作。

具體到程序中,不同命令的執行是通過定義具有不同控制作用的信號來實現的。這里定義了多個命令信號,通過按鍵和一些條件狀態信號來觸發。比如,要激活密碼,得按下F2鍵,但是只有在先前已輸完4位數碼的條件下,F2鍵激活作用才是有效的。由于在完成相應的任務后,命令信號已失效并且系統的條件狀態也發生了變化,所以必須回收命令信號并更新條件狀態信號。

主要的vhdl代碼是:

2.3.2 控制模塊存儲區的處理

設計中已設定好的密碼,是要和解鎖過程中產生的解鎖碼進行比較的,所以事先要將這兩種密碼存儲到兩個相應存儲區里。并且,因為密碼是由四位數碼組成的,而每一位數碼都是由8位掃描碼(0-1代碼)組成的。那么,這種存儲區應該是4*8的二維數組結構。這里,通過把4個8位寄存器合到一起,作為一個寄存器組來實現此存儲區的功能。密碼會存儲在密碼寄存器encoderam中,解鎖碼會存入解碼寄存器breakcoderam中。并且,還設置了一個過渡寄存器--顯示緩存區coderam,存儲要顯示的數據。具體到vhdl語法,是通過用戶自定義類型type來定義這樣一個二維數組類型的。

主要的vhdl代碼是:

輸入數碼時,這些臨時的數碼首先存入顯示緩存區,并在數碼管上進行顯示。4位碼輸入結束后,按下F2鍵,便將顯示緩存區中的數碼轉存到解碼存儲區或密碼存儲區中。

2.3.3 密碼匹配比較進程

該密碼鎖有3次解鎖機會,每次在按下解鎖鍵F5,輸完4位密碼后,再按下F2激活鍵,便會觸發啟動密碼匹配進程。因為原始密碼存儲在encoderam中,解鎖密碼存儲在breakcoderam中,只需判斷encoderam和breakcoderam是否相等即可。兩個寄存器數值的比較結果會作為一個信號傳遞給后續的密碼鎖控制進程,最終由密碼鎖控制進程來啟動相應控制信號:相等即解鎖成功,觸發解鎖成功信號,這時電子密碼鎖開啟。反之,解鎖失敗,觸發解鎖失敗信號,使觸發蜂鳴器使之產生報警信號。

2.4 密碼鎖的設計輸出

本密碼鎖采用4位共陰極8位數碼管作為顯示輸出,并采用了蜂鳴器作為解鎖報警信號輸出。顯示輸出的內容主要是:(1)必要的便于人機交互的界面;(2)密碼數值的輸入顯示。

2.4.1 數碼管的位選控制進程

數碼管的控制端口分為段選端口和位選端口。位選端口決定數碼管的亮滅與否,段選端口決定具體亮的是什么數碼。由于要求在不同的數碼管上顯示不同的數值,即給不同數碼管的段選端口賦不同的值。因為開發板上的4位數碼管的段選線是共用的,所以設計中采用了數碼管動態顯示方法。動態顯示的原理是:利用人的眼睛的視覺暫留特性,依次點亮各位數碼管,循環讓4位數碼管顯示,這樣可以達到讓不同數碼管顯示不同數值的效果。據經驗,每位數碼管輪流顯示1ms左右就可以達到滿意的效果。那么,設計中就需要一個計時器來實現延時1ms的功能。這里,采用了一個計數器來實現此計時器功能。

這里,計數器的具體功能是通過計算時鐘脈沖發生的數目來計時。開發板上的晶振時鐘是50MHz級的,延時1ms就等同于記錄了50000次脈沖信號。具體到vhdl語法中,則采用了“if-elsif-else”結構,對數碼管進行位選。

主要的vhdl代碼是:

2.4.2 數碼管的段選顯示控制進程

驅動數碼管顯示,是給數碼管的8個段選端口送高電平或低電平。比如,要使數碼管顯示數碼1時,就給8個段選端口賦值“00101000”。因此需要一個驅動數碼管顯示的數據源。設計中,顯示緩存區coderam作為此數據源。顯示緩存區coderam(0 to 3)是一個數組類型,coderam(0 to 3)從低到高四位正好對應到開發板上數碼管從左到右的四位。

2.4.3 數碼管的譯碼顯示控制進程

要利用鍵盤的掃描碼進行相應的數碼顯示,就需要一個把掃描碼轉換成能使數碼管正確顯示編碼的轉換表。這里采用了一個解碼器實現此轉換表的功能。解碼器的功能是將先前編碼的數據轉換成其他形式。這個解碼器是通過vhdl語法中的“case-when”分支語句來實現的。

主要的vhdl代碼是:

2.4.4 蜂鳴器報警信號控制進程

在設計中,蜂鳴器報警信號是一長串的滴答聲音。這種簡單功能的是通過對蜂鳴器引腳進行有規律地高低電平的賦值。具體設計時,利用了計數器產生延時,有間隔地對引腳賦高電平。

3.結束語

本文提出了以FPGA開發平臺,進行密碼鎖小數字系統設計的一種方法。在實踐過程中,可以加深對數字電路中的觸發器、計數器、寄存器、狀態機等概念的掌握,以及對數字邏輯中“時序”概念的理解。上述器件的功能都可以通過具體的vhdl程序來實現,再利用這些“器件”來搭建小型數字系統。在進行數字系統的設計時,應當采用“由上而下”的設計方法,事先進行系統設計的行為功能描述,再構思各功能模塊間的接口。并且,在進行具體的程序設計前,一定要把相關的技術背景資料準備好,如FPGA芯片的端口資源與存儲資源。具體到本例中,還需要主機與鍵盤之間的PS/2接口通訊機制的資料。

[1]張慶玲,楊勇.FPGA原理與實踐[M].北京:北京航天航空大學出版社,2006.

[2]魏軍輝 等.基于FPGA的PS/2鍵盤接口的設計[J].微計算機信息,2008,24(26).

[3]王正洪,朱正偉,馬正華.微機接口與應用[M].北京:清華大學出版社,2006.

[4]江曉安,董秀峰,楊頌華.數字電子技術[M].西安:西安電子科技大學出版社,2008.

[5]黃智偉等.FPGA系統設計與實踐[M].北京:電子工業出版社,2005.

[6]李仁發等譯.VHDL數字系統設計[M].北京:電子工業出版社,2004.

[7]楊秀增等.基于FPGA的標準PS/2鍵盤接口電路設計[J].南寧師范高等專科學校學報,2009,(3).

a method to design the password lock controlled by ps/2 keyboard with VHDL

Hu Cai-xia,Wu Xiao-pan
(Huangshan University,Huangshan Anhui 245000,China)

This paper introduces a method to design the password lock with FPGA.It describes functions of every module and gives the key VHDL programs.This system makes use of the standard PS/2 keyboard taking place of the common matrix keyboard as input equipment,which indicates the powerful capability of FPGA in the desiging of embedded system.

FPGA;VHDL;PS/2 keyboard;password lock

TP331

A

1672-0547(2011)05-0104-04

2011-09-13

胡彩霞(1968-),女,安徽黃山人,黃山學院信息工程學院講師,浙江大學訪問學者,研究方向:計算機應用、計算機網絡通信。

安徽省教研項目《以市場為導向的網絡技術人才培養研究及教學模式重組》(編號:2007JYXM432)研究成果。

猜你喜歡
進程設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
俄羅斯現代化進程的阻礙
主站蜘蛛池模板: 亚洲无码37.| 亚欧美国产综合| 色欲色欲久久综合网| 日韩AV手机在线观看蜜芽| 国产情侣一区二区三区| 精品久久高清| 精品国产免费观看| 亚洲成a人片| 91成人免费观看| 1024国产在线| 老熟妇喷水一区二区三区| 热九九精品| 精品自窥自偷在线看| 色播五月婷婷| 91在线国内在线播放老师| 色天天综合久久久久综合片| 亚洲精品中文字幕午夜| 亚洲精品777| 国产在线一区二区视频| 99青青青精品视频在线| 国产第一页免费浮力影院| 思思热在线视频精品| 国产xx在线观看| 国产乱人免费视频| 国产精品爽爽va在线无码观看| 欧美不卡视频在线| 中文天堂在线视频| 91口爆吞精国产对白第三集| 黄色网页在线播放| 精品人妻一区无码视频| 毛片久久久| 四虎永久免费地址| 亚洲黄色高清| www.亚洲一区| 欧美一级一级做性视频| 亚洲Va中文字幕久久一区| 欧美福利在线播放| 91成人精品视频| 午夜一级做a爰片久久毛片| 亚洲视频在线青青| 国产麻豆精品在线观看| 91午夜福利在线观看精品| 色老头综合网| 中文字幕调教一区二区视频| 国产精品七七在线播放| 欧美日韩国产精品综合| 国产精品香蕉在线观看不卡| 精品第一国产综合精品Aⅴ| 中文字幕乱妇无码AV在线| 亚洲人成网线在线播放va| 免费A级毛片无码免费视频| 国产精品护士| 高清视频一区| 亚洲第一区在线| 亚洲国产日韩一区| 鲁鲁鲁爽爽爽在线视频观看| 456亚洲人成高清在线| 少妇人妻无码首页| 91精品国产情侣高潮露脸| 亚洲av无码牛牛影视在线二区| 久久青草精品一区二区三区| 国产男女XX00免费观看| 色综合中文综合网| 中文字幕日韩丝袜一区| 中文纯内无码H| 国产精品不卡永久免费| 国产sm重味一区二区三区| 久久综合五月婷婷| 蜜桃臀无码内射一区二区三区| 免费aa毛片| 亚洲swag精品自拍一区| 亚洲资源在线视频| 亚洲国产中文综合专区在| 亚洲第一页在线观看| 青草精品视频| 亚洲国产精品无码AV| 亚洲国产高清精品线久久| 国产精品999在线| 亚洲色成人www在线观看| 午夜国产不卡在线观看视频| 久久亚洲日本不卡一区二区| 亚洲国产综合精品一区|