当前位置:首页 > 智能硬件 > 智能硬件
[导读]IP(Intellectual Property),即常说的知识产权。在PLD领域中,IP核是指将数字系统中常用但比较复杂的一些功能块设计成参数可调并以HDL源文件或加密网表形式存在的可供其他用户直接调用的软件模块。由于已经过严格的

IP(Intellectual Property),即常说的知识产权。在PLD领域中,IP核是指将数字系统中常用但比较复杂的一些功能块设计成参数可调并以HDL源文件或加密网表形式存在的可供其他用户直接调用的软件模块。由于已经过严格的测试和优化,使用IP核可以显着减小设计和调试时间,提高开发效率,降低产品成本。本文以一款结构经参数化的全功能硬件扫描键盘控制器的开发为例,阐述IP核设计的一般方法与步骤。

1 设计的意义与可行性

键盘是计算机系统中最常用的人机交互输入设备。在嵌入式系统中,用R+L条口线实现R×L个按键的扫描键盘的应用最为广泛。与线性键盘相比,扫描键盘中 I/O口线的利用效率有了较大的提高,在一定程度上缓解了I/O引脚短缺的问题,但其传统实现方案的缺点是需要MPU的相应扫描控制程序来配合。为了响应输入,系统实质上工作于一种循环查询模式,不但占用了较多的MPU处理时间,也增加了系统的功耗。在一些处理任务量大、对功耗又极为敏感的系统中,这是不能接受的。

一方面,通用键盘接口芯片(如8279、HD7279A)功耗较大,使用灵活性差;另一方面,可编程逻辑器件在规模、速度和功耗等性能方面已远超出通用逻辑芯片。所以越来越多的大型数字系统采用CPLD/FPGA构建,且系统中可编程逻辑器件的硬件资源通常都有一定剩余,这使得在不增加成本的基础上,实现一款硬件扫描键盘控制器成为可能。在智能多芯电缆检测仪的研制过程中,一款这样的全功能硬件扫描键盘控制器便得以成功实现。下面详细介绍其工作原理和实现过程。

2 工作原理及功能要求

2.1 扫描键盘工作原理

以4×4 扫描键盘为例,工作原理如图1所示,其中P0~P3为输出口,P4~P7为输入口。无按键按下时,输入口被上拉为高电平。输出口以一定频率循环输出 0111、1011、1101、1110。通过读输入口的状态,便可判断击键情况。如输出0111时,输入口的16种状态与击键的对应关系如表1所示。单列线的扫描频率(记为Fs)一般应界于50~400Hz之间。

2.2 按键的去抖动问题

由于触点的弹性作用,机械按键在闭合和断开瞬间会产生抖动,实际电压波形如图2所示。其中T1、T2、TS分别为前沿抖动时间、后沿抖动时间和按键稳定时间。T1、T2取决于触点的机械特性,一般为5~12ms;TS则主要取决于击键速度的快慢和按键按下时间的长短。统计研究表明,以正常速度击键时,T1、T2、TS之和一般不小于12ms。

按键抖动引起的最大问题是一次击键被误识别为多次击键,因此应避免在抖动期T1、T2内对输入行线状态进行采样。去抖动电路的设计是硬件扫描键盘控制器设计中的关键之一。

2.3 全功能键盘控制器的功能要求

在键盘使用过程中,实际击键情况有两种:单击和连击。单击时用户希望通过短时间击键只产生一个有效键值;连击时用户长时间按下按键,希望持续快速产生多个有效键值。为方便使用,键盘设计应区分快速单击和持续连击:两者都用来快速产生多个键值,区别在于击键的动作和使用的场合。前者要求每次单击后释放按键,常用于参数小范围内的精调;而后者则要求按键长时间保持在按下状态,以实现参数大范围内的快速调节。

连击过程如图2所示,其中tJ为去抖时间,即从击键起到产生第一个有效键值的最小时间间隔,tF和tS分别为首次重复延时和持续连击时间间隔。三者的取值要求参见表2。

