工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->用可编程门阵列(FPGA)设计制作的滚动字符控制器

用可编程门阵列(FPGA)设计制作的滚动字符控制器

作者:dolphin时间:2016-09-29

  一、系统工作原理
  
  字符控制器降生要显示字符的代码存放单元的地址,然后从存储器中读出字符代码放在寄存器中并作为LED点阵的行信息输出,当行信息和对应的列选信号完全同步输出时便能正确无误地显示一个汉字或其他字符代码。下面以单片16×16点阵LED显示屏来说明其工作原理。下图是系统设计原理框图,整个系统主要由分频器、地址产生及列扫描电路等构成。


  
  二、控制器的设计
  
  控制器的作用是实现字符代码的读取和输出,并且控制字符的滚动方向与速度的调节。其设计框图如右图所示。控制器实现系统功能的原理:计数器1、计数器2和加法器构成地址产生电路。其中,计数器1和计数器2是不同频率、不同进制的计数器。计数器1是速率f=1Hz、步进为2的N进制计数器(N是所占用的存储单元的数目);计数器2是速率f=lkHz、步进为2的兰十二进制计数器(因为存储一列LED信息需要2个存储单元,故为了完整显示一列的信息计数器的步进必须为2)。加法器将计数器1和计数器2送来的数据相加,产生一个地址值,这个地址指向要读取的字符代码的存放单元。另外,计数器l和计数器2的配合使用还可以实现字符的滚动显示,其实现过程见下图。


  
  单元地址值=计数器l的计数值+计数器2的计数值。因此,只要两个计数器中的任何一个计数器的计1的计数值看作是基地址,而将计数器2的计数值看作是变址,这样则有:单元地址=基地址+变址。假如计数器1的当前计数值是2,即基地址指针指向第三个存储单元,由于它的计数速率为1Hz(1s发生一次变化J,而计数器2的计数速率为lkHz(ls计数1000次)。当计数器1的计数值指向第三个单元时,计数器2以1kHz的速率进行三十二进制计数,使第3个存储单元至第33个单元存储单元的单元地址依次循环选中,从而使第3个存储单元至第33个单元存储单元依次循环打开。同时在时钟2的低电平有效期间读取第偶数个单元中的代码,高电平有效期间读取第奇数个单元中的代码并存放在寄存器中。在时钟2下降沿到来的时刻将其输出(输出时是16位的)。另外,在时钟2的下降沿时刻进行一次歹U扫描,这样便可以在16×16点阵上将读取的代码信息完整地输出显示。当计数器l的计数值发生加2变化时,基址指针便指向第5个存储单元,前面丽个单元中存放的字符代码不再读取,即前面两个单元中的代码不再从显示屏上输出,而计数器2仍进行三十二进制计数,使地址指针的指向在第5个存储单元和第35个存储单元之间跳转,并将新的代码读出送至LED的行上。这样,使人看LED点阵显示屏时感觉字符有从左到右滚动的感觉。
  
  由于人的视觉惰性是40ms,只要使轮流点亮LED点阵列的时间间隔小于或等于40ms.便不会让人有字符在闪烁的感觉。本设计选取lOOOHz(T=lOms)的速率来满足人眼的惰性时间要求。在连接电路时,应将时钟2直接与E2PROM的AO相连接。如果改变计数器1的计数频率就可以改变字符在LED显示屏上的滚动速度。为了增强滚动效果,在开始的前2个存储单元中存放OOH,还要在每32个存储单元的后2个单元存储OOH,这样,当一个字符显示完而下一个字符要显示时便可以很清楚地分辨出来。

  列扫描电路实际上也是一个循环计数器。为了减小控制器的管脚资源开支,我们可以在外围电路中加一个4线~16线译码器。如果系统较小的话,可不加译码器。下面是用VHDL语言在MAXPLUSⅡ上编写并通过调试的字符读取、列扫描模块的程序。

  在MAXPLUSⅡ中将各个功能模块设计完成之后,可以用图形形式没计其顶层文件。上图是该系统的顶层文件。
  
  将顶层文件编译仿真之后便可以得到它的仿真时序图。下图是系统仿真时序图。从下图中可以看出,列扫描和行信息的输出是严格同步的。



评论

技术专区