0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA芯片与NIOSⅡ实现液晶模块显示万年历的设计

电子设计 来源:郭婷 作者:电子设计 2019-01-07 08:18 次阅读

1 引言

SOPC代表了当今电子设计的发展方向,它可以将处理器、存储器、I/O接口硬件协处理器和普通的用户逻辑等系统设计需要的功能模块都集成到一个FPGA芯片里,构建一个可编程的片上系统。它具有软硬件可重构、剪裁和编程等功能,由于同时涉及底层的硬件系统设计和相应的软件设计,在系统优化方面有了前所未有的自由度。

现在的电子万年历多数采用基于单片机的控制技术,可移植性较差,集成度较低,本文以杭州康芯电子有限公司生产的GW48-PK 系统的64×64 点阵型液晶显示模块LCD GDM12864A 为例,利用NIOSⅡ软核在Altera公司的CycloneEP1C6Q240C8 芯片中,既能实现用户定制的处理器,又能对液晶显示模块和数码管显示进行编程控制。本文在软、硬件开发过程中,通过利用SOPC技术,缩短设计开发周期,节约开发成本,优化性能和资源。

本文以万年历设计为例,使读者初步了解SOPC的开发过程。

2 系统硬件设计

在系统的硬件设计中,FPGA 内部各模块设计是本系统硬件设计的核心技术。FPGA 内部各模块是利用ALTERA 公司的Quartaus Ⅱ开发软件中的SOPC builder 工具对CPU 进行定制,包括CPU 的数据和指令Cache 的大小、CPU 寄存器数量(NIOS Ⅱ 最多可以有512 个寄存器)等。用户可以增加新的外设,新的指令,分配外设的地址等进行定义,完成SOPC 开发的集成过程。将这些设计在Quartaus Ⅱ中编译并生成sof 格式文件后,下载到FPGA 芯片中就形成了SOPC 的嵌入式系统硬件平台。

对万年历设计来说,需要将本设计所需要的外设添加到NIOS 软核中。NIOS Ⅱ自带的各种IP Core 如按键、七段数码管、LED 等可以直接添加进来。对于LCD,由于SOPC builder 自带的IP 库中并不包含LCD 配置接口模块,所以该模块需要设计者根据要配置的芯片的寄存器特点和功能要求进行专门的设计。本系统的LCD 液晶屏显示器驱动接口在设计时作为普通的外部设备PIO 进行操作,因此液晶屏显示器的数据以及读、写和片选信号等都包括在PIO 总线上。液晶屏显示器以7 个PIO 的形式添加进来,如图1 所示利用SOPC builder 开发工具创建用户定制的NIOSⅡ配置及其地址映射。

基于FPGA芯片与NIOSⅡ实现液晶模块显示万年历的设计

然后,用SOPC Builder 将定制转化成为具体的元件,即用户定制的NIOS Ⅱ处理器模块,如图2 所示。最后加入增强时钟稳定性的锁相环和复位输入端最终形成顶层结构,除此之外,SOPC builder 还根据定制的结果,自动生成针对特定硬件环境的C 语言和汇编语言的头文件以及函数库,这在软件设计中会极大的减少软件开发人员的工作量。

基于FPGA芯片与NIOSⅡ实现液晶模块显示万年历的设计

3 系统软件设计本系统的软件是在ALTERA 公司提供的软件集成开发工具NIOS Ⅱ IDE 中,以C 语言形式,在硬件抽象层(HAL )函数支持下设计的。它可完成整个软件工程的编辑、编译、调试和下载等过程,极大地提高了软件的开发效率。系统的软件设计主要包括两个部分:液晶显示模块和万年历模块。

(1)液晶显示模块

在GDM12864A 液晶屏显示器的应用时,显示屏被分为左右两个区,上下一共八页,在进行访问时,由于纵坐标不好控制,而横坐标自动加一,因此选择由page0—page7 逐行写入数据。即对于32×32 的“万年历”三个字将分4 次写入。而“作者:刘雅斌”这几个16×16 的字符将分两次写入。每个汉字在液晶屏上是以点阵字模形式显示的,每个点用一个二进制位表示。关键算法是利用NIOSⅡ函数控制液晶屏显示器写命令和写数据。写命令和写数据程序如下所示:void LCD_Write_Command(alt_u8 m_Command) // 写命令{ if (!BUSY)

{ IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 0);// 选择命令 IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0); // 写信号有效 IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff); 数据总线:输出 IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Command); 写命令字 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1); // 使能信号置1 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0); // 使能信号置0

}} void LCD_Write_Data(alt_u8 m_Data) //写数据{ if (!BUSY)

{ IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 1);// 选择数据 IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0); // 写信号有效 IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff); // 数据总线:输出 IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Data);// 写入数据 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1);// 使能信号置1 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);// 使能信号置0

}}

(2)万年历模块

这一部分主要实现了万年历的基本功能,即能够显示日期与时间,并具有调整日期和时间的功能。Nios 提供了关于LED、七段数码管和按键进行读写的函数,通过这些函数可以实现日期和时间的显示。例如:

在LED 上输出显示data 数据的语句格式为:

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,data);

在七段数码管上输出显示data 数据的语句格式为:

IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_PIO_BASE,data);

用变量key 读取按键BUTTON 上的数据的语句格式为:

Key=IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_BASE);

以上程序经过在杭州康芯公司的开发板上进行了软、硬件调试,实现了对液晶模块的万年历和作者信息等汉字字符显示,并在LED 上实现了万年历的功能,并能够进行日期和时间的调整。

3 结论

本文作者创新点是采用NIOS Ⅱ集成开发环境提供的快捷开发手段,在Cyclone 1C6Q240C8 芯片上创建了一个用户定制CPU 和外设的片上系统,同时完成对液晶显示器和LED 的编程控制。整个系统充分体现了SOPC 设计方法的灵活性,设计时只定制系统需要的外设器件接口,避免过多的外围电路和器件造成体积、功耗的增多和可靠性的下降。由于采用软核结构,方便系统的升级和扩展,而不必硬件改版,节约了成本,加快开发进度,缩短了产品的开发周期。

综上所述,万年历的设计思想新颖独特,有很多创新之处,具有良好的推广前景和广阔的应用领域.。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21302

    浏览量

    593109
  • 寄存器
    +关注

    关注

    30

    文章

    5025

    浏览量

    117706
  • 液晶模块
    +关注

    关注

    0

    文章

    82

    浏览量

    21327
收藏 人收藏

    评论

    相关推荐

    液晶模块是什么?液晶模块液晶显示屏有什么区别?

    在电子显示技术日益发展的今天,液晶显示技术以其独特的优势占据了市场的主导地位。液晶模块液晶显示屏作为液晶显示技术的两大核心组件,虽然联系紧
    的头像 发表于 03-29 09:45 204次阅读

    【原创】基于51单片机的DS1302电子钟万年历(带闹钟)(Proteus仿真+C语言+原理图论文)

    电子万年历系统以AT89C52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和DS18B20温度传感器,完成时间和温度的读取,全部信息由LCD1602液晶实时显示。 日历
    发表于 03-15 16:17

    基于51单片机的1602显示带闹钟万年历设计

    电子发烧友网站提供《基于51单片机的1602显示带闹钟万年历设计.rar》资料免费下载
    发表于 01-12 09:34 9次下载

    基于51单片机的万年历设计要求

    电子发烧友网站提供《基于51单片机的万年历设计要求.rar》资料免费下载
    发表于 01-12 09:24 1次下载

    基于51单片机的万年历设计

    电子发烧友网站提供《基于51单片机的万年历设计.rar》资料免费下载
    发表于 01-03 11:22 2次下载

    基于51单片机的1602显示带闹钟万年历设计

    电子发烧友网站提供《基于51单片机的1602显示带闹钟万年历设计.rar》资料免费下载
    发表于 01-03 11:16 0次下载

    基于单片机的电子万年历设计

    电子万年历是单片机系统的一个应用,由硬件和软件相配合使用。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。主控模块用AT89C52、时钟电路用时钟
    的头像 发表于 11-29 09:25 1068次阅读
    基于单片机的电子<b class='flag-5'>万年历</b>设计

    基于verilog的万年历

    基于vivado2018.3实现万年历,能够识别平年和闰年并且自动进位计数。从秒到年,测试基本实现所有功能,且无明显BUG欢迎各位下载学习。
    发表于 11-06 17:20 0次下载

    手机控制单片机该如何去实现

    想用嵌入式(单片机)做一个LED屏幕的万年历,希望能用手机控制调节时亮度等,应该怎样去做呢!
    发表于 10-24 07:04

    51单片机自动校时万年历设计方案

    51单片机自动校时万年历设计
    发表于 09-26 08:20

    基于51单片机温湿度检测万年历12864液晶显示程序

    本资源内容概要: 这是基于51单片机的温湿度检测万年历12864液晶显示设计包含了 C语言程序源代码(keil软件打开) 。 本资源适合人群: 单片机爱好者、电子类专业学生、电子diy爱好者
    发表于 09-13 15:57 0次下载

    怎么设计一种基于51单片机的多功能电子时钟?

    设计任务:利用单片机、时钟芯片 DS1302、温度传感器 DS18B20、1602 液晶实现日期、时间、温度的显示即一个简单的万年历
    发表于 08-29 14:53 348次阅读
    怎么设计一种基于51单片机的多功能电子时钟?

    基于51单片机的红外测温万年历1602液晶显示设计

    本资源内容概要: 这是基于51单片机的红外测温万年历1602液晶显示设计包含了C语言程序源代码(keil软件打开)。 本资源适合人群: 单片机爱好者、电子类专业学生、电子diy爱好者。 本资源能学到
    发表于 08-10 09:38 0次下载

    16X64双色点阵4字LED点阵屏DS1302万年历电子钟温度显示DS18B20 C程序

    16X64双色点阵4字LED点阵屏DS1302万年历电子钟温度显示DS18B20_C程序。
    发表于 07-19 17:23 93次下载

    基于单片机的电子万年历程序设计

    基于单片机的电子万年历实物设计资料
    发表于 05-22 15:29 1次下载