导言
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(输出缓冲区满)标志并处理数据。操控器将发送这个数据到键盘并等候一个回应。假如键盘没有接纳或在指守时刻内没有回应,相应的超时标志就会被设置。
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,否则将无法正确显现画面。