基于CPLD的LED点阵显示控制器

发布者:温馨幸福最新更新时间:2007-09-20 来源: 嵌入式在线关键字:周期  端口  逻辑  存储 手机看文章 扫描二维码
随时随地手机看文章
在系统可编程技术(ISP—In System Programming)及其在系统可编程系列器件,是90年代迅速发展起来的一种新技术和新器件。

现场可编程器件(FPGA和CPLD)等ISP器件无须编程器,利用器件厂商提供的编程套件,采用自顶而下的模块化设计方法,使用原理图或硬件描述语言(VHDL)等方法来描述电路逻辑关系,可直接对安装在目标板上的器件编程。它易学、易用、简化了系统设计,减小了系统规模,缩短设计周期,降低了生产设计成本,从而给电子产品的设计和生产带来了革命性的变化。

1、系统结构及工作原理

LED点阵显示控制的传统方式是采用单片机或系统机作为CPU来实现,当系统显示的信息比较多时,由于单片机的输入/输出端口(I/O)有限,采用此方式的成本将大大增加,系统和程序的设计难度也急剧增加;而且,当系统完成后修改、改变显示方式或扩展时,所需改动的地方比较大,甚至有可能需要重新设计;另外,在以显示为主的系统中,单片机的运算和控制等主要功能的利用率很低,单片机的优势得不到发挥,相当于很大得资源浪费。如果采用现场可编程逻辑器件作为CPU来设计控制器,选择合适的器件, 利用器件丰富的I/O口、内部逻辑和连线资源,采用自顶而下的模块化设计方法,可以方便地设计整个显示系统。

由于PLD器件的外围器件很少,且可以利用PLD的编程端口(可复用)进行在系统编程,使得系统的修改、显示方式的改变和扩展都变的非常简单、方便。

本系统采用单个16×16LED点阵逐列左移(或右移)显示汉字或字符,需显示汉字或符号的16×16点阵字模已经存放在字模存储器中。显示控制器由复杂可编程逻辑器件(CPLD)EPM7128SLC84-15来实现,系统组成原理框图如图1所示。

系统原理是PLD控制模块首先产生点阵字模地址,并从存储器读出数据存放在16位寄存器中,然后输出到LED点阵的列,同时对点阵列循环扫描以动态显示数据,当需要显示数据字模的列和被选中的列能够协调配合起来,就可以正确显示汉字或符号。

  图1 点阵显示控制器原理框图

2、控制器设计及工作原理

从框图中可以看出,系统的关键在于控制器的设计。LED点阵显示数据地址的产生、点阵列扫描和需显示数据的配合以及点阵显示方式控制的实现都必须由控制器来实现。对单个16×16LED点阵显示控制器进行设计的顶层逻辑原理图如图2所示。

  图2 控制器顶层电路原理图

原理图中包含5个模块,其中sequ模块产生读信号RDN和10位地址线(AD[9..0])中的最低位地址AD0,AD0和其它模块产生的地址配合,通过8位数据线(DATA[7..0])从存储器读出列高字节(AD0=1时)和低字节(AD0=0时),由于16×16点阵字模数据为32个字节,每列含两个字节即16位,它由HOUT[7..0]和LOUT[7..0] 来构成;模块add16由adclk提供一个慢时钟构成16进制计数器,它的输出送给addr16模块,为变模计数器addr16提供一个模,通过模的规律变化以控制点阵按照左移或右移等显示方式进行显示;模块decode4_16是一个4—16译码器,其输出ROUT[15..0]连接到LED点阵的列,可选中16×16LED点阵的某列,并显示sequ模块输出的点阵高低字节(字模)数据;模块addr16为点阵显示控制的核心,为了实现点阵汉字从右到左逐列移动显示,它由add16模块提供的模,在addr16内部构成两个变模计数器,其中一个用来产生读字模数据的地址AD[4..1],另外一个产生16×16LED点阵列扫描选择地址SUABAD[3..0],列扫描选择地址由decode4_16译码后输出;模块addr1为字选择计数器,其输出可以控制多块LED显示器的显示及其显示方式。

控制核心模块addr16采用AHDL语言设计,在开发软件MAX+plus Ⅱ10.2中实现,程序如下所示。

SUBDESIGN addr16

(

ckdsp,reset,in[3..0]:INPUT;

ad[4..1],subad[3..0]:OUTPUT;

)

VARIABLE

reg1[3..0]: DFF;

reg2[3..0]: DFF;

reg3[3..0]: DFF;

BEGIN

reg1[].clk=ckdsp;

reg1[].clrn=reset;

reg2[].clk=ckdsp;

reg2[].clrn=reset;

reg3[].clk=!ckdsp;

reg3[].clrn=reset;

reg2[].d=15-in[];

if reg1[].q>=in[] then

reg1[].d=0;

else

reg1[].d=reg1[].q+1;

end if;

ad[]=reg1[];

