毕业论文基于VHDL语言的VGA、PS2接口协议.doc

上传人:laozhun 文档编号:2392949 上传时间:2023-02-17 格式:DOC 页数:67 大小:1.20MB
返回 下载 相关 举报
毕业论文基于VHDL语言的VGA、PS2接口协议.doc_第1页
第1页 / 共67页
毕业论文基于VHDL语言的VGA、PS2接口协议.doc_第2页
第2页 / 共67页
毕业论文基于VHDL语言的VGA、PS2接口协议.doc_第3页
第3页 / 共67页
毕业论文基于VHDL语言的VGA、PS2接口协议.doc_第4页
第4页 / 共67页
毕业论文基于VHDL语言的VGA、PS2接口协议.doc_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《毕业论文基于VHDL语言的VGA、PS2接口协议.doc》由会员分享,可在线阅读,更多相关《毕业论文基于VHDL语言的VGA、PS2接口协议.doc(67页珍藏版)》请在三一办公上搜索。

1、基于VHDL语言的VGA、PS2接口协议学 生:王永专 业:电子信息科学与技术指导教师: 摘要:我写的论文题目是基于VHDL的VGA、PS2接口协议,其大体思路是这样的,在FPGA中,使用VHDL语言描述VGA以及PS2键盘的接口协议,并把PS2的按键信息显示到VGA显示器上,首先根据PS2键盘的数据结构,扫描方式来来接收数据,然后把接收到的数据做ASICII码转换,并且缓存到双口RAM中,VGA模块通过查表读取RAM中的内容,然后影射到ROM中,找出ASICII码对应的显示方式,最后通过并串转换输出数据,从而达到显示字符的目的。关键词:现场可编程门阵列、阴极射线管显示器 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 题目开发的目的我所做的基于FPGA

5、的VGA,PS2接口协议主要在实验室完成,参考有关的书籍,资料,数据手册,个人完成电路的设计,焊接,检查,调试,在根据自己的硬件和数据格式用VHDL语言编写PS2键盘数据采集,双口RAM缓存,ROM查表以及VGA显示,然后下载程序调试,最终达到能够显示1-9,a-z以及空格。在这个过程中需要选择适当的元件,合理的电路图扎实的焊接技术,基本的故障排除和纠正能力,会使用基本的仪器对硬件进行调试,会熟练的运用VHDL开发软件编写程序,会运用相关软件对程序进行防真,并下载到芯片中,两个主要部分PS2,VGA之间时序关系要调节好,要耐心的反复检查,修改和调试,直到达到预期目的。 我的设计硬件部分比较简单

6、,使用了Xilinx公司生产的FPGA,VGA显示器,PS2键盘,50MHZ晶震和若干电阻组成。我的设计主要的部分是程序的编写,几乎耗费了3/4的时间,因此程序部分比较复杂,但是我的设计对总体的模块划分比较严谨,因此比较容易理解。 毕业设计的目的是为了了解基本电路的设计流程,丰富自己的知识和理论,巩固所学习的知识,提高自己的动手能力和实验能力,从而具备一定的设计能力。 我做的毕业设计注重于对FPGA和VHDL语言的理解,为自己奠定基础,以便以后在EDA领域的开发和研制打下基础,提高自己的设计能力,培养创新能力,丰富自己的知识理论,做到理论和实际结合。本课题的重要意义还在于能在进一步的了解FPG

7、A的工作原理,内部结构和工作状态,以及下载方式。理解VHDL的基本语法以及设计规则,这样才能更好的利用VHDL语言来做有效的设计。 我的毕业设计分为三部分,硬件部分,程序设计部分,编译与下载部分。硬件部分介绍,主要器件,可编程逻辑器件的发展历程,可编程逻辑器件的分类,硬件描述语言VHDL。介绍了XC3S500E SPARTAN-3E FPGA的内部结构,程序设计部分介绍了FPGA内部各个模块的介绍以及设计方法。编译与下载部分主要介绍了下载软件的发展历史,以及安装使用方法。1.2 题目开发的意义 我所设计的题目现在已经是一个很成熟的技术了,目前已经应用到大部分PC机中,其作用是可以跳过CPU来显

