新闻中心

EEPW首页 > 嵌入式系统 > 基于Nios II的非一般模式类设备设计与集成

基于Nios II的非一般模式类设备设计与集成

——
作者:马森,吕悦,李志平时间:2006-08-11来源:(首都师范大学信息工程学院,北京 100037)收藏

摘要: 的开发过程中,硬件抽象层提供多种一般模式类设备,使得开发者可以高效的在系统中添加并使用这些设备。然而对不属于一般模式类的新设备的使用将不能按照原有的设计方法进行系统开发。为此,需要根据 内部总线规范提供一个设备驱动,并按照SOPC Builder要求集成到硬件抽象层中。通过设计并集成非字符型液晶显示模块得出结论:任何非一般模式类设备均可加载到 系统中并能正常工作。

关键词:液晶显示;Nios II;Avalon总线;设备集成

中图法分类号:TN911.72 ;TP319    文献标识码:A    文章编号


Design and integration of special device based on Nios II

MA Sen,LV Yue,LI Zhi-ping

(College of Information Engineering,Capital Normal University,Beijing 100037,China)
Abstract: During the development process of Nios II, hardware abstract layer provided a variety generic device model classes. The developer can make efficient use of the system and added to the equipment. However, such models do not fall within the general use of the new equipment. It will not be in accordance with the original design of systems development methods. To solve this problem, a device driver which in accordance with the Nios II internal bus norms have to been provided, and integrate into HAL with requirements of SOPC Builder. Through the design and integration of non-Character LCD module, the results show that: any new equipment can included in the Nios II system and to normal work.
Key Words: LCD modulate;Nios II;Avalon bus;Device integration

引言

  液晶显示器具有低工作电压、功耗小、重量轻、厚度薄、长寿命、无电磁辐射、不耀眼、抗干扰性好、抗震性能好、有效显示面积大、适于大规模集成电路直接驱动等优良特点[1]。已被广泛应用于各种仪器仪表、电子设备及控制领域中,成为测量结果显示和人机对话的重要工具。液晶显示器按其功能可分为笔段式和点矩阵式液晶显示器,后者又可以分为字符点阵式和图形点阵式液晶显示器。图形点阵式液晶显示器不仅可显示数字、字符等内容,还能显示汉字和任意图形。但此类液晶显示屏属于非一般模式类设备,在Nios II中不能直接开发使用。

1 SOPC设计与嵌入式Nios II处理器

  片上可编程系统(SOPC)是PLD(可编程逻辑)技术优势的新延伸,其特点:开发周期短,灵活性强,较低的开发费用等。Altera将SOPC开发过程与功能强大的Quartus II工具相结合的SOPC Builder是一个强有力的创建基于处理器、外设和存储器的系统开发工具,使得工程师进行SOPC设计时只需要点几个按钮,就可以选择和配置处理器及其外设,并把它们同系统的其余部分进行连接。新工具也允许设计人员全程介入研发的过程,从而获得更为细致的控制。
 
  Nios II是一个32位RISC嵌入式处理器。具有超过200 DMIP的性能。由于处理器是软核形式,具有很大的灵活性,可以在多种系统设置组合中进行选择,达到性能、特性和成本目标。Nios II处理器可定制特性集并且方便配置系统性能拥有无与伦比的灵活性。
   
  对于一个全新的外部设备,Nios II有更好的解决方案快速的掌握它的控制方法。按照设备的电器要求,使用Nios II的已有的基本控制设备(例如通用输入输出端口PIO)掌握新设备的控制特性与方法。当充分理解新设备的特性后就可以按照Nios II的硬件抽象层(HAL)的定义方法,编写新设备的驱动将其集成到Nios II中。这样在今后的开发中在SOPC Builder中就可以像其他设备一样增添这个新设备,Nios II软核生成后会自动加载此设备的设备驱动。这样提高了新设备的二次使用时的开发效率[2]。
 
  以下是液晶屏显示模块接口的设计与集成过程。

2 液晶显示模块的设计

2.1 液晶显示简介

  GM12864A是带显示存储器的图形液晶显示器。它的内部是由两块KS0108B作为列显示控制器和一片KS0107B作为行显示控制器组成。显示屏上各像素点的显示状态与显示存储器的各位相互对经,显示存储器的数据直接作为图形显示的驱动信号。显示数据为“1”,相应的像素点变亮[3]。液晶屏结构如图1所示。




图1 液晶屏GM12864A的结构图

  GM12864A的接口引脚有15根,其中2个控制线,2个片选线,8根数据线,1根使能及电源引脚。具体如表1描述。

引脚号

引脚名称

引脚类型

引脚说明

