wolfdong7 发表于 2010-1-3 09:48:59

求助,verilog编程数码管动态扫描。

各位大神,帮我看看,我这个程序数码管显示异常。我只要数码管位选亮1、2个。但是它亮了6个。并且数码管段选全亮。
q0、q1是我另外一个模块的数值。
代码如下:
module schaimi2 (clk,rst,sem_seg,sm_bit,q0,q1,cnt_scan);
input clk,rst;
output cnt_scan;
input q0,q1;
output sem_seg; //数码管段选择输出
output sm_bit; //数码管位选择输出
reg sem_seg;//数码管段选择输出寄存器
reg sm_bit; //数码管位选择输出寄存器
reg cnt_scan;//扫描频率计数器
reg dataout_buf;


always@(posedge clk or negedge rst)
begin
   if(!rst) begin
          cnt_scan<=0;

      end
   else begin
          cnt_scan<=cnt_scan+1'b1;
          end
end

always @(cnt_scan)
begin
    case(cnt_scan)
          1'b0 :
            sm_bit = 8'b1111_1110;
          1'b1 :
            sm_bit = 8'b1111_1101;
         
                        
      endcase
end

always@(sm_bit)
begin
   case(sm_bit)
         8'b1111_1110:
            dataout_buf=q0;
         8'b1111_1101:
            dataout_buf=q1;
      
      endcase
end



always@(dataout_buf)
begin
   case(dataout_buf)
            4'h0: sem_seg = 8'hc0;      // "0"
            4'h1 : sem_seg = 8'hf9;   // "1"
            4'h2 : sem_seg = 8'ha4;   // "2"
            4'h3 : sem_seg = 8'hb0;   // "3"
            4'h4 : sem_seg = 8'h99;   // "4"
            4'h5 : sem_seg = 8'h92;   // "5"
            4'h6 : sem_seg = 8'h82;   // "6"
            4'h7 : sem_seg = 8'hf8;   // "7"
            4'h8 : sem_seg = 8'h80;   // "8"
            4'h9 : sem_seg = 8'h90;   // "9"
            4'ha : sem_seg = 8'h88;   // "a"
            4'hb : sem_seg = 8'h83;   // "b"
            4'hc : sem_seg = 8'hc6;   // "c"
            4'hd : sem_seg = 8'ha1;   // "d"
            4'he : sem_seg = 8'h86;   // "e"
            4'hf : sem_seg = 8'h8e;   // "f"
      endcase
end

endmodule

wolfdong7 发表于 2010-1-3 10:31:09

解决了。真晕。管脚编译错误。。。
页: [1]
查看完整版本: 求助,verilog编程数码管动态扫描。