除上述要求外,全功能扫描键盘控制器还要求能识别多键同击的情况。出于简化设计的目的,本设计仅考虑同列按键的多键同击问题。解决此问题的办法是使R×L扫描键盘(R为输入行线数,L为扫描列线数)可以识别的等效按键数从R×L增加到(以4×4为例,从16个增加为60个)。

3 IP核的实现

3.1 硬件实现

全功能硬件扫描键盘控制器由3个计数器(分频计数器、延时计数器和扫描计数器)、2个标志寄存器(连击标志寄存器和中断标志寄存器)、1个键值锁存器和相应组合逻辑电路组成。其结构框图如图3所示。图中,对外提供5组(或个)信号引脚:clk和DB通常与CPLD/FPGA中的其他模块公用,前者用于同步时钟信号的输入,后者用于键值的输出;INT、Row和Line是键盘控制器的专用引脚,分别用于中断输出、扫描列线输出和上拉行线输入。其中行线的上拉电阻既可以选用外部电阻,也可以使用IOE(Input Output Element)中可编程选择的自带上拉电阻。

考虑到CPLD/FPGA器件的硬件资源特点和HDL(Hardware Description Language)的编程原则,扫描键盘控制器整体上采用同步设计方案,所有触发器均由输入时钟信号clk(频率为Fclk)驱动。由于输入频率较高,通常需要对其进行分频处理(分频系数为N)。本设计没有直接采用传统意义上的分频计数器,而是用分频计数器(位数为Ndiv)的输出,控制其他触发器的时钟允许信号(可理解为只有当分频计数器计数至N-1时,其他触发器的时钟信号才有效,见图3)来实现等效分频(等效分频频率为 Fd)。与前者相比,此方法有以下优点:①实现了分频系数以1为增量的连续可调(前者可实现的分频系数通常为2的n次幂);②在消耗相同硬件资源的情况下,最大分频系数提高了1倍;③避免了在同一设计中出现多个全局时钟信号,为高效的器件适配和布局布线提供了保证。当无需键盘输入时,只要关断clk信号,扫描键盘控制电路便进入低功耗模式。图3中符号“||”所代表的节点的信号便是用于等效分频的内部信号,它是由分频计数器的输出经过组合逻辑电路产生的。

扫描计数器(位数为Nscan)和译码器用于列线的自动扫描。无按键时,扫描计数器以频率Fd计数,计数值经译码输出使列线处于自动扫描状态;有击键时,扫描计数器立即停止计数,直到所有按键被释放。当log2 L为小数,即计数器可表示的状态数大于列线数时,译码器为部分译码,扫描计数器计至(L-1)时需要被同步复位。

按键检测电路用于击键的检测,是用组合逻辑电路实现的。无击键时,它异步复位延时计数器和连击标志寄存器;有按键按下时,它使扫描计数器停止计数。

延时计数器(位数为Ndelay)和连击标志寄存器与相应组合逻辑电路配合,完成去抖和键值锁存控制,是本设计的关键。首先根据表3确定去抖计数值M、连击首次延时计数值P和持续连击间隔计数值Q。有按键按下时,相应异步复位信号无效,延时计数器开始计数(前沿抖动可能导致计数器被再次复位)。计数至(M-1)时扫描键值(扫描计数器输出 +键盘行线输入)被同步锁存,同时置位中断标志寄存器;若按键仍处于按下状态,继续计数到(P-1)后,在等效分频时钟的下一上升沿,置位连击标志寄存器和中断标志寄存器、锁存扫描键值,并复位延时计数器;待重新计数至(Q-1)后,再次同步置位中断标志寄存器、锁存扫描键值、复位延时计数器。重复上述步骤三,连续产生键值直到所有按键被释放。

键值锁存器(位数为Nkey)用于扫描键值的暂存;中断标志对应于INT引脚输出,既可供MPU查询也可用于向MPU提出中断请求。当然,通过DB总线读相应内部标志也可以判断是否有新的键值产生。为使键盘能够及时响应新的输入,本设计提供两种键值锁存器和中断标志复位机制:一是MPU读取键值后,可用软件方法立即复位;二是待分频计数器再次计数至(C-1)时,自动实现两者的同步复位,其中C为INT信号持续有效的输入时钟周期数。

3.2 结构的参数化

