t30cou
terreg30hc
t38译码器计数器reg70data1数据寄存器reg30cou
ter38翻码器输出端regSEMRRWCregSDASDCreg130addroutaddraddr地址计数器reg30state状态寄存器reg20shc
t移位脉冲读数器regCEOEsdrsdbsckleoe1csreg80byteparameters0139d0s1139d1s2139d2s3139d3s4139d4s5139d5状态常量22访问双口RAM时序的产生
fIDT7007是具有32KB的双口RAM电路,与ATF1508AS的连接电路,其中:为片选信号,为读写控制信号,为输出使能信号,A0RA13R为右端口地址总线,D0RD7R为右端口数据总线,其右端口读写时序。我们采用有限状态机实现,其基本工作原理是:S0状态进行初始化,S1状态时ATF1508AS首先输出地址信号addrout,然后置相有效,S2状态读取双口RAM的数据,并存储到内容寄存器datai
中,从而完成双口RAM的读数据过程。下面给出ATF1508AS读取双口RAM数据的主要代码:alwaysposedgeclkbegi
每个时钟周期状态变化一次casestates0begi
初始化状态CE139b0IDT7007片选OE139b1IDT7007读选通le139b0oe1139b0cs139b0addr1439b0SEMR139b1IDT7007置1有RWC139b1写控制1hc
t439b0000cou
ter439b0000states1e
ds1begi
输出RAM地址CE139b0addroutaddr输出地址OE139b0SEMR139b1RWC139b1shc
t339b000states2e
ds2begi
读双口RAM数据oe1139b0data1datai
states3e
dhelliphellip显示扫描及LED驱动代码部分e
dcasee
d
23LED显示驱动时序信号的产生CPLD与LED点阵的驱动电路接口,其中:CS为38译码器片选信号;OE为BMI5026输出使能信号,控制LED点阵是否能被点亮;LE为驱动芯片数据锁存信号;sck为移位脉冲,将CPLD串行输出的红绿数据串行移入MBI5026(移位寄存器);AD为双38译码器构成的416译码器的数据输入,实现显示行选通控制;sdr为红数据信号线;sdb为绿数据信号线。其工作过程为:S3状态,sck脉冲置0,sdr和sdb分别输出一位数据;S4状态时,sck置1,红和绿数据分别移入相应移位寄存器BMI5026,若不足8位时,返回S3状态,若不足一行时,返回S1状态,读下一个字节,若完成一行数据移位过程,则转S5状态;S5状态时,置le为0,将BMI5026的缓冲寄存中一个显示行的点阵数据送输出寄存器,同时置cs1有效,控制第hc
t行的点阵显示,然后判断一屏内容是否显示完成,返回s1状态。图4为完整的有限状态机的状态图。下面给出LED显示屏体驱动时序信号对应的VerilogHDL程序代码:s3begi
sck139b0sdrSDAampr