代码编译正确,但是不能按照设计显示,求大神指教

2020-02-06 12:27发布

module led_dt ( rst_n,clkin,
                dataout,en
                );

input rst_n,clkin;


output[7:0] dataout;
output[3:0] en;

//------------------------------------扫描频率
reg[14:0] cnt_scan;


always @ (posedge clkin or negedge rst_n)
if(!rst_n)cnt_scan<=15'b0;
else cnt_scan<=cnt_scan+1'b1;


reg[3:0] en;
always @ (cnt_scan)
begin
  case(cnt_scan[14:13])
     2'b00: en<=4'b1000;        //显示第一个数码管
          2'b01: en<=4'b0100;        //显示第二个数码管
          2'b10: en<=4'b0010;        //显示第三个数码管
          2'b11: en<=4'b0001;        //显示第四个数码管
          default:en<=4'b1000;   //显示第一个数码管
          endcase
end

//------------------------------------输出显示的数值设置       
reg[3:0] databuff;            //显示输入值
reg[7:0] dataout_r;

         
always @ (databuff)
begin
case(databuff)
4'b0000:                        //显示0
     dataout_r<=8'b0000_0011;
4'b0001:                        //显示1
     dataout_r<=8'b1001_1111;
4'b0010:                        //显示2
     dataout_r<=8'b010_01011;
4'b0011:                        //显示3
     dataout_r<=8'b0000_1101;
4'b0100:                        //显示4
     dataout_r<=8'b1001_1001;
4'b0101:                        //显示5
     dataout_r<=8'b0100_1001;
4'b0110:                        //显示6
     dataout_r<=8'b0100_0001;
4'b0111:                        //显示7
     dataout_r<=8'b0001_1111;
4'b1000:                        //显示8
     dataout_r<=8'b0000_0001;
4'b1001:                        //显示9
     dataout_r<=8'b0000_1001;
4'b1010:                        //显示A
     dataout_r<=8'b0001_0000;
4'b1011:                        //显示B
     dataout_r<=8'b0000_0000;
4'b1100:                        //显示C
     dataout_r<=8'b0111_0000;
4'b1101:                        //显示D
     dataout_r<=8'b0000_0010;
4'b1110:                        //显示E
     dataout_r<=8'b0110_0000;
4'b1111:                        //显示F
     dataout_r<=8'b0111_0000;
default:dataout_r<=8'b0111_0000;

endcase
end


//输入需要显示的数值
always @ (en)
begin
case(en)
4'b1000:
        databuff<=3;
4'b0100:
        databuff<=3;
4'b0010:
        databuff<=3;
4'b0001:
        databuff<=3;
default:databuff<=5;
endcase
end

wire[7:0] dataout;
assign  dataout=dataout_r;
endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
z894811350
1楼-- · 2020-02-06 14:14
always @ (databuff)
这个databuff没有变啊,你应该用always@(*)或者always@(posedge clkin)
你的代码都用一些计数器来控制块,我真没这么用过,感觉对于同步方面应该不会太好。
你的扫面时间可以长一点,用ms来扫描。

一周热门 更多>