毕业论文----基于vhdl语言的vga、ps2接口协议内容摘要:

理和荫罩相同,这就是所谓的荫栅式吉林农业大学本科毕业设计 15 显像管。 这荫罩和荫栅这两种技术都有其利弊得失,一般来说 ,荫罩式显像管的图像和文字较锐利,但亮度比较低一点;荫栅式显像管的较鲜艳,但在屏幕的 1/3和 2/3 处有水平的阻尼线阴影 (阻尼线是用来减少栅状荫罩震动的一条横向金属线 )横过 色彩原理 图 色彩原理 图 Fig. Color theory RGB 色彩模式是工业界的一种颜色标准,是通过对 红( R)、绿( G)、蓝( B)三颜色通道的变化以及它们互相之间的叠加来得到各式各样的颜色的, RGB 即是代表红、绿蓝三个通道颜色即人们常说的三原色(如上图所示),通过三种基本颜色亮度值从 0~255 不同产生出其他各种颜色,这种颜色模式叫加色模式。 为什么叫加色模式呢。 举个例子,通常使用的电视屏幕和电脑屏幕上的显示就是这样的模式,在没有图象是,屏幕是黑的,若 R、 G、 B 三色亮度都为 255时混合叠加打在屏幕上时则显示成白色,就是加起来是白色的意思,叫加色模式。 这个标准几乎包含了人类视力所能感知的所有颜色,是目前运用最广 泛的颜色系统之一。 而与我们电脑相关的地方,就是目前的显示器大都采用了 RGB 颜色标准,这就是为什么它对我们来说这么重要了。 吉林农业大学本科毕业设计 16 在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,目前的电脑一般都能显示 32 为颜色,约有一百万钟以上的颜色。 如果说它所显示的颜色还不能完全吻合自然界的某钟色彩的话,那几乎是我们肉眼所不能分辨出来的了。 在本设计中由于硬件的限制,未采用 D/A 处理器,而是采用电阻来连接,所以不能通过调节没个颜色的亮度来调节 VGA 的颜色,所以只能显示 8 种颜色,这也是整个设 计的一个缺憾,是一个需要改进的地方。 显像原理 图 基本时序图 Fig. Basic timing plans VGA 显示图象原理:常见的彩色显示器,一般由 CRT(阴极射线管)构成。 彩色是由 R、 G、 B(红: RED 绿: GREEN 蓝: BLUE)三基色组成。 显示是用逐行扫描的方式解决,阴极射线枪发生出电子束打在涂有荧光粉的屏幕上,产生 R、 G、 B 三 基色,合成一个彩色像素。 扫描从屏幕的左上放开始,从左到右,从上到下,进行扫描, 每 扫完一行,电子束回到屏幕的左下一行的起始位臵,在这期间, CRT 对电子束进行消隐,每行结束时,用行同步信 号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场扫描。 吉林农业大学本科毕业设计 17 显示控制模块 显示控制模块是 VGA 系统的关键,因为它将输出行同步、场同步,以及三基色信号,并且送往显示器。 对于这五个信号的时序驱动,必须严格遵守 “VGA工业标准 ” [4],否则会损害 VGA 显示器。 普通的 VGA 显示器,其引出线共含 5个信号: R、 G、 B:三基色信号 HS:行同步信号 VS:场同步信号 VGA 工业标准是 640*480*60HZ VGA 工业标准要求的频率: 时钟频率: (像素输出的频率) 行频: 31496HZ 场频: (每秒图象刷新频率) VGA 工业标准模式要求:行同步、场同步都为负极性,即同步头脉冲要求是负脉冲 VGA 部分的设计分为两个阶段,第一阶段是 VGA 彩条显示 [6],这一步分很容易实现,只要在有效显示区域内规定几个范围没个范围显示不同的颜色即可,彩条显示的延伸:可以实现 横彩条显示,竖彩条显示以及棋盘格的显示。 第二阶段是要实现字符的显示,这部分相对比较复杂,我用了很长时间才完成,下文就是介绍字符显示的实现。 VGA 显示 模块 的进阶: VGA 模块 到后期可以实现图象显示,和视频显示,但这部分 FPGA 本身的容量是不够用的,需要外挂存储器来完成。 由于时间关吉林农业大学本科毕业设计 18 系这部分没有实现目前只是完成了任意字符的显示。 对于 VGA 显示部分,首先是基本时序的完成。 按照 VGA( 640*480*60HZ)的工业标准来完成程序的编写,其设计思路如下: 本程序 在完成行同步信号,场同步信号均使用计数器来完成,设臵两个计数器 ,行计数器 hctr( 0793) ,场计数器 vctr( 0524), 行周期为 ,每显示行包括 800 点,其中 640 点为有效显示区, 160 点为行消隐期(非显示区)。 行同步信号 HS 每行有一个脉冲,行消隐期包括行同步时间,行消隐前肩和行消隐后肩,共 160 个点时钟。 其中行消隐前肩和行消隐后肩为同步时间与有效显示区之间的缓冲。 首先 hctr 计数器开始计数,每当系统时钟( CLK25HZ)上升沿来临时计数器值加一,当计数器值大于 663小于 757时 ,同步时间信 号 hsync_int变为 0,其余时间为 1,实现了同步时间后要考虑同步时间与有效显示区之间的缓冲即行消隐前肩跟行消隐后肩,对于缓冲区的实现同样使用了计数器,当计数器 hctr大于 639 时,缓冲信号 blank 为 0,同步时间信 hsync_int 与缓冲信号 blank相于即实现了行同步信号 HS。 场周期为 ,每场有 525 行,其中 480 行为有效显示行, 45 行为场消隐期。 场同步信号 VS 每场有一个脉冲,场消隐期包括场同步信号,场消隐前肩,场消隐后肩共 45 行 场计数器 vctr 开始 计数,每当行计数器完成一次计数后,场计数器加一,场同步信号 VS 的实现与行同步信号的设计方法基本相同,行同步时间为当场计数器 vctr 大于 499 小于 502 时为 0,缓冲区 blank 当计数器 vctr 大于 479 时吉林农业大学本科毕业设计 19 为 0。 完成了行同步信号和场同步信号后接下来要实现的是字符显示的部分,即R、 G、 B 三基色的输出。 这个问题首先要考虑到的是要接收 PS2 键盘当前发送按键的 acsii 值和已经输入过的 acsii 值在屏幕上显示问题,因为既要显示当前的数据,又要显示以前的数据,所以就要用到缓存设备,而这个缓存设备既要接收 PS2 键盘的数据写入有要支持 VGA 模块读取 数据,因此我选择了双口 RAM,在 VGA 模块中暂不考虑 RAM 的写入,仅考虑数据的读出即可,在 RAM 中使用计数器嵌套构建了一个 VGA显示的区域,每个字符显示的像素是固定的 8*12(由使用的字符库决定)每个字符显示的宽度是 8,每行有 640 个有效显示点,所以每行可以显示 80 个字符,字符的高度是 12, VGA 显示器每列有 480 个有效显示行,所以每列可以显示 40 个字符。 所以 VGA 实际显示的像素是 60*40。 RAM 的读地址就是由这一系列嵌套的计数器得来,系统读出 ASICII 码后,经过一个 地址的影射,影射到存有标准字符库的 ROM 中,每个 ASICII 码都有对应显示状态,计算机字符显示分为编码和字符库,字符库以表格的形式存放每个字符,每个字符由 m*n 个像素组成,占据存储空间的地址就是 m*n/8。 每个字符编码一一对应到字符库的某个表格中。 对于字符库,所占的地址空间的大小已经固定了,每个表格的偏移地址已经固定了,即每种字符使用的像素显示已经固定了。 本文设计编码采用 ASICII 8 位编码,字符库采用 ISO885915,每个字符固定为 12*8 个像素。 输入一个 ASICII 码,输出 8 位像素,则地址可 以如下产生: Addr=IN * 12 + Y ,其中, IN 是输入的 8位二进制 ASICII 码, Y 为输出该字符的第几行数。 Y 的范围是 0~7。 ROM 的地址构建成功后就可以从 ROM 读取吉林农业大学本科毕业设计 20 数据了,但是 ROM 是并行输出的,而 VGA 的三基色信号是串行输出的,因此在这中间需要一个并串转换才能得到最后需要显示的信号。 VGA 与 FPGA 连接端口 VGA 与 FPGA 的连接端口如下图 图 连接端口图 Fig. Ports map VGA 部分的管脚约束文件如下: NET VGA_RED LOC = H14 | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST。 NET VGA_GREEN LOC = H15 | IOSTANDARD = LVTTL | DRIVE = 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 软件中选择对应的芯片,管脚约束一定要编写正确,否则实验将没有现象。 吉林农业大学本科毕业设计 21 PS2 键盘部分 PS2 部分是整个设计的另一个重点,首先介绍一下 PS2 键盘的插孔以及PS2 键盘的工作原理: PS2 键盘的引脚定义 PS2 键盘的引脚定义如下图: 图 PS2引脚 Fig. PS2pin PS2 键盘的工作原理 在刚才提到连接器上有四个有趣的管脚电源地、 +5V、数据和时钟。 host (计算机)提供 +5V 并且键盘 /鼠标的地连接到 host 的电源地上。 数据和时钟都是集电极开路的,这就意味着它们通常保持高电平而且很容易下拉到地(逻辑 0) 任何你连接到 PS/2 鼠标、键盘或 host 的设备在时钟和数据线上要有一个大的上拉电阻。 臵 “0” 就把线拉低,臵 “1” 就让线上浮成高电平。 参考图 中数据和时钟线的一般接口结构。 (注意:如果你打算使用象 PIC 这样的微控制器,由于它们的 I/O 管脚是双向的,你可以跳过晶体管和缓冲门,并且通用同一个管脚进行输入和输出。 在这种组态情况下,要设臵管脚为输入就写入 1 使得电阻上拉线上的电平,要改变管脚为输出就写入 0 到那个管脚,把线路下拉到地) 吉林农业大学本科毕业设计 22 图 集电极开路 Fig. Collector Open PS/2 鼠标和键盘履行一种双向同步串行协议。 换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。 键盘 /鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘 /鼠标的通讯,只要把时钟拉低即可。 从键盘 /鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到键盘 /鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。 不管通讯的方向怎样,键盘 /鼠标总是产生时钟信号,如果主机要发送数据,它必须首先告诉设备开始产生时钟信号,最大的时钟频率是 33kHz 而且大多数设备工作在 1020kHz。 如果你要制作一个 PS/2 设备我推荐你把频率控制在 15kHz 左右这就意味着时钟应该是高 40 微秒低 40 微秒 [5]。 PS2 键盘的数据结构 PS2的 所有数据安排在字节中,每个字节为一帧包含了 11— 12个位,这些位的含义如 表 : 1 start is always 0 1 个起始位, 总是为 0 8 data bits,least significanr bir first 8 个数据位,低位总在前 1 parity bit(odd parity) 1 个校验位,总是为 1 1stop bit. This is always 1 1 个停止位,总是为 1 1 acknowledge bit(Hosttodevice munication 一个应答位(仅在主机对设备的通讯吉林农业大学本科毕业设计 23 only) 中) 表 PS2数据结构 Form PS2 data structure 如果数据位中 包含偶数个 1, 校验位就会臵 1;如果数据位中包含奇数个 1,校验位就会臵 0。 数据位中 1 的个数加上校验位总是为奇数这(就是奇校验)这是用来进行错误检测的,但是由于时间的关系我没有完成奇偶校验。 这也是这一模块有待完善的一部分内容。 当主机发送数据给键盘 /鼠标时设备回送一个握手信号来应答数据包已经收到这个位不会出现在设备发送数据到主机的过程中 [5]。 PS2 键盘到主机的通信过程 数据和时钟线都是集电极开路结构(正常保持高电平)。 当键盘或鼠标等待发送数据时,它首先检查时钟以确认它是否是高电平。 如果 不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获得总线。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。