打印

写了一个TLC549的采集显示程序,可是显示很怪异

[复制链接]
1945|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
andyany|  楼主 | 2010-9-25 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上电后,用于显示采样数据的8个led灯先全亮,然后最高位灭,下来全灭。
程序是这样的——
module amyad(clk,din,clk_ad,cs,dout);
    input clk;
    input din;
    output     clk_ad;
    output reg cs;
    output reg [7:0]dout;
   
    reg [5:0]cnt_fre;
    reg clk1M;
    reg attach;
    reg [4:0]cnt_ad;
    reg [7:0]temp;
   
    parameter period_fre = 6'd49;
    parameter period_ad = 5'd27;
   
    always@(negedge clk)
    if(cnt_fre != period_fre)  begin
                cnt_fre <= cnt_fre + 6'd1;
                clk1M   <= 1'b0;                     end
    else begin  cnt_fre <= 5'd0;
                clk1M   <= 1'b1;                      end
   
    always@(negedge clk)
    if(clk1M)begin
       if(cnt_ad != period_ad)  
             cnt_ad <= cnt_ad + 5'd1;
       else     cnt_ad <= 5'd0;                  end
   
    always@(negedge clk)
    if(clk1M)begin
       if(cnt_ad >= 5'd20 && cnt_ad <= 5'd27)
          attach <= 1'b1;
       else  attach <= 1'b0;                                end
   
    assign clk_ad = (attach && clk1M);
      
    always@(negedge clk)
    if(clk1M)
    case(cnt_ad)
        5'd0:   cs <= 1'b1;
        5'd1:   dout <= temp;
        5'd18:   cs <= 1'b0;
        5'd20:   temp[7] <= din;
        5'd21:   temp[6] <= din;
        5'd22:   temp[5] <= din;
        5'd23:   temp[4] <= din;
        5'd24:   temp[3] <= din;
        5'd25:   temp[2] <= din;
        5'd26:   temp[1] <= din;
        5'd27:   temp[0] <= din;
   endcase
endmodule
高手们,指点一下吧!谢谢!

相关帖子

沙发
crazyforu| | 2010-10-11 23:09 | 只看该作者
期望啥输出啊??
case的状态不完全,不好。
么有复位信号吗??
这个clk1M如果是1M,太快了吧。而且每次为1只有一个clk时间

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

664

帖子

3

粉丝