新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Avalon总线的键盘和VGA控制接口设计

基于Avalon总线的键盘和VGA控制接口设计

作者:时间:2017-05-25来源:网络收藏

  引言

本文引用地址:http://www.eepw.com.cn/article/201705/359673.htm

  SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出的一种灵活、高效的SOC解决方案。它将处理器、存储器、I/O口等系统设计 需要的功能模块集成到一个可编程器件上,构成一个可编程的片上系统。SOPC是PLD和ASIC技术融合的结果,代表了半导体产业未来的发展方向。

  Altera公司的Nios II核是目前最具代表性的软核嵌入式系统处理器,本文描述的SOPC系统以Altera NiosII为基础,利用SOPC Builder对Nios II及其外围系统进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足系统设计的需求。

  设计课题的确立

  本文所描述的SOPC系统需要完成以下功能:

  1.利用PS2接口的键盘作为设计的信号输入和外部控制电路部分;

  2.利用显示接口作为设计的信号输出和显示电路部分;

  3.嵌入处理器 + 应用软件。

  根据以上要求,确立要完成本文设计的3个功能模型,分别是:兼容标准键盘的PS2控制接口逻辑;基于总线的显示接口逻辑,以及NiosII嵌入式处理器和PS2/驱动程序。

  系统的组成和结构

  在SOPCBuilder中构造整个系统的连接,包括基本的SOPC系统和自定义外设。基本SOPC系统的核心是NiosII处理器Core,它还包含三态总线,以及挂在总线上的外部存储设备接口,包括SRAM(或SDRAM)控制接口及Flash控制接口;以及定时计数Timer和调试Jtag_Uart模块。而本课题设计的关键就是自定义的外设接口——基于总线协议的PS2接口和VGA控制接口。

  基于Avalon总线协议的PS2控制接口设计

  PS2控制接口协议

  PS2设备接口多用于当今的鼠标和键盘设计,它是由IBM 开发并最早出现在IBM 技术参考手册里。PS2 鼠标和键盘遵循双向同步串行协议,每次数据线上发送一位数据,时钟线上的脉冲就被读入。键盘/鼠标可以发送数据到主机,同样主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,而只需把时钟拉低即可。

  从键盘/鼠标发送到主机的数据,在时钟信号的下降沿被读取;从主机发送到键盘/鼠标的数据在上升沿被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。如果主机要发送数据,它必须先告诉设备开始产生时钟信号。PS2设备最大的时钟频率是33kHz 而大多数设备工作在10-20kHz。设备到主机的通讯过程如图2所示:

  所有数据安排在字节中,每个字节为一帧,包含了11/12 个位,这些位的含义如下:1个起始位,总是为0;8个数据位,低位在前;1个校验位,奇校验;1个停止位,总是为1;1个应答位,仅在主机对设备的通讯中出现。

  键盘上包含了一个大型的按键矩阵,它们是由“键盘编码器”来监视的。监视哪些按键被按下或释放了,并在适当的时候传送到主机。而主板上包含了一个“键盘控制器”负责解码所有来自键盘的数据, 并告诉软件什么事件发生。在主机和键盘之间的通讯使用IBM 的协议,最初IBM 使用Intel8048 微处理器作为它的键盘编码器,而使用Intel8042 微控制器作为它的键盘控制器,这些现 已被兼容设备取代,并整合到主板的芯片组中。

  键盘的处理器花费很多的时间来扫描或监视按键矩阵。如果它发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机。扫描码有两种不同的类型:“通码”和“断码”。当一个键被按下或按住就发送通码;当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。

  基于Avalon总线的键盘控制器的FPGA实现

  基于Avalon总线的键盘控制器的实现,需模拟Intel8042的功能时序,完成键盘控制器的功能模型的建立,并完成其RTL代码。本键盘控制器,不仅完成8042对键盘扫描码的接收功能,还要把扫描码转换为处理器能够识别的ASCII码。

  从键盘读数据:当从键盘收到有效的扫描码就把它放置在输入缓冲区,IBF(输入缓冲区满)标志被设置,产生IRQ1。如果中断是使能,IRQ1将激活键盘驱动程序,它指向0x09中断向量。驱动程序将从Avalon_PS2_BASE端口读取ASCII码。这个动作会释放IRQ1并复位IBF标志。接着ASCII被驱动程序处理。如下图3显示接收“c”通码的时序,经过11个PS2_CLK接收到“c”的扫描码为“0x21”,同时扫描码被转换为ASCII码,为“0x63”。图4,模拟了键盘发送一个大写“A”的数据传输时序,其过程为SHIFT通码(0x12),“A”通码(0x1c),“A”断码(0xf0,0x1c),SHIFT断码(0xf0,0x12)。此过程中加入了两个标识位,SHIFT标识(rx_shift_key_on)和断码标识(rx_released),用以显示SHIFT是否被按下,及发送的是通码或断码。

  往键盘写数据:当你写数据到键盘控制器的输出缓冲区,控制器设置OBF(输出缓冲区满)标志并处理数据。控制器将发送这个数据到键盘并等待一个回应。如果键盘没有接收或在指定时间内没有回应,相应的超时标志就会被设置。

  VGA原理

  VGA接口主要有五个信号线,分别为R、G、B、vsync(场同步)、hsync(行同步)信号。Red、Green、Blue 就是大家熟知的三原色,由RGB的电压差便可以产生出所有的颜色。如果R、G、B各用一个bit来控制,也就是只有0、1两种电压准位,则所能形成的颜色种类只有8种。若每一种颜色能用多个bit来分出不同准位的电压差,颜色就能多样化呈现。vsync和hsync用作显示器的同步信号,依据垂直与水平更新率的不同,不断送出固定频率的信号输出,此时就可以在屏幕上正确的显示色彩。

  屏幕的显示方式,是从左边最上角的第一个像素开始,然后依次向右显示下一个像素,到显示完第一列的最后一个像素,就跳到第二列的第一个像素继续开始显示。一直到整个屏幕都显示完毕时,回到原点,如此能不断的刷新画面。对上述5个信号的时序驱动,VGA显示器要求严格遵循“VGA工业标准”,即640×480×60Hz模式。下图给出VGA行扫描、场扫描的时序。

  这是每一行扫描所需的时间,3.77μs(29.88μs - 26.11μs)是hsync必需降为0的时间,1.89μs是后置准备时间,0.94μs是前置准备时间。而25.17μs则是像素显示时间,颜色的变化都要在这个时间内显示,在该时间域外,R、G、B三根信号线都一定置0,否则将无法正确显示画面。



关键词: Avalon VGA

评论


相关推荐

技术专区

关闭