当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]引言SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出的一种灵活、高效的SOC解决方案。它将处理器、存储器、I/O口等系统设计 需要的功能模块集成到

引言

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.利用VGA显示接口作为设计的信号输出和显示电路部分;

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

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

系统的组成和结构

在SOPCBuilder中构造整个系统的连接,包括基本的SOPC系统和自定义外设。基本SOPC系统的核心是NiosII处理器Core,它还包含Avalon三态总线,以及挂在总线上的外部存储设备接口,包括SRAM(或SDRAM)控制接口及Flash控制接口;以及定时计数Timer和调试Jtag_Uart模块。而本课题设计的关键就是自定义的外设接口——基于Avalon总线协议的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(输出缓冲区满)标志并处理数据。控制器将发送这个数据到键盘并等待一个回应。如果键盘没有接收或在指定时间内没有回应,相应的超时标志就会被设置。

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

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,否则将无法正确显示画面。[!--empirenews.page--]

每一个垂直信号内,总共要包含480个水平信号(或者在不同分辨率时,会有不同数目的行信号)。64μs(15.764ms - 15.700ms)是vsync必需为0的时间。1.02ms是后置准备时间,0.35ms是前置准备时间,15.24ms是图像周期。每一个vsync就显示新的一帧。

基于Avalon总线的VGA控制器的实现

Avalon流模式外设的设计需要遵循Avalon总线规范。基于Avalon总线VGA控制器的硬件结构如图7所示,该控制器由4部分构成:vga_regster_bank:VGA寄存器控制模块;line_buffer:FIFO存储器,由Magawizard产生;vga_driver:vga时序发生器,产生行场信号,并从FIFO中读取像素信息产生RGB;imga_dma:DMA控制器,完成直接存储,从系统SRAM中读取数据传输到FIFO。

使用pixel_counter(像素计数器)生成行时序,计数器应每31.77μs完成一个周期,当VGA时钟选择在25MHz,则每行需31.77μs/(1/25MHz) = 794个时钟周期。而行同步信号保持为低状态要3.77μs,3.77*25 = 94;所以如图8所示,在A处像素计数值为0,B-94,C-140,D-781,E-794,然后复位到0,从而产生行同步时序。同理,对场也需通过一个计数器生成场时序。

在EP2C5T的板子上,要使用存储器,通常需要实时显示的都会使用on-chip memory(片内存储器),因为on-chip memory的双口结构可以同时对一块存储单元不同的地址进行读、写,同时,on-chip memory的速度极快,可以不经过外部总线工作,因此不会出现总线仲裁和延迟。但是因为实验板的on-chip memory较小,而设计中256色显存空间最少要 307.2Kbytes。因此,选择外部SRAM作为显存,并由imga_dma 产生的DMA控制从Avalon总线主动读取外部SRAM中的数据。

一般在Avalon总线上大多是从外设,其使用的方式是,一直等待chipselect的输入为1时,才读取总线上的数据,如果chipselect一直为0的狀态下,则从外设将不做响应。然而,跟一般从外设不一样的是VGA控制器中的imga_dma模块是一个主外设,它完成存储器到存储器的 DMA传输,它通过Avalon总线一端连接外部显存(SRAM),一端连接控制器的FIFO。然后控制器不断主动的去读取SRAM中的数据,并输出信号到RGB。

实验分析及结果展示

中文字符串显示:先建立中文字符串字库,利用键盘扩展键触发,Nios II软件捕捉到此键码,显示字符串。英文字符显示:键盘输入,由PS2协议模块捕捉到键盘输入的扫描码,转换成ASCII码,Nios II软件再根据ASCII码值在预先建立好的ASCII字库中寻址读取ASCII字库数据,并把字库数据写入到VGA显示存储器;然后VGA控制模块把显示存储器中的数据通过DMA方式发送到VGA,完成英文字符显示。

至此完成课题设计要求,利用PS2键盘输入、VGA显示、Nios II数据处理,构造了一个SOPC系统。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

今年是5G元年,全球各个通讯公司都使出来毕生的经历,为了在未来5G市场上抢占一块好的地方,他们之间的竞争也催生了一大批新技术。工信部发放4张5G牌照,标志着中国正式进入

关键字: 5G mimo 总线与接口

在5G通讯领域,目前做的比较好的当属华为,但是其他几家公司也不甘示弱,就在最近,三星电子成功开发支持28GHz频段的“5G综合型基站”(Access Unit),是目前5G商

关键字: 5g通讯 三星 华为 总线与接口

广告商与受众之间必不可少的沟通媒介最核心的恐怕属于数字标牌,它已演变为交互式个性化通讯工具,为用户提供了更直观的的参与感与体验。研华基于云数字标牌解决方案一应俱

关键字: 总线与接口 数字标牌 研华

通常情况下在工业现场经常需要用两个隔离DC-DC搭配单独的信号隔离电路的方法去隔离RS-232与RS-485,但隔离的性能存在差异性,并且占板面积较大。本文将为你介绍一种稳定可靠、应用简便的全隔离解决方案。

关键字: rs-232 rs-485 多协议接口模块 总线与接口

近年来,第五代移动通信系统5G已经成为通信业和学术界探讨的热点。5G的发展主要有两个驱动力。一方面以长期演进技术为代表的第四代移动通信系统4G已全面商用,对下一代技术

关键字: 5G 总线与接口 数据分析

在工业实现当中,需要降低总线接口的宽度,这里专门有一种设备叫工业用串行/解串器(SerDes),它可以降低高带宽数据接口总线宽度。使用一个串行器就可以把数据从一个宽并行数

关键字: serdes 总线与接口 高带宽数据接口总线

在当前虽然在嵌入式系统中有许多连接元件的方法,但最主要的还是以太网、PCI Express和RapidIO这三种高速串行标准。所有这三种标准都使用相似的串行解串器(SerDes)技术,它

关键字: 串行总线 差分走线 总线与接口

对于现在的嵌入式工程师,一般都知道CAN总线广泛应用到汽车中,但是CAN总线不仅运用到汽车上,在船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求

关键字: can总线 总线与接口 接口

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线...

关键字: can 总线与接口 自动化 位流检测

UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

关键字: CPU uart 总线与接口 rs-232c接口
关闭
关闭