基于FPGA的OLED微显示器的IIC控制模块设计

2013-09-07 02:51何林奇
电子技术应用 2013年5期
关键词:状态机寄存器显示器

冉 峰,何林奇,储 楚

(上海大学 微电子研究与开发中心,上海 200072)

微显示器[1]是一种特殊形态的显示器,它自身物理尺寸很小,但却可以通过光学系统产生大屏幕显示效果,主要应用于投影机和近眼显示系统。近年来,随着有机发光技术的兴起,基于OLED(有机发光二极管)的微显示器也开始逐渐发展。OLED微显示器具有主动发光、固态显示、超轻超薄、色彩丰富、驱动电压低、响应速度快、温度适应范围广、功耗低等优点。目前,大多OLED微显示器都采用IIC接口[2],通过IIC接口控制OLED微显示器内部寄存器,从而实现对显示模式、显示方向、显示位置、亮度、对比度、色度、伽玛矫正等控制功能。

IIC是Philips公司开发的一种用于芯片间通信的串行传输总线,它由串行时钟线SCL和串行数据线SDA完成全双工数据传送。IIC最主要的优点是其具备简单性和有效性。其次,由于接口直接在组件上,IIC占用的空间非常小,同时其连线也少。

本文通过利用Verilog语言,采用模块化设计思想[3],设计了基于FPGA的OLED微显示器的IIC接口的IIC控制模块,该控制模块包括写数据存储模块、读数据存储模块、数据读写模块,从而准确而有效地完成对OLED微显示内部寄存器的读写操作。

1 IIC接口的控制方案

1.1 OLED微显示器

本设计采用的OLED微显示器是由云南北方奥雷德光电科技股份有限公司生产的SVGA050SC低功耗主动式OLED微显示器,内部共有256个寄存器,通过IIC接口,可对其进行读写操作,从而可实现对OLED微显示器显示模式、显示方向、显示位置、亮度、对比度、色度、伽玛矫正等的控制和调整。主要寄存器如表1所示。

表1 主要寄存器

1.2 OLED微显示器IIC接口的基本原理

IIC能以双向数据线(SDA)和时钟线(SCL)实现完善的全双工同步数据传送[4]。工作时,SDA和SCL必须通过外部控制器经电阻上拉至1.8 V/3.3 V电源。OLED显示器只能作为从机使用,所有读/写操作必须由主机来实现。

1.3 控制方案概述

通过对OLED微显示器及IIC接口的分析,基于FPGA设计了OLED微显示器IIC接口的IIC控制模块,如图1所示。该控制模块包括写数据存储模块、读数据存储模块和数据读写模块。写数据存储模块用于存储从机地址、寄存器地址以及寄存器写入数据,读数据存储模块用于存储从机地址、寄存器地址以及寄存器读入数据,数据读写模块用于读写相应的数据。

FPGA采用Altera公司Cyclone II系列中的EP2C8-Q208C8。EP2C8Q208C8拥有8 256个逻辑单元、1.1 Mbit内部RAM、150个18×18乘法器、4个PLL环和85个I/O接口,最高数据率可以达到260 Mb/s,完全满足本系统要求的60 MHz系统时钟需求。与其他FPGA产品不同,Cyclone II FPGA性能提高了60%,同时功耗降为原来的一半,非常经济实用[5]。

2 IIC控制模块设计

2.1 写数据存储模块

写数据存储模块由reg型数据存储8 bit数据,包括从机地址加写标志位,由memory型数据构成寄存器存储器和写入数据存储器,每一个存储单元大小为8 bit,用于存储寄存器地址和寄存器写入数据,存储单元的数量可以根据需要自行定义。

自定义的存储单元的数量决定了寄存器存储器和写入数据存储器的大小。写数据存储模块内部有一个与数据读写模块通信的计数变量,通过改变计数变量,可将寄存器存储器中新的地址和写入数据存储器中新的数据传输给读写数据模块。图2为写数据存储模块。

2.2 读数据存储模块

读数据存储模块由reg型数据存储8 bit数据,包括从机地址加读标志位,由memory型数据构成寄存器存储器和读入数据存储器,每一个存储单元大小为8 bit,用于存储寄存器地址和寄存器读入数据,存储单元的数量可以根据需要自行定义。

自定义的存储单元的数量决定了寄存器存储器和读入数据存储器的大小。读数据存储模块内部有一个与数据读写模块通信的计数变量,通过改变计数变量,可将寄存器存储器中新的地址传输给读写数据模块,并将从读写数据模块传回的寄存器数据存储到读数据存储器中。图3为读数据存储模块。

2.3 数据读写模块

数据读写模块是IIC控制模块中最为重要的部分,对OLED微显示内部寄存器的读写操作主要由其完成。数据读写模块的设计主要包括SCL的设计以及状态机的设计。图4为数据读写模块。