8、示字符,图片等,减少CPU的占用率,从而提高了PC机处理数据的速度。 2 系统硬件设计2.1硬件的基本组成XC3S500E SPARTAN-3E FPGA、VGA显示器、PS2键盘、50M晶震、270电阻、82.5电阻2.2硬件介绍2.2.1 可编程逻辑芯片概述不论是简单还是复杂的数字电路系统都是由基本门来构成的,如与门、或门、非门、传输门等。由基本门可构成两类数字电路,一类是组合电路,在逻辑上输出总是当前输入状态的函数;另一类是时序电路,其输出是当前系统状态与当前输入输入状态的函数,它含有储存元件。人们发现,不是所有的基本门都是必须的, 如用与非门单一基本门就可以构成其他的基本门。任何的组合

9、逻辑函数都是可以化为“与或”表达式,既任何的组合电路(需要提供输入信号的非信号),可以用与门或门二级电路实现。同样,任何是许电路都可以有组合电路加上存储元件(即锁存器、触发器、RAM)构成。由此,人们提出了一种可编程电路结构,即乘积项逻辑可编程结构,其原理结构图如图2.1所示: 图2.1 原理图 Fig. 2.1 Schematic 当然,“与或”结构组成的PLD器件的功能比较简单。此后,人们又从ROM工作原理、地址信号与输入数据间的关系,以及ASIC的门阵列法中获得启发,构造出另外一种可编程的逻辑结构,那就是SRAM查找表的逻辑形成方式,它的逻辑函数发生采用RAM“数据”查找的方式,并使用多

10、个查表构成了一个查表阵列,称为可编程门阵列(Programmable Gate Array)。 FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock

11、)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。FPGA可做其它全定制或半定制ASIC电路的中试样片。 FPGA内部有丰富的触发器和IO引脚。 FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。 FPGA是由存放在片内RAM中

12、的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支

13、持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程1。2.2.2可编程逻辑器件的发展历程 很早以前人们就曾经设想设计一中可编程可再编程(重构)的器件,不过由于受到当时集成电路工艺技术的限制,一直未能如愿。知道20世纪后期,集成电路技术有了飞速的发展,可编程逻辑器件才得以实现。 历史上,可编程逻辑器件经历了从PROM(Programmable Read Only Menory)、PLA(Programmable Logic Array)、PAL(Programmable Array Logic)、可重复编程的GA

14、L(Generic Array Logic),到采用大规模集成电路技术的EPLD,直到CPLD和FPGA的发展过程,在结构、工艺、集成度、功能、速度和灵活性方面都有很大的改进和提高。可编程逻辑器件大致的演变过程如下:(1)20世纪70年代,熔丝编程的PROM和PLA器件是最早的可编程逻辑器件。(2)20世纪70年代末,对PLA进行了改进,AMD公司推出PAL器件。(3)20世纪80年代初,Larrice公司发明电可擦写的,比PAL使用更灵活的GAL器件。(4)20世纪80年代中期,Xilinx公司提出现场可编程概念,同时产生出了世界上第一片FPGA器件,同一时期,Altera公司推出EPLD器

15、件,较GAL器件有更高的集成度,可以用紫外线或电擦除。(5)20世纪80年代末,Lattice公司又提出在系统可编程技术,并且推出了一系列具备在系统可编程能力的CPLD器件,将可编程逻辑器件的性能和应用技术推向了一个全新的高度。(6)进入20世纪90年代后,可编程逻辑集成电路技术进入飞速发展时期,器件的可用逻辑门数超过百万门,并出现了内嵌复杂功能模块(比如加法器、乘法器、RAM、CPU核、DSP核、PLL等)的SoPC.2.3.1.2 可编程逻辑器件的分类可编程逻辑器件的种类很多,几乎每个大的可编程逻辑器件供应商都能提供具有自身结构特点的PLD器件。由于历史是原因,可编程逻辑器件的命名各异,在

16、详细介绍可编程逻辑器件之前,有必要介绍几种PLD的分类方法。如下图所示,较常见的分类是按照集成度来区分不同的PLD期间,一般可以分为以下两大类器件:一类是芯片集成度较低的。早期出现的PROM、PLA、PAL、GAL都属于这类,可用的逻辑门大约在500门以下,称为简单PLD。图2.2 可编程逻辑器件分类Fig. 2.2 Category Programmable Logic Devices另一类是芯片集成度较高的。如现在大量使用的CPLD、FPGA器件,称为复杂PLD。这种分类方法比较粗糙,在具体区分时,一般以GAL22V10作为对比,集成度大于GAL22V10的称为复杂PLD,反之归类为简单P

