采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储器和制约逻辑电路来进行PCB(印制电路板)板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。
随着电子设计自动化(EDA)技术的进展,基于可编程ASIC器件的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA技术为核心、的能在可编程ASIC器件上进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式。
如何使用EDA工具设计电子系统是人们普遍关心的问题。在EDA工具软件MAX+PLUSⅡ的支持下,本设计通过了编译、适配和软件仿真验证。最后用载入真实实验系统的硬件实验证明了它的正确性。
硬件设计
为了简化讨论,本文只研究在单个8×8LED发光二极管点阵上滚动显示多汉字信息的问题。
图1给出的就是一个使用美国ALTERA公司10K系列FPGA设计的可支持滚动显示多汉字信息的通用硬件电路。
在图中,标准JTAG接口与PC机并口相连,用于下载设计数据至FPGA中;LED点阵的data线由FPGA的I/O线串300Ω限流电阻后驱动,而sw线直接由FPGA的I/O线驱动。LED点阵采用扫描式工作方式,控制sw线的循环扫描信号为低电平有效,显示数据data为高电平有效。
由于ALTERA的10K10LC84-4芯片内部有足够的RAM资源,所以本设计没有采用外部RAM。
另外,图中的配置EPROM为可选件,只有当要求汉字滚动显示器脱机运行时才需要采用。
滚动显示多汉字信息的原理
为在8×8LED发光二极管点阵上显示汉字,首先要把汉字表示成为如图2所示的8×8像素点图。
在图2中,data0~data7分别为按列抽取依序排列的汉字像素信息,均具有8位字长。
然后,依次对多汉字抽取像素信息,并按序排队存放于ROM之中,便可得到一个待显示数据序列。进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在8×8LED发光二极管点阵上滚动显示多汉字信息的目的。图3给出的就是实现滚动显示多汉字信息的原理示意图。
由图3可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:
addr=n+m(1)
显然,n的取值范围应为0~N,并由它控制汉字显示的滚动速度;m的取值范围应为0~7,并由它决定LED点阵的列开关sw的扫描速度。因此,控制n扫遍全部待显示数据的时间,可调节汉字信息的滚动速度;改变m的重复扫描周期,可改善在LED点阵上显示完整汉字信息的稳定性。
另外还需指出,由于式(1)的运算要靠硬件实现,故地址指针addr的模应取为N,而且为实现全部汉字信息滚过LED点阵,必须在数据N前补充8个空数据字节。
根据图3给出的显示原理,我们可以构造出它所对应的硬件实现结构如图4所示。
根据图4示出的原理,我们设计了描述FPGA内核硬件功能的VHDL语言程序。本设计使用了ALTERA公司的MAX+PLUSⅡPLD研发工具中的参数化模型库,并采取了结构化的描述方式。
下面就是我们设计的VHDL程序:
显示数据文件的加方法
在VHDL设计中,ROM单元的初始化数据要由显示数据文件data.hex提供,而且该文件的数据存放要符合IntelHEX格式。由于从汉字直接抽取的显示数据为二进制代码,故不能直接用于生成data.hex文件,因此需要借助其它EDA工具来帮助加工data.hex文件。下面就给出加工显示数据文件data.hex的具体步骤:
1、对多汉字抽取像素信息,形成按序排列的待显示数据序列;
2、使用河洛公司的万用编程器ALL03或ALL07的应用软件,将待显示数据加工成为BIN格式的二进制数据文件data.bin;
3、使用万利公司的单片机仿真器软件,将二进制数据文件data.bin转换成为IntelHEX格式的显示数据文件data.hex。
当然,我们也可以使用单片机仿真器的应用软件来直接加工显示数据文件data.hex,但是这需要对具有二进制代码的显示数据进行软件编程,因此不如上述方法简洁。
实验验证
为了验证设计的正确性,我们使用EDA工具软件MAX+PLUSⅡ中的模拟仿真器,对通过编译的汉字滚动显示器的VHDL设计进行了模拟仿真验证,实验证明汉字滚动和显示扫描情况均正常,也就是说FPGA的内核硬件工作良好,可以正确地实现设计功能。
此外,汉字滚动显示器的VHDL软核设计也被载入了根据图1建造的真实硬件系统之中。对硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。
因此,我们可以得出下列结论:
1、EDA技术不仅能降低数字电子系统设计的复杂性和难度,而且也能显著地增强设计的灵活性;
2、多种EDA工具的联合应用,有助于提高设计效率和缩短设计周期;
3、利用EDA工具获取的软件模拟仿真结果具有同传统硬件实验数据一样的重要性和可信度。