1

VCC

Power

电源

2

GND

Ground

地线

3

RS

I

控制

4

R/W

I

读写控制

5

E

I

使能

6

DB0

I/O

数据线[0~7](双向数据总线)

7

DB1

I/O

--

8

DB2

I/O

--

9

DB3

I/O

--

10

DB4

I/O

--

11

DB5

I/O

--

12

DB6

I/O

--

13

DB7

I/O

--

14

CS1

I

片选信号1

15

CS2

I

片选信号2

表1 液晶屏GM12864A的引脚说明

  了解液晶屏的引脚后还要对它的指令进行详细的分析,因为液晶屏的控制主要是通过指令完成的。GM12864A的指令表如表2所示。

指令

RS

R/W

DB0

DB1

DB2

DB3

DB4

DB5

DB6

DB7

读状态字

0

1

Busy

0

ON/OF

Res

0

0

0

0

显示开关

0

0

0

0

1

1

1

1

1

1/0

设置行

0

0

1

0

1

1

1

行(0 ~ 7)

设置列

0

0

0

1

列(0 ~ 63)

写数据

1

0

数据(DB0 ~ DB7)

表2 液晶屏GM12864A的指令表

2.2 PIO类的介绍

  设计初始阶段主要的目的在于充分了解新设备的特性与控制方法,为之后的设备集成打好基础。因此采用通用的输入输出控制接口(PIO)直接对液晶屏的引脚进行控制。{{分页}}
 
  Nios II中PIO分为三大类:输入(I)、输出(O)和三态(Tri)。PIO通过Avalon总线与Nios II相连接[4]。如图2所示。





图2 通用输入输出接口与Nios II的连接

2.3 接口的设计

  在Quartus II中新建一个工程,芯片类型选择Cyclone 1C6Q240C8。设置画面如图3所示。



图3 芯片设置界面

  工程创建完成后在SOPC Builder中定制Nios II处理器。液晶屏显示器驱动接口在设计初步作为普通的外部设备,用PIO进行操作。所以为系统增添所需要的PIO借口。设计完成后如图4所示。

  定制结束后生成Nios II处理器模块。生成后回到Quartus II中进行系统顶层结构的设计。通过SOPC Builder生成的Nios II模块需要一个时钟和一个复位输入端,输出与定制时所设计的一致。增添相应的输入输出引脚。顶层结构如图5所示。





图5 液晶屏控制系统顶层结构

  将控制系统编译,液晶屏与芯片的接口连接电路如图6所示。



图6 液晶屏与FPGA的接口电路

2.4软件设计

  利用SOPC Builder开发工具创建专用的处理器系统的硬件后,SOPC Builder还为编写操作这些片上硬件的软件代码提供了一个Nios II集成开发环境(IDE),这个软件开发环境包括语言的头文件、外围接口的驱动以及实时操作系统的内核,可完成整个软件工程的编辑、编译、调试和下载等过程,极大地提高了软件的开发效率。
 
液晶屏显示流程如图7所示。





图7 液晶屏显示流程

  根据液晶屏显示原理,编写三个函数如下,函数Busy_Check()检查液晶屏是否为忙LCD_Command_Write(alt_u8 Command)函数用来写命令。LCD_Data_Write(alt_u8 Data)函数用来写数据。 void Busy_Check()
{
  alt_u8 temp=0x00;    //状态变量
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS1_BASE, 0);    //给CS1赋值
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS2_BASE, 1); //给CS2赋值
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 0);     //给RS赋值
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 1);     //给RW赋值
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1);    //给E赋值
  IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0x00);
  temp = IORD_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE);//读取状态字
  IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
  IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff);
  BUSY=temp&0x80;                            //将状态赋BUSY
}

void LCD_Command_Write(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);
      IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
    }
}

void LCD_Data_Write(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);
      IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);
    }
}

2.5 汉字显示设计实践

    显示屏是信息输出的载体,为了更好的达到良好交互效果,尝试通过Nios II的液晶屏显示借口进行汉字显示的实践。 {{分页}}

  根据对汉字的使用频繁程度的研究,把汉字分为高频字,常用字,次常用字,罕见字和死字。正常使用的汉字达15000个。1981年我国颁布了GB2312-80的方案,集合成汉字基本字符集(共6763个)。国标GB2312-80在汉字操作系统中是以汉字库的形式提供的。汉字库结构作了统一规定,即将字库分成94个区,每个区有94个汉字每个汉字在汉字库中有确定的区和位的编号。每个汉字在字库中是以点阵字模形式存储的,如一般采用16



关键词: Nios II 显示技术

评论


相关推荐

技术专区

关闭