17、LD。前面已经提到,常用的可编程逻辑器件都是从“与或”阵列和门阵列两类基本结构发展起来的,所以可编程逻辑器件从结构上可以分为两大类器件:乘积项结构器件。其基本结构为“与或”阵列的器件,大部分简单PLD和CPLD都属于这个范畴。查找表结构器件,由简单的查找表组成可编程门,再构成阵列形式,FPGA属于此类型器件。第三种分类方法是从编程工艺上划分:1) 熔丝(FUSE)型器件,早期的PROM器件就是采用 结构的,编程过程就是根据设计熔丝图文件来烧断对应的熔丝,达到编程的目的。2) 反熔丝(ANTIFUSE)型器件,是对熔丝技术的改进,在编程处通过击穿漏层使得两点之间获得导通。与反熔丝烧断获得开路正好

18、相反。某些FPGA采用了此种编程方式,如ACREL公司的FPGA器件。无论是熔丝还是反熔丝结构,都只能编程一次,因而又被合称为OTP器件,即一次可编程器件。3) EPROM型,称为紫外线擦除电可编程逻辑器件,是用较高的编程电压进行编程,当需要再次编程时,用紫外线进行擦除,与熔丝、反熔丝不同,EPROM可多次编程,有时为了降低成本,在制造EPROM型器件时不加用于紫外线擦除的石英窗口,于是就不能用紫外线擦除,而只能编程一次,也被称为OTP器件。4) EEPROM型, 即电可擦写编程器件,现有的大部分CPLD及GAL器件采用此类结构,它是对EPROM的工艺改进,不需要紫外线擦除,而是直接用电擦除。

19、5) SRAM型。即SRAM查找表结构的器件大部分FPGA器件都采用此种编程工艺,如XILINX的FPGA、ALTERA的部分FPGA器件。这种编程方式在编程速度、编程要求上要优于前四种器件,不过SRAM型的器件编程信息放在RAM中。在断电后就丢失了,再次上电需要再次编程(配置),因此需要专业器件在完成这类配制操作,而前四种器件在编程后是不丢失编程信息的。6) FLASH型,由于反熔丝结构的可编程逻辑器件只能一次性可编程,对于产品的研制和升级带来了麻烦,采用了反熔丝工艺ACTER公司,为了解决上述反熔丝器件的不足之处,推出了采用FLASH工艺的FPGA,可以实现多次可编程,也可以作到掉电后不需

20、要重新配置2。2.2.3硬件描述语言VHDL硬件描述语言HDL是EDA技术的重要部分,常见的HDL有下列几种:l VHDLl Verilog HDLl System Verilogl System C其中VHDL、Verilog在现在的EDA设计中使用最多,也拥有几乎所有的主流EDA工具的支持,而System Verilog、System C这两种HDL语言还处于完善过程中,VHDL上电子设计主流硬件的描述语言之一VHDL的英文全名是VHSIC HARDWARE DESCRIPTION LANGUAGE,于1983年由美国国防部发起创建,由IEEE发布,从此,VHDL成为硬件描述语言的工业标准

21、之一。自IEEE公布了VHDL的标准版本之后,个EDA公司相继推出了自己的VHDL设计环境,或宣布自己设计的工具支持VHDL。从此VHDL在电子设计领域得到了广泛应用,并逐渐取代了原有的非标准硬件描述语言。VHDL作为一个规范语言和建模语言,随着VHDL的标准化,出现了一些支持该语言的行为仿真器。由于创建VHDL的最初目的是用语标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和文件的行为,但到了20世纪90年代初,人们发现VHDL不仅可以作为系统模拟建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件,这种

22、方法显然对于电路自己设计是一个极大的推动,很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准的VHDL的部分语言描述转化为具体电路实现的网表文件。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本VHDL,即IEEE 1076-1993。现在,VHDL和VERILOG作为IEEE的工业标准描述语言,得到众多EDA公司的支持,在电子工程领域已经成为事实上的通用硬件描述语言。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述。从而大大简化了硬件设计任务,提高了设计效率和可靠性。VHDL具有

