版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
...wd......wd......wd...本科畢業(yè)論文〔設(shè)計〕論文題:基于FPGA的PS2鍵盤控制設(shè)計及仿真實(shí)現(xiàn)作者聲明本畢業(yè)論文〔設(shè)計〕是在導(dǎo)師的指導(dǎo)下由本人獨(dú)立撰寫完成的,沒有剽竊、抄襲、造假等違反道德、學(xué)術(shù)標(biāo)準(zhǔn)和其他侵權(quán)行為。對本論文〔設(shè)計〕的研究做出重要奉獻(xiàn)的個人和集體,均已在文中以明確方式標(biāo)明。因本畢業(yè)論文〔設(shè)計〕引起的法律結(jié)果完全由本人承當(dāng)。特此聲明作者專業(yè):通信工程作者學(xué)號:作者簽名:年月日基于FPGA的PS2鍵盤控制設(shè)計及仿真實(shí)現(xiàn)TheDesignandSimulationImplementationofthePS2KeyboardControlbasedonFPGA201摘要本文簡述了PS2鍵盤的特點(diǎn)和工作原理,重點(diǎn)介紹了在FPGA上實(shí)現(xiàn)PS2鍵盤的構(gòu)造設(shè)計和VHDL代碼設(shè)計。PS2鍵盤具有價格低、通用可靠,且連接線少(僅使用2根信號線〕的特點(diǎn)。并可滿足多種系統(tǒng)的要求。FPGA〔FieldProgrammableGateArray〕是一類高集成度的可編程邏輯器件,它結(jié)合EDA技術(shù)以硬件描述語言、電路原理圖、狀機(jī)等形式輸入設(shè)計邏輯;并提供功能模擬、時序仿真等模擬手段,再經(jīng)過一系列的變換,將輸入邏輯轉(zhuǎn)換成FPGA器件所需的編程文件,以實(shí)現(xiàn)專用集成電路ASIC。應(yīng)用FPGA設(shè)計PS2鍵盤控制器,不僅有硬件電路簡單,更具靈活性,集成度高更容易移植等特點(diǎn),更重要的是現(xiàn)代EDA(電子設(shè)計自動化)技術(shù)提供了一種很好的途徑,利用VHDL硬件描述語言和FPGA器件可以很方便地構(gòu)建鍵盤掃描模塊。設(shè)計使得使用VHDL語言基于FPGA芯片實(shí)現(xiàn)PS2鍵盤成為研究的方向。本文對基于VHDL的PS2鍵盤實(shí)現(xiàn)進(jìn)展了研究,并設(shè)計了PS2鍵盤。所做的主要工作為:〔1〕以PS2鍵盤控制的根本理論為依據(jù),對其進(jìn)展了詳細(xì)的討論?!?〕本設(shè)計中采用了自上而下的層次化、模塊化的設(shè)計思想,將整個接口劃分為多個模塊,同時利用VHDL語言的描述方法對各個功能模塊進(jìn)展了設(shè)計,最終完成了PS2鍵盤的系統(tǒng)設(shè)計?!?〕運(yùn)用ISE軟件進(jìn)展仿真。關(guān)鍵詞:VHDL;PS2鍵盤;ISEAbstractThispaperdescribesthecharacteristicsandworkingprincipleofPS2keyboard,introducedinthestructureofFPGAtorealizethePS2keyboarddesignandVHDLcodedesign.PS2keyboardhaslowpriceandreliableingeneralandlesscables(USESonly2signallines).Andcanmeettherequirementsofavarietyofsystems.FPGA(FieldProgrammableGateArray)isakindofhighlevelofintegrationofProgrammablelogicdevices,itcombinedthetechnologyofEDAwithhardwaredescriptionlanguage(suchasforminput,circuitprinciplediagram,machinedesignlogic;Andprovidethefunctionsimulationandtimingsimulationmodelingtechnology,thenafteraseriesoftransformation,whichconvertstheinputlogicprogrammingfilesneededfortheFPGAdevice,inordertorealizethespecialintegratedcircuitASIC.PS2keyboardcontrollerusingFPGAdesign,notonlythehardwarecircuitissimple,flexibility,highlevelofintegrationismoreeasytotransplant,moreimportantisthemodernEDA(electronicdesignautomation)technologyprovidesagoodway,usingtheVHDLhardwaredescriptionlanguageandFPGAdevicecanbeeasilyconstructthekeyboardscanmodule.DesignmakesuseofVHDLlanguagebasedontheFPGAchiptorealizethePS2keyboardbecomethedirectionofresearch.Inthispaper,thePS2keyboardimplementationbasedonVHDLarestudied,anddesignthePS2keyboard.Themainworkdoneasfollows:(1)tothePS2keyboardcontrolonthebasisofthebasictheory,andcarriesonthedetaileddiscussion.(2)thedesignadoptsthetop-downhierarchical,modulardesignthought,willthewholeinterfaceisdividedintoseveralmodules,atthesametime,useofVHDLlanguagedescriptionmethodofeachfunctionmoduledesign,finallycompletedaPS2keyboardsystemdesign.(3)usingISEsoftwaresimulation.Keywords:VHDL;PS2keyboard;ISE目錄TOC\o"1-2"\h\z\u1概述11.1本選題研究的目的及意義11.2本選題國內(nèi)外研究狀況綜述11.3本選題研究的主要內(nèi)容22PS2鍵盤的理論研究32.1PS2鍵盤的構(gòu)造特點(diǎn)32.2PS2鍵盤的工作原理32.3PS2協(xié)議43ISE工具概述73.1硬件描述語言73.2ISE使用方法124PS2接口的設(shè)計164.1模塊構(gòu)造設(shè)計164.2VHDL代碼設(shè)計164.3仿真驗(yàn)證17結(jié)語18主要參考文獻(xiàn)19附錄20附錄1PS2鍵盤接口程序設(shè)計201概述1.1本選題研究的目的及意義現(xiàn)今生活中,隨著社會的開展,各式各樣的生活用品慢慢地走上了“智能〞的道路,越來越令人感覺到方便。這與一個優(yōu)秀的人機(jī)交流界面密不可分。與此同時作為計算機(jī)最常用的輸入設(shè)備的鍵盤也日新月異。1981年IBM推出了IBMPC/XT鍵盤及其接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了83鍵,具5腳DIN連接器和簡單的串行協(xié)議。采用我們現(xiàn)在提及的作為第一套掃描碼集然則它并沒有主機(jī)到鍵盤的命令。為此,1984年IBM推出了IBMAT鍵盤接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了84~101鍵,與PC鍵盤不同的是它采用雙向串行通訊協(xié)議,此協(xié)議采用第二套鍵盤掃描碼集并設(shè)有8個主機(jī)到鍵盤的命令。到了1987年,IBM又推出了PS2鍵盤接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)仍舊定義了84~101鍵的根基上采用6腳mini-DIN連接器,此連接器在封裝上比5腳DIN連接器更小巧,仍然用雙向串行通訊協(xié)議并且提供有可選擇的第三套鍵盤掃描碼集,同時支持17個主機(jī)到鍵盤的命令?,F(xiàn)在,市面上的鍵盤都和PS2及AT鍵盤兼容,只是功能不同而已。在工業(yè)電子設(shè)備“智能化〞和升級換代迅速的電路設(shè)計中,常常需要使用鍵盤,而使用標(biāo)準(zhǔn)PS2鍵盤則可簡化設(shè)計。由于FPGA不僅可以用編寫代碼的方法實(shí)現(xiàn)復(fù)雜邏輯電路,而且其內(nèi)部是由規(guī)則的邏輯陣列所組成的。因此利用FPGA設(shè)計鍵盤控制器,不僅使硬件電路簡單,設(shè)計周期短而且編碼過程比通用MCU比,更加簡單易行。1.2本選題國內(nèi)外研究狀況綜述如果將CPU比作電腦的心臟,顯示器比作電腦的臉,那么鍵盤就是電腦的嘴,是它實(shí)現(xiàn)了人和電腦的溝通。它作為嵌入式系統(tǒng)的常用人機(jī)接口設(shè)備,在嵌入式系統(tǒng)中有著廣泛的應(yīng)用。目前,無論是國外還是國內(nèi),各鍵盤制造廠商針對使用者對于鍵盤的功能性及使用舒適度等需求,在設(shè)計上作了相當(dāng)大的調(diào)整,就市場角度來看,鍵盤技術(shù)在可預(yù)期的幾年內(nèi)將朝著以下幾個趨勢開展:〔1〕USB介面設(shè)計:USB〔UniversalSerialBus〕即為一種可聯(lián)結(jié)127個裝置的萬用序列流排,同時支持PC97的一種外接標(biāo)準(zhǔn),并成為目前電腦界最新的介面標(biāo)準(zhǔn),因USB介面能夠提供更簡單,更直接的聯(lián)結(jié)方式,即插即用,可高速存取。據(jù)市場趨勢顯示,USB已經(jīng)開展為便于利用,增強(qiáng)功能及降低本錢的標(biāo)準(zhǔn)。在WinHEC大會上,Microsoft總裁BillGates大力倡導(dǎo)USB的標(biāo)準(zhǔn)下,不僅Intel全部新型的主機(jī)板均支持USB而且?guī)缀跛蠵C供給商都致力于開展USB的系統(tǒng),因此它被預(yù)測成為整個新型PC周邊設(shè)備產(chǎn)品爆炸性創(chuàng)新的"催化劑"?!?〕多媒體功能:鍵盤的設(shè)計已開場走向多媒體世界的舞臺,它擁有操控多媒體周邊設(shè)備的功能同時,使用者還可依自己的需求,自行設(shè)定所需的應(yīng)用功能于功能鍵上。多媒體的市場正在快速開展中,鍵盤技術(shù)的開展也必將順應(yīng)著它的潮流而不斷改良,面對這種改良,有人說是把簡單的鍵盤復(fù)雜化〔因"熱鍵"必須和軟件的驅(qū)動程式相配合〕。也有人認(rèn)為:聰明的鍵盤就該如此?!?〕人體工學(xué)設(shè)計:隨著人們對于電腦的日趨依賴,逐漸衍生出了電腦癥候群。針對此非必要性的傷害,市場上已逐漸出現(xiàn)并流行起號稱符合人體工學(xué)原理的鍵盤。PS2鍵盤是IBM于1987年正式推出的,在整體設(shè)計上與AT鍵盤相差不大,更改的最多的可能是主機(jī)到鍵盤命令的增加。此外,PS2鍵盤出人意料的使用一種乖僻的掃描碼。這使得它的兼容性大打折扣。正如大家所熟知的那樣,PS2系統(tǒng)并不流行,后來幾乎沒人再用了。到了20世紀(jì)中期,電子鍵盤代替了機(jī)械鍵盤,1936年美國人Dvorak在QWERT式鍵盤的根基上創(chuàng)造Dvorak鍵盤。在20世紀(jì)70年代,一位名為LilianMalt的創(chuàng)造家又對DVORAK鍵盤作了進(jìn)一步改良創(chuàng)造了Malt鍵盤。鍵盤的接口有AT接口、PS/2接口和最新的USB接口,高檔的品牌機(jī)多采用PS/2接口,最早也是IBM公司的專利俗稱“小口〞,不過越來越多新型主板都開場提供PS/2鍵盤接口。雖然目前USB作為新興的構(gòu)造,一些公司迅速推出了USB接口的鍵盤,但USB接口只是一個賣點(diǎn),對性能的提高收效甚微,可以說現(xiàn)在主流的還是PS2接口,因?yàn)樗鼉r格低、通用可靠,且連接線少(僅使用2根信號線〕并可滿足多種系統(tǒng)的要求。1.3本選題研究的主要內(nèi)容PS/2是較早電腦上常見的接口之一,用于鼠標(biāo),鍵盤等設(shè)備。雖然IBM的PS/2電腦在市場中失敗了,但是PS/2接口一直沿用至今,鍵盤是嵌入式系統(tǒng)的重要輸入設(shè)備,實(shí)現(xiàn)人機(jī)交互的重要途徑,隨著標(biāo)準(zhǔn)PS/2鍵盤技術(shù)的不斷成熟,在嵌入式系統(tǒng)中,用標(biāo)準(zhǔn)PS/2鍵盤會越來與廣泛。由于VHDL所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至FPGA上進(jìn)展測試,因此它成為IC設(shè)計驗(yàn)證的技術(shù)主流。利用VHDL通過模塊組合可以實(shí)現(xiàn)特定的功能,所以對于標(biāo)準(zhǔn)PS/2鍵盤,用VHDL設(shè)計基于FPGA的標(biāo)準(zhǔn)PS/2鍵盤接口,實(shí)現(xiàn)了標(biāo)準(zhǔn)PS/2鍵盤到NiosII嵌入式CPU的數(shù)據(jù)單向通信。本文主要分為5章,章節(jié)安排如下:〔1〕緒論。主要介紹了開題的背景和研究意義,以及PS2鍵盤的國內(nèi)外研究現(xiàn)狀以及課題的研究內(nèi)容和具體工作等。〔2〕PS2鍵盤的理論研究。主要介紹PS2鍵盤的根本知識以及其設(shè)計的根本方法?!?〕ISE工具概述。介紹了VHDL硬件語言及其設(shè)計方法、ISE軟件的運(yùn)用等?!?〕PS2鍵盤控制的設(shè)計。介紹了PS2鍵盤控制的設(shè)計的模塊劃分和PS2鍵盤控制的各模塊的實(shí)現(xiàn),并對PS2鍵盤控制設(shè)計進(jìn)展了系統(tǒng)仿真和驗(yàn)證?!?〕結(jié)語。主要介紹本論文中的優(yōu)點(diǎn)和缺乏之處。2PS2鍵盤控制的理論研究鍵盤是嵌入式系統(tǒng)的重要輸入工具,是實(shí)現(xiàn)人機(jī)交互的重要手段之一。隨著標(biāo)準(zhǔn)PS2鍵盤技術(shù)的成熟和價格的不斷下降,使得在嵌入式系統(tǒng)的設(shè)計中用標(biāo)準(zhǔn)的PS2鍵盤取代自制簡易的掃描式矩陣式鍵盤成為可能?,F(xiàn)在主流的是PS/2接口,鍵盤和鼠標(biāo)都可以使用PS/2接口,它內(nèi)嵌自動去除按鍵抖動的設(shè)計自動地識別鍵的按下與釋放,軟硬件可發(fā)簡便,價格廉價、穩(wěn)定可靠,將PS2鍵盤作為嵌入式系統(tǒng)的輸入設(shè)備已經(jīng)成為可行的方案。2.1PS2鍵盤的構(gòu)造特點(diǎn)現(xiàn)在主流的是PS/2接口,即具有六腳mini-DIN連接器的鍵盤則稱之為PS/2鍵盤。PS/2最初由IBM開發(fā),它的連接端口只有四個腳有意義。分別是第1腳DATA(數(shù)據(jù)腳)、第3腳Ground(電源地)、第4腳+5V(電源腳)和第5腳Clock(時鐘腳)。PS2引腳構(gòu)造和外形如圖2.1所示:各引腳定義為:1:Data線4:+5V電源線2:未用5:Clock線各引腳定義為:1:Data線4:+5V電源線2:未用5:Clock線3:Ground線6:未用圖2.1PS/2硬件接口外形圖2.2PS2鍵盤工作原理PS2鍵盤靠PC的PS2端口提供+5V電源,由于Clock(時鐘腳)和DATA(數(shù)據(jù)腳)兩個腳都是集電極開路的,則必須接大阻值的上拉電阻。一般上拉電阻設(shè)置在主設(shè)備中,主從設(shè)備之間的數(shù)據(jù)通信采用雙向同步方式傳輸,時鐘信號一般由從設(shè)備產(chǎn)生。它們平時一般保持高電平,并很容易下拉到地〔邏輯0〕任何連接到PS2鍵盤上的設(shè)備在時鐘和數(shù)據(jù)線上都必須接大阻值的上拉電阻,有輸出時才會被拉到低電平,之后會自動上浮到高電平?!布粗谩?〞就把線拉低,置“1〞就把線上浮成高電平〕。數(shù)據(jù)和時鐘的一般接口構(gòu)造如圖2.2所示:圖2.2集電極開路PS2鍵盤通信協(xié)議履行一種雙向同步串行協(xié)議。也就是說每次數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)并且每在時鐘線上發(fā)生一個脈沖就被讀人,PS2鍵盤可以發(fā)送數(shù)據(jù)到主機(jī),而主機(jī)也可以發(fā)送數(shù)據(jù)到設(shè)備,但主機(jī)總是在總線上有優(yōu)先權(quán),因此它只需把時鐘拉低就可抑制在任何時候來自于鍵盤的通訊。從鍵盤發(fā)送到主機(jī)的數(shù)據(jù)在時鐘信號的下降沿當(dāng)時鐘從高變到低的時候被讀??;從主機(jī)發(fā)送到鍵盤的數(shù)據(jù)在上升沿當(dāng)時鐘從低變到高的時候被讀?。徊还芡ㄓ嵉姆较蛟鯓渔I盤總是產(chǎn)生時鐘信號,如果主機(jī)要發(fā)送數(shù)據(jù)它必須首先告訴設(shè)備開場產(chǎn)生時鐘信號,這個過程最大的時鐘頻率是33kHz而且大多數(shù)設(shè)備工作在10~20kHz。2.3PS2協(xié)議PS/2協(xié)議是鍵盤與其他硬件通信時的一種雙向半雙工通信協(xié)議,鍵盤通過Data線向外發(fā)送數(shù)據(jù),數(shù)據(jù)時鐘由鍵盤產(chǎn)生,在協(xié)議中數(shù)據(jù)的傳送格式為短幀格式,一般為11位,各位的含義如以下列圖2.3所示:圖2.3數(shù)據(jù)幀的含義Start:起始位,總為‘0’〔低電平〕D0~D7:8位數(shù)據(jù)位〔低位在前,高位在后〕Parity:奇偶校驗(yàn)位〔為奇校驗(yàn)〕Stop:停頓位,總為‘1’〔高電平〕〔1〕設(shè)備到主機(jī)的通訊:圖2.4鍵盤發(fā)送時序鍵盤發(fā)送時序如圖2.4所示。鍵盤首先會檢查Clock線和Data線是否同時為高電平,如果不是,那么是主機(jī)抑制了通訊設(shè)備必須緩沖任何要發(fā)送的數(shù)據(jù)直到重新獲得總線的控制權(quán)鍵盤有16字節(jié)的緩沖區(qū)。如果是,那么鍵盤則產(chǎn)生Clock信號,并將待發(fā)的數(shù)據(jù)按照數(shù)據(jù)幀的格式逐位放在數(shù)據(jù)線上,數(shù)據(jù)線在時鐘的高電平期間改變狀態(tài),時鐘的下降沿將數(shù)據(jù)鎖定到數(shù)據(jù)線上,此時外界就可以到數(shù)據(jù)線上讀取數(shù)據(jù)。鍵盤同步時鐘的最大頻率為33KHZ,一般情況下使用10~20KHZ的頻率。推薦值在15kHz左右,也就是說,Clock(時鐘腳)高、低電平的持續(xù)時間都為40μs。每一數(shù)據(jù)幀包含11~12個位,具體含義如表2.2所示:表2.2數(shù)據(jù)幀格式說明1個起始位總是邏輯08個數(shù)據(jù)位〔LSB〕低位在前1個奇偶校驗(yàn)位奇校驗(yàn)1個停頓位總是邏輯11個應(yīng)答位僅用在主機(jī)對設(shè)備的通訊中表中,如果數(shù)據(jù)位中1的個數(shù)為偶數(shù),校驗(yàn)位就為1;如果數(shù)據(jù)位中1的個數(shù)為奇數(shù),校驗(yàn)位就為0;總之,如果數(shù)據(jù)位中1的個數(shù)加上校驗(yàn)位中1的個數(shù)總為奇數(shù),那么總進(jìn)展奇校驗(yàn)?!?〕主機(jī)到設(shè)備的通訊:圖2.5鍵盤接收時序鍵盤接收時序如圖2.5所示。首先PS/2設(shè)備總是產(chǎn)生時鐘信號如果主機(jī)要發(fā)送數(shù)據(jù),它必須先下拉時鐘線〔至少100us〕抑制通信,表示“請求發(fā)送〞,然后釋放時鐘。在時鐘信號的上升沿,數(shù)據(jù)被鎖存讀取;在時鐘信號的低電平,數(shù)據(jù)線改變狀態(tài)。并且設(shè)備應(yīng)該在不超過10ms的間隔內(nèi)檢查這個狀態(tài)。當(dāng)設(shè)備檢測到這個狀態(tài)它將開場產(chǎn)生時鐘信號并且時鐘脈沖標(biāo)記下輸入八個數(shù)據(jù)位和一個停頓位主機(jī)僅當(dāng)時鐘線為低的時候,改變數(shù)據(jù)線而數(shù)據(jù)在時鐘脈沖的上升沿被鎖存這在發(fā)生在設(shè)備到主機(jī)通訊的過程中正好相反。在停頓位發(fā)送后設(shè)備要應(yīng)答接收到的字節(jié)就把數(shù)據(jù)線拉低并產(chǎn)生最后一個時鐘脈沖如果主機(jī)在第11個時鐘脈沖后不釋放數(shù)據(jù)線設(shè)備將繼續(xù)產(chǎn)生時鐘脈沖直到數(shù)據(jù)線被釋放然后設(shè)備將產(chǎn)生一個錯誤。主機(jī)可以在第11個時鐘脈沖應(yīng)答位前中止一次傳送只要下拉時鐘線至少100us即可。其中主機(jī)到設(shè)備通訊的詳細(xì)過程圖如圖2.6所示:圖2.6主機(jī)到設(shè)備的過程圖中描述了兩個重要的定時條件:〔a〕設(shè)備開場產(chǎn)生時鐘脈沖的時間必須步大于15ms;〔b〕數(shù)據(jù)包被發(fā)送的時間必須不大于2ms。3ISE工具概述隨著計算機(jī)軟件、硬件和集成電路制造技術(shù)的飛速開展,數(shù)字電路硬件設(shè)計復(fù)雜程度的快速增長,以及產(chǎn)生的設(shè)計成果可繼承性的需要,對數(shù)字電子系統(tǒng)的設(shè)計方法產(chǎn)生了極大的影響,傳統(tǒng)的以中小規(guī)模集成電路為根基模塊、以電路圖為表達(dá)方式的數(shù)字電子系統(tǒng)的設(shè)計方法正逐步被EDA技術(shù)的設(shè)計方法所取代。3.1硬件描述語言硬件描述語言〔HDL,HardwareDescriptionLanguage〕是EDA技術(shù)的重要組成局部,常用的硬件描述語言有VHDL、Verilog、ABEL等,VHDL是EDA技術(shù)的主流硬件描述語言之一,也是本文設(shè)計所采用的硬件描述語言。3.1.1VHDL的特點(diǎn)VHDL主要用于描述數(shù)字系統(tǒng)的構(gòu)造,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計算機(jī)高級語言。VHDL的程序構(gòu)造特點(diǎn)是將一項(xiàng)工程設(shè)計,或稱設(shè)計實(shí)體〔可以是一個元件,一個電路模塊或一個系統(tǒng)〕分成外部〔或稱可視局部,及端口)和內(nèi)部〔或稱不可視局部〕,既涉及實(shí)體的內(nèi)部功能和算法完成局部。在對一個設(shè)計實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實(shí)體。這種將設(shè)計實(shí)體分成內(nèi)、外兩局部的概念是VHDL系統(tǒng)設(shè)計的根本點(diǎn)。相對于其他硬件語言的優(yōu)勢如下:〔1〕VHDL語言功能強(qiáng)大,設(shè)計靈活VHDL語言具有強(qiáng)大的語言構(gòu)造,只需采用簡單明確的VHDL語言程序就可以描述十分復(fù)雜的硬件電路。同時,它還具有多層次的電路設(shè)計描述功能。此外,VHDL語言能夠同時支持同步電路、異步電路和隨機(jī)電路的設(shè)計實(shí)現(xiàn),這是其他硬件描述語言所不能比較的。VHDL語言設(shè)計方法靈活多樣,既支持自頂向下的設(shè)計方式,也支持自底向上的設(shè)計方法;既支持模塊化設(shè)計方法,也支持層次化設(shè)計方法。〔2〕VHDL語言覆蓋面廣,系統(tǒng)硬件描述能力強(qiáng),是一個多層次的硬件描述語言VHDL語言具有多層次的電路設(shè)計描述功能,既可描述系統(tǒng)級電路,也可以描述門級電路;描述方式既可以采用行為描述、存放器傳輸描述或者構(gòu)造描述,也可以采用三者的混合描述方式。同時,VHDL語言也支持慣性延遲和傳輸延遲,這樣可以準(zhǔn)確地建設(shè)硬件電路的模型。VHDL語言的強(qiáng)大描述能力還表達(dá)在它具有豐富的數(shù)據(jù)類型。VHDL語言既支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類型,也支持用戶定義的數(shù)據(jù)類型,這樣便會給硬件描述帶來較大的自由度。〔3〕VHDL語言具有很強(qiáng)的移植能力VHDL語言很強(qiáng)的移植能力主要表達(dá)在:對于同一個硬件電路的VHDL語言描述,它可以從一個模擬器移植到另一個模擬器上、從一個綜合器移植到另一個綜合器上或者從一個工作平臺移植到另一個工作平臺上去執(zhí)行?!?〕VHDL語言具有良好的可讀性,且易于修改VHDL語言既可以被計算機(jī)承受,也容易被人們所理解;同時在硬件電路設(shè)計過程中,主要的設(shè)計文件是用VHDL編寫的源代碼,因VHDL語言易讀和構(gòu)造化的特點(diǎn),所以易于修改設(shè)計。〔5〕VHDL語言的設(shè)計描述與器件無關(guān)采用VHDL語言描述硬件電路時,設(shè)計人員并不需要首先考慮選擇進(jìn)展設(shè)計的器件。這樣做的好處是可以使設(shè)計人員集中精力進(jìn)展電路設(shè)計的優(yōu)化,而不需要考慮其他的問題。當(dāng)硬件電路的設(shè)計描述完成以后,VHDL語言允許采用多種不同的器件構(gòu)造來實(shí)現(xiàn)。〔6〕VHDL語言程序易于共享和復(fù)用VHDL語言采用基于庫(library)的設(shè)計方法。在設(shè)計過程中,設(shè)計人員可以建設(shè)各種可再次利用的模塊,一個大規(guī)模的硬件電路的設(shè)計不可能從門級電路開場一步步地進(jìn)展設(shè)計,而是一些模塊的累加。這些模塊可以預(yù)先設(shè)計或者使用以前設(shè)計中的存檔模塊,將這些模塊存放在庫中,就可以在以后的設(shè)計中進(jìn)展復(fù)用。3.1.2VHDL的根本程序構(gòu)造一個相對較完整的VHDL設(shè)計由實(shí)體〔Entity〕、構(gòu)造體〔Architecture〕、配置〔Configuration〕、程序包和程序包體〔Package〕以及庫〔Library〕5個局部組成。其各自作用分別為下表3.1所示:表3.1各局部作用實(shí)體〔Entity〕描述所設(shè)計的系統(tǒng)的外部接口信號,定義電路設(shè)計中所有的輸入和輸出端口構(gòu)造體(Architecture)描述系統(tǒng)內(nèi)部的構(gòu)造和行為包集合(Package)存放各設(shè)計模塊能共享的數(shù)據(jù)類型、常數(shù)和子程序等配置(Configuration)指定實(shí)體所對應(yīng)的構(gòu)造體庫(Library)存放已經(jīng)編譯的實(shí)體、構(gòu)造體、包集合和配置每一個VHDL程序并不是都具備以上四個局部的,只有一個實(shí)體和一個與之對應(yīng)的構(gòu)造體是必須具備的。VHDL的根本設(shè)計單元構(gòu)造:程序包說明、實(shí)體說明和構(gòu)造體說明三局部.3.1.3VHDL語言的使用〔1〕實(shí)體實(shí)體描述了設(shè)計單元的輸入輸出接口信號或引腳,是設(shè)計實(shí)體經(jīng)封裝后對外的一個通信界面。它也是設(shè)計的根本模塊和設(shè)計的初級單元,在分層次設(shè)計中,頂層有頂級實(shí)體,含在頂級實(shí)體中的較低層次的描述為低級實(shí)體,通過配置可把頂層實(shí)體和底層實(shí)體連接起來。實(shí)體語句用關(guān)鍵詞ENTITY開頭,實(shí)體名rsff是描述的符號名,在完畢實(shí)體語句的ENDrsff之間,實(shí)體語句可以用關(guān)鍵詞BEGIN把實(shí)體語句分成兩局部:即BEGIN之前是實(shí)體說明,BEGIN之后是實(shí)體語句。在ENTITY語句的實(shí)體說明局部,常用PORT付語描述實(shí)體對外界連接的端口〔數(shù)目、方向和數(shù)據(jù)類型〕。實(shí)體rsff有4個端口,Set/Reset是輸入IN模式,Q/QB是輸出BUFFER〔緩沖〕模式,都為BIT類型。實(shí)體的語法格式如下:ENTITY實(shí)體名IS[GENERIC〔常數(shù)名:數(shù)據(jù)類型[:設(shè)定值];{常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]}〕;][PORT〔端口名:端口模式數(shù)據(jù)類型;{端口名:端口模式數(shù)據(jù)類型}〕;]ENDENTITY實(shí)體名;實(shí)體名由設(shè)計者自由命名,用來表示被設(shè)計電路芯片的名稱,但是必須與VHDL程序的文件名稱一樣。要與文件名一致;其中,GENERIC是用于說明設(shè)計實(shí)體和其外部環(huán)境通信的對象,規(guī)定端口的大小、實(shí)體中子元件的數(shù)目、實(shí)體的延時特性等。只能用整數(shù)類型表示,如整型、時間型等,其他類型的數(shù)據(jù)不能邏輯綜合。格式如下:GENERIC([CONSTANT]屬性名稱:[IN]子類型標(biāo)識[:=靜態(tài)表達(dá)式],……);PORT關(guān)鍵字用于定義模塊的端口,它的格式如下:PORT([SIGNAL]端口名稱:[方向]類型標(biāo)識[BUS][:=靜態(tài)表達(dá)式],[SIGNAL]端口名稱:[方向]類型標(biāo)識[BUS][:=靜態(tài)表達(dá)式],…[SIGNAL]端口名稱:[方向]類型標(biāo)識[BUS][:=靜態(tài)表達(dá)式]);①SIGNAL:SIGNAL是關(guān)鍵字,但是由于PORT之后必須是信號類,所以一般可以將SIGNAL關(guān)鍵字省略。②端口方向:IN,OUT,INOUT,BUFFER說明端口方向的關(guān)鍵字如表3.2所示:表3.2關(guān)鍵字的含義說明符含義IN〔輸入〕信號進(jìn)入實(shí)體內(nèi)部,內(nèi)部的信號不能從該端口輸出。OUT〔輸出〕信號從實(shí)體內(nèi)部輸出,不能通過該端口在實(shí)體內(nèi)部反響使用INOUT〔雙向〕信號不但可以輸入到實(shí)體內(nèi)部,還可以從實(shí)體內(nèi)部輸出,也允許用于內(nèi)部反響。BUFFER〔緩沖〕信號輸出到實(shí)體外部,同時也可以通過該端口在實(shí)體內(nèi)部反響使用?!癘UT〞和“BUFFER〞都可定義輸出端口如圖3.1所示;圖3.1輸出端口引腳圖假設(shè)實(shí)體內(nèi)部需要反響輸出信號,則輸出端口必須被設(shè)置為“BUFFER〞,而不能為“OUT〞?!?〕構(gòu)造體構(gòu)造體描述實(shí)體的行為功能,一個實(shí)體可以有多個構(gòu)造體。構(gòu)造體是一個根本設(shè)計單元,它具體地指明了所設(shè)計模塊的行為、元件及內(nèi)部的連接關(guān)系,也就是定義了設(shè)計單元具體的功能。構(gòu)造體對其根本設(shè)計單元的輸入/輸出關(guān)系可以用3種方式進(jìn)展描述,即行為描述〔根本設(shè)計單元的數(shù)學(xué)模型描述〕、存放器傳輸描述〔數(shù)據(jù)流描述〕和構(gòu)造描述〔邏輯元件連接描述〕。不同的描述方式只表達(dá)在描述語句上,而構(gòu)造體的構(gòu)造是完全一樣的。由于構(gòu)造體是對實(shí)體功能的具體描述,因此它一定要跟在實(shí)體的后面。構(gòu)造體的語法格式如下:ARCHITECTURE構(gòu)造名OF實(shí)體名IS{說明語句}BEGIN功能描述語句;END構(gòu)造體名;其中說明語句用于聲明該構(gòu)造體將用到的信號、數(shù)據(jù)類型、常數(shù)、子程序和元件等。聲明的內(nèi)容是局部的。而功能描述語句則是具體描述構(gòu)造體的功能和行為。VHDL構(gòu)造體描述常常用到3種語句構(gòu)造:①PROCESS語句構(gòu)造進(jìn)程語句是一種并發(fā)處理語句,在一個構(gòu)造體中多個PROCESS語句可以同時并行運(yùn)行〔相當(dāng)于多個CPU同時運(yùn)作〕。PROCESS語句是VHDL語言中描述硬件系統(tǒng)并發(fā)行為的最根本語句。PROCESS語句的格式如下:[進(jìn)程名]:PROCESS(信號1,信號2,…)BEGIN…ENDPROCESS;②BLOCK語句構(gòu)造BLOCK語句的格式如下:塊名:BLOCK(條件)[參數(shù)GENERIC說明;[參數(shù)映射;]][端口說明;[端口映射;]][塊說明語句]BEGIN并發(fā)語句組;ENDBLOCK塊名;BLOCK放在構(gòu)造體的并行語句組中。和PROCESS語句不同,BLOCK內(nèi)的語句是并發(fā)執(zhí)行的。只要BLOCK右邊的條件滿足,BLOCK內(nèi)的語句就被執(zhí)行。如果省略條件,表示本BLOCK被無條件執(zhí)行。③子程序構(gòu)造所謂子程序構(gòu)造就是將一局部實(shí)現(xiàn)代碼放到公用的程序〔即程序包Package〕文件中實(shí)現(xiàn)。子程序在調(diào)用時首先要進(jìn)展初始化,執(zhí)行完畢后子程序就終止,再調(diào)用時要再進(jìn)展初始化。因此子程序內(nèi)部的值不能保持,子程序返回以后才能被再調(diào)用,它是一個非重入的程序。VHDL中有兩種類型的子程序—過程〔Procedure〕和函數(shù)〔Function〕。(a)過程過程的格式如下:PROCEDURE過程名(參數(shù)1;參數(shù)2;……)IS定義語句;BEGIN順序語句組;END過程名;每個參數(shù)的說明格式如下:參數(shù)名:方向類型方向一般為3種:IN、OUT、INOUT。如果方向?yàn)镮N則可省略方向說明。(b)函數(shù)函數(shù)的格式如下:FUNCTION函數(shù)名(參數(shù)1;參數(shù)2;……)RETURN數(shù)據(jù)類型IS定義語句;BEGIN順序語句組;RETURN[返回變量名];END函數(shù)名;3.2ISE使用方法3.2.1ISE的主要功能ISE的主要功能包括設(shè)計輸入、仿真、綜合、下載和實(shí)現(xiàn),涵蓋了可編程邏輯器件開發(fā)的整個過程,從功能上講,完成CPLD/FPGA的設(shè)計流程且無需借助任何第三方EDA軟件。下面簡要說明各功能的作用:〔1〕設(shè)計輸入:ISE提供的設(shè)計輸入工具包括用于HDL代碼輸入和查看報告的ISE文本編輯器〔TheISETextEditor〕,用于原理圖編輯的工具,用于生成IPCore的CoreGenerator,用于狀態(tài)機(jī)設(shè)計的StateCAD以及用于約束文件編輯的ConstraintEditor等。〔2〕綜合:ISE的綜合工具不但包含了Xilinx自身提供的綜合工具XST,同時還可以內(nèi)嵌MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify,實(shí)現(xiàn)無縫鏈接?!?〕仿真:ISE本身自帶了一個具有圖形化波形編輯功能的仿真工具HDLBencher,同時又提供了使用ModelTech公司的Modelsim進(jìn)展仿真的接口?!?〕實(shí)現(xiàn):此功能包括了翻譯、映射、布局布線等,還具備時序分析、管腳指定以及增量設(shè)計等高級功能?!?〕下載:下載功能包括了BitGen,用于將布局布線后的設(shè)計文件轉(zhuǎn)換為位流文件,還包括了IMPACT,功能是進(jìn)展芯片配置和通信,控制將程序燒寫到FPGA芯片中去。3.2.2ISE的使用方法〔1〕創(chuàng)立工程用ISE完成一個HDL設(shè)計的仿真,必須建設(shè)一個ISE工程。ISE的向?qū)Чδ?,能幫助開發(fā)者迅速創(chuàng)立仿真工程。①啟動ISE,單擊菜單【File】/【NewProject】,就會出現(xiàn)對應(yīng)的“CreateNewProject〞窗口。窗口中包含工程名、工程路徑、“Top-levelsourcetype〞等。②單擊“CreateNewProject〞窗口上的【Next】按鈕,彈出“DeviceProperties〞的窗口。直接單擊【Next】進(jìn)入下一步,一直點(diǎn)擊【Next】直到【Finish】完成。③完成后在Sources窗口中顯示工程文件夾以及工程所用芯片。右擊可以新建文件,添加已經(jīng)寫好的文件,添加文件并復(fù)制該文件到工程文件夾中。新建文件的類型,不同的類型有著不同的功能和意義。我們選擇“VHDLModule〞類型,輸入一個名字點(diǎn)擊【Next】,進(jìn)入下一級的添加實(shí)體端口,輸入端口名和端口的類型及位數(shù)點(diǎn)擊【Next】,就進(jìn)入了最后的Summary窗口,上面給出了該文件的概要。④輸入要運(yùn)行的程序,這樣一個工程就建設(shè)完成了?!?〕編譯代碼編寫好后,點(diǎn)擊保存,然后檢查看編寫代碼是否有錯誤,如圖3.2所示,CheckSyntax點(diǎn)擊檢查后是綠色的勾,則代碼沒有語法錯誤,可以進(jìn)展下一步功能仿真。圖3.2代碼的編譯〔3〕行為(功能)仿真①同樣在Sources區(qū)域右鍵添加NewSource如圖3.3所示,添加圖形仿真文件:圖3.3添加圖形仿真文件②選擇測試程序,點(diǎn)【Next】,【Finish】,雙擊測試文件,到如圖3.4所示界面:圖3.4測試程序界面刪除此段程序,添加如圖3.5所示程序:圖3.5修改程序界面③點(diǎn)Finish進(jìn)入波形編輯界面,如圖3.6所示〔rst是要編輯的波形〕:圖3.6波形編輯界面4PS2接口的設(shè)計4.1模塊構(gòu)造設(shè)計本設(shè)計則采用自頂向下的方法??紤]需要設(shè)計以下幾局部模塊:串并轉(zhuǎn)換模塊,分揀接收模塊,控制模塊,封裝發(fā)送模塊等。這幾局部的邏輯關(guān)系如圖4.1所示:圖4.1模塊邏輯間關(guān)系其中串并轉(zhuǎn)換模塊的主要作用是接收和發(fā)送傳輸數(shù)據(jù),并能夠?qū)⒋袛?shù)據(jù)轉(zhuǎn)變成所需要的并行數(shù)據(jù)。而分揀接收模塊的功能則是把串并轉(zhuǎn)換模塊傳過來的數(shù)據(jù)包按照一定的要求進(jìn)展分揀提取,從而獲得有用的信息。控制模塊是整個設(shè)計模塊中的核心,由于PS/2接口是半雙工串行總線,因此其發(fā)送和接收是不能夠同時進(jìn)展的,整個設(shè)計中控制模塊不僅要對其時序進(jìn)展嚴(yán)格的控制而且負(fù)責(zé)協(xié)調(diào)整其全過程。同時在本設(shè)計中也采用了狀態(tài)機(jī)的設(shè)計思路。封裝發(fā)送模塊和分揀接收模塊相似,只是要把要傳送的命令數(shù)據(jù)轉(zhuǎn)變成PS/2協(xié)議要求的發(fā)送數(shù)據(jù)包的格式。4.2VHDL代碼設(shè)計整個設(shè)計的流程圖如圖4.2所示:圖4.2設(shè)計流程圖當(dāng)系統(tǒng)上電或復(fù)位的時候,主設(shè)備會首先向鍵盤發(fā)送初始化信號,在得到鍵盤的應(yīng)答信號后,系統(tǒng)則進(jìn)入到了總線空閑狀態(tài),此時可以進(jìn)展數(shù)據(jù)的發(fā)送和接收,但由于主設(shè)備擁有更高的優(yōu)先級,因此正處在接收狀態(tài)時如果得到發(fā)送請求,會中斷數(shù)據(jù)接收,直接進(jìn)入數(shù)據(jù)發(fā)送狀態(tài)。使用ISE14.4對設(shè)計進(jìn)展了軟件仿真,按照模塊化的設(shè)計思路分別對每個模塊獨(dú)立進(jìn)展了仿真。圖4.3是接收數(shù)據(jù)模塊的仿真時序圖。4.3仿真驗(yàn)證本文在ISE14.4環(huán)境下對PS2鍵盤接口時序進(jìn)展仿真。仿真圖如圖4.3所示:圖4.3仿真圖結(jié)語近年來,隨著社會的開展,電子產(chǎn)品越來越多的走上了“智能〞的道路,成為了我們生活中必不可少的一局部。隨著計算機(jī)的普及,以及電子設(shè)備之間相互溝通的更加頻繁,如今鍵盤是嵌入式系統(tǒng)的重要輸入工具,是實(shí)現(xiàn)人機(jī)交互的重要手段之一。本論文為實(shí)現(xiàn)PS2鍵盤接口完成了以下研究:首先,以PS2協(xié)議接口的根本理論為依據(jù),論述了PS2鍵盤接口的構(gòu)造及設(shè)計,先介紹VHDL和FPGA的相關(guān)知識,PS2鍵盤的根本原理及其電路模塊的劃分,并詳細(xì)表達(dá)了鍵盤掃描電路、鍵盤譯碼電路、按鍵標(biāo)志產(chǎn)生電路、時鐘模塊以及鍵盤頂層電路等四個模塊的原理及實(shí)現(xiàn)過程。在設(shè)計中,利用VHDL硬件描述語言在FPGA芯片上實(shí)現(xiàn)鍵盤接口設(shè)計并利用仿真FPGA軟件進(jìn)展仿真。為了更好的驗(yàn)證仿真結(jié)果的正確性,文中應(yīng)用了ISE軟件對設(shè)計的電路進(jìn)展仿真測試,由于某些參數(shù)的設(shè)置不成功,沒有能正確仿真出預(yù)先設(shè)計的波形指標(biāo)。從以上對PS2鍵盤接口模擬仿真結(jié)果可以看出,整個時序不完全滿足PS2鍵盤的時序要求,但是由于個人水平有限,在短時間內(nèi)沒有設(shè)置成功。導(dǎo)致在設(shè)計中有很多缺乏之處沒有解決,同時在實(shí)際中運(yùn)用,一些理論完美化的設(shè)計需通過實(shí)際驗(yàn)證來判斷接口的順利傳輸。本人認(rèn)真進(jìn)展了課題的研究并完成了本論文,由于作者水平有限,論文中可能仍有錯誤和缺乏之處,敬請大家批評指正。最后,感謝指導(dǎo)教師的關(guān)心和細(xì)心的指導(dǎo),感謝同學(xué)們的幫助。謝謝!主要參考文獻(xiàn)[1]夏宇聞主編.Verilog數(shù)字系統(tǒng)設(shè)計教程.北京:北京航空航天大學(xué)出版社,2003.[2]田耕,徐文波編著.FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實(shí)例導(dǎo)航.北京:電子工業(yè)出版社,2005.[3]劉韜,樓興華主編.FPGA數(shù)字電子系統(tǒng)設(shè)計與開發(fā)實(shí)例導(dǎo)航.北京:人民郵電出版社,2005.[4]劉福奇主編.FPGA嵌入式工程開發(fā)實(shí)戰(zhàn).北京:電子工業(yè)出版社,2009.[5]潘松,黃繼業(yè),潘明主編.EDA技術(shù)實(shí)用教程—VerilogHDL版.北京:科學(xué)出版社,2010.[6]王開軍,姜宇柏主編.面向CPLD/FPGA的VHDL設(shè)計機(jī)械工業(yè)出版社,2007.[7]孫航.Xilinx可編程邏輯器件的高級應(yīng)用與設(shè)計技巧.北京:電子工業(yè)出版社,2004.[8]徐欣,于紅旗,易凡,等.基于FPGA的嵌入式系統(tǒng)設(shè)計.北京:機(jī)械工業(yè)出版社,2005.[9]紀(jì)志成,高春能主編.FPGA數(shù)字信號處理設(shè)計教程—SystemGenerater入門與提高.西安:西安電子科技大學(xué)出版,2008.[10]劉勇,王玉晶,曲斌,于洋.一種嵌入式PC非標(biāo)準(zhǔn)鍵盤的設(shè).微計算機(jī)信息,2007.[11]AdamChapweske.PS2技術(shù)參考.2002.[12]張海勁劉強(qiáng)蔡桂玲.用VHDL語言開發(fā)可編程邏輯器件.光電技術(shù)應(yīng)用,2003.[13]田源.基于VHDL語言實(shí)現(xiàn)FPGA設(shè)計.火控雷達(dá)技術(shù)2004.[14]://61eda[15]://21ic[16]Xilinx公司主頁.Spartan-3EFPGAFamily:CompleteDataSheet[EB/OL].(2007-5-29).附錄附錄1PS2鍵盤接口程序設(shè)計(1)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisport(clr:instd_logic;clk:instd_logic;ps2clk:instd_logic;ps2data:instd_logic;a_to_g:outSTD_LOGIC_VECTOR(6downto0);sel:outSTD_LOGIC_VECTOR(3downto0);dp:outSTD_LOGIC);endtop;architectureBehavioraloftopissignalclk4,sclk:std_logic;signaldat:std_logic_vector(15downto0);componentdivclkisport(clk:instd_logic;------50MHZclk400:outstd_logic;-------400KHZscanclk:outstd_Logic);endcomponent;componentkey_boardisport(clr:instd_logic;clk400:instd_logic;--400KHZps2clk:instd_logic;ps2data:instd_logic;dataout:outstd_logic_vector(15downto0));endcomponent;componentdispisport(clr:instd_logic;scanclk:instd_logic;datain:instd_logic_vector(15downto0);a_to_g:outSTD_LOGIC_VECTOR(6downto0);sel:outSTD_LOGIC_VECTOR(3downto0);dp:outSTD_LOGIC );endcomponent;begininst1:divclkportmap(clk,clk4,sclk);inst2:key_boardportmap(clr,clk4,ps2clk,ps2data,dat);inst3:dispportmap(clr,sclk,dat,a_to_g,sel,dp);endBehavioral;(2)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydivclkisport(clk:instd_logic;------50MHZclk400:outstd_logic;-------400KHZscanclk:outstd_Logic);enddivclk;architectureBehavioralofdivclkisbeginprocess(clk)variablecount:std_logic_vector(19downto0):=X"00000";beginif(rising_edge(clk))thencount:=count+1;endif;clk400<=count(2);scanclk<=count(12);endprocess;endBehavioral;(3)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitykey_boardisport(clr:instd_logic;clk400:instd_logic;--400KHZps2clk:instd_logic;ps2data:instd_logic;dataout:outstd_logic_vector(15downto0));endkey_board;architectureBehavioralofkey_boardissignalclk:std_logic:='0';signaldata:std_logic:='0';signalshift1,shift2:std_logic_vector(10downto0);signalps2c,ps2d:std_logic;beginps2c<=ps2clk;ps2d<=ps2data;dataout<=shift1(8downto1)&shift2(8downto1);process(clk400,clr)variabletempclk:std_logic_vector(7downto0):=X"00";variabletempdata:std_logic_vector(7downto0):=X"00";beginif(clr='0')thentempclk:=X"00";tempdata:=X"00";clk<='0';data<='0';elseif(clk400'eventandclk400='1')thentempclk(0):=ps2c;tempclk(7downto1):=tempclk(6downto0);tempdata(0):=ps2d;tempdata(7downto1):=tempdata(6downto0);endif;endif;if(tempclk="11111111")thenclk<='1';elseif(tempclk="00000000")thenclk<='0';endif;endif;if(tempdata="11111111")thendata<='1';elseif(tempdata="00000000")thendata<='0';endif;endif;endprocess;process(clk,clr)beginif(clr='0')thenshift1<=(others=>'0');shift2<=(others=>'0');elseif(clk'eventandclk='0')thenshift1(10)<=data;shift1(9downto0)<=shift1(10downto1);shift2(10)<=shift1(0);shift2(9downto0)<=shift2(10downto1);shift1(0)<=data;shift1(10downto1)<=shift1(9downto0);shift2(0)<=shift1(10);shift2(10downto1)<=shift2(9downto0);endif;endif;endprocess;endBehavioral;(4)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGN
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版綠色建筑抵押融資合同示范文本3篇
- 2024年蔬菜種植基地與科研機(jī)構(gòu)合作合同3篇
- 2025版班組施工退場工程尾款支付及結(jié)算合同3篇
- 2025天津市安全員A證考試題庫及答案
- 2025年江蘇省安全員-C證考試(專職安全員)題庫及答案
- 二零二五年度個人無人機(jī)航拍與影視制作合同范本3篇
- 2024版智能家居系統(tǒng)定制合同3篇
- 2024年租車安全與保險責(zé)任合同3篇
- 2024年音樂表演委托合同3篇
- 2024商鋪?zhàn)赓U合同稅務(wù)籌劃與標(biāo)的租金支付方式解析3篇
- 《紅色家書》讀書分享會主題班會課件
- 2025年廣東省春季高考數(shù)學(xué)仿真模擬試卷試題(含答案解析+答題卡)
- 新媒體運(yùn)營工作年終總結(jié)
- 【MOOC】電子技術(shù)-北京科技大學(xué) 中國大學(xué)慕課MOOC答案
- 米酒釀造工藝
- 點(diǎn)式高層住宅工程施工組織設(shè)計
- 0-3歲嬰幼兒心理發(fā)展知到智慧樹期末考試答案題庫2024年秋杭州師范大學(xué)
- 2024年1月福建省普通高中學(xué)業(yè)水平合格性考試化學(xué)試題(解析版)
- 齊白石介紹課件
- 窺見中華文明之光- 高中語文統(tǒng)編版(2022)必修下冊第一單元整體教學(xué)設(shè)計
- 2024年安徽省公務(wù)員錄用考試《行測》真題及解析
評論
0/150
提交評論