新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CPLD和嵌入式系统的LED点阵显示

基于CPLD和嵌入式系统的LED点阵显示

作者: 时间:2011-08-01 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/150414.htm

2 软件设计和编写
2.1 主控电路芯片设计与调试

主控电路的功能是读取双口RAM中的数据并通过译码逻辑电路将数据屏的特定位置上。因为只用到单片机的一部分功能,所以使用芯片将MCU中的总线读控制器及其外围译码逻辑电路集成在一起。如若采用传统方案,就必须采用多片芯片;而使用后,只用一片芯片就可以实现所要的功能。总线读控制器是产生时序的电路,需根据内存的读时序进行设计,只有保证正确的时序才能读出数据。双口RAM的读写时序和普通RAM的读写时序基本相同,如图5所示。 CE(芯片使能)是片选信号,在片选信号从高变低之前必须输出地址信号给双口RAM,然后再用读信号去控制OE(输出使能)端,在OE信号由高变低后,数据总线上的数据有效,即可控制读出数据并译码输出。

复杂的时序电路用硬件描述语言描述,一般是用有限状态机来描述。有限状态机是时序电路通用模型,任何时序电路都可以表示成有限状态机。从本质上讲,有限状态机是由寄存器与组合逻辑构成的时序电路,各个状态之间的转移总是在时钟的触发下进行的。针对图5所示的读时序,可列出如图6所示的各种状态的转换图。用Verilog HDL语言描述时可用带有always语句的case语句建模,状态信息存储在寄存器中,case语句的多个分支包含每个状态的行为。在这里将读时序分为S0、S1、S2、S3四个状态,其工作方式如下:

步骤S0在RAM的片选CE 使能之前输出地址;

步骤S1选中RAM,输出读信号;

步骤S2行计数器输出,读出RAM的数据并反相输出;

步骤S3片选禁止,读禁止,地址计数器加1。

译码输出逻辑电路主要是提取地址计数器的计数输出。在某个状态下,行地址计数器输出低5位数据,位译码输出高4位数据并译码输出16个位选信号。

时序电路中一般留有复位信号,当复位端为1时,地址计数器复零,地址输出复零,片选。读控制信号置1,使状态机回到状态S0。

2.2 行译码CPLD芯片设计
行译码器的功能较主控电路来讲相对简单,它是将主控电路的行计数器输出的6位二进制数据译成32行的行选通信号,去控制行驱动管驱动行输出。这是一个纯组合逻辑电路,使用Verilog HDL 语言描述的always语句和case 多分支语句即可实现此功能。

2.3 单片机的C程序设计
在本中,单片机的功能主要是负责通信与数据处理。通信即通过串口接收来自PC机的数据并存储在EEPROM中;数据处理即从EEPROM中取出数据并根据要的效果进行软件处理,再存放在双口RAM中。在本中,因单片机及外围电路只负责通信和数据处理,对实时性要求不高,因此用前后台进行软件设计就能达到要求。本系统采用操作系统RTX51TNY(KEIL C平台自带的免费的微实时内核)。软件主要由PROCESS.C和SERIAL.C两个档组成。PROCESS.C包含三个任务:任务0,初始化;任务1,静态显示;任务2,左移显示。 SERIAL.C是串口中断程序$静态显示的算法较简单,只要将EEPROM中的字模数据存放到双口RAM中的特定位置即可。左移显示则需要将字模数据每个字节左移,然后存放在双口RAM的特定位置。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