23、与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力和系统的能力,在语言易读性和层次结构化设计方面表现了强大的生命力和应用潜力,因此,VHDL支持各种模式的设计方法:自顶向下与自低向上或混合方法,在面对当今许多电子产品生命周期缩短,需要多次重新设计以融入最新技术,改变工艺等方面,VHDL具有良好的适应性,用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力3。3 FPGA内部模块详细划分本章主要介绍FPGA内部模块的划分,从图3.1中可以看出FPGA内部主要有一下几个模块构成:V

24、GA,PS2,SARM,ROM。PS2模块接收按键数据首先要放在双口RAM中,再由VGA的查表系统从SRAM中读取PS2的按键内容,然后影射到ROM中,最后从ROM中读出最终要显示在VGA上的内容.图3.1 FPGA 内部模块框图Fig. 3.1 FPGA Internal module diagram我的设计硬件部分很简单,软件部分相对比较复杂,下面我详细介绍FPGA内部模块的详细划分:3.1 VGA显示部分3.1.1显示器术语3.1.1.1 象素与分辨率显示器上输出的一切信息,包括数值、文字、表格、图象、动画等等,都是由于光点(既像素)构成。组成屏幕显示画面的最小单位是像素,像素之间的最小

25、距离为点距(Pitch)。点距越小像素密度越大,画面越清晰。显示器的点距有0.31mm、0.28mm、0.24mm、0.22mm等多种。 分辨率指整屏显示的像素的多少,是衡量显示器的一个常用指标。这同屏幕尺寸及点距密切相关,可有屏幕的实际显示的尺寸与点距相除来近似求得。点距为0.28mm的15英寸显示器,分辨率最高为1024*768。3.1.1.2 显示器尺寸 显示器屏幕尺寸以对角线来度量,常用的显示器有14、15、17、19、21英寸等。显示器水平方向长度与垂直方向高度之比一般为4:3。3.1.1.3 扫描频率 显示器采用光栅扫描方式,即轰击荧光屏的电子束在CRT屏幕上从左到右(受水平同步信

26、号HSYNC控制)、从上到下(受垂直同步信号VSYNC控制)做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。电子束采用光栅扫描方式,从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后,有回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描后,形成一帧。此后,电子束又回到左上方的起点,开始下一帧的扫描。这种方法也就是常说的逐行扫描显示。而隔行扫描是指电子束在扫描时每隔一行扫一线,完成一屏后再返回来扫描剩下的线,这与电视机的原理一样。隔行扫描的显示器比逐行扫描闪烁的更厉害,也会让使用者的眼睛更疲劳。目前微机所用的显示器几乎都是逐行扫描。完成一行扫描所需时间称为水平

27、扫描时间,其倒数称为行频率;完成一帧(整屏)扫描所需的时间称为垂直扫描时间,其倒数为垂直扫描频率,又称刷新频率,既新一屏的频率。常用的有60HZ、75HZ等,标准VGA显示的场频60HZ,行频为31.5HZ。3.1.1.4 显示带宽带宽则指显示器可以处理的频率范围。如果60HZ刷新频率的VGA方式,其带宽达640*480*60=18.4MHZ;70HZ刷新频率1024*768分辨率的SVGA方式,其带宽达1024*768*70=55.1MHZ。早期的显示器频率固定,现在流行的多屏显示器采用自动跟踪技术,使显示器的扫描频率自动与显示卡的输出同步,达到较宽的适用范围。在本设计中使用的是60HZ刷新

28、频率的VGA方式。3.1.2显示卡术语一个像素点可有多种颜色,由表示该像素的二进位数(又称像素的位宽)决定。像素位宽为8bit,则每个像素有28=256种颜色;位宽为16bit则有216=65336种颜色,位宽为24bit则有224既一千七百多万种颜色。显示卡内的D/A(数/模)转换电路将每个像素的位宽(二进制整数)转换成相应亮度的R、G、B(红、绿、蓝)模拟信号,控制屏幕上相应的三色萤光点发光,产生所要求的颜色。随着PC机的不断更新换代,显示控制卡(即显示适配器)的标准也不断发展。从最初的MDA(单色显示适配器)CGA(彩色图形显示适配器)EGA(增强型图形适配器)VGA(视频图形阵列适配器

29、),VGA一改以前显示卡采用的数字视频信号输出,而改用模拟视频信号输出,VGA卡内的D/A转换器将数字信号转换为控制R、G、B三原色的模拟信号,使像素色彩变化非常平滑,更适合人的视觉感受。性能高于VGA并与之兼容的显示适配器卡有TVGA和SVGA。随着Windows的普及和对快速度、多色彩、高分辨率的需要,一些厂家在SVGA芯片中增加更多的硬件来支持Windows的加速,这类显示适配器一般被称做AVGA(Accelerated VGA:加速VGA)。目前大多数微机上的显示卡都属于AVGA类型。显示卡主要有图形处理芯片,视频储存器及BIOS芯片等组成。一般AVGA类型显示卡的控制器由单块AVGA

