




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于FPGA的PS/2鼠標(biāo)接口設(shè)計及VGA顯示 內(nèi)容摘要:本文主要介紹基于FPGA的PS/2鼠標(biāo)接口設(shè)計及VGA顯示的原理和工作流程,然后用鼠標(biāo)操作并用VGA顯示作為實(shí)例,把鼠標(biāo)接口和VGA顯示部分的各個應(yīng)用模塊體現(xiàn)出來,最后對各個模塊進(jìn)行硬件設(shè)計和軟件編程。本次設(shè)計采用的現(xiàn)場可編程門陣列是Altera公司的EP2C5T144C8,并用VHDL語言在Quartus軟件環(huán)境下編程、仿真實(shí)現(xiàn)設(shè)計所要實(shí)現(xiàn)的功能。當(dāng)用鼠標(biāo)操作并在VGA上顯示實(shí)現(xiàn)我們想要的功能的時候,就充分說明了大規(guī)模可編程邏輯器件的重要作用。本次設(shè)計先分別介紹FPGA的內(nèi)部結(jié)構(gòu)、PS/2的接口協(xié)議、VGA的顯示時序,然后再它們的基礎(chǔ)
2、上以FPGA為核心器件實(shí)現(xiàn)本次設(shè)計的功能。在設(shè)計過程中,對FPGA的正確編程是有關(guān)本設(shè)計成敗的關(guān)鍵,也是本設(shè)計的難點(diǎn)。 關(guān)鍵詞:現(xiàn)場可編程門陣列 可編程控制器 鼠標(biāo)接口 VGA顯示Design of PS / 2 mouse and VGA display based on FPGAAbstract: This paper mainly introduces the PS / 2 mouse interface design and VGA display principle and work process based on the FPGA,and then use the mouse t
3、o operate and use VGA to display as an example to reflect the mouse interface and VGA display portion of each application module; at the end , design each module hardware and programm software . This design using field programmable gate array is from Altera EP2C5T144C8, and programm VHDL language in
4、 Quartus software environment and simulate to realize the function which is designed. When use the mouse to operate and display on the VGA to realize the features we want , fully illustrates the importance of the large-scale programmable logic device in . The design at the first introduced the inner
5、 structure of FPGA, PS / 2interface protocol, VGA display timing, then realize the design function based on the formers with FPGA as the core . In the design process, the FPGA correct programming is the key related to the success which is also the difficulty of this design.Keywords: FPGA Programmabl
6、e controller Mouse VGA display.目 錄前言11 FPGA的介紹11.1 FPGA的簡介11.2 FPGA的結(jié)構(gòu)和工作原理11.2.1 FPGA的芯片結(jié)構(gòu)21.2.2 FPGA各部分的作用與工作原理2PS/2的介紹42.1 PS/2的接口特性42.2 PS/2的接口協(xié)議42.3 PS/2鼠標(biāo)工作模式52.4 PS/2的數(shù)據(jù)包格式53 VGA的簡介53.1 VGA的時序53.2 VGA接口64 VHDL簡介64.1 VHDL的設(shè)計方法64.2 VHDL的設(shè)計流程75 設(shè)計方案75.1 設(shè)計任務(wù)75.2 設(shè)計原理75.3 模塊電路設(shè)計75.3.1 PS/2鼠標(biāo)接口電路7
7、5.3.2 VGA顯示模塊85.4 系統(tǒng)頂層文件96 結(jié)束語10附錄11參考文獻(xiàn)29基于FPGA的PS/2鼠標(biāo)接口設(shè)計及VGA顯示前言 隨著電子技術(shù)的發(fā)展,現(xiàn)代電子產(chǎn)品已經(jīng)深入到社會的各個領(lǐng)域,有利的促進(jìn)了社會的發(fā)展,但同時人們對電子產(chǎn)品的性能和要求也越來越高,產(chǎn)品的換代速度也越來越快。然而微電子技術(shù)是電子技術(shù)發(fā)展的根基,尤其在半導(dǎo)體工藝技術(shù)的發(fā)展上更能體現(xiàn)出微電子技術(shù)。所以現(xiàn)在在單片硅片上集成了更多的晶體管,集成電路也在向低成本、低功耗和高速的方向發(fā)展,各種專用集成電路的成本不斷降低,最終實(shí)現(xiàn)了片上系統(tǒng)?,F(xiàn)代電子技術(shù)的核心是EDA技術(shù),它結(jié)合了物理層在硬件電路實(shí)現(xiàn)的發(fā)展,也體現(xiàn)了現(xiàn)代電子技術(shù)
8、與計算機(jī)軟件技術(shù)有效的融合和升華。EDA技術(shù)的發(fā)展有效的結(jié)合了這兩者,是這兩個技術(shù)的共同產(chǎn)物,所以電子技術(shù)全方位技術(shù)EDA時代。工程師們用EDA工具,開發(fā)專用集成電路及其復(fù)雜的IP核模塊。特別是硬件描述語言的出現(xiàn),使更加復(fù)雜的電子系統(tǒng)的設(shè)計和調(diào)試更加的簡單。所以為了實(shí)現(xiàn)電子技術(shù)的發(fā)展,EDA技術(shù)對于我們而言及其重要。本文介紹了基于FPGA控制的PS/2鼠標(biāo)接口電路設(shè)計的基本結(jié)構(gòu)、性能特點(diǎn)、及其設(shè)計理念。本設(shè)計采用EP2C5T144C8 FPGA芯片,采用EDA技術(shù),并使用VHDL語言設(shè)計各個模塊,并在Quartus下進(jìn)行軟件編程實(shí)現(xiàn)正確的工作時序后,將編譯結(jié)果下載到FPGA芯片上,最終實(shí)現(xiàn)本次
9、設(shè)計的要求。 1 FPGA的介紹1.1 FPGA的簡介 隨著EDA技術(shù)的發(fā)展,在電子領(lǐng)域里的模電與數(shù)電、硬件和軟件、器件與系統(tǒng)的集成等更加良好的融入到一起。所以更大規(guī)模的FPGA器件不斷更新。FPGA(Field Programmable Gate Array)是一款大規(guī)??删幊踢壿嬈骷?,它和CPLD、GAL等可編程邏輯器件不一樣,后者都是基于乘積項的可編程結(jié)構(gòu),而前者是用的查找表結(jié)構(gòu),LUT是可編程的最小邏輯單元。FPGA的出現(xiàn)使開發(fā)數(shù)字電路的技術(shù)進(jìn)一步提高。它的特點(diǎn)是直接面向用戶,具有極大的通用性和靈活性,使用簡單方便,硬件檢測和實(shí)現(xiàn)快捷,開發(fā)周期短,成本低,便于維護(hù)等。FPGA應(yīng)用EDA
10、技術(shù),以硬件描述語言,原理圖等形式作為輸入設(shè)計邏輯,經(jīng)過一系列的變換,最后轉(zhuǎn)換成FPGA器件所識別的編程文件,最終實(shí)現(xiàn)電子線路系統(tǒng)功能。1.2 FPGA的結(jié)構(gòu)和工作原理對于大多數(shù)FPGA而言都是采用的基于靜態(tài)隨機(jī)存儲器的查找表邏輯形成機(jī)構(gòu),簡單的說就是用靜態(tài)隨機(jī)存儲器來夠成邏輯函數(shù)發(fā)生器,其4輸入LUT的內(nèi)部結(jié)構(gòu)如圖1.2-1所示。查找表LUT輸入輸入輸入輸入輸出圖1.2-1 FPGA查找表單元1.2.1 FPGA的芯片結(jié)構(gòu)目前的FPGA芯片已經(jīng)遠(yuǎn)遠(yuǎn)的超過了以前版本的基本性能,并且整合了常用功能(如:RAM)的硬核模塊。FPGA主要由七部分構(gòu)成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、
11、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。其芯片內(nèi)部結(jié)構(gòu)如圖1.2.1-1所示。圖1.2.1-1 FPGA內(nèi)部結(jié)構(gòu)1.2.2 FPGA各部分的作用與工作原理 可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅(qū)動與匹配要求。FPGA內(nèi)的I/O按組分類,每組都能夠獨(dú)立地支持不同的I/O標(biāo)準(zhǔn)。通過軟件的靈活配置,可適配不同的電氣標(biāo)準(zhǔn)與I/O物理特性,可以調(diào)整驅(qū)動電流的大小,可以改變上、下拉電阻。目前,I/O口的頻率也越來越高,一些高端的FPGA通過DDR寄存器技術(shù)可以支持高達(dá)2Gbps的數(shù)據(jù)速率1。 CL
12、B是FPGA內(nèi)的基本邏輯單元。CLB的實(shí)際數(shù)量和特性會依器件的不同而不同,但是每個CLB都包含一個可配置開關(guān)矩陣,此矩陣由4或6個輸入、一些 選型電路(多路復(fù)用器等)和觸發(fā)器組成。開關(guān)矩陣是高度靈活的,可以對其進(jìn)行配置以便處理組合邏輯、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多個(一般為4個或2個)相同的Slice和附加邏輯構(gòu)成。每個CLB模塊不僅可以用于實(shí)現(xiàn)組合邏輯、時序邏輯,還可以配置為分布式RAM和分布式ROM1。業(yè)內(nèi)大多數(shù)FPGA均提供數(shù)字時鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出最先進(jìn)的FPGA提供數(shù)字時鐘管理和相位環(huán)路鎖定。相位環(huán)
13、路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實(shí)現(xiàn)過濾功能1。 大多數(shù)FPGA都具有內(nèi)嵌的RAM,這大大拓展了FPGA的應(yīng)用范圍和靈活性。RAM可被配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲器 (CAM)以及FIFO等常用存儲結(jié)構(gòu)。CAM存儲器在其內(nèi)部的每個存儲單元中都有一個比較邏輯,寫入 CAM中的數(shù)據(jù)會和內(nèi)部的每一個數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應(yīng)用。除了塊RAM,還可以將 FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結(jié)構(gòu)。在實(shí)際應(yīng)用中,芯片內(nèi)部塊RAM的數(shù)量也是選擇芯片的一個重要因素。單片塊RAM的容量為18kbit
14、,即位寬為18bit、深度為1024,可以根據(jù)需要改變其位寬和深度,但要滿足兩個原則:首先,修改后的容量(位寬 深度)不能大于18kbit;其次,位寬最大不能超過36bit。當(dāng)然,可以將多片塊RAM級聯(lián)起來形成更大的RAM,此時只受限于芯片內(nèi)塊RAM的數(shù)量,而不再受上面兩條原則約束1。布線資源連通FPGA內(nèi)部的所有單元,而連線的長度和工藝決定著信號在連線上的驅(qū)動能力和傳輸速度。FPGA芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全局布線資源,用于芯片內(nèi)部全局時鐘和全局復(fù)位/置位的布線;第二類是長線資源,用以完成芯片 Bank間的高速信號和第二
15、全局時鐘信號的布線;第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式的布線資源,用于專有時鐘、復(fù)位等控制信號線。在實(shí)際中設(shè)計者不需要直接選擇布線資源,布局布線器可自動地根據(jù)輸入邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇布線資源來連通各個模塊單元。從本質(zhì)上講,布線資源的使用方法和設(shè)計的結(jié)果有密切、直接的關(guān)系1。內(nèi)嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核(SoftCore)?,F(xiàn)在越來越豐富的內(nèi)嵌功能單元,使得單片F(xiàn)PGA成為了系統(tǒng)級的設(shè)計工具,使其具備了軟硬件聯(lián)合設(shè)計的能力,逐步向SOPC平
16、臺過渡。DLL和PLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調(diào)整和移相等功能。Xilinx公司生產(chǎn)的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同時集成了PLL和DLL。PLL 和DLL可以通過IP核生成的工具方便地進(jìn)行管理和配置1。內(nèi)嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強(qiáng)大的硬核(Hard Core),等效于ASIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。例如:為了提高FPGA的乘法速度,主流的FPGA 中都集成了專用乘法器;為了適用通信總線與接口標(biāo)準(zhǔn),很多高端的FPGA
17、內(nèi)部都集成了串并收發(fā)器(SERDES),可以達(dá)到數(shù)十Gbps的收發(fā)速度。Xilinx公司的高端產(chǎn)品不僅集成了Power PC系列CPU,還內(nèi)嵌了DSP Core模塊,其相應(yīng)的系統(tǒng)級設(shè)計工具是EDK和Platform Studio,并依此提出了片上系統(tǒng)(System on Chip)的概念。通過PowerPC、Miroblaze、Picoblaze等平臺,能夠開發(fā)標(biāo)準(zhǔn)的DSP處理器及其相關(guān)應(yīng)用,達(dá)到SOPC的開發(fā)目的1。PS/2的介紹2.1 PS/2的接口特性PS/2接口多用于鼠標(biāo)和鍵盤,IBM是開發(fā)和使用最早的。PS/2接口從物理上有兩種類型的連接器,它們分別是5腳的DIN和6腳的MINI-D
18、IN,如圖2.1-1和2.1-2所示。14253圖2.1-1 5腳DIN531246圖2.1-1 6腳MINI-DIN2.2 PS/2的接口協(xié)議 PS2鼠標(biāo)接口采用一種雙向同步串行協(xié)議。即每在時鐘線上發(fā)一個脈沖,就在數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)。在相互傳輸中,主機(jī)擁有總線控制權(quán),即它可以在任何時候抑制鼠標(biāo)的發(fā)送。方法是把時鐘線一直拉低,鼠標(biāo)就不能產(chǎn)生時鐘信號和發(fā)送數(shù)據(jù)。在兩個方向的傳輸中,時鐘信號都是由鼠標(biāo)產(chǎn)生,即主機(jī)不產(chǎn)生通信時鐘信號。如果主機(jī)要發(fā)送數(shù)據(jù),它必須控制鼠標(biāo)產(chǎn)生時鐘信號。方法如下:主機(jī)首先下拉時鐘線至少100s抑制通信,然后再下拉數(shù)據(jù)線,最后釋放時鐘線。通過這一時序控制鼠標(biāo)產(chǎn)生時鐘信號。
19、2.3 PS/2鼠標(biāo)工作模式PS/2鼠標(biāo)有四種工作模式 ,它們分別為5: Reset模式:當(dāng)鼠標(biāo)上電或主機(jī)發(fā)復(fù)位命令給它時,進(jìn)入Reset模式; Stream模式:這是鼠標(biāo)的默認(rèn)模式,當(dāng)鼠標(biāo)上電或復(fù)位完成后,鼠標(biāo)自動進(jìn)Stream模式,鼠標(biāo)大部分就是用此模式工作; Remote模式:只有當(dāng)主機(jī)發(fā)送了設(shè)置命令后,鼠標(biāo)才進(jìn)入Remote模式; Wrap模式:Wrap模式只用于測試鼠標(biāo)與主機(jī)連接是否正確。2.4 PS/2的數(shù)據(jù)包格式鼠標(biāo)在實(shí)際工作中,會把及時收到的數(shù)據(jù)狀態(tài)發(fā)送給主機(jī),讓主機(jī)做出相應(yīng)的動作。鼠標(biāo)發(fā)送數(shù)據(jù)的具體方式如下5: Byte1中的Bit0、Bit1、Bit2分別表示左、右、中鍵的
20、狀態(tài),狀態(tài)值表示釋放,表示按下; Byte2和Byte3分別表示軸和軸方向的移動計量值,是二進(jìn)制補(bǔ)碼值; Byte4的低四位表示滾輪的移動二進(jìn)制補(bǔ)碼值,高四位作為擴(kuò)展符號位。這種數(shù)據(jù)包由帶滾輪的三鍵三維鼠標(biāo)產(chǎn)生,若是不帶滾輪的三鍵鼠標(biāo),產(chǎn)生的數(shù)據(jù)包沒有Byte4,其余的相同。 3 VGA的簡介VGA的英文名字叫Video Graphic Array是計算機(jī)顯示器標(biāo)準(zhǔn)的一種,其最早的是640X480這種顯示模式。它能顯示16種色彩,并且在320X240分辨率下能同時顯示256種顏色。3.1 VGA的時序VGA(640×480,60Hz)信號時序中,其點(diǎn)時鐘DCLK為25.175MHz,
21、場頻為59.94Hz。Vsync為場同步信號,場周期Tvsync為16.683mS,每場有525行,其中480行為有效顯示行,45行為場消隱期。場同步信號Vs每場有一個脈沖,該脈沖的低電平寬度twv為63S(2行)。場消隱期包括場同步時間twv、場消隱前肩tHV(13行)和場消隱后肩tVH(30行),共45行。行周期THSYNC為3178S,每顯示行包 括800點(diǎn),其中640點(diǎn)為有效顯示,160點(diǎn)為行消隱期(非顯示 區(qū))。行同步信號Hs每行有一個脈沖,該脈沖的低電平寬度tWH為3.81S(即96個DCLK);行消隱期包括行同步時間tWH,行消隱前肩tHC(19個DCLK)和行消隱后肩tCH(4
22、5個DCLK),共160個點(diǎn)時鐘。復(fù)合消隱信號是行消隱信號和場消隱信號的邏輯與,在有效顯示期復(fù)合消隱信號為高電平,在非顯示區(qū)域它是低電平,其時序圖如圖3.1-1所示。圖3.1-1 VGA的時序圖3.2 VGA接口VGA接口又叫D-sub,它是一種D型接口,采用非對稱分布的15PIN連接方式,共有15針,分成3排,每排5個孔。這種接口類型是顯卡上應(yīng)用最為廣泛的,絕大部分顯卡都帶有VGA接口。它能傳輸紅、綠、藍(lán)模擬信號以及同步信號水平和垂直信號。VGA接口有15根針,其對應(yīng)接口定義如下,具體位置如表3.2-1、3.2-2所示: 表3.2-1 VGA接口定義編號1234567接口定義紅基色綠基色藍(lán)基
23、色地址碼自測試紅地綠地表3.2-2 VGA接口定義編號89101112131415接口定義藍(lán)地保留數(shù)字地地址碼地址碼行同步場同步地址碼4 VHDL簡介4.1 VHDL的設(shè)計方法在EDA技術(shù)中,硬件描述語言VHDL是非常重要的組成部分。它具有很強(qiáng)的電路描述和建模能力,能從多個層次對系統(tǒng)進(jìn)行建模,大大減少了硬件設(shè)計,提高了效率和設(shè)計的可靠性。VHDL語言由于具有與具體硬件電路無關(guān)的特性,并且具有很強(qiáng)的電路行為描述和系統(tǒng)描述的能力,因此在語言易讀性和層次化設(shè)計方面表現(xiàn)出了強(qiáng)大的應(yīng)用潛力。VHDL支持各種模式的設(shè)計方法,所以設(shè)計者用它進(jìn)行系統(tǒng)設(shè)計的時候可以專心致力于其功能,而不需要對不影響功能的工藝有
24、關(guān)的因素花費(fèi)過多的精力3。VHDL的設(shè)計方法和傳統(tǒng)的電子設(shè)計方法不同,前者是自頂向下的設(shè)計方法,而后者恰恰相反。設(shè)這種設(shè)計方法使比較復(fù)雜的系統(tǒng)可以分解為各個模塊的組合,然后分別對各個模塊進(jìn)行計,最后把不同的模塊集成最終的系統(tǒng),并進(jìn)行綜合測試3。對于使用VHDL語言的主系統(tǒng)及子系統(tǒng)最初的功能能被VHDL仿真程序編譯的可執(zhí)行文件。由于綜合工具能將高級別的模型轉(zhuǎn)化成為門級模型,對于整個設(shè)計過程基本由計算機(jī)自動完成。人能做的就是根據(jù)仿真的結(jié)果和優(yōu)化的指標(biāo),從而控制邏輯綜合的方式和指向。所以我們在設(shè)計的過程中要對仿真的結(jié)果進(jìn)行優(yōu)化,并對模塊進(jìn)行及時的修改,從而改進(jìn)整個系統(tǒng)的功能,提高系統(tǒng)的工作效率,降低
25、功耗和成本38。4.2 VHDL的設(shè)計流程對于本次的設(shè)計,有了自頂向下的設(shè)計方法,解決了最底層的硬件問題,并且可靠性比較高。用逐級設(shè)計和測試的方法使具體目標(biāo)器件的技術(shù)問題得到較大的解決,從而縮短了設(shè)計周期。VHDL的設(shè)計流程如下所示3:u 書寫設(shè)計說明書;u 建立VHDL行為模型;u VHDL行為仿真;u VHDL-RTL級建模;u 前端功能仿真;u 邏輯綜合;u 測試向量生成;u 功能仿真;u 結(jié)構(gòu)綜合;u 門級時序仿真;u 硬件測試。5 設(shè)計方案5.1 設(shè)計任務(wù)本次設(shè)計的任務(wù)是以FPGA為核心芯片,使用VHDL語言設(shè)計各個模塊,并在Quartus下進(jìn)行軟件編程仿真實(shí)現(xiàn)正確的工作時序后,將編
26、譯結(jié)果下載到FPGA芯片上,應(yīng)用PS/2協(xié)議實(shí)現(xiàn)PS/2鼠標(biāo)接口,并在VGA顯示時當(dāng)鼠標(biāo)左鍵按下時“十”字形鼠標(biāo)圖象的中間方塊改變顏色,右鍵按下時箭頭改變顏色,最終實(shí)現(xiàn)本次設(shè)計的要求。5.2 設(shè)計原理本設(shè)計由核心器件FPGA來實(shí)現(xiàn)PS/2時序并在PS/2協(xié)議下讀取指令,然后FPGA芯片又把數(shù)據(jù)送到VGA顯示模塊顯示,其原理圖如圖5.2-1所示。所以本次設(shè)計由以下幾個模塊組成:PS/2鼠標(biāo)接口電路、FPGA核心芯片和VGA顯示模塊,如圖5.2-2所示。鼠標(biāo)PS/2時序FPGAVGA時序圖5.2-1 系統(tǒng)原理圖PS/2FPGAVGA顯示 圖5.2-2 系統(tǒng)總框圖5.3 模塊電路設(shè)計5.3.1 PS
27、/2鼠標(biāo)接口電路本設(shè)計的模塊用VHDL語言編程,然后按照PS/2的協(xié)議進(jìn)行解析,暫存解析到的8位數(shù)據(jù),并且對8位數(shù)據(jù)的判斷,判斷它是通碼還是斷碼,最后將斷碼轉(zhuǎn)變格式輸出,程序并將斷碼順便轉(zhuǎn)換成相對應(yīng)的ASCII碼。首先主機(jī)復(fù)位后,向鼠標(biāo)發(fā)送初始化命令,當(dāng)鼠標(biāo)收到命令字后會給出一個應(yīng)答字節(jié),主機(jī)根據(jù)應(yīng)答字節(jié)來判斷鼠標(biāo)是否正確應(yīng)答。如果應(yīng)答正確則接收鼠標(biāo)數(shù)據(jù)包,然后從接收到的數(shù)據(jù)包中獲得鼠標(biāo)位置及狀態(tài)數(shù)據(jù),并輸出給顯示模塊。顯示模塊在VGA上顯示出當(dāng)前鼠標(biāo)的狀態(tài)和位置,否則,停止處理。當(dāng)狀態(tài)機(jī)m2_state復(fù)位時,即進(jìn)入m2_reset狀態(tài),并在 一個clk周期后進(jìn)入m2_hold_clk_l狀
28、態(tài),當(dāng)ps2_clk_hi_z(時鐘線)被拉低并保持400S后進(jìn)入m2_data_low_1狀態(tài),此時向鼠標(biāo) 發(fā)送起始 位和d0、d1(d0=d1=0)。完成后進(jìn)入m2_data_high_1狀態(tài), 發(fā)送d2(d2=1)并進(jìn)入m2_data_low_2狀態(tài),此時向鼠標(biāo)發(fā)送d3位(d3=0), 完成發(fā)送進(jìn)入m2_data_high_2狀態(tài),向鼠標(biāo)發(fā)送d4、d5、d6、d7(d4=d5=d6=d7=1),完成發(fā)送進(jìn)入m2_data_low_3狀 態(tài),向鼠標(biāo)發(fā)送奇偶校驗位,然后進(jìn)入m2_data_high_3狀態(tài),將數(shù)據(jù)線拉高,等待鼠標(biāo)返回應(yīng)答信號。若PS/2時鐘信號下降沿來臨時,數(shù)據(jù)線仍未變?yōu)楦唠?/p>
29、平,則進(jìn)入m2_error_no_ack狀態(tài),此時握手失敗,系統(tǒng)將保持m2_error_no_ack狀態(tài)直到下一次復(fù)位,否則進(jìn)入m2_await_response狀態(tài)接收應(yīng)答字,接收完成進(jìn)入m2_verify數(shù)據(jù)校驗,然后進(jìn)入m2_use狀態(tài),鎖存輸出數(shù)據(jù),并進(jìn)入m2_wait狀態(tài),等待接收數(shù)據(jù)。當(dāng)檢測到時鐘下降沿后進(jìn)入m2_gather狀態(tài),接收鼠標(biāo)數(shù)據(jù)包,接收完成進(jìn)入m2_verify狀態(tài),此時便形成了數(shù)據(jù)接收循環(huán)567。在上述的理論基礎(chǔ)上,首先編寫VHDL硬件實(shí)現(xiàn)流程圖,然后用VHLD語言在Quartus軟件下編寫程序,并進(jìn)行綜合和時序仿真,最后得到PS/2接口模塊,如圖5.3.1-1、
30、5.3.1-2所示。PS/2接口的VHDL硬件實(shí)現(xiàn)流程圖見附錄1,PS/2接口電路的VHDL語言見附錄2。圖5.3.1-1 PS/2接口模塊圖5.3.1-2 PS/2接口模塊仿真時序圖5.3.2 VGA顯示模塊VGA顯示模式要求:行、場同步都為負(fù)極性,即都是負(fù)脈重。所以在設(shè)計顯示模塊的時候要注意時序驅(qū)動和VGA信號的電平驅(qū)動,其行、場掃描時序如表5.3.2-1、5.3.2-2所示3表5.3.2-1 行掃描時序行同步頭行圖像行周期對應(yīng)位置TfTaTbTcTdTeTg時間8964086408800表5.3.2-2 場掃描時序行同步頭行圖像行周期對應(yīng)位置TfTaTbTcTdTeTg時間2225848
31、08525當(dāng)HS和VS都等于0的時候,CRT顯示的內(nèi)容為亮,這個過程為正向掃描。當(dāng)一行掃描完成的時候,CRT掃描產(chǎn)生消隱,電子束回到CRT左邊下一行的起始位置,依次進(jìn)行掃描,其VGA顯示模塊如圖5.3.2-1所示,源代碼見附錄4。圖5.3.2-1 VGA顯示模塊5.4 系統(tǒng)頂層文件由以上兩個模塊:PS/2接口模塊和VGA顯示模塊,根據(jù)方案圖封裝成系統(tǒng)所需的頂層模塊就得到系統(tǒng)所需的頂層文件。如圖5.4-1所示。圖5.4-1 系統(tǒng)頂層模塊5.5 功能實(shí)現(xiàn)在得到系統(tǒng)頂層模塊后,先進(jìn)行全程編譯,并進(jìn)行時序仿真,然后對芯片進(jìn)行配置,最后將編譯產(chǎn)生的SOF格式文件下載到FPGA芯片中進(jìn)行硬件測試。 6 結(jié)
32、束語畢業(yè)設(shè)計是培養(yǎng)我們綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對我們實(shí)際工作能力的具體訓(xùn)練和考察過程。隨著EDA技術(shù)發(fā)展的日新日異,EDA已經(jīng)成為現(xiàn)代電子技術(shù)中必不可少的技術(shù), 在生活中可以說得是無處不在。因此作為電子專業(yè)的學(xué)生來說掌握EDA的開發(fā)技術(shù)是十分重要的。 我本次設(shè)計的題目是基于FPGA的PS/2鼠標(biāo)接口設(shè)計及VGA顯示,對于我們這些實(shí)踐中的新手來說,這是一次考驗。這次畢業(yè)設(shè)計讓我學(xué)到很多很多的東西,學(xué)會了怎么在遇到問題時去解決問題。不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識,掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡單的編
33、程。通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。這次畢業(yè)設(shè)計設(shè)計通過我的努力終于順利完成了,在設(shè)計中遇到了很多問題,最后在導(dǎo)師的辛勤指導(dǎo)下,終于迎刃而解,在此我表示感謝!附錄1:PS/2接口的VHDL硬件實(shí)現(xiàn)流程圖初始化判斷鼠標(biāo)是否正確應(yīng)答接收數(shù)據(jù)輸出并傳給VGA復(fù)位是否附錄2:設(shè)計流程圖編寫設(shè)計說明書建立PS/2行為模型建立VGA驅(qū)動行為行為仿真行為仿真RTL級建模RTL級建模前端功能仿
34、真PS/2功能仿真邏輯綜合測試向量表功能仿真結(jié)構(gòu)綜合門級時序仿真下載并硬件測試設(shè)計完成附錄3:PS/2接口電路的VHDL語言源程序5library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mouse is Port ( clk : in std_logic; reset : in std_logic; ps2_clk : inout std_logic; ps2_data : inout std_logic; left_but
35、ton : out std_logic; right_button : out std_logic; mousex: buffer std_logic_vector(9 downto 0); mousey: buffer std_logic_vector(9 downto 0); data_ready : out std_logic;- rx_read_o error_no_ack : out std_logic ); end mouse; architecture Behavioral of mouse is constant TOTAL_BITS : integer :=33; - 數(shù)據(jù)包
36、位數(shù) constant WATCHDOG : integer :=320; - 400usec所需sys_clk脈沖數(shù) -constant DEBOUNCE_TIMER : integer := 2; -type m1statetype is ( m1_clk_h, m1_falling_edge, m1_falling_wait, - m1_clk_l, m1_rising_edge, m1_rising_wait); type m2statetype is (m2_reset, m2_wait, m2_gather, m2_verify, m2_use, m2_hold_clk_l, m2
37、_data_low_1, m2_data_high_1, m2_data_low_2, m2_data_high_2, m2_data_low_3, m2_data_high_3, m2_error_no_ack, m2_await_response); -signal m1_state,m1_next_state : m1statetype; signal m2_state,m2_next_state : m2statetype; -signal m3_state,m3_next_state : std_logic; signal watchdog_timer_done : std_logi
38、c;-命令傳輸超時標(biāo)志 signal q : std_logic_vector(TOTAL_BITS-1 downto 0);-位序列 signal bitcount : std_logic_vector(5 downto 0);-位計數(shù)器 signal watchdog_timer_count : std_logic_vector(8 downto 0); -等待時間 -signal debounce_timer_count : std_logic_vector(1 downto 0); signal ps2_clk_hi_z : std_logic; signal ps2_data_hi_
39、z : std_logic; signal fallsig,risesig : std_logic_vector(2 downto 0); signal clean_clk : std_logic; - 從m1跟隨ps2_clk反向輸出 signal rise,n_rise : std_logic; - m1狀態(tài)機(jī)輸出數(shù)據(jù) signal fall,n_fall : std_logic; - m1狀態(tài)機(jī)輸出數(shù)據(jù) signal output_strobe : std_logic; - 鎖存數(shù)據(jù)到輸出寄存器 signal packet_good : std_logic; - 檢查數(shù)據(jù)是否有效 -si
40、gnal x_increment : std_logic_vector(8 downto 0); -signal y_increment : std_logic_vector(7 downto 0); signal mouseyy : std_logic_vector(9 downto 0); begin ps2_clk <= '0' when ps2_clk_hi_z='0' else 'Z' ps2_data <= '0' when ps2_data_hi_z='0' else 'Z'
41、; - -檢測ps2clk上升沿和下降沿 - detect_ps2clkfall : process(clk,reset,ps2_clk) begin if reset='0' then fallsig <= "000" elsif clk'event and clk='1' then fallsig(0) <= ps2_clk; fallsig(1) <= fallsig(0); fallsig(2) <= fallsig(1); end if; end process; fall <= '1&
42、#39; when fallsig="110" else '0' detect_ps2clkrise : process(clk,reset,ps2_clk) begin if reset='0' then risesig <= "000" elsif clk'event and clk='1' then risesig(0) <= ps2_clk; risesig(1) <= risesig(0); risesig(2) <= risesig(1); end if; end
43、 process; rise <= '1' when risesig="001" else '0' -m2 狀態(tài) m2statech: process (reset, clk) begin if (reset='0') then m2_state <= m2_reset; elsif (clk'event and clk='1') then m2_state <= m2_next_state; end if; end process; -m2 狀態(tài)傳輸邏輯 m2statetr: pro
44、cess (m2_state, q, fall,rise,watchdog_timer_done,bitcount,ps2_data,packet_good) begin - 輸出信號的缺省值 ps2_clk_hi_z <= '1' ps2_data_hi_z <= '1' error_no_ack <= '0' output_strobe <= '0' case m2_state is when m2_reset => - 復(fù)位后向鼠標(biāo)發(fā)送命令字 m2_next_state <= m2_hol
45、d_clk_l; when m2_wait => if (fall='1') then m2_next_state <= m2_gather; else m2_next_state <= m2_wait; end if; when m2_gather => if (watchdog_timer_done='1') and (bitcount=TOTAL_BITS)then m2_next_state <= m2_verify; else m2_next_state <= m2_gather; end if; when m2_v
46、erify => -if (bitcount < TOTAL_BITS) then -替換 " packet_good='1' " -m2_next_state <= m2_wait; -else m2_next_state <= m2_use; -end if; when m2_use => output_strobe <= '1' m2_next_state <= m2_wait; - 用狀態(tài)機(jī)的9個狀態(tài)實(shí)現(xiàn)命令字傳輸,使鼠標(biāo)進(jìn)入"streaming"模式, - 并等待鼠標(biāo)正確
47、應(yīng)答 when m2_hold_clk_l => ps2_clk_hi_z <= '0' - 啟動看門狗! if (watchdog_timer_done='1') then m2_next_state <= m2_data_low_1; else m2_next_state <= m2_hold_clk_l; end if; when m2_data_low_1 => ps2_data_hi_z <= '0' - 數(shù)據(jù)位 開始位, d0 and d1 if (fall='1' and (bit
48、count = 2) then m2_next_state <= m2_data_high_1; else m2_next_state <= m2_data_low_1; end if; when m2_data_high_1 => ps2_data_hi_z <= '1' - 數(shù)據(jù)位 d2 if (fall='1' and (bitcount = 3) then m2_next_state <= m2_data_low_2; else m2_next_state <= m2_data_high_1; end if; when
49、 m2_data_low_2 => ps2_data_hi_z <= '0' - 數(shù)據(jù)位 d3 if (fall='1' and (bitcount = 4) then m2_next_state <= m2_data_high_2; else m2_next_state <= m2_data_low_2; end if; when m2_data_high_2 => ps2_data_hi_z <= '1' - 數(shù)據(jù)位 d4,d5,d6,d7 if (fall='1' and (bitcoun
50、t = 8) then m2_next_state <= m2_data_low_3; else m2_next_state <= m2_data_high_2; end if; when m2_data_low_3 => ps2_data_hi_z <= '0' - 奇偶校驗位 if (fall='1') then m2_next_state <= m2_data_high_3; else m2_next_state <= m2_data_low_3; end if; when m2_data_high_3 => ps
51、2_data_hi_z <= '1' - 允許鼠標(biāo)拉成低電平(ACK脈沖) if (fall='1' and (ps2_data='1') then m2_next_state <= m2_error_no_ack; elsif (fall='1' and (ps2_data='0') then m2_next_state <= m2_await_response; else m2_next_state <= m2_data_high_3; end if; when m2_error_no_
52、ack => error_no_ack <= '1' m2_next_state <= m2_error_no_ack; - 為了鼠標(biāo)正確進(jìn)入"streaming"模式,狀態(tài)極必須等待足夠長的時間, - 確保鼠標(biāo)正確應(yīng)答0xFA。 when m2_await_response => -if (bitcount = 22) then m2_next_state <= m2_verify; -else - m2_next_state <= m2_await_response; -end if; when others =>
53、; m2_next_state <= m2_wait; end case; end process;-m2 狀態(tài)結(jié)束 -位計數(shù)器 bitcoun: process (reset, clk) begin if (reset='0') then bitcount <= (others=>'0'); - normal reset elsif (clk'event and clk='1') then if (fall='1') then bitcount <= bitcount + 1; elsif (wa
54、tchdog_timer_done='1') then bitcount <= (others=>'0'); - rx watchdog timer reset end if; end if; end process; - 數(shù)據(jù)移位寄存器 dataseq: process (reset, clk) begin if (reset='0') then q <= (others=>'0'); elsif (clk'event and clk='1') then if (fall='
55、;1') then q <= ps2_data & q(TOTAL_BITS-1 downto 1); end if; end if; end process; - 看門狗時間計數(shù)器 watchcount: process (reset,rise,fall, clk) begin if (reset='0') or (rise='1') or (fall='1') then watchdog_timer_count <= (others=>'0'); elsif (clk'event an
56、d clk='1') then if (watchdog_timer_done='0') then watchdog_timer_count <= watchdog_timer_count + 1; end if; end if; end process; watchdog_timer_done <= '1' when (watchdog_timer_count=WATCHDOG-1) else '0' - 接收數(shù)據(jù)包有效標(biāo)志 packet_good <= '1' - 輸出數(shù)據(jù) outdata:
57、process (reset, clk) begin if (reset='0') then left_button <= '0' right_button <= '0' -x_increment <= (others=>'0'); -y_increment <= (others=>'0'); elsif (clk'event and clk='1') then if (output_strobe='1') then left_button <= q(1); right_button <= q(2); -x_increment <= '0' & q(19 downto 12); mouseyy <= not (q(6) & q(6) & q(30 downto 23) + "1" end if; end if; end process; cordinatex: process (reset, clk) begin if (reset='0') then mousex <= &
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海導(dǎo)游合同范例
- 代理勞務(wù)派遣合同范例
- 傷亡免責(zé)合同范例
- 韌性視角的川西南昭覺河城市河流廊道景觀設(shè)計研究
- 倉庫工作合同范例
- 與工廠施工合同范例
- 公司租賃設(shè)備合同范本
- 中鐵防水卷材合同范例
- 公路貨運(yùn)合同范例
- 出售彩鋼瓦合同范例
- 南充市高2025屆高三高考適應(yīng)性考試(二診)英語試卷
- 2025年湖南有色金屬職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 第五章產(chǎn)前檢查及高危妊娠監(jiān)測課件
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來
- 外研版九年級英語下冊Module-4-Unit-2教學(xué)課件(PPT 16頁)
- 精品隨班就讀個別化教學(xué)計劃
- 第一章 - 免疫規(guī)劃信息管理系統(tǒng)
- 初中語文四大名著選擇題精選48道(修訂版帶答案)
- 下肢血管超聲規(guī)范檢查與診斷(精品)
- 職業(yè)駕駛員職業(yè)心理和生理健康
- 機(jī)床用語中英文對照
評論
0/150
提交評論