本设计采用的时钟源频率为40 MHz,由于SCL的频率要求在100 kHz~1 MHz范围内,本设计将时钟源进行100分频,因此SCL的频率设定为400 kHz。考虑到IIC起始、读写以及停止的时序要求,将SCL的时钟周期平均分为上升沿、高电平、下降沿和低电平4个状态。在上升沿状态或下降沿状态时,设定SCL=1或SCL=0,而在高电平状态或低电平状态时,SDA才允许进行数据变化,这样就能保证SDA进行数据变化时SCL已经处于高电平或者低电平状态,从而能够避免SDA与SCL同时经历上升沿或下降沿而带来的时序功能不确定性的问题。

为了实现对OLED微显示器内部寄存器的读写操作,本设计采用两个状态机:一个写状态机,一个读状态机。读/写状态机由外部按键进行切换。

写状态机由空闲状态、起始状态、从机地址传输写状态、响应1状态、寄存器地址传输状态、响应2状态、数据传输状态、响应3状态、中间停止返回状态以及最终停止状态构成。在从机地址传输写状态、寄存器地址传输状态及数据传输状态中,当SCL处于低电平状态时,SDA随着计数器在0~7范围的逐次增加而改变,直到传输完8 bit数据。在响应状态中,由于SDA的三态设置,此时将SDA置于高阻状态,从而响应从机的应答。同时,写状态机设置有计数变量,计数变量随着写状态机循环次数的增加而增加。状态之间的切换如图5所示。在计数变量小于等于设定写入次数时,数据读写模块向OLED微显示器的内部寄存器写入数据。

读状态机由空闲状态、起始状态、从机地址传输写状态、响应1状态、寄存器地址传输状态、响应2状态、重新起始状态、从机地址传输读状态、响应3状态、数据传输状态、响应4状态、中间停止返回状态以及最终停止状态构成。其中读状态机中从机地址传输写状态、寄存器地址传输状态、从机地址传输读状态以及响应状态与写状态机中的相应状态类似。不同的是,在数据传输状态中,在SCL处于高电平状态时,通过将SDA置于高阻状态,把OLED微显示器寄存器的数据逐位传输给8 bit的寄存器,然后传递给读数据存储模块。读状态机的状态切换如图6所示。同样,在读状态机中也设有计数变量,当计数变量小于等于设定读入次数时,OLED微显示器寄存器的数据通过读写数据模块传输给读数据存储模块。

2.4 IIC控制模块

通过对写数据模块、读数据模块以及数据读写模块的设计,完成了IIC控制模块的设计。IIC控制模块的原理图如图7所示。

3 IIC控制模块仿真及测试

软件仿真在EDA软件环境中进行,通过模拟硬件产生测试信号,对编写的代码进行测试。通过观看时序波形或者数据报告文件来判断综合后的软件逻辑是否正确,主要用于在各个分散的模块之间的波形仿真。在系统的设计过程中,采用Quartus 8.1软件作为前端的软件仿真;功能测试中将整个系统组合起来采用软件仿真并下载到FPGA进行测试;综合验证则是通过EDA综合工具将HDL代码结合库文件综合成门级描述,然后将综合结果在软件中做最后的验证[6]。IIC控制模块的写仿真波形如图8所示。

通过IIC控制模块对OLED微显示寄存器进行读写操作,实现了OLED微显示器内置图像的显示。图9为OLED微显示内置图像。

图9 OLED微显示器内置图像

FPGA EP2C8Q208C8作为核心控制器件,在分析SVGA050SC OLED微显示器和IIC接口的基础上,利用Verilog语言,采用模块化设计思想,设计了基于FPGA的OLED微显示器的IIC接口的IIC控制模块。该控制模块对于OLED微显示器寄存器的控制提供了较好的解决方案,降低了控制的复杂度,并且系统稳定,执行效率较高。

[1]应根裕,胡文波,邱勇,等.平板显示技术[M].北京:人民邮电出版社,2002.

[2]金阳.数字视频和OLED微显示技术[J].科技创新导报,2011,27(1):11-12.

[3]吕国亮,赵曙光,赵俊.嵌入式逻辑分析技术及其在FPGA系统开发中的应用[J].液晶与显示,2007,22(2):227-231.

[4]张家会,熊先越,曹丽珍.基于FPGA的I2C总线设计[J].光通信技术,2011,9(1):40-41.

[5]王鸣浩,吴小霞.基于FPGA的通用液晶显示控制器的设计和实现[J].液晶与显示,2012,27(1):87-92.

[6]冉峰,何林奇,季渊.无线OLED微显示器系统的设计与实现[J].液晶与显示,2012,27(5):633-637.

猜你喜欢
状态机寄存器显示器
STM32和51单片机寄存器映射原理异同分析
把显示器“穿”在身上
Lite寄存器模型的设计与实现
基于有限状态机的交会对接飞行任务规划方法
IDC发布《2018年PC显示器市场跟踪报告》
一种新型点阵显示器的设计
双口RAM读写正确性自动测试的有限状态机控制器设计方法
高速数模转换器AD9779/AD9788的应用
基于反熔丝FPGA的有限状态机加固设计
一种可重构线性反馈移位寄存器设计