版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于vhdl語(yǔ)言的vga、ps2接口協(xié)議學(xué) 生:王永專 業(yè):電子信息科學(xué)與技術(shù)指導(dǎo)教師: 摘要:我寫的論文題目是基于vhdl的vga、ps2接口協(xié)議,其大體思路是這樣的,在fpga中,使用vhdl語(yǔ)言描述vga以及ps2鍵盤的接口協(xié)議,并把ps2的按鍵信息顯示到vga顯示器上,首先根據(jù)ps2鍵盤的數(shù)據(jù)結(jié)構(gòu),掃描方式來(lái)來(lái)接收數(shù)據(jù),然后把接收到的數(shù)據(jù)做asicii碼轉(zhuǎn)換,并且緩存到雙口ram中,vga模塊通過(guò)查表讀取ram中的內(nèi)容,然后影射到rom中,找出asicii碼對(duì)應(yīng)的顯示方式,最后通過(guò)并串轉(zhuǎn)換輸出數(shù)據(jù),從而達(dá)到顯示字符的目的。關(guān)鍵詞:現(xiàn)場(chǎng)可編程門陣列、陰極射線管顯示器 based on v
2、hdl vga, ps2 interface protocol name:wang yongshun major:electronics information science and technology tutor:gong heabstract: i wrote a thesis topic based on the vga、 ps2 interface protocol of vhdl, the general survey of the subject is that, in fpga, to descript the port agreement of ps2 keyboard a
3、nd the vga by vhdl language, and to make the ps2 information show on the vga monitor .at the first, according to the data structure of ps2 keyboard and scanning way to receive the data, and then transfer the received data into asicii code which to be cached in the dual-port ram. vga module read the
4、contents of ram through consulting the table, and then insinuate to the rom, finding the corresponding way of diplaying for asicii code. at last,outputing the data by module of parallel-to-serial conversion to achieve the purpose of displaying characters. keywords: fpga、crt 1 前言1.1 題目開發(fā)的目的我所做的基于fpga
5、的vga,ps2接口協(xié)議主要在實(shí)驗(yàn)室完成,參考有關(guān)的書籍,資料,數(shù)據(jù)手冊(cè),個(gè)人完成電路的設(shè)計(jì),焊接,檢查,調(diào)試,在根據(jù)自己的硬件和數(shù)據(jù)格式用vhdl語(yǔ)言編寫ps2鍵盤數(shù)據(jù)采集,雙口ram緩存,rom查表以及vga顯示,然后下載程序調(diào)試,最終達(dá)到能夠顯示1-9,a-z以及空格。在這個(gè)過(guò)程中需要選擇適當(dāng)?shù)脑侠淼碾娐穲D扎實(shí)的焊接技術(shù),基本的故障排除和糾正能力,會(huì)使用基本的儀器對(duì)硬件進(jìn)行調(diào)試,會(huì)熟練的運(yùn)用vhdl開發(fā)軟件編寫程序,會(huì)運(yùn)用相關(guān)軟件對(duì)程序進(jìn)行防真,并下載到芯片中,兩個(gè)主要部分ps2,vga之間時(shí)序關(guān)系要調(diào)節(jié)好,要耐心的反復(fù)檢查,修改和調(diào)試,直到達(dá)到預(yù)期目的。 我的設(shè)計(jì)硬件部分比較簡(jiǎn)單
6、,使用了xilinx公司生產(chǎn)的fpga,vga顯示器,ps2鍵盤,50mhz晶震和若干電阻組成。我的設(shè)計(jì)主要的部分是程序的編寫,幾乎耗費(fèi)了3/4的時(shí)間,因此程序部分比較復(fù)雜,但是我的設(shè)計(jì)對(duì)總體的模塊劃分比較嚴(yán)謹(jǐn),因此比較容易理解。 畢業(yè)設(shè)計(jì)的目的是為了了解基本電路的設(shè)計(jì)流程,豐富自己的知識(shí)和理論,鞏固所學(xué)習(xí)的知識(shí),提高自己的動(dòng)手能力和實(shí)驗(yàn)?zāi)芰?,從而具備一定的設(shè)計(jì)能力。 我做的畢業(yè)設(shè)計(jì)注重于對(duì)fpga和vhdl語(yǔ)言的理解,為自己奠定基礎(chǔ),以便以后在eda領(lǐng)域的開發(fā)和研制打下基礎(chǔ),提高自己的設(shè)計(jì)能力,培養(yǎng)創(chuàng)新能力,豐富自己的知識(shí)理論,做到理論和實(shí)際結(jié)合。本課題的重要意義還在于能在進(jìn)一步的了解fpg
7、a的工作原理,內(nèi)部結(jié)構(gòu)和工作狀態(tài),以及下載方式。理解vhdl的基本語(yǔ)法以及設(shè)計(jì)規(guī)則,這樣才能更好的利用vhdl語(yǔ)言來(lái)做有效的設(shè)計(jì)。 我的畢業(yè)設(shè)計(jì)分為三部分,硬件部分,程序設(shè)計(jì)部分,編譯與下載部分。硬件部分介紹,主要器件,可編程邏輯器件的發(fā)展歷程,可編程邏輯器件的分類,硬件描述語(yǔ)言vhdl。介紹了xc3s500e spartan-3e fpga的內(nèi)部結(jié)構(gòu),程序設(shè)計(jì)部分介紹了fpga內(nèi)部各個(gè)模塊的介紹以及設(shè)計(jì)方法。編譯與下載部分主要介紹了下載軟件的發(fā)展歷史,以及安裝使用方法。1.2 題目開發(fā)的意義 我所設(shè)計(jì)的題目現(xiàn)在已經(jīng)是一個(gè)很成熟的技術(shù)了,目前已經(jīng)應(yīng)用到大部分pc機(jī)中,其作用是可以跳過(guò)cpu來(lái)顯
8、示字符,圖片等,減少cpu的占用率,從而提高了pc機(jī)處理數(shù)據(jù)的速度。 2 系統(tǒng)硬件設(shè)計(jì)2.1硬件的基本組成xc3s500e spartan-3e fpga、vga顯示器、ps2鍵盤、50m晶震、270電阻、82.5電阻2.2硬件介紹2.2.1 可編程邏輯芯片概述不論是簡(jiǎn)單還是復(fù)雜的數(shù)字電路系統(tǒng)都是由基本門來(lái)構(gòu)成的,如與門、或門、非門、傳輸門等。由基本門可構(gòu)成兩類數(shù)字電路,一類是組合電路,在邏輯上輸出總是當(dāng)前輸入狀態(tài)的函數(shù);另一類是時(shí)序電路,其輸出是當(dāng)前系統(tǒng)狀態(tài)與當(dāng)前輸入輸入狀態(tài)的函數(shù),它含有儲(chǔ)存元件。人們發(fā)現(xiàn),不是所有的基本門都是必須的, 如用與非門單一基本門就可以構(gòu)成其他的基本門。任何的組合
9、邏輯函數(shù)都是可以化為“與或”表達(dá)式,既任何的組合電路(需要提供輸入信號(hào)的非信號(hào)),可以用與門或門二級(jí)電路實(shí)現(xiàn)。同樣,任何是許電路都可以有組合電路加上存儲(chǔ)元件(即鎖存器、觸發(fā)器、ram)構(gòu)成。由此,人們提出了一種可編程電路結(jié)構(gòu),即乘積項(xiàng)邏輯可編程結(jié)構(gòu),其原理結(jié)構(gòu)圖如圖2.1所示: 圖2.1 原理圖 fig. 2.1 schematic 當(dāng)然,“與或”結(jié)構(gòu)組成的pld器件的功能比較簡(jiǎn)單。此后,人們又從rom工作原理、地址信號(hào)與輸入數(shù)據(jù)間的關(guān)系,以及asic的門陣列法中獲得啟發(fā),構(gòu)造出另外一種可編程的邏輯結(jié)構(gòu),那就是sram查找表的邏輯形成方式,它的邏輯函數(shù)發(fā)生采用ram“數(shù)據(jù)”查找的方式,并使用多
10、個(gè)查表構(gòu)成了一個(gè)查表陣列,稱為可編程門陣列(programmable gate array)。 fpga是英文fieldprogrammablegatearray的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在pal、gal、epld等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(asic)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。 fpga采用了邏輯單元陣列l(wèi)ca(logiccellarray)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊clb(configurablelogicblock)、輸出輸入模塊iob(inputoutputblock
11、)和內(nèi)部連線(interconnect)三個(gè)部分。fpga的基本特點(diǎn)主要有: 采用fpga設(shè)計(jì)asic電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。fpga可做其它全定制或半定制asic電路的中試樣片。 fpga內(nèi)部有豐富的觸發(fā)器和io引腳。 fpga是asic電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。fpga采用高速chmos工藝,功耗低,可以與cmos、ttl電平兼容。 可以說(shuō),fpga芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 目前fpga的品種很多,有xilinx的xc系列、ti公司的tpc系列、altera公司的fiex系列等。 fpga是由存放在片內(nèi)ram中
12、的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的ram進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 加電時(shí),fpga芯片將eprom中數(shù)據(jù)讀入片內(nèi)編程ram中,配置完成后,fpga進(jìn)入工作狀態(tài)。掉電后,fpga恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,fpga能夠反復(fù)使用。fpga的編程無(wú)須專用的fpga編程器,只須用通用的eprom、prom編程器即可。當(dāng)需要修改fpga功能時(shí),只需換一片eprom即可。這樣,同一片fpga,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,fpga的使用非常靈活。 fpga有多種配置模式:并行主模式為一片fpga加一片eprom的方式;主從模式可以支
13、持一片prom編程多片fpga;串行模式可以采用串行prom編程fpga;外設(shè)模式可以將fpga作為微處理器的外設(shè),由微處理器對(duì)其編程1。2.2.2可編程邏輯器件的發(fā)展歷程 很早以前人們就曾經(jīng)設(shè)想設(shè)計(jì)一中可編程可再編程(重構(gòu))的器件,不過(guò)由于受到當(dāng)時(shí)集成電路工藝技術(shù)的限制,一直未能如愿。知道20世紀(jì)后期,集成電路技術(shù)有了飛速的發(fā)展,可編程邏輯器件才得以實(shí)現(xiàn)。 歷史上,可編程邏輯器件經(jīng)歷了從prom(programmable read only menory)、pla(programmable logic array)、pal(programmable array logic)、可重復(fù)編程的ga
14、l(generic array logic),到采用大規(guī)模集成電路技術(shù)的epld,直到cpld和fpga的發(fā)展過(guò)程,在結(jié)構(gòu)、工藝、集成度、功能、速度和靈活性方面都有很大的改進(jìn)和提高。可編程邏輯器件大致的演變過(guò)程如下:(1)20世紀(jì)70年代,熔絲編程的prom和pla器件是最早的可編程邏輯器件。(2)20世紀(jì)70年代末,對(duì)pla進(jìn)行了改進(jìn),amd公司推出pal器件。(3)20世紀(jì)80年代初,larrice公司發(fā)明電可擦寫的,比pal使用更靈活的gal器件。(4)20世紀(jì)80年代中期,xilinx公司提出現(xiàn)場(chǎng)可編程概念,同時(shí)產(chǎn)生出了世界上第一片fpga器件,同一時(shí)期,altera公司推出epld器
15、件,較gal器件有更高的集成度,可以用紫外線或電擦除。(5)20世紀(jì)80年代末,lattice公司又提出在系統(tǒng)可編程技術(shù),并且推出了一系列具備在系統(tǒng)可編程能力的cpld器件,將可編程邏輯器件的性能和應(yīng)用技術(shù)推向了一個(gè)全新的高度。(6)進(jìn)入20世紀(jì)90年代后,可編程邏輯集成電路技術(shù)進(jìn)入飛速發(fā)展時(shí)期,器件的可用邏輯門數(shù)超過(guò)百萬(wàn)門,并出現(xiàn)了內(nèi)嵌復(fù)雜功能模塊(比如加法器、乘法器、ram、cpu核、dsp核、pll等)的sopc.2.3.1.2 可編程邏輯器件的分類可編程邏輯器件的種類很多,幾乎每個(gè)大的可編程邏輯器件供應(yīng)商都能提供具有自身結(jié)構(gòu)特點(diǎn)的pld器件。由于歷史是原因,可編程邏輯器件的命名各異,在
16、詳細(xì)介紹可編程邏輯器件之前,有必要介紹幾種pld的分類方法。如下圖所示,較常見的分類是按照集成度來(lái)區(qū)分不同的pld期間,一般可以分為以下兩大類器件:一類是芯片集成度較低的。早期出現(xiàn)的prom、pla、pal、gal都屬于這類,可用的邏輯門大約在500門以下,稱為簡(jiǎn)單pld。圖2.2 可編程邏輯器件分類fig. 2.2 category programmable logic devices另一類是芯片集成度較高的。如現(xiàn)在大量使用的cpld、fpga器件,稱為復(fù)雜pld。這種分類方法比較粗糙,在具體區(qū)分時(shí),一般以gal22v10作為對(duì)比,集成度大于gal22v10的稱為復(fù)雜pld,反之歸類為簡(jiǎn)單p
17、ld。前面已經(jīng)提到,常用的可編程邏輯器件都是從“與或”陣列和門陣列兩類基本結(jié)構(gòu)發(fā)展起來(lái)的,所以可編程邏輯器件從結(jié)構(gòu)上可以分為兩大類器件:乘積項(xiàng)結(jié)構(gòu)器件。其基本結(jié)構(gòu)為“與或”陣列的器件,大部分簡(jiǎn)單pld和cpld都屬于這個(gè)范疇。查找表結(jié)構(gòu)器件,由簡(jiǎn)單的查找表組成可編程門,再構(gòu)成陣列形式,fpga屬于此類型器件。第三種分類方法是從編程工藝上劃分:1) 熔絲(fuse)型器件,早期的prom器件就是采用 結(jié)構(gòu)的,編程過(guò)程就是根據(jù)設(shè)計(jì)熔絲圖文件來(lái)燒斷對(duì)應(yīng)的熔絲,達(dá)到編程的目的。2) 反熔絲(antifuse)型器件,是對(duì)熔絲技術(shù)的改進(jìn),在編程處通過(guò)擊穿漏層使得兩點(diǎn)之間獲得導(dǎo)通。與反熔絲燒斷獲得開路正好
18、相反。某些fpga采用了此種編程方式,如acrel公司的fpga器件。無(wú)論是熔絲還是反熔絲結(jié)構(gòu),都只能編程一次,因而又被合稱為otp器件,即一次可編程器件。3) eprom型,稱為紫外線擦除電可編程邏輯器件,是用較高的編程電壓進(jìn)行編程,當(dāng)需要再次編程時(shí),用紫外線進(jìn)行擦除,與熔絲、反熔絲不同,eprom可多次編程,有時(shí)為了降低成本,在制造eprom型器件時(shí)不加用于紫外線擦除的石英窗口,于是就不能用紫外線擦除,而只能編程一次,也被稱為otp器件。4) eeprom型, 即電可擦寫編程器件,現(xiàn)有的大部分cpld及gal器件采用此類結(jié)構(gòu),它是對(duì)eprom的工藝改進(jìn),不需要紫外線擦除,而是直接用電擦除。
19、5) sram型。即sram查找表結(jié)構(gòu)的器件大部分fpga器件都采用此種編程工藝,如xilinx的fpga、altera的部分fpga器件。這種編程方式在編程速度、編程要求上要優(yōu)于前四種器件,不過(guò)sram型的器件編程信息放在ram中。在斷電后就丟失了,再次上電需要再次編程(配置),因此需要專業(yè)器件在完成這類配制操作,而前四種器件在編程后是不丟失編程信息的。6) flash型,由于反熔絲結(jié)構(gòu)的可編程邏輯器件只能一次性可編程,對(duì)于產(chǎn)品的研制和升級(jí)帶來(lái)了麻煩,采用了反熔絲工藝acter公司,為了解決上述反熔絲器件的不足之處,推出了采用flash工藝的fpga,可以實(shí)現(xiàn)多次可編程,也可以作到掉電后不需
20、要重新配置2。2.2.3硬件描述語(yǔ)言vhdl硬件描述語(yǔ)言hdl是eda技術(shù)的重要部分,常見的hdl有下列幾種:l vhdll verilog hdll system verilogl system c其中vhdl、verilog在現(xiàn)在的eda設(shè)計(jì)中使用最多,也擁有幾乎所有的主流eda工具的支持,而system verilog、system c這兩種hdl語(yǔ)言還處于完善過(guò)程中,vhdl上電子設(shè)計(jì)主流硬件的描述語(yǔ)言之一vhdl的英文全名是vhsic hardware description language,于1983年由美國(guó)國(guó)防部發(fā)起創(chuàng)建,由ieee發(fā)布,從此,vhdl成為硬件描述語(yǔ)言的工業(yè)標(biāo)準(zhǔn)
21、之一。自ieee公布了vhdl的標(biāo)準(zhǔn)版本之后,個(gè)eda公司相繼推出了自己的vhdl設(shè)計(jì)環(huán)境,或宣布自己設(shè)計(jì)的工具支持vhdl。從此vhdl在電子設(shè)計(jì)領(lǐng)域得到了廣泛應(yīng)用,并逐漸取代了原有的非標(biāo)準(zhǔn)硬件描述語(yǔ)言。vhdl作為一個(gè)規(guī)范語(yǔ)言和建模語(yǔ)言,隨著vhdl的標(biāo)準(zhǔn)化,出現(xiàn)了一些支持該語(yǔ)言的行為仿真器。由于創(chuàng)建vhdl的最初目的是用語(yǔ)標(biāo)準(zhǔn)文檔的建立和電路功能模擬,其基本想法是在高層次上描述系統(tǒng)和文件的行為,但到了20世紀(jì)90年代初,人們發(fā)現(xiàn)vhdl不僅可以作為系統(tǒng)模擬建模工具,而且可以作為電路系統(tǒng)的設(shè)計(jì)工具,可以利用軟件工具將vhdl源碼自動(dòng)地轉(zhuǎn)化為文本方式表達(dá)的基本邏輯元件連接圖,即網(wǎng)表文件,這種
22、方法顯然對(duì)于電路自己設(shè)計(jì)是一個(gè)極大的推動(dòng),很快,電子設(shè)計(jì)領(lǐng)域出現(xiàn)了第一個(gè)軟件設(shè)計(jì)工具,即vhdl邏輯綜合器,它把標(biāo)準(zhǔn)的vhdl的部分語(yǔ)言描述轉(zhuǎn)化為具體電路實(shí)現(xiàn)的網(wǎng)表文件。1993年,ieee對(duì)vhdl進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展了vhdl的內(nèi)容,公布了新版本vhdl,即ieee 1076-1993。現(xiàn)在,vhdl和verilog作為ieee的工業(yè)標(biāo)準(zhǔn)描述語(yǔ)言,得到眾多eda公司的支持,在電子工程領(lǐng)域已經(jīng)成為事實(shí)上的通用硬件描述語(yǔ)言。vhdl語(yǔ)言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模和描述。從而大大簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。vhdl具有
23、與具體硬件電路無(wú)關(guān)和與設(shè)計(jì)平臺(tái)無(wú)關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力和系統(tǒng)的能力,在語(yǔ)言易讀性和層次結(jié)構(gòu)化設(shè)計(jì)方面表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力,因此,vhdl支持各種模式的設(shè)計(jì)方法:自頂向下與自低向上或混合方法,在面對(duì)當(dāng)今許多電子產(chǎn)品生命周期縮短,需要多次重新設(shè)計(jì)以融入最新技術(shù),改變工藝等方面,vhdl具有良好的適應(yīng)性,用vhdl進(jìn)行電子系統(tǒng)設(shè)計(jì)的一個(gè)很大的優(yōu)點(diǎn)是設(shè)計(jì)者可以專心致力于其功能的實(shí)現(xiàn),而不需要對(duì)不影響功能的與工藝有關(guān)的因素花費(fèi)過(guò)多的時(shí)間和精力3。3 fpga內(nèi)部模塊詳細(xì)劃分本章主要介紹fpga內(nèi)部模塊的劃分,從圖3.1中可以看出fpga內(nèi)部主要有一下幾個(gè)模塊構(gòu)成:v
24、ga,ps2,sarm,rom。ps2模塊接收按鍵數(shù)據(jù)首先要放在雙口ram中,再由vga的查表系統(tǒng)從sram中讀取ps2的按鍵內(nèi)容,然后影射到rom中,最后從rom中讀出最終要顯示在vga上的內(nèi)容.圖3.1 fpga 內(nèi)部模塊框圖fig. 3.1 fpga internal module diagram我的設(shè)計(jì)硬件部分很簡(jiǎn)單,軟件部分相對(duì)比較復(fù)雜,下面我詳細(xì)介紹fpga內(nèi)部模塊的詳細(xì)劃分:3.1 vga顯示部分3.1.1顯示器術(shù)語(yǔ)3.1.1.1 象素與分辨率顯示器上輸出的一切信息,包括數(shù)值、文字、表格、圖象、動(dòng)畫等等,都是由于光點(diǎn)(既像素)構(gòu)成。組成屏幕顯示畫面的最小單位是像素,像素之間的最小
25、距離為點(diǎn)距(pitch)。點(diǎn)距越小像素密度越大,畫面越清晰。顯示器的點(diǎn)距有0.31mm、0.28mm、0.24mm、0.22mm等多種。 分辨率指整屏顯示的像素的多少,是衡量顯示器的一個(gè)常用指標(biāo)。這同屏幕尺寸及點(diǎn)距密切相關(guān),可有屏幕的實(shí)際顯示的尺寸與點(diǎn)距相除來(lái)近似求得。點(diǎn)距為0.28mm的15英寸顯示器,分辨率最高為1024*768。3.1.1.2 顯示器尺寸 顯示器屏幕尺寸以對(duì)角線來(lái)度量,常用的顯示器有14、15、17、19、21英寸等。顯示器水平方向長(zhǎng)度與垂直方向高度之比一般為4:3。3.1.1.3 掃描頻率 顯示器采用光柵掃描方式,即轟擊熒光屏的電子束在crt屏幕上從左到右(受水平同步信
26、號(hào)hsync控制)、從上到下(受垂直同步信號(hào)vsync控制)做有規(guī)律的移動(dòng)。光柵掃描又分逐行掃描和隔行掃描。電子束采用光柵掃描方式,從屏幕左上角一點(diǎn)開始,向右逐點(diǎn)進(jìn)行掃描,形成一條水平線;到達(dá)最右端后,有回到下一條水平線的左端,重復(fù)上面的過(guò)程;當(dāng)電子束完成右下角一點(diǎn)的掃描后,形成一幀。此后,電子束又回到左上方的起點(diǎn),開始下一幀的掃描。這種方法也就是常說(shuō)的逐行掃描顯示。而隔行掃描是指電子束在掃描時(shí)每隔一行掃一線,完成一屏后再返回來(lái)掃描剩下的線,這與電視機(jī)的原理一樣。隔行掃描的顯示器比逐行掃描閃爍的更厲害,也會(huì)讓使用者的眼睛更疲勞。目前微機(jī)所用的顯示器幾乎都是逐行掃描。完成一行掃描所需時(shí)間稱為水平
27、掃描時(shí)間,其倒數(shù)稱為行頻率;完成一幀(整屏)掃描所需的時(shí)間稱為垂直掃描時(shí)間,其倒數(shù)為垂直掃描頻率,又稱刷新頻率,既新一屏的頻率。常用的有60hz、75hz等,標(biāo)準(zhǔn)vga顯示的場(chǎng)頻60hz,行頻為31.5hz。3.1.1.4 顯示帶寬帶寬則指顯示器可以處理的頻率范圍。如果60hz刷新頻率的vga方式,其帶寬達(dá)640*480*60=18.4mhz;70hz刷新頻率1024*768分辨率的svga方式,其帶寬達(dá)1024*768*70=55.1mhz。早期的顯示器頻率固定,現(xiàn)在流行的多屏顯示器采用自動(dòng)跟蹤技術(shù),使顯示器的掃描頻率自動(dòng)與顯示卡的輸出同步,達(dá)到較寬的適用范圍。在本設(shè)計(jì)中使用的是60hz刷新
28、頻率的vga方式。3.1.2顯示卡術(shù)語(yǔ)一個(gè)像素點(diǎn)可有多種顏色,由表示該像素的二進(jìn)位數(shù)(又稱像素的位寬)決定。像素位寬為8bit,則每個(gè)像素有28=256種顏色;位寬為16bit則有216=65336種顏色,位寬為24bit則有224既一千七百多萬(wàn)種顏色。顯示卡內(nèi)的d/a(數(shù)/模)轉(zhuǎn)換電路將每個(gè)像素的位寬(二進(jìn)制整數(shù))轉(zhuǎn)換成相應(yīng)亮度的r、g、b(紅、綠、藍(lán))模擬信號(hào),控制屏幕上相應(yīng)的三色螢光點(diǎn)發(fā)光,產(chǎn)生所要求的顏色。隨著pc機(jī)的不斷更新?lián)Q代,顯示控制卡(即顯示適配器)的標(biāo)準(zhǔn)也不斷發(fā)展。從最初的mda(單色顯示適配器)cga(彩色圖形顯示適配器)ega(增強(qiáng)型圖形適配器)vga(視頻圖形陣列適配器
29、),vga一改以前顯示卡采用的數(shù)字視頻信號(hào)輸出,而改用模擬視頻信號(hào)輸出,vga卡內(nèi)的d/a轉(zhuǎn)換器將數(shù)字信號(hào)轉(zhuǎn)換為控制r、g、b三原色的模擬信號(hào),使像素色彩變化非常平滑,更適合人的視覺感受。性能高于vga并與之兼容的顯示適配器卡有tvga和svga。隨著windows的普及和對(duì)快速度、多色彩、高分辨率的需要,一些廠家在svga芯片中增加更多的硬件來(lái)支持windows的加速,這類顯示適配器一般被稱做avga(accelerated vga:加速vga)。目前大多數(shù)微機(jī)上的顯示卡都屬于avga類型。顯示卡主要有圖形處理芯片,視頻儲(chǔ)存器及bios芯片等組成。一般avga類型顯示卡的控制器由單塊avga
30、芯片充當(dāng),其中包含的圖形加速控制器對(duì)提升圖形功能至關(guān)重要。顯示卡的性能主要取決于卡上使用的圖形芯片,早期的圖形芯片沒有幀緩存器,有關(guān)幀的操作都要有cpu去處理,降低了顯示速度,現(xiàn)在多數(shù)顯示卡上都設(shè)置具有圖形處理功能的加速芯片,可處理像windows類型的圖形任務(wù)而減少cpu參與,更高級(jí)的顯示卡上有協(xié)處理器,可大大減免cpu的處理和參與。利用視頻存儲(chǔ)器vram存儲(chǔ)顯示數(shù)據(jù),可減少甚至免去訪問(wèn)系統(tǒng)主存,加快顯示速度。640*480-16色的vga顯示一屏需642*480*log2 16/8=154kb顯示存儲(chǔ)器,1024*768真彩顯示一屏則需要1024*768*24/8=2.3mb。顯示卡插在系
31、統(tǒng)扳的擴(kuò)展槽內(nèi),通過(guò)電纜連接到機(jī)箱背面的15針d型插座連接器上。某些高檔的主板內(nèi)置了顯示卡的功能,crt顯示器背面有一個(gè)與顯示器連接好的視頻電纜,電纜的末端是15針的插入式連接器,使用時(shí)將它直接插入主機(jī)機(jī)箱背面的15孔d型插座上即可。3.1.3 crt掃描3.1.3.1 crt組成crt是一種使用陰極射線管(cathode ray tube)的顯示器,陰極射線管主要有五部分組成:電子槍(electron gun),偏轉(zhuǎn)線圈(deflection coils),蔭罩(shadow mask),熒光粉層(phosphor)及玻璃外殼。它是目前應(yīng)用最廣泛的顯示器之一,crt純平顯示器具有可視角度大、
32、無(wú)壞點(diǎn)、色彩還原度高、色度均勻、可調(diào)節(jié)的多分辨率模式、響應(yīng)時(shí)間極短等lcd顯示器難以超越的優(yōu)點(diǎn),而且現(xiàn)在的crt顯示器價(jià)格要比lcd顯示器便宜不少。3.1.3.1 crt工作原理 crt的工作原理:crt(陰極射線管)顯示器的核心部件是crt顯像管,其工作原理和我們家中電視機(jī)的顯像管基本一樣,我們可以把它看作是一個(gè)圖像更加精細(xì)的電視機(jī)。經(jīng)典的crt顯像管使用電子槍發(fā)射高速電子,經(jīng)過(guò)垂直和水平的偏轉(zhuǎn)線圈控制高速電子的偏轉(zhuǎn)角度,最后高速電子擊打屏幕上的磷光物質(zhì)使其發(fā)光,通過(guò)電壓來(lái)調(diào)節(jié)電子束的功率,就會(huì)在屏幕上形成明暗不同的光點(diǎn)形成各種圖案和文字。 彩色顯像管屏幕上的每一個(gè)像素點(diǎn)都由紅、綠、藍(lán)三種涂
33、料組合而成,由三束電子束分別激活這三種顏色的磷光涂料,以不同強(qiáng)度的電子束調(diào)節(jié)三種顏色的明暗程度就可得到所需的顏色,這非常類似于繪畫時(shí)的調(diào)色過(guò)程。倘若電子束瞄準(zhǔn)得不夠精確,就可能會(huì)打到鄰近的磷光涂層,這樣就會(huì)產(chǎn)生不正確的顏色或輕微的重像,因此必須對(duì)電子束進(jìn)行更加精確的控制。 最經(jīng)典的解決方法就是在顯像管內(nèi)側(cè),磷光涂料表面的前方加裝蔭罩(shadow mask).這個(gè)蔭罩只是一層鑿有許多小洞的金屬薄板(一般是使用一種熱膨脹率很低的鋼板),只有正確瞄準(zhǔn)的電子束才能穿過(guò)每個(gè)磷光涂層光點(diǎn)相對(duì)應(yīng)的屏蔽孔,蔭罩會(huì)攔下任何散亂的電子束以避免其打到錯(cuò)誤的磷光涂層,這就是蔭罩式顯像管。 相對(duì)的,有些公司開發(fā)蔭柵式
34、顯像管,它不像以往把磷光材料分布為點(diǎn)狀,而是以垂直線的方式進(jìn)行涂布,并在磷光涂料的前方加上相當(dāng)細(xì)的金屬線用以取代蔭罩,金屬線用來(lái)阻絕散射的電子束,原理和蔭罩相同,這就是所謂的蔭柵式顯像管。 這蔭罩和蔭柵這兩種技術(shù)都有其利弊得失,一般來(lái)說(shuō),蔭罩式顯像管的圖像和文字較銳利,但亮度比較低一點(diǎn);蔭柵式顯像管的較鮮艷,但在屏幕的1/3和2/3處有水平的阻尼線陰影(阻尼線是用來(lái)減少柵狀蔭罩震動(dòng)的一條橫向金屬線)橫過(guò)3.1.4 色彩原理圖3.2 色彩原理圖fig. 3.2 color theoryrgb色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過(guò)對(duì)紅(r)、綠(g)、藍(lán)(b)三顏色通道的變化以及它們互相之間的疊加
35、來(lái)得到各式各樣的顏色的,rgb即是代表紅、綠藍(lán)三個(gè)通道顏色即人們常說(shuō)的三原色(如上圖所示),通過(guò)三種基本顏色亮度值從0255不同產(chǎn)生出其他各種顏色,這種顏色模式叫加色模式。為什么叫加色模式呢? 舉個(gè)例子,通常使用的電視屏幕和電腦屏幕上的顯示就是這樣的模式,在沒有圖象是,屏幕是黑的,若r、g、b三色亮度都為255時(shí)混合疊加打在屏幕上時(shí)則顯示成白色,就是加起來(lái)是白色的意思,叫加色模式。這個(gè)標(biāo)準(zhǔn)幾乎包含了人類視力所能感知的所有顏色,是目前運(yùn)用最廣泛的顏色系統(tǒng)之一。而與我們電腦相關(guān)的地方,就是目前的顯示器大都采用了rgb顏色標(biāo)準(zhǔn),這就是為什么它對(duì)我們來(lái)說(shuō)這么重要了。 在顯示器上,是通過(guò)電子槍打在屏幕的
36、紅、綠、藍(lán)三色發(fā)光極上來(lái)產(chǎn)生色彩的,目前的電腦一般都能顯示32為顏色,約有一百萬(wàn)鐘以上的顏色。如果說(shuō)它所顯示的顏色還不能完全吻合自然界的某鐘色彩的話,那幾乎是我們?nèi)庋鬯荒芊直娉鰜?lái)的了。 在本設(shè)計(jì)中由于硬件的限制,未采用d/a處理器,而是采用電阻來(lái)連接,所以不能通過(guò)調(diào)節(jié)沒個(gè)顏色的亮度來(lái)調(diào)節(jié)vga的顏色,所以只能顯示8種顏色,這也是整個(gè)設(shè)計(jì)的一個(gè)缺憾,是一個(gè)需要改進(jìn)的地方。3.1.5 顯像原理圖3.3 基本時(shí)序圖fig. 3.3 basic timing plansvga顯示圖象原理:常見的彩色顯示器,一般由crt(陰極射線管)構(gòu)成。彩色是由r、g、b(紅:red 綠:green 藍(lán):blue)
37、三基色組成。顯示是用逐行掃描的方式解決,陰極射線槍發(fā)生出電子束打在涂有熒光粉的屏幕上,產(chǎn)生r、g、b三 基色,合成一個(gè)彩色像素。掃描從屏幕的左上放開始,從左到右,從上到下,進(jìn)行掃描,每掃完一行,電子束回到屏幕的左下一行的起始位置,在這期間,crt對(duì)電子束進(jìn)行消隱,每行結(jié)束時(shí),用行同步信號(hào)進(jìn)行行同步;掃描完所有行,用場(chǎng)同步信號(hào)進(jìn)行場(chǎng)同步,并使掃描回到屏幕的左上方,同時(shí)進(jìn)行場(chǎng)消隱,預(yù)備下一場(chǎng)掃描。3.1.6 顯示控制模塊顯示控制模塊是vga系統(tǒng)的關(guān)鍵,因?yàn)樗鼘⑤敵鲂型?、?chǎng)同步,以及三基色信號(hào),并且送往顯示器。對(duì)于這五個(gè)信號(hào)的時(shí)序驅(qū)動(dòng),必須嚴(yán)格遵守“vga工業(yè)標(biāo)準(zhǔn)” 4,否則會(huì)損害vga顯示器。
38、普通的vga顯示器,其引出線共含5個(gè)信號(hào): r、g、b:三基色信號(hào) hs:行同步信號(hào) vs:場(chǎng)同步信號(hào) vga工業(yè)標(biāo)準(zhǔn)是640*480*60hz vga工業(yè)標(biāo)準(zhǔn)要求的頻率: 時(shí)鐘頻率:25.175mhz(像素輸出的頻率) 行頻:31496hz 場(chǎng)頻:59.94hz(每秒圖象刷新頻率) vga工業(yè)標(biāo)準(zhǔn)模式要求:行同步、場(chǎng)同步都為負(fù)極性,即同步頭脈沖要求是負(fù)脈沖 vga部分的設(shè)計(jì)分為兩個(gè)階段,第一階段是vga彩條顯示6,這一步分很容易實(shí)現(xiàn),只要在有效顯示區(qū)域內(nèi)規(guī)定幾個(gè)范圍沒個(gè)范圍顯示不同的顏色即可,彩條顯示的延伸:可以實(shí)現(xiàn)橫彩條顯示,豎彩條顯示以及棋盤格的顯示。 第二階段是要實(shí)現(xiàn)字符的顯示,這部分
39、相對(duì)比較復(fù)雜,我用了很長(zhǎng)時(shí)間才完成,下文就是介紹字符顯示的實(shí)現(xiàn)。 vga顯示模塊的進(jìn)階:vga模塊到后期可以實(shí)現(xiàn)圖象顯示,和視頻顯示,但這部分fpga本身的容量是不夠用的,需要外掛存儲(chǔ)器來(lái)完成。由于時(shí)間關(guān)系這部分沒有實(shí)現(xiàn)目前只是完成了任意字符的顯示。 對(duì)于vga顯示部分,首先是基本時(shí)序的完成。 按照vga(640*480*60hz)的工業(yè)標(biāo)準(zhǔn)來(lái)完成程序的編寫,其設(shè)計(jì)思路如下: 本程序在完成行同步信號(hào),場(chǎng)同步信號(hào)均使用計(jì)數(shù)器來(lái)完成,設(shè)置兩個(gè)計(jì)數(shù)器,行計(jì)數(shù)器hctr(0-793),場(chǎng)計(jì)數(shù)器vctr(0-524),行周期為38.87s,每顯示行包括800點(diǎn),其中640點(diǎn)為有效顯示區(qū),160點(diǎn)為行消隱
40、期(非顯示區(qū))。行同步信號(hào)hs每行有一個(gè)脈沖,行消隱期包括行同步時(shí)間,行消隱前肩和行消隱后肩,共160個(gè)點(diǎn)時(shí)鐘。其中行消隱前肩和行消隱后肩為同步時(shí)間與有效顯示區(qū)之間的緩沖。 首先hctr計(jì)數(shù)器開始計(jì)數(shù),每當(dāng)系統(tǒng)時(shí)鐘(clk25hz)上升沿來(lái)臨時(shí)計(jì)數(shù)器值加一,當(dāng)計(jì)數(shù)器值大于663小于757時(shí),同步時(shí)間信號(hào)hsync_int變?yōu)?,其余時(shí)間為1,實(shí)現(xiàn)了同步時(shí)間后要考慮同步時(shí)間與有效顯示區(qū)之間的緩沖即行消隱前肩跟行消隱后肩,對(duì)于緩沖區(qū)的實(shí)現(xiàn)同樣使用了計(jì)數(shù)器,當(dāng)計(jì)數(shù)器hctr大于639時(shí),緩沖信號(hào)blank為0,同步時(shí)間信hsync_int與緩沖信號(hào)blank相于即實(shí)現(xiàn)了行同步信號(hào)hs。 場(chǎng)周期為16
41、.683ms,每場(chǎng)有525行,其中480行為有效顯示行,45行為場(chǎng)消隱期。場(chǎng)同步信號(hào)vs每場(chǎng)有一個(gè)脈沖,場(chǎng)消隱期包括場(chǎng)同步信號(hào),場(chǎng)消隱前肩,場(chǎng)消隱后肩共45行 場(chǎng)計(jì)數(shù)器vctr開始計(jì)數(shù),每當(dāng)行計(jì)數(shù)器完成一次計(jì)數(shù)后,場(chǎng)計(jì)數(shù)器加一,場(chǎng)同步信號(hào)vs的實(shí)現(xiàn)與行同步信號(hào)的設(shè)計(jì)方法基本相同,行同步時(shí)間為當(dāng)場(chǎng)計(jì)數(shù)器vctr大于499小于502時(shí)為0,緩沖區(qū)blank當(dāng)計(jì)數(shù)器vctr大于479時(shí)為0。 完成了行同步信號(hào)和場(chǎng)同步信號(hào)后接下來(lái)要實(shí)現(xiàn)的是字符顯示的部分,即r、g、b三基色的輸出。這個(gè)問(wèn)題首先要考慮到的是要接收ps2鍵盤當(dāng)前發(fā)送按鍵的acsii值和已經(jīng)輸入過(guò)的acsii值在屏幕上顯示問(wèn)題,因?yàn)榧纫@示
42、當(dāng)前的數(shù)據(jù),又要顯示以前的數(shù)據(jù),所以就要用到緩存設(shè)備,而這個(gè)緩存設(shè)備既要接收ps2鍵盤的數(shù)據(jù)寫入有要支持vga模塊讀取數(shù)據(jù),因此我選擇了雙口ram,在vga模塊中暫不考慮ram的寫入,僅考慮數(shù)據(jù)的讀出即可,在ram中使用計(jì)數(shù)器嵌套構(gòu)建了一個(gè)vga顯示的區(qū)域,每個(gè)字符顯示的像素是固定的8*12(由使用的字符庫(kù)決定)每個(gè)字符顯示的寬度是8,每行有640個(gè)有效顯示點(diǎn),所以每行可以顯示80個(gè)字符,字符的高度是12,vga顯示器每列有480個(gè)有效顯示行,所以每列可以顯示40個(gè)字符。所以vga實(shí)際顯示的像素是60*40。ram的讀地址就是由這一系列嵌套的計(jì)數(shù)器得來(lái),系統(tǒng)讀出asicii碼后,經(jīng)過(guò)一個(gè)地址的
43、影射,影射到存有標(biāo)準(zhǔn)字符庫(kù)的rom中,每個(gè)asicii碼都有對(duì)應(yīng)顯示狀態(tài),計(jì)算機(jī)字符顯示分為編碼和字符庫(kù),字符庫(kù)以表格的形式存放每個(gè)字符,每個(gè)字符由m*n個(gè)像素組成,占據(jù)存儲(chǔ)空間的地址就是m*n/8。每個(gè)字符編碼一一對(duì)應(yīng)到字符庫(kù)的某個(gè)表格中。對(duì)于字符庫(kù),所占的地址空間的大小已經(jīng)固定了,每個(gè)表格的偏移地址已經(jīng)固定了,即每種字符使用的像素顯示已經(jīng)固定了。本文設(shè)計(jì)編碼采用asicii 8位編碼,字符庫(kù)采用iso-8859-15,每個(gè)字符固定為12*8個(gè)像素。輸入一個(gè)asicii碼,輸出8位像素,則地址可以如下產(chǎn)生:addr=in * 12 + y ,其中,in是輸入的8位二進(jìn)制asicii碼,y為輸
44、出該字符的第幾行數(shù)。y的范圍是07。rom的地址構(gòu)建成功后就可以從rom讀取數(shù)據(jù)了,但是rom是并行輸出的,而vga的三基色信號(hào)是串行輸出的,因此在這中間需要一個(gè)并串轉(zhuǎn)換才能得到最后需要顯示的信號(hào)。3.1.7 vga與fpga連接端口vga與fpga的連接端口如下圖圖3.4 連接端口圖fig. 3.4 ports mapvga部分的管腳約束文件如下:net vga_red loc = h14 | iostandard = lvttl | drive = 8 | slew = fast ;net vga_green loc = h15 | iostandard = lvttl | drive =
45、 8 | slew = fast ;net vga_blue loc = g15 | iostandard = lvttl | drive = 8 | slew = fast ;net vga_hsync loc = f15 | iostandard = lvttl | drive = 8 | slew = fast ;net vga_vsync loc = f14 | iostandard = lvttl | drive = 8 | slew = fast ;值得注意的是在下載程序前要先在ise軟件中選擇對(duì)應(yīng)的芯片,管腳約束一定要編寫正確,否則實(shí)驗(yàn)將沒有現(xiàn)象。3.2 ps2鍵盤部分 ps2部
46、分是整個(gè)設(shè)計(jì)的另一個(gè)重點(diǎn),首先介紹一下ps2鍵盤的插孔以及ps2鍵盤的工作原理:3.2.1 ps2鍵盤的引腳定義 ps2鍵盤的引腳定義如下圖:圖3.5 ps2引腳fig. 3.5 ps2-pin3.2.2 ps2鍵盤的工作原理在剛才提到連接器上有四個(gè)有趣的管腳電源地、+5v、數(shù)據(jù)和時(shí)鐘。host (計(jì)算機(jī))提供+5v 并且鍵盤/鼠標(biāo)的地連接到host 的電源地上。數(shù)據(jù)和時(shí)鐘都是集電極開路的,這就意味著它們通常保持高電平而且很容易下拉到地(邏輯0) 任何你連接到ps/2 鼠標(biāo)、鍵盤或host 的設(shè)備在時(shí)鐘和數(shù)據(jù)線上要有一個(gè)大的上拉電阻。置“0” 就把線拉低,置“1” 就讓線上浮成高電平。參考圖3
47、.6 中數(shù)據(jù)和時(shí)鐘線的一般接口結(jié)構(gòu)。(注意:如果你打算使用象pic 這樣的微控制器,由于它們的i/o 管腳是雙向的,你可以跳過(guò)晶體管和緩沖門,并且通用同一個(gè)管腳進(jìn)行輸入和輸出。在這種組態(tài)情況下,要設(shè)置管腳為輸入就寫入1 使得電阻上拉線上的電平,要改變管腳為輸出就寫入0 到那個(gè)管腳,把線路下拉到地)圖3.6 集電極開路fig. 3.6 collector openps/2 鼠標(biāo)和鍵盤履行一種雙向同步串行協(xié)議。換句話說(shuō),每次數(shù)據(jù)線上發(fā)送一位數(shù)據(jù)并且每在時(shí)鐘線上發(fā)一個(gè)脈沖就被讀入。鍵盤/鼠標(biāo)可以發(fā)送數(shù)據(jù)到主機(jī),而主機(jī)也可以發(fā)送數(shù)據(jù)到設(shè)備,但主機(jī)總是在總線上有優(yōu)先權(quán),它可以在任何時(shí)候抑制來(lái)自于鍵盤/鼠
48、標(biāo)的通訊,只要把時(shí)鐘拉低即可。從鍵盤/鼠標(biāo)發(fā)送到主機(jī)的數(shù)據(jù)在時(shí)鐘信號(hào)的下降沿(當(dāng)時(shí)鐘從高變到低的時(shí)候)被讀??;從主機(jī)發(fā)送到鍵盤/鼠標(biāo)的數(shù)據(jù)在上升沿(當(dāng)時(shí)鐘從低變到高的時(shí)候)被讀取。不管通訊的方向怎樣,鍵盤/鼠標(biāo)總是產(chǎn)生時(shí)鐘信號(hào),如果主機(jī)要發(fā)送數(shù)據(jù),它必須首先告訴設(shè)備開始產(chǎn)生時(shí)鐘信號(hào),最大的時(shí)鐘頻率是33khz 而且大多數(shù)設(shè)備工作在10-20khz。 如果你要制作一個(gè)ps/2 設(shè)備我推薦你把頻率控制在15khz 左右這就意味著時(shí)鐘應(yīng)該是高40 微秒低40 微秒5。3.2.3 ps2鍵盤的數(shù)據(jù)結(jié)構(gòu) ps2的所有數(shù)據(jù)安排在字節(jié)中,每個(gè)字節(jié)為一幀包含了1112個(gè)位,這些位的含義如表3.1:1 star
49、t bir.this is always 01個(gè)起始位,總是為08 data bits,least significanr bir first8個(gè)數(shù)據(jù)位,低位總在前1 parity bit(odd parity)1個(gè)校驗(yàn)位,總是為11stop bit. this is always 11個(gè)停止位,總是為11 acknowledge bit(host-to-device communication only)一個(gè)應(yīng)答位(僅在主機(jī)對(duì)設(shè)備的通訊中)表3.1 ps2數(shù)據(jù)結(jié)構(gòu)form 3.1 ps2 data structure如果數(shù)據(jù)位中包含偶數(shù)個(gè)1, 校驗(yàn)位就會(huì)置1;如果數(shù)據(jù)位中包含奇數(shù)個(gè)1,校驗(yàn)位
50、就會(huì)置0。數(shù)據(jù)位中1 的個(gè)數(shù)加上校驗(yàn)位總是為奇數(shù)這(就是奇校驗(yàn))這是用來(lái)進(jìn)行錯(cuò)誤檢測(cè)的,但是由于時(shí)間的關(guān)系我沒有完成奇偶校驗(yàn)。這也是這一模塊有待完善的一部分內(nèi)容。當(dāng)主機(jī)發(fā)送數(shù)據(jù)給鍵盤/鼠標(biāo)時(shí)設(shè)備回送一個(gè)握手信號(hào)來(lái)應(yīng)答數(shù)據(jù)包已經(jīng)收到這個(gè)位不會(huì)出現(xiàn)在設(shè)備發(fā)送數(shù)據(jù)到主機(jī)的過(guò)程中5。3.2.4 ps2鍵盤到主機(jī)的通信過(guò)程 數(shù)據(jù)和時(shí)鐘線都是集電極開路結(jié)構(gòu)(正常保持高電平)。當(dāng)鍵盤或鼠標(biāo)等待發(fā)送數(shù)據(jù)時(shí),它首先檢查時(shí)鐘以確認(rèn)它是否是高電平。如果不是,那么是主機(jī)抑制了通訊,設(shè)備必須緩沖任何要發(fā)送的數(shù)據(jù)直到重新獲得總線的控制權(quán)(鍵盤有16 字節(jié)的緩沖區(qū),而鼠標(biāo)的緩沖區(qū)僅存儲(chǔ)最后一個(gè)要發(fā)送的數(shù)據(jù)包)如果時(shí)鐘線是高
51、電平,設(shè)備就可以開始傳送數(shù)據(jù)。如我在上一節(jié)提及的鍵盤和鼠標(biāo)使用一種每幀包含11位的串行協(xié)議,這些位含義如表3.2:1 start bir.this is always 01個(gè)起始位,總是為08 data bits,least significanr bir first8個(gè)數(shù)據(jù)位,低位總在前1 parity bit(odd parity)1個(gè)校驗(yàn)位,總是為11stop bit. this is always 11個(gè)停止位,總是為1表3.2 ps2數(shù)據(jù)結(jié)構(gòu)form3.2 ps2 data structure每位在時(shí)鐘的下降沿被主機(jī)讀入,如圖3.7 和3.8 所示: 圖3.7 ps2讀數(shù)據(jù)fig.
52、3.7 ps2 reading data圖3.7 設(shè)備到主機(jī)的通訊當(dāng)時(shí)鐘為高數(shù)據(jù)線改變狀態(tài)在時(shí)鐘信號(hào)的下降沿?cái)?shù)據(jù)被鎖存 圖3.8 q鍵掃描碼fig. 3.8 q key code scanning 圖3.8 是q鍵的掃描碼從鍵盤發(fā)送到計(jì)算機(jī),通道a 是時(shí)鐘信號(hào),通道b 是數(shù)據(jù)信號(hào) 時(shí)鐘頻率為10-16.7khz。從時(shí)鐘脈沖的上升沿到一個(gè)數(shù)據(jù)轉(zhuǎn)變的時(shí)間至少要有5 微秒。數(shù)據(jù)變化到時(shí)鐘脈沖的下降沿的時(shí)間至少要有5微秒并且不大于25微秒如圖4,這個(gè)定時(shí)非常重要你應(yīng)該嚴(yán)格遵循它。主機(jī)可以在第11個(gè)時(shí)鐘脈沖(停止位)之前把線拉低。導(dǎo)致設(shè)備放棄發(fā)送當(dāng)前字節(jié)(這是非常罕見的)。在停止位發(fā)送后,設(shè)備在發(fā)送下個(gè)
53、包前至少應(yīng)該等待50毫秒。這將給主機(jī)時(shí)間當(dāng)它處理接收到的字節(jié)時(shí)抑制發(fā)送(主機(jī)在收到每個(gè)包時(shí),通常自動(dòng)做這個(gè))。在主機(jī)釋放抑制后,設(shè)備至少應(yīng)該在發(fā)送任何數(shù)據(jù)前等50 毫秒。symbolparameterminmaxtckclock high or low time30s50stsudata-to-clock setup time5s25sthldclock-to-data hold time5s25s表3.3 定時(shí)form 3.3 timing圖3.9 定時(shí)fig. 3.9 timing值得注意的是:ps2鍵盤中, 如果鍵盤被按下,鍵盤每100ms發(fā)送一次掃描碼,當(dāng)鍵盤松開后,鍵盤并不是直接發(fā)送
54、真正的數(shù)據(jù),而是要先發(fā)送數(shù)據(jù)f0,然后跟隨著他后面的才是真正的按鍵數(shù)據(jù), 有一些按鍵并不只是發(fā)送f0跟數(shù)據(jù),而是先發(fā)送e0然后才是f0和真正的數(shù)據(jù),這一點(diǎn)在程序編寫的時(shí)候是需要注意的5。3.2.5 ps2模塊的設(shè)計(jì)ps2模塊的設(shè)計(jì)主要我使用了有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)的采集各個(gè)狀態(tài)如圖3.10:圖3.10 狀態(tài)圖fig. 3.10 state plansm1_rx_clk_h這個(gè)狀態(tài)表示沒有操作,在沒有按鍵按下時(shí)為高電平,等待直到有檢測(cè)到有按鍵時(shí)計(jì)60s然后轉(zhuǎn)到到下一狀態(tài)。m1_rx_falling_edge_marker這個(gè)狀態(tài)是下降沿狀態(tài),ps2模塊在這一狀態(tài)采集按鍵數(shù)據(jù)。取數(shù)據(jù)后轉(zhuǎn)到下一狀態(tài)。
55、m1_rx_clk_l 這一狀態(tài)是低電平狀態(tài),計(jì)60s后轉(zhuǎn)到下一狀態(tài)。m1_rx_rising_edge_marker這一狀態(tài)是上升沿狀態(tài)。鍵盤按鍵的數(shù)據(jù)是串行輸入的,因此使用了一個(gè)移位寄存器,11位數(shù)據(jù)都取得后,把鍵盤數(shù)據(jù)做asicii碼轉(zhuǎn)換,鍵盤上各按鍵對(duì)應(yīng)的asicii如下圖:圖3.11 鍵值對(duì)應(yīng)asicii值fig. 3.11 asicii key corresponding value3.2.6 ps2模塊與fpga的連接端口ps2與fpga的連接端口如圖3.12:圖3.12 連接端口fig. 3.12 figure 3.4 ports mapvga部分的管腳約束文件如下:net p
56、s2_clk loc = g14 | iostandard = lvcmos33 | drive = 8 | slew = slow ;net ps2_data loc = g13 | iostandard = lvcmos33 | drive = 8 | slew = slow ;3.3 雙口ram部分在ps2和vga之間使用了一個(gè)雙口ram,ps2數(shù)據(jù)被放在ram中,vga通過(guò)查表讀取按鍵的acsii碼. 在本設(shè)計(jì)中使用ip core 生成ram,生成的方法與下部分rom的生成方法幾乎相同,這里就不做過(guò)多的介紹. 生成ram的管腳圖如下:圖3.13 ram管腳圖fig. 3.13 ram-pin map 各管腳含義:圖3.14 管腳定義fig. 3.14 pin definition 握手信號(hào)的產(chǎn)生:圖3.15 握手信號(hào)fig. 3.15 handshake signals 讀寫模式的產(chǎn)生: 雙口ram的讀寫方式分為兩種: 先讀后寫模式,先寫后讀模式.在本設(shè)計(jì)中采用來(lái)后者,以下給出這種模式的時(shí)序
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度產(chǎn)學(xué)研合作項(xiàng)目研發(fā)成果轉(zhuǎn)化與知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議4篇
- 2024版軟件源碼授權(quán)保密協(xié)議范本
- 二手房私人交易協(xié)議模板2024版B版
- 2025年度新能源電池研發(fā)與采購(gòu)安裝合同范本3篇
- 2025年度廠房修建與綠色建筑節(jié)能檢測(cè)服務(wù)合同4篇
- 2025年度智慧城市建設(shè)規(guī)劃與實(shí)施合同4篇
- 2025年度地理信息數(shù)據(jù)庫(kù)建設(shè)測(cè)繪合同4篇
- 2025年度企業(yè)培訓(xùn)中心場(chǎng)地租賃及課程開發(fā)服務(wù)合同3篇
- 二零二五年度傳統(tǒng)煙酒品牌傳承保護(hù)協(xié)議
- 二零二五年度研學(xué)旅行安全保障及責(zé)任劃分合同
- 銀行2025年紀(jì)檢工作計(jì)劃
- 2024-2024年上海市高考英語(yǔ)試題及答案
- 注射泵管理規(guī)范及工作原理
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 大唐電廠采購(gòu)合同范例
- 國(guó)潮風(fēng)中國(guó)風(fēng)2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測(cè)定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 2024年中考語(yǔ)文名句名篇默寫分類匯編(解析版全國(guó))
- 新煤礦防治水細(xì)則解讀
評(píng)論
0/150
提交評(píng)論