基于fpga的键盘输入及显示电路内容摘要:

中的硬件原语或者底层单元合理地适配到 FPGA 内部的固有硬件结构上,布局的优劣对设计的最终实现结果(在速度和面积两个方面)影响很大;所谓布( Route)是指根据布局拓扑结构,利用 FPGA 内部的各种边线资源,合理正确连接各个 元件的过程。 6. 时序仿真与验证 将布局布线的时延信息反标注到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,简称后仿真。 布局布线这后生成的仿真时延文件包含信息最全,不仅包含门延时,还包含实际布线延时,所以布线后仿真最准确,能较好地反映芯片的实际工作情况。 一般来说,布线持仿真步骤必须进行,通过布线后仿真能检查设计时序与 FPGA 实际运行情况是否一致,确保设计的可靠性和稳定性。 7. 板级仿真与验证 在有些高速设计情况下还需要使用第三方的板级验证工具进行仿真与验证,如 Mentor Tau、Mentor Htpermality、 Mentor ICX 等工具通过 IBIS、 HSPICE 等模型的仿真,能较好的分析高速设计的信号完整性、电磁干扰( EMI)等电路特性等。 8. 调试与加载配置 设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行测试。 示波器和逻辑分析仪( LA, Logic Analyzer)是逻辑设计的主要调试工具。 传统的逻辑功能板级验证手段是用逻辑分析仪信号,设计要求 FPGA 和 PCB 设计人员保留一定数量 FPGA 管脚作为测试管脚,编写FPGA 代码时将需要观察的信号作为模块的输出信号,在综合实现时再把这些输出信 号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试脚,设定触发条件进行观测。 Quartus开发工具概述 本设计采用的开发工具是 Quartus II,它是 ALTERA 公司提供的可编程逻辑器件的集成软件,是该公司前一代可编程逻辑器件的集成开发软件 MAX+Plus II 的更新换代产品。 Quartus II 集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构无关的设计环境,使设计者能方便地进行设计输入、设计处理和器件编程。 Quartus II 集成开发软件适合多种平台的工作环境,支 持更多种类的可编程逻辑器件的开发,同时也提供在单芯片可编程系统 (SOPC)设计的综合性环境和 SOPC 开发的基本设计工具。 Quartus设计工具完全支持 VHDL、 Verilog 的设计流程,其内部嵌有 VHDL、 Verilog 逻辑综合器。 Quartus II 也可以利用第三方的综合工具,如 Mentor LeonardoSpectrum、 Synplify/Synplify Pro、 FPGACompiler11,并能直接调用这些工具。 同样, Quartus II 具备仿真功能,同时也支持第三方的仿真工具,如 ModelSim。 Quartus II 包括模块化的编译器。 编译器包括的功能模块有分析 /综合器 (Analysis amp。 Synthesis)、适配器 (Fitter)、装配器 (Assembler)、时序分析器 (Timing Analyzer)、设计辅助模块 (Design Assistant)、 EDA 网表文件生成器 (EDA Netlist Writer)和编辑数据接口 (Compiler Database Interface)等。 可以通过选择 Start Compilation 来运行所有的编译器模块,也可以通过选择 Start 单独运行 各个模块。 还可以通过选择 Compiler Tool(Tools 菜单 ),在 Compiler Tool窗口中运行该模块来启动编译器模块。 在 Compiler Tool 窗口中,可以打开该模块的设置文件或报告文件,来打开其他相关窗口。 此外, Quartus II 还包含了许多十分有用的 LPM(Library of Parameterized Modules)模块,它们是复杂或高级系统构建的重要组成部分,在 SOPC 设计中被大量使用,也可在 Quartus II 普通设计文件中一起使用。 Altera 提供的 LPM 函数均基于 Altera 器件的结构做了优化设计。 在许多实用情况下,必须使用宏功能模块才能使用一些 Altera 特定器件的硬件功能。 例如各类片上存储器、 DSP 模块、 LVDS 驱动器、 PLL 以及 SERDES 和 DDIO 电路模块等。 图 中所示是 Quartus II的设计流程图,它显示了 Quartus II 进行自动设计的各主要处理环节和设计流程。 主要包括设计输入、综合或编译、布局布线、时序分析、仿真、编程和配置。 此外, Quartus II 集成软件为设计流程的每个阶段提供 Quartus II 图形用户界面、 EDA 工具界面以及命令行界面。 可 以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同的界面。 图 Quartus II 的设计流程图 Quartus II 允许来自第三方的 EDIF 文件输入,并提供了很多 EDA 软件的接口, Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块 (元件 )进行调用,从而解决了原理图与 HDL 混合输入设计的问题。 在设计输入之后, Quartus II 的编译器将给出设计输入的错误报告。 Quartus II 拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误对于使用 HDL 的设计,可以使用 Quartus II 带有的 RTL Viewer 观察综合后的 RTL图。 在进行编译后,可对设计进行时序仿真。 在作仿真前,需要利用波形编辑器编辑一个波形激励文件,用于仿真验证时的激励。 编译和仿真经检测无误后便可以将下载信息通过 Quartus II 提供的编程器下载入目标器件中了。 三、 PS/2 键盘 协议与键盘接口电路设计 PS/2 键盘协议 1. PS/2 的电气特性 PS/2 协议的实现包括两条信号线,以及 +5V 的电源与地线。 信号线为 Clock、 Data,均为漏极开 路结构。 通常在连接时,使用上拉电阻将这两条线分别与电源相接,电阻值一般为 5~10KΩ,经过电阻的上拉后这两条信号线通常保持高电平,而且很容易下拉到地。 任何使用 PS/2 的键盘或其它设备在连接时都要上拉。 不过一般键盘中都已经包含了上拉电阻。 PS/2 设备接口用于许多现代的鼠标和键盘 ,它最初由 IBM 开发 ,键盘可以有 6 脚的 miniDIN或 5 脚的 DIN 连接器。 最常见的为 6 脚 miniDIN,其引脚结构和外形如图 所示。 图 PS/2 硬件接口外形图 PS/2 设备有主从之分 ,现在广泛使用的 PS/2 键盘鼠标均工作在从设备方式下。 PS/2 接口的时钟与数据线都是集电极开路结构 ,必须外接上拉电阻 ,一般上拉电阻设置在主设备中 ,主从设备之间的数据通信采用双向同步方式传输 ,时钟信号一般由从设备产生。 2. PS/2 协议的介绍 PS/2 允许主机与 PS/2 设备之间进行双向串位传输。 主机与 PS/2 设备在任何时候只能传输 1个字节的命令或数据字。 PS/2 设备可以发送数据到主机而主机也可以发送数据到设备,但主机总是在总线上有优先权,即它可以在任何时候抑制来自于 PS/2 设备的通信,此时主机只要把时钟线上的信号拉为低电平即可。 从 PS/2 设备发送到主机的数据在时钟信号的下降沿被读取,从主机发送到 PS/2 设备和数据在上升沿时被读取。 不管通信的方向如何, PS/2 设备总是产生时钟信号。 如果主机要发送数据,则必须首先告诉设备开始产生时钟信号。 所有的命令与数据字节均以帧为单位,每一帧包含了 11 或 12 位。 这些位中包含的信息定义如下:1 个起始位(总是 0)、 8 个数据位(低位在前)、 1 个奇校验位、 1 个停止位(总是 1)以及 1 个应答位(仅在主机向 PS/2 设备发送数据时才会用到, PS/2 设备向主机发送数据时不会用到这一位)。 PS/2 设备的最大时钟 频率是 33KHz,大多数设备工作在 10~20KHz。 PS/2 键盘接口电路的设计 键盘接口 1.数据包的结构 键盘的状态每改变一次 ,键盘至少会发出三个字节的数据包 ,在有键按下时会向主机发送该键 的通码 (MakeCode),当键释放时发送断码 (BreakCode)。 例如 :键“ A”的通码为 0x1C,键“ A”的断码为 :0xF0,0x1C,因此当要传送键“ A”时 ,键盘发送的数据包的代码是 :0x1C,0xF0,0x1C。 2.接口的时序逻辑 PS/2 协议是一种双向半双工串行通信协议 ,时钟信号由 键盘产生 ,最大时钟频率为 33kHz,推荐频率在 15kHz。 通信两端通过 Clock 同步 ,通过 Data 交换数据 ,任何一方如果想禁止另一方通信时 ,只需将 Clock 拉到低电平。 其传输时序根据传输的方向不同分为发送和接收两个不同时序逻辑 ,图 是从键盘到主机的时序图。 图 键盘发送数据时序图 其中 :Start:起始位 ,总为‘ 0’ (低电平 ) Data0~ Data7:8 位数据位 (低位在前 ,高位在后 Parity:奇偶校验位 (为奇校验 ) Stop:停止位 ,总为‘ 1’ (高电平 ) 当键盘要向主机通信时 ,键盘总是首先检查时钟线是否为高电平 ,如果不是则表明是主机正在通信 ,必须缓冲要发送的数据直到重新获得总线的控制权 (键盘有 16 个字节的缓冲区 ),即等到时钟线是高电平才能发送数据。 而且从键盘到主机的数据只能在时钟的下降沿时才能被读取。 当主机到键盘进行通信时 ,主机会首先把时钟线和数据线设置为 “请求发送”状态。 具体方式为 :首先下拉时钟线至少 100μs 来抑制通信 ,然后下拉数据线“请求发送” ,最后释放时钟。 在此过程中 ,键盘在不超过 10μs 的间隔内就会检查这个状态。 当键盘检查到这个状态时 ,就开始产生时钟。 和键盘发送 的数据读取方式不一样 ,主机发送的数据必须在时钟的上升沿读取。 PS/2 接口的设计实现 本次设计采用了自上而下的模块设计方法 ,考虑需要设计以下几部分模块 :串并转换模块 ,分拣接收模块 ,控制模块 ,封装发送模块等。 这几部分的逻辑关系如图 所示 : 图 模块间逻辑关系 串并转换模块主要是接收和发送传输数据 ,能够把串行数据转变成所需要的并行数据。 分拣接收模块功能是把串并转换模块传过来的数据包按照一定的要求进行分拣提取 ,从而得到有用的信息。 控制模块是设计的核心 ,PS/2 接口是半双工串行总线 ,因 此其发送和接收不能同时进行 ,需要控 制模块对其时序进行严格的控制。 控制模块负责协调整个设计的全过程 ,在本设计中采用了状态机的设计思路。 封装发送模块和分拣接收模块类似 ,只不过是把要传送的命令数据转变成 PS/2 协议要求的发送数据包的格式。 整个设计的流程图如图 所示 : 图 设计流程图 当系统上电或复位时 ,主设备首先向键盘发送初始化信号 ,在得到键盘的应答信号后 ,系统进入到了总线空闲状态 ,可以进行数据的发送和接收 ,但主设备拥有更高的优先级 ,正处在接收状态时如果得到发送请求 ,会中断数据接收 ,直接进入数据 发送状态。 使用 Quartus II 对设计进行了软件仿真 ,按照模块化的设计思路分别对每个模块独立进行了仿真。 图 是接收数据模块的仿真时序图。 图 接收数据方针时序图 硬件验证 硬件验证在 FPGA EP1C6开发板上 实现 ,在系统中用到复位电路 ,电源电路 ,FPGA芯片 ,程序下载电路 ,PS/2 接口电路 ,数码显示电路等。 选取 Cyclone系列 EPF1C60240C8N型 FPGA器件进行综合 ,将综合后的配置文件下载到开发板之后 ,系统上电 ,PS/2 设备初始化后在液晶显示器上 正 确观察到了键盘的输入。 PS/ 2设备的 Clock(时钟脚 ) 和 Data(数据脚 ) 都是集电极开路的 ,平时都是高电平。 当 PS/ 2 设备等待发送数据时 ,它首先检查 Clock(时钟脚 ) 以确认其是否为高电平。 如果是低电平 ,则认为是 PC 机抑制了通讯 , 此时它必须缓冲需要发送的数据直到重新获得总线的控制权 (一般 PS/ 2键盘有 16个字节的缓冲区 ,而 PS/ 2鼠标只有一个缓冲区仅存储最后一个要发送的数据 )。 如果 Clock(时钟脚 ) 为高电平 ,PS/ 2 设备便开始将数据发送到 PC 机。 一般都是由 PS/2 设备产生时钟信号。 发送时一般都是按照数据帧格式顺序发送。 其中数据位在 Clock(时钟脚 )为高电平时准备好 , 在 Clock(时钟脚 ) 的下降沿被 PC 机读入。 PS/2 设备到 PC 机的通讯时序如图 2 所示。 当时钟频率为 15kHz 时 ,从 Clock(时钟脚 ) 的上升沿到数据位转变时间至少要 5μ s。 数据变化到 Clock(时钟脚 ) 下降沿的时间至少也有 5μ s,但不能大于 25μ s,这是由 PS/2通讯协议的时序规定的。 如果时钟频率是其它值 ,参数的内容应稍作调整。 上述中传输的数据是指 对特定键盘的编码或者对特定命令的编码。 一般采用第二套扫描码集所规定的码值来编码。 其中键盘码分为通码 (Make)和断码 (Break)。 通。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。