基于NIOSⅡ的矩阵键盘和液晶显示外设组件的设计

2011-07-08 13:49:47来源: 互联网
     0 引言

  NIOSⅡ是Altera公司推出的第二代IP软核处理器。它与其他IP核可构成SOPC系统的主要部分。Altera SOPC Builder提供有NiosⅡ处理器及一些常用外设接口,因此,对于一些库中没有提供的模块,用户就可以自己定义添加。用户还可以通过自定义逻辑方法在 SOPC设计中添加自己开发的IP核。而定制用户逻辑外设是使用NiosⅡ嵌入式软核处理器的SOPC系统的重要特性之一。

  本文提出了一种针对LCD控制器和矩阵键盘的IP核的设计方法。该方法利用SOPC Builder中元件编辑器Create New Component,通过自定义逻辑方法在SOPC设计中添加自己开发的液晶显示模块和键盘IP核。该控制器具有Avalon总线接口,可与其它标准IP 核一起构成以NiosⅡ为核心的片上系统,并可编写驱动程序。

  1 键盘和显示电路的硬件设计

  键盘采用4×4行列式键盘,其4根行输入线KEY0~KEY3和4根列输出线KEYSCAN0~KEYSCAN3与键盘接口电路相连,每行信号线使用上拉电阻接到3.3 V电源上。液晶显示采用的是THSl2864-12显示模块。HSl2864-12是一种图形点阵液晶显示器,液晶显示屏为128×64点阵,可显示4 行,每行显示8个汉字,该模块具有2MB的中文字型ROM,可提供8192个16×16点阵中文字型。同时,为了便于英文和其它常用字符显示,它还具有 16 KB半宽字型ROM,提供有128个16×8点阵的字母符号字型;另外,绘图显示画面还可提供一个64×256点阵的绘图区域(GDRAM)及240点的 ICONRAM,可以和文字、画面混合显示,其内含的CGRAM可提供4组软件可编程的16×16点阵造字功能。其键盘电路和显示模块接口电路如图1所示。

键盘电路和显示模块接口电路

  2 键盘扫描电路的程序设计

  行列式键盘又叫矩阵式键盘,它用带有I/O口的线组成行列结构,按键设置在行列的交点上。传统矩阵键盘大多使用软件驱动控制,即在程序中循环扫描查询键盘的状态,以判断是否有键按下,这种方法比较耗费CPU资源,而且查询扫描结果可能出现误码。本文提出了一种新的用硬件描述语言在FPGA中实现矩阵键盘控制的方法。该方法使用时序电路扫描查询键盘,在发现键按下的时候,可给出相应的键码和中断信号,并以中断的方式处理按键。矩阵键盘扫描分4个时序,在每一个时序,KEY0~KEY3(四根行线线)端口分别输出1110、1101、1011、0111扫描码,并分别控制一列按键接地,同时在每个时序查询 KEYSCAN0~KEYSCAN3(四根列线)端口。

  图2所示是一种4×4行列结构的键盘扫描电路,它由分频器电路、键盘扫描计数电路、键盘行(row)列(col)按键检测电路、按键抖动消除电路、键盘编码电路等组成。

  设计好键盘的硬件控制程序以后,键盘控制程序可封装为参数可配置的用户自定义外设组件,以在SOPCBuilder中直接添加使用。完成KEYS器件的加入后,KEYS器件就会出现在SOPCBuilder的组件选择栏的“User Logic”项目下,最后在NiosⅡIDE中设计矩阵键盘的驱动程序,安装键盘按键中断,编写按键中断服务程序,从而通过按键中断获取相应按键的键盘码。其例程如下:

  /*初始化键盘中断*/

例程如下

  3 LCD显示模块的程序设计

  在NiosⅡ和LCD的接口中,一方面可以通过在NiosⅡ系统中添加相应I/O口的方式来实现对液晶显示屏LCD的间接控制,另一方面也可以利用构建 IP核来直接进行控制。第一种是将LCD接口当作普通的外部设备PIO进行操作,LCD的数据以及读、写使能、片选信号等都包括在PIO总线内;第二种是在SOPC Builder中自己定义eomponent,并把液晶显示模块看成外部存储器,直接做成Avalon总线Slave设备。

  第一种方法在硬件工程中,需要设计与外设相连的I/O接口;而在软件工程中,需要用户编写相应的接口程序对外设进行初始化,设置相应的外设寄存器。在每次新建一个工程后,这样的工作都得重复进行,因而会增加开发成本。第二种方案需要写HDL模块,自己定义控制状态、数据寄存器和控制位,这种方式控制灵活,易于实现复杂的控制时序,而且一旦自定义设备成功后,就可以像使用其他设备一样来使用这些设备。用户也可以将这些设备共享给其他的使用者,这样就大大减少了重复工作。本设计中采用第二种方法。

   在Altera SOPC Builder中双击Create NewComponent,打开Component窗口,并在HDL Files标签下添加LCD硬件描述语言编写的文件(该文件描述了组件与Avalon总线的接口以及组件与液晶屏的接口),系统编辑器就会立即自动对文件进行分析,并从文件中读I/O信号和参数信息。Lcd 12864自定义逻辑信号如图3所示。

 

  完成LCD_12864器件的加入后,LCD_12864器件就会出现在SOPC Builder的组件选择栏的“User Logic”项目下。图4所示是LCD模块的管脚分配图。

LCD模块的管脚分配图

  LCD模块的初始化就是对LCD进行模式设置。由于SOPC Builder中的LCDl2864控制模块已经考虑了LCD的读写时序,所以使用NIOSⅡIDE进行LCD驱动和控制时只需对LCD进行初始化。其部分初始化子程序如下:

部分初始化子程序

  之后,打开NiosⅡIDE,创建软件工程,编写test程序,即可测试验证液晶模块的显示结果。其中部分程序如下:

部分程序

  4 结束语

  本设计最后经过测试证明,矩阵键盘按键中断响应准确无误。由于其扫描过程由硬件实现,无需占用CPU资源,故可大大提高系统的性能,LCD可以接收任意中英文的输入显示。在开发设计过程中,矩阵键盘和LCD接口均封装为用户自定义的外设组件加入SOPCBuilder的元件库中,因而可以很方便地在其他系统中根据实际情况添加使用。用户也可以将这些设备共享给其他的使用者,这样就大大减少了重复工作。与其他方法相比,该方法无疑是一种更高效、灵活和低成本的开发方法,同时体现出了SOPC片上可编程系统的灵活、方便、可重用的优势。

关键字:NIOSⅡ  SOPC  Builder

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0708/article_2299.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
NIOSⅡ
SOPC
Builder

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved