数据输出电路的优化基理方案解析
扫描二维码
随时随地手机看文章
1 引 言
在LED大屏幕等显示系统对数据输出速度的要求日益提高的背景下,当前对控制设备进行改造的过程中,首选的办法是更换更高速率的微处理器,而对硬件电路的挖潜往往容易被忽视。
在实践运用中,建议应先考虑在原有的系统上进行硬件电路改造,如仍不能满足显示要求,可再考虑更换高速率微处理器及用FPGA/ CPLD 器件进行输出电路替代处理的方案。本文以LED 大屏幕控制电路为例,提出了一种在硬件电路改造上提高显示数据输出速度的实现办法。
2 数据输出电路的优化基理
由LED大屏幕的显示原理可知,一个数据显示在LED大屏幕的过程分为:从存储器中读出数据与送入到LED板中显示两个步骤。这一过程需要产生如下控制信号:数据地址送入存储器,存储器读信号,锁存器开通及LED单元板中的行信号、HC595 的SCK 移位、RCK 锁存、E 使能信号等。这些必需信号的产生增加了数据显示过程的时间。如果能够复用其中的信号,势必减少这一过程的延时。在LED显示系统中,常把显示数据按行存储到外部ROM/ RAM 中的办法即是一例。该办法设定存储器的高位并接到L ED的行控制线上,数据按行储存,送入数据地址后,按行读出数据,并同时开通了行控制信号。下面的信号复用方案也是类似的原理。
图1 信号复用示例
在考查读外存的MOVX 命令时发现:执行该命令时可产生读信号(RD # ),即读外存时不但不需要另外去产生读信号(RD # ),而且还可以将此信号供给锁存器74HC273 及LED板上的移位信号SCK使用。这里要注意的是:在数据读出后,SCK信号才送出,所以RD # 信号不可直接做SCK信号使用,必须做延时处理(最小延时必须要略大于RAM 的读写时间tRC与74HC273 的数据锁存延时tTL H之和)。
而当连续读出一块存储器数据时,需要通过程序产生新的地址赋值给数据口, 而这些地址都是顺序变化的。基于这一特点,设计采用计数器电路用来保存读数据时的初始地址,利用外部供给的脉冲,只要对计数器的保存地址进行顺序增加,即可将数据连续读出。
单片机ALE 脚或是利用串行口工作方式也会产生一定频率的脉冲,但没有SPI 方式下产生的脉冲频率高,且这两种方式的使用均有一定的限制,而启动SPI 方式比较方便。串行外围接口(Serial Perip heral Interface , SPI) 总线系统是一种同步串行外设接口,是Motorola 首先在其MC68HCXX 系列处理器上定义的。SPI 系统有4 个I/ O 脚,它们是串行时钟SPSCK、主机输入/从机输出数据线MISO、主机输出/ 从机输入数据线MOSI 和低位有效的从机选择数据线SS.SP2SCK用于同步数据从MOSI 输入和MISO 的输出传送。通过对SPI 控制寄存器SPCR 的设置,SPSCK的频率最高可以达到振荡器频率( fOSC )的1/ 4。
因为SPI 模式可方便产生出较高频率脉冲的优点,即采用SPSCK作为计数器的脉冲,利用计数器对存储器产生连续变化的地址,实现对数据的高速读出。并且SPSCK 信号经过变换与延时处理,可同时供给LED做SCK移位信号使用。
图2 SPI 在读取存储器的运用
3 SPI 运用的实现过程
从上文可以得到这样的启示:在LED控制电路的设计中,可借助于SPI 模式读取数据,即增加一块SPI 模式的FLASH 存储器,一方面可以保存重要文档,另一方面可以利用SPSCK 产生的信号,通过计数器电路实现对存储器高速读数据,并且复用此信号产生屏幕显示的控制信号。在给定了输出数据的首地址并启动SPI 后,此方式使数据的读出到屏幕显示这一过程自动进行,同一信号源的全硬件方式大大减少了以往分别产生各控制信号方式时的衔接延时。图3 为SPI 在LED大屏幕控制电路中的运用示例。
[!--empirenews.page--]
图3 SPI 模式下的L ED 大屏幕控制电路图
级联计数器的个数根据RAM 的容量大小,即地址线的数目来确定。微处理器通过驱动器连接SPI 串行存储器, 驱动器可以选择7407 或7417 的型号。RM_MODE 用来区别不同的读写操作方式。当RM_MODE = 1 时,是普通读写外部存储器的方式,当RM_MODE = 0 时,就可以让主机作为主器件,串行FLASH 存储器作为从器件,两者以SPI 方式进行通信,利用此时产生的SPSCK信号对存储器进行高速读数据操作。同时SPSCK信号经过变换与延时处理,可以供给LED做SCK 移位信号用。在计数脉冲的输入端,可以使用跳线做加、减方式的选择处理。当脉冲接于计数器UP 端时, 为加计数方式, 接于DOWN 时,为减计数方式。图3 也可扩展并接多组计数器,多组RAM.
减计数器方式的运用大大增强了数据输出的灵活性。在LED大屏幕显示中,加、减计数器配合使用,可以使相同一块控制卡输出数据的显示长度提高一倍。当使用减计数器方式时,为了与使用加方式时LED大屏幕上显示的图文一致,必须对与减计数器连接的RAM 的数据进行上、下半屏交换处理,并且在输出时要在程序中改变数据的起始点,给出的行控制信号(RCK) 也应做倒序处理(见图4).
图4 加、减法模式下的数据组织与显示
4 本方式使用时的注意事项
本方式使用时要注意计数器及RAM 芯片的读写速度必须与SPSCK 相匹配。SPI 方式的速率比较高,电路各器件读取速度越高,数据出错的几率就会越小。
此外还有其他一些原因也会引起读数据时的错误。如软件编写不当导致数据地址超出RAM空间,电路设计未重视计数器高速工作时发热对周边器件与布线带来的影响等。
使用SPSCK 信号读取外部储存器时,同样会产生SPI 主、从模式下的溢出错误,即连续传输多个数据时, 后一个数据覆盖了前一个数据而产生的错误。这种错误产生的原因是从器件的传输标志SPIF从相对于主器件的传输标志SPIF主有一定的滞后,在主器件连续发送数据时,会导致从器件的传输标志和主器件下一个数据的传输标志相重叠,而利用SPSCK 触发计数器使地址递加读取数据,第一个收到的数据也会被覆盖。
[!--empirenews.page--]
这种传输错误可以用软、硬件的方法进行改进。在本文的设计中,后期在软件编写上采用了如下解决方法:先启动SPI 模式,再进入计数器读并行RAM ,浪费一个时序。或是在RAM 中存入数据时,全部存到它后一位的地址单元上,再用SPI 方式产生的脉冲去读RAM ,就可得到正确的数据。
理论上本文方式可使显示数据的输出速度高至fOSC的1/ 4 ,但实际运用时却受到了RAM、锁存器等输出电路器件的参数限制。SPSCK 的速率设定要根据所选择RAM 的参数确定,即要满足RAM 最小的地址有效时间与数据有效时间的要求。
图5 主、从SPIF 时序下的数据溢出错误
5 结 语
在LED大屏幕的显示过程中,读取数据频繁,且随着显示面积的增加与色彩变化的丰富,对数据输出速度的要求越来越高。普通方式读取一个字节的RAM 数据,至少需要两个机器周期,即24 T (时钟周期)。而使用SPI 方式,数据的输出速度由SPSCK(最高可设置为f OSC的1/ 4) 决定,而普通方式读RAM 的速度只有1/ 24 f OSC ,即在SPI 模式下,此LED大屏幕电路的数据输出速度最大可提高6 倍。通过此方法对输出电路进行改造,可极大地使原有控制系统满足数据高速输出的要求。本文给出的例子虽是基于LED大屏幕应用的,但在LCD 或是其他对数据有高速输出要求的系统中,同样具有借鉴运用意义。