|
各位大神,帮我看看,我这个程序数码管显示异常。我只要数码管位选亮1、2个。但是它亮了6个。并且数码管段选全亮。
q0、q1是我另外一个模块的数值。
代码如下:
module schaimi2 (clk,rst,sem_seg,sm_bit,q0,q1,cnt_scan);
input clk,rst;
output[15:0] cnt_scan;
input[3:0] q0,q1;
output[7:0] sem_seg; //数码管段选择输出
output[7:0] sm_bit; //数码管位选择输出
reg[7:0] sem_seg; //数码管段选择输出寄存器
reg[7:0] sm_bit; //数码管位选择输出寄存器
reg[15:0] cnt_scan;//扫描频率计数器
reg[3:0] 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[13])
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 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|