reg3[].d=reg1[].q+reg2[].q;

subad[]=reg3[].q;

END;

p;

reg2[].clrn=reset;

reg3[].clk=!ckdsp;

reg3[].clrn=reset;

reg2[].d=15-in[];

if reg1[].q>=in[] then

reg1[].d=0;

else

reg1[].d=reg1[].q+1;

  end if;

ad[]=reg1[];

reg3[].d=reg1[].q+reg2[].q;

subad[]=reg3[].q;

END;

为了实现字符由右到左逐列移动显示,模块addr16内部设计了两个由add16控制的变模加法计数器,其中一个输出为ad[4..1](4位地址线),另一 个输出为subad[3..0](列扫描控制线)。

从程序可以看出,当模输入in[3..0]=0时,ad[4..1]=0,而subad[3..0]=15,此时ad[9..5]亦等于零,AD0在0和1间变化,即读出第一个字符的第一列并显示在LED的第16列;当模输入in[3..0]=1时,在记数脉冲AD0的作用下,ad[4..1]和subad[3..0]都为二进制加法计数器,但ad[4..1]由0加到1返回到0,同时subad[3..0]由14加到15返回到14,此时ad[9..5]仍然等于零,AD0在0和1间变化,即读出第一个字符的第一、二列并显示在LED的第15、16列…由此类推,可见当模块add16的加法记数输出由0变到15时,LED点阵字符将由左到右逐列移动显示。

以上程序在MAX+plusⅡ10.2上仿真验证结果如图3所示。由仿真结果可以看到,由计数模控制输入in[3..0]控制的两个变模计数器输出ad[4..1]和subad[3..0]的结果正确无误。

  图3 addr16模块仿真时序图

在设计中,应注意模块sequ的记数时钟CLK频率的选择应远远大于模块add16的记数时钟adclk的频率,addr16的记数时钟为地址最低位AD0,字选择计数器的时钟脉冲为16进制模块add16的最高位OUT3。这样,ad[4..1]和subad[3..0]同步变化的足够快,在点阵LED上可以看到完整的字符,并当add16记数到15产生进位返回到0时,字选择模块addr1获得一个记数脉冲并加1(上升沿触发),此后将显示下一个字符。

3、系统扩展

以上为显示单个字符系统,若要同时显示多个字符时,可以按照图1加入虚线框内部分,并且模块addr1设计成addr16的格式,把AD4作为addr1的记数脉冲即可。按照EPM7128SLC84—15的资源(64个I/O口,2个全局时钟,1个全局复位和5个可复用专用端口,5000个等效逻辑门,192个内部寄存器),若不外部扩展译码器,可以有效控制约16个字符的显示;而采用外部译码器时,可以控制的字符数将大大增加,但须注意时钟CLK的频率需要提高,以视觉不能看到整个字符的闪烁为基准。

4、结论

以上点阵字符显示系统在开发软件MAX+plusⅡ10.2上经仿真验证无误,并且已经成功地应用在煤矿电力监控系统的大屏幕显示中。另外,由于器件含有丰富的可编程连线资源,当系统显示方式和显示字符个数变化时,只需要通过开发工具修改控制器的控制逻辑和连接关系,再将修改完成的程序通过下载电缆下载到器件即可,而电路板可以不做任何改动,可见,系统的维护和修改是极其方便和容易的。当然,由于CLPD的驱动能力有限,当点阵LED显示亮度不够时,需要添加LED驱动电路以得到合适的LED显示亮度。

关键字:周期  端口  逻辑  存储 引用地址:基于CPLD的LED点阵显示控制器

上一篇:提供低成本模/数转换并驱动七段显示器的微控制器
下一篇:微弱光信号前置放大电路设计

推荐阅读最新更新时间:2024-05-13 18:38