参数化是IP核设计过程中的重要一步,本设计使用到的参数可分为两类:一类是外在参数,直接由用户根据实际需要指定,包括Fclk、Fs、R、L、C、tJ、tF、tS;另一类是对用户透明的内部参数,由直接参数派生而来,多用于描述设计实体的规模和特性,包括N、Fd、M、P、Q、Ndiv、Nscan、Ndelay、Nkey。内部参数的确定方法及参数间的相互关系如表3所示。

按照图3所描述的结构与信号流向以及表3给出的参数确定方法,借助适当的HDL(本设计采用VHDL)语句,将设计准确地描述出来,便完成了扫描键盘控制器软IP核的初步制作。

3.3 实例化及仿真

在智能多芯电缆检测仪的研制过程中,取扫描键盘参数如下:Fclk=32768Hz(clk信号由MSP430的辅助时钟提供),Fs=256Hz,C=31,R=L=4,tJ=16ms、tF=600ms、tS=200ms。选择MAX EPM7512AETC144作为目标器件,本设计在Altera Quartus II 5.0 sp1集成开发环境中顺利通过了综合、仿真和适配。由于键盘控制器属低速电路,设置综合参数为面积优先(这里指综合器可以适当降低最高实现工作频率,以减小PLD器件的硬件资源消耗),适配结果仅消耗30逻辑宏单元(Macro Cell),clk引脚允许输入的最大时钟频率为68MHz。使用实践表明:所实现的扫描键盘控制器使用方便、工作可靠。

上文实际参数的综合结果在时序仿真时需要耗费很长的时间,图4给出了对应于Fclk=4000Hz、Fs=250Hz、C=3、R=L=4、tJ=4ms、tF=6ms、tS=3ms的示意仿真波形。其中,按键抖动是用宽度为1ms的随机信号模拟的。

经仿真和实践验证设计的正确性之后,编写配套说明书,对设计文件作最后的封装,至此便完成了全功能硬件扫描键盘控制器IP核的全部开发过程。

4 需要特别说明的两个问题

(1)设计中直接使用了组合逻辑电路的输出来异步复位延时计数器和连击标志寄存器,这有可能因为时序竞争而导致设计失败,在本IP核的实例化过程中,Quartus II软件的设计辅助工具(Design Assistant)会给出严重警告信息。当然,就CPLD/FPGA的开发原则来说,这种情况是应当极力避免的。但在本设计中,非但不会导致设计失败,相反正是巧妙地利用了这一点,既可靠地解决了按键去抖问题,又极大地简化了硬件的设计。首先,相对于硬件电路的反应速度(ns级)而言,可以认为多个按键被同时按下的情况是基本不存在的。显然,当组合逻辑电路的多个输入端每一时刻仅有一个信号发生改变时,不会导致时序竞争。其次,即使出现时序竞争导致延时计数器被复位,由于它多因按键的抖动引起,此时的复位操作正是去抖所需要的,也即本设计对此处的时序竞争是不敏感的。

(2)借助于IP核的使用特点和CPLD/FPGA器件的在系统编程(ISP)特性,在保证硬件扫描键盘控制器使用灵活性和通用性的基础上,避免了在设计中引入可编程的控制寄存器,从而进一步简化了设计,减小了硬件资源消耗。

与基于MPU的传统扫描键盘实现方案相比,硬件扫描键盘控制器工作时无需扫描程序配合,减轻了MPU负担,降低了系统功耗,同时也有效地缓解了I/O引脚短缺的问题。IP核的实现,大大增加了本设计的通用性、可移植性和可重复利用性;巧妙的设计,保证了例化后占用非常少的硬件资源。从而为在不增加硬件成本的基础上,简化大型系统的软硬件设计流程、缩短产品开发时间提供了一条新途径。

此外,更为重要的是,本文以一款结构经参数化的全功能硬件扫描键盘控制器的设计为例,从一般意义上阐述了IP核的设计方法、设计步骤与设计途径。文中给出的参数数据和用到的设计原则、设计方法与设计技巧对同类设计乃至大型设计都有很好的参考和借鉴意义。

更多计算机与外设信息请关注21ic计算机与外设频道

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