30、芯片充当,其中包含的图形加速控制器对提升图形功能至关重要。显示卡的性能主要取决于卡上使用的图形芯片,早期的图形芯片没有帧缓存器,有关帧的操作都要有CPU去处理,降低了显示速度,现在多数显示卡上都设置具有图形处理功能的加速芯片,可处理像Windows类型的图形任务而减少CPU参与,更高级的显示卡上有协处理器,可大大减免CPU的处理和参与。利用视频存储器VRAM存储显示数据,可减少甚至免去访问系统主存,加快显示速度。640*480-16色的VGA显示一屏需642*480*Log2 16/8=154KB显示存储器,1024*768真彩显示一屏则需要1024*768*24/8=2.3MB。显示卡插在系

31、统扳的扩展槽内,通过电缆连接到机箱背面的15针D型插座连接器上。某些高档的主板内置了显示卡的功能,CRT显示器背面有一个与显示器连接好的视频电缆,电缆的末端是15针的插入式连接器,使用时将它直接插入主机机箱背面的15孔D型插座上即可。3.1.3 CRT扫描3.1.3.1 CRT组成CRT是一种使用阴极射线管(Cathode Ray Tube)的显示器,阴极射线管主要有五部分组成:电子枪(Electron Gun),偏转线圈(Deflection coils),荫罩(Shadow mask),荧光粉层(Phosphor)及玻璃外壳。它是目前应用最广泛的显示器之一,CRT纯平显示器具有可视角度大、

32、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等LCD显示器难以超越的优点,而且现在的CRT显示器价格要比LCD显示器便宜不少。3.1.3.1 CRT工作原理 CRT的工作原理:CRT(阴极射线管)显示器的核心部件是CRT显像管,其工作原理和我们家中电视机的显像管基本一样,我们可以把它看作是一个图像更加精细的电视机。经典的CRT显像管使用电子枪发射高速电子,经过垂直和水平的偏转线圈控制高速电子的偏转角度,最后高速电子击打屏幕上的磷光物质使其发光,通过电压来调节电子束的功率,就会在屏幕上形成明暗不同的光点形成各种图案和文字。 彩色显像管屏幕上的每一个像素点都由红、绿、蓝三种涂

33、料组合而成,由三束电子束分别激活这三种颜色的磷光涂料,以不同强度的电子束调节三种颜色的明暗程度就可得到所需的颜色,这非常类似于绘画时的调色过程。倘若电子束瞄准得不够精确,就可能会打到邻近的磷光涂层,这样就会产生不正确的颜色或轻微的重像,因此必须对电子束进行更加精确的控制。 最经典的解决方法就是在显像管内侧,磷光涂料表面的前方加装荫罩(Shadow Mask).这个荫罩只是一层凿有许多小洞的金属薄板(一般是使用一种热膨胀率很低的钢板),只有正确瞄准的电子束才能穿过每个磷光涂层光点相对应的屏蔽孔,荫罩会拦下任何散乱的电子束以避免其打到错误的磷光涂层,这就是荫罩式显像管。 相对的,有些公司开发荫栅式

34、显像管,它不像以往把磷光材料分布为点状,而是以垂直线的方式进行涂布,并在磷光涂料的前方加上相当细的金属线用以取代荫罩,金属线用来阻绝散射的电子束,原理和荫罩相同,这就是所谓的荫栅式显像管。 这荫罩和荫栅这两种技术都有其利弊得失,一般来说,荫罩式显像管的图像和文字较锐利,但亮度比较低一点;荫栅式显像管的较鲜艳,但在屏幕的1/3和2/3处有水平的阻尼线阴影(阻尼线是用来减少栅状荫罩震动的一条横向金属线)横过3.1.4 色彩原理图3.2 色彩原理图Fig. 3.2 Color theoryRGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三颜色通道的变化以及它们互相之间的叠加

