下面给出LED显示屏体驱动时序信号对应的Verilog HDL程序代码:
    s3: begin
  sck=1'b0;
        sdr= SDA && color[0];
        sdb= SDC && color[1];
        OE=1'b1; CE=1'b1;
     state=s4;
     end
 s4: begin // 移位输出到LED显示屏
  sck = 1'b1;
  shcnt = shcnt +1'b1;
  if (shcnt = = 0)
    begin
     addr=addr+1'b1; //读完一个字节地址记数器加1 
     byte=byte+8'b1;
     if(byte= = nrow)// 如果读完一行数据
       begin
         oe1=1'b1;//关LED显示
   cs=1'b1;
   le=1'b0;//驱动芯片写入数据
   byte = 8'b0;
   state=s5;//读完一行数据则显示
       end
    else state=s1;
   end
   else state=s3; //当前字节移位输出
 end
 s5: begin
           sck=1'b0;
le=1'b0;
     counter=hcnt;
     OE=1'b1;
     CE=1'b0;
           if(addr = = nscreen)
               addr=0;
          oe1=1'b0;
     cs=1'b0; 
     state =s1;
       end

4系统测试及仿真
   系统的开发调试环境是:单片机部分在KeilC51下调试,CPLD部分在Maxplus10下调试。LED显示屏的扫描控制模块的Verilog HDL源程序编写完成后,在ALTERA公司Maxplus10可以先进行软件仿真,以观察各信号是否符合硬件电路所需的时序要求。图5为扫描模块 CLPD仿真结果,符合设计要求。通过JTAG接口下载到ATF1508AS后,系统工作正常。
5 结束语
       基于Verilog HDL实现的LED显示屏扫描控制模块,应用于我们开发LED大屏幕电子信息显示屏系统,简化了系统结构,提高性了性价比。该LED显示屏在实际应用中具有良好的显示效果,画面清晰、性能稳定,已经在学校的多个部门得到应用。