IBM擘划快闪存储器开发蓝图
IBM预计将在明年利用新创公司Diablo Technologies的技术,为伺服器双列直插式记忆体模组(DIMM)插槽加入 NAND 快闪记忆体(flash)。该公司并计划在 DIMM 埠中采用自行设计的控制器晶片。 此外,IBM并加倍扩增去年从Texas Memory Systems公司收购而来的 flash 控制器设计团队规模。预计在今年年底前,该团队将为其最佳化的储存阵列推出增强版控制器,并搭配东芝 NAND 晶片共同使用。该公司期望未来版本的控制器能与任何供应商的 flash 晶片搭配使用。 IBM由收购Texas Memory组成的最新事业部──IBM Flash System副总裁Michael Kuhn
[嵌入式]
泰科电子尺寸最小PolySwitch picoSMD035F用于高密度电路板设计
美国加州Menlo Park──2007年11月2日 ──泰科电子今日宣布广受欢迎的表面贴装系列PolySwitch?自复PPTC(正温度系数聚合物)器件增加了一种新产品。新的picoSMD035F器件是最小的PPTC电流过载保护器件,对于最新一代的高频数据口、I/O口和存储器件非常有用,电路设计人员可以把它用于消费电子产品和计算机。 新的PicoSMD器件的尺寸为0805(2012 mm),符合EIA标准的要求,在电路板上占用的面积不到以前各代产品的一半,对于空间受到限制的电路板设计,它有很大的优点。 “picoSMD035F器件的尺寸小、动作速度快、功耗小,因而适合高密度电路板使用,是用于这类电路板的有创新性的保护器件。” 泰
[模拟电子]
移动存储器体营收占DRAM总产值近三成
Trendforce 旗下记忆体储存事业处DRAMeXchange最新调查显示,全球行动式记忆体总营收在2015年首季达到35.76亿美元,季衰退不到1%,占 DRAM 总产值的29.8%,并且有持续扩大趋势。DRAMeXchange研究协理吴雅婷表示,第一季主要受惠于三星(Samsung)来自23nm产出增加,行动式记忆体整体出货与上季增加8.2%,加上行动式记忆体平均销售单价与其他产品别相对抗跌,全球行动式记忆体整体营收规模持续扩大。 吴雅婷表示,2015上半年行动式记忆体价格呈现稳定小跌的趋势。随着 LPDDR4 导入市场后,新旧产品交代衍生出更多的生意契机,而搭载3GB LPDDR4的三星智慧型手机Galaxy S6
[嵌入式]
移动<font color='red'>存储</font>器体营收占DRAM总产值近三成
亚信电子全新4端口TSN PCIe,助力新一代工业通信技术发展
全球COVID-19新冠肺炎疫情持续延烧,逐渐影响全世界制造产业的营运模式与工作习惯,利用人与机器的人机协作模式(Human-Robot Collaboration, HRC),以提高工厂生产效率及制造品质,这个大趋势带给智能工厂自动化产业一个全新的发展契机。 时效性网路(TSN)技术是由IEEE TSN工作小组基于网路OSI七层模型的第二层资料链结层所订定的一系列IEEE 802.1标准,部分最新TSN技术仍然在标准化过程中。透过TSN技术使标准以太网也可以做到工业通信网路必须具备的硬实时(Hard Real-time)、确定性(Deterministic)、低延迟等实时资料传输需求。开放平台通讯统一架构(OPC UA)技术
[网络通信]
亚信电子全新4<font color='red'>端口</font>TSN PCIe,助力新一代工业通信技术发展
PIC 指令周期
一、PIC指令周期计算: 设工作频率为:F(MHz); 1个指令周期为 1/(F/4) 秒。 二、PIC的指令 即汇编指令,不同系列指令数不一样。 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。
[单片机]
STM32使用Flash存储器当作EEPROM来保持数据
嵌入式应用中经常会遇到需要保存一些数据比如选项和设置等等,为了在设备关机或掉电情况下数据不丢失,我们会讲数据保存在EEPROM里面。STM32系列MCU已经被广泛的使用,可是该芯片内没有EEPROM。如果外接一片EEPRM会增加硬件成本。 本文将以STM32F0为例介绍一种使用片内Flash替代EEPROM的方法,仅供大家参考。 STM32F0芯片内部Flash页尺寸为1k。 首先程序需要使用STMicroelectronics提供的标准外设库中的stm32f0xx_flash.h。如下: #include stm32f0xx_flash.h //定义常量 (以STM32F051R8为例) #define FLASH_PAGE_
[单片机]
ATMEGA16单片机I0端口的使用方法解析
一、ATMEGA16的I端口的使用:(只有一个实验,下面的部分每个小节可能有几个实验验证,你懂得) 一—(01)、)—使用4*4行列式按键开关的使用 I/O端口介绍: 直接一个图就哦了,因为根本没什么,就是控制寄存器(这里一定要注意,后面的ATmega16的引脚的功能都是控制寄存器来实现引脚或者器件的功能的,说白了,知道了寄存器,会用了寄存器,再来点51的基础,那这些东西真的就没什么了,AVR单片机很简单的) 我用的就是IAR和Pro te us 好了先给个图,这个是按照手机上的设计的你看了就懂了 别的就不费话了,一看图不就全明白了 然后就是今天的代码 其实相当的简单,和51的原理一样,然后就是控制引脚的输入输
[单片机]
ATMEGA16单片机I0<font color='red'>端口</font>的使用方法解析
浅谈C语言内存分区和STM32存储器分配
一、C语言内存分区 C语言内存分区示意图如下: 1. 栈区 栈区介绍 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自由性差,最大空间不大。 栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。 存放内容 临时创建的局部变量和const定义的局部变量存放在栈区。 函数调用和返回时,其入口参数和返回值存放在栈区。 2. 堆区 堆区介绍 堆区由程序员分配内存和释放。 堆区按内存地址由低到高方向生长,其大小由系统内存/虚拟内存上限决定,速度较
[单片机]
浅谈C语言内存分区和STM32<font color='red'>存储</font>器分配
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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