35、来得到各式各样的颜色的,RGB即是代表红、绿蓝三个通道颜色即人们常说的三原色(如上图所示),通过三种基本颜色亮度值从0255不同产生出其他各种颜色,这种颜色模式叫加色模式。为什么叫加色模式呢? 举个例子,通常使用的电视屏幕和电脑屏幕上的显示就是这样的模式,在没有图象是,屏幕是黑的,若R、G、B三色亮度都为255时混合叠加打在屏幕上时则显示成白色,就是加起来是白色的意思,叫加色模式。这个标准几乎包含了人类视力所能感知的所有颜色,是目前运用最广泛的颜色系统之一。而与我们电脑相关的地方,就是目前的显示器大都采用了RGB颜色标准,这就是为什么它对我们来说这么重要了。 在显示器上,是通过电子枪打在屏幕的

36、红、绿、蓝三色发光极上来产生色彩的,目前的电脑一般都能显示32为颜色,约有一百万钟以上的颜色。如果说它所显示的颜色还不能完全吻合自然界的某钟色彩的话,那几乎是我们肉眼所不能分辨出来的了。 在本设计中由于硬件的限制,未采用D/A处理器,而是采用电阻来连接,所以不能通过调节没个颜色的亮度来调节VGA的颜色,所以只能显示8种颜色,这也是整个设计的一个缺憾,是一个需要改进的地方。3.1.5 显像原理图3.3 基本时序图Fig. 3.3 Basic timing plansVGA显示图象原理:常见的彩色显示器,一般由CRT(阴极射线管)构成。彩色是由R、G、B(红:RED 绿:GREEN 蓝:BLUE)

37、三基色组成。显示是用逐行扫描的方式解决,阴极射线枪发生出电子束打在涂有荧光粉的屏幕上,产生R、G、B三 基色,合成一个彩色像素。扫描从屏幕的左上放开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场扫描。3.1.6 显示控制模块显示控制模块是VGA系统的关键,因为它将输出行同步、场同步,以及三基色信号,并且送往显示器。对于这五个信号的时序驱动,必须严格遵守“VGA工业标准” 4,否则会损害VGA显示器。

38、普通的VGA显示器,其引出线共含5个信号: R、G、B:三基色信号 HS:行同步信号 VS:场同步信号 VGA工业标准是640*480*60HZ VGA工业标准要求的频率: 时钟频率:25.175MHZ(像素输出的频率) 行频:31496HZ 场频:59.94HZ(每秒图象刷新频率) VGA工业标准模式要求:行同步、场同步都为负极性,即同步头脉冲要求是负脉冲 VGA部分的设计分为两个阶段,第一阶段是VGA彩条显示6,这一步分很容易实现,只要在有效显示区域内规定几个范围没个范围显示不同的颜色即可,彩条显示的延伸:可以实现横彩条显示,竖彩条显示以及棋盘格的显示。 第二阶段是要实现字符的显示,这部分

39、相对比较复杂,我用了很长时间才完成,下文就是介绍字符显示的实现。 VGA显示模块的进阶:VGA模块到后期可以实现图象显示,和视频显示,但这部分FPGA本身的容量是不够用的,需要外挂存储器来完成。由于时间关系这部分没有实现目前只是完成了任意字符的显示。 对于VGA显示部分,首先是基本时序的完成。 按照VGA(640*480*60HZ)的工业标准来完成程序的编写,其设计思路如下: 本程序在完成行同步信号,场同步信号均使用计数器来完成,设置两个计数器,行计数器hctr(0-793),场计数器vctr(0-524),行周期为38.87s,每显示行包括800点,其中640点为有效显示区,160点为行消隐

40、期(非显示区)。行同步信号HS每行有一个脉冲,行消隐期包括行同步时间,行消隐前肩和行消隐后肩,共160个点时钟。其中行消隐前肩和行消隐后肩为同步时间与有效显示区之间的缓冲。 首先hctr计数器开始计数,每当系统时钟(CLK25HZ)上升沿来临时计数器值加一,当计数器值大于663小于757时,同步时间信号hsync_int变为0,其余时间为1,实现了同步时间后要考虑同步时间与有效显示区之间的缓冲即行消隐前肩跟行消隐后肩,对于缓冲区的实现同样使用了计数器,当计数器hctr大于639时,缓冲信号blank为0,同步时间信hsync_int与缓冲信号blank相于即实现了行同步信号HS。 场周期为16

41、.683ms,每场有525行,其中480行为有效显示行,45行为场消隐期。场同步信号VS每场有一个脉冲,场消隐期包括场同步信号,场消隐前肩,场消隐后肩共45行 场计数器vctr开始计数,每当行计数器完成一次计数后,场计数器加一,场同步信号VS的实现与行同步信号的设计方法基本相同,行同步时间为当场计数器vctr大于499小于502时为0,缓冲区blank当计数器vctr大于479时为0。 完成了行同步信号和场同步信号后接下来要实现的是字符显示的部分,即R、G、B三基色的输出。这个问题首先要考虑到的是要接收PS2键盘当前发送按键的acsii值和已经输入过的acsii值在屏幕上显示问题,因为既要显示

42、当前的数据,又要显示以前的数据,所以就要用到缓存设备,而这个缓存设备既要接收PS2键盘的数据写入有要支持VGA模块读取数据,因此我选择了双口RAM,在VGA模块中暂不考虑RAM的写入,仅考虑数据的读出即可,在RAM中使用计数器嵌套构建了一个VGA显示的区域,每个字符显示的像素是固定的8*12(由使用的字符库决定)每个字符显示的宽度是8,每行有640个有效显示点,所以每行可以显示80个字符,字符的高度是12,VGA显示器每列有480个有效显示行,所以每列可以显示40个字符。所以VGA实际显示的像素是60*40。RAM的读地址就是由这一系列嵌套的计数器得来,系统读出ASICII码后,经过一个地址的

43、影射,影射到存有标准字符库的ROM中,每个ASICII码都有对应显示状态,计算机字符显示分为编码和字符库,字符库以表格的形式存放每个字符,每个字符由m*n个像素组成,占据存储空间的地址就是m*n/8。每个字符编码一一对应到字符库的某个表格中。对于字符库,所占的地址空间的大小已经固定了,每个表格的偏移地址已经固定了,即每种字符使用的像素显示已经固定了。本文设计编码采用ASICII 8位编码,字符库采用ISO-8859-15,每个字符固定为12*8个像素。输入一个ASICII码,输出8位像素,则地址可以如下产生:Addr=IN * 12 + Y ,其中,IN是输入的8位二进制ASICII码,Y为输

44、出该字符的第几行数。Y的范围是07。ROM的地址构建成功后就可以从ROM读取数据了,但是ROM是并行输出的,而VGA的三基色信号是串行输出的,因此在这中间需要一个并串转换才能得到最后需要显示的信号。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软件中选择对应的芯片,管脚约束一定要编写正确,否则实验将没有现象。3.2 PS2键盘部分 PS2部

46、分是整个设计的另一个重点,首先介绍一下PS2键盘的插孔以及PS2键盘的工作原理:3.2.1 PS2键盘的引脚定义 PS2键盘的引脚定义如下图:图3.5 PS2引脚Fig. 3.5 PS2-pin3.2.2 PS2键盘的工作原理在刚才提到连接器上有四个有趣的管脚电源地、+5V、数据和时钟。host (计算机)提供+5V 并且键盘/鼠标的地连接到host 的电源地上。数据和时钟都是集电极开路的,这就意味着它们通常保持高电平而且很容易下拉到地(逻辑0) 任何你连接到PS/2 鼠标、键盘或host 的设备在时钟和数据线上要有一个大的上拉电阻。置“0” 就把线拉低,置“1” 就让线上浮成高电平。参考图3

47、.6 中数据和时钟线的一般接口结构。(注意:如果你打算使用象PIC 这样的微控制器,由于它们的I/O 管脚是双向的,你可以跳过晶体管和缓冲门,并且通用同一个管脚进行输入和输出。在这种组态情况下,要设置管脚为输入就写入1 使得电阻上拉线上的电平,要改变管脚为输出就写入0 到那个管脚,把线路下拉到地)图3.6 集电极开路Fig. 3.6 Collector OpenPS/2 鼠标和键盘履行一种双向同步串行协议。换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号,如果主机要发送数据,它必须首先告诉设备开始产生时钟信号,最大的时钟频率是33kHz 而且大多数设备工作在10-20kHz。 如果你要制作一个PS/2 设备我推荐你把频率控制

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号