最近刚上手数字电路实验,很多地方都不懂,实验课要求做出数码管静态显示计数器。自己写了一段代码也没报错,但是上basys3板子就行不通。
总体思路如下:
1: 计数模块
module cnt(
input clk1,
output reg[3:0] cnt
);
reg [27:0] times;
initial times = 28'b0;
always@(posedge clk1)
begin
if(times == 5000000)
begin
times = 28'b0;
cnt = cnt + 4'b1;
end
else
times = times + 28'b1;
end
endmodule
#####2: 数码管显示模块
module seg(
input clk2,
input [3:0] cnt,
output[6:0] seg
);
reg [6:0] r_seg;
assign seg = r_seg;
always @(*)
begin
case(cnt)
4'b0000: r_seg = 7'b1111110;
4'b0001: r_seg = 7'b0000110;
4'b0010: r_seg = 7'b1101101;
4'b0011: r_seg = 7'b1111001;
4'b0100: r_seg = 7'b0110011;
4'b0101: r_seg = 7'b1011011;
4'b0110: r_seg = 7'b1011111;
4'b0111: r_seg = 7'b1110000;
4'b1000: r_seg = 7'b1111111;
4'b1001: r_seg = 7'b1111011;
4'b1010: r_seg = 7'b1110111;
4'b1011: r_seg = 7'b0011111;
4'b1100: r_seg = 7'b1001110;
4'b1101: r_seg = 7'b0111101;
4'b1110: r_seg = 7'b1001111;
4'b1111: r_seg = 7'b1000111;
default: r_seg = 7'b1111111;
endcase
end
endmodule
3:主调用模块
module top(
input clk_in1,
output [6:0] seg_display
);
wire r_cnt;
wire clk1_cnt;
wire clk2_seg;
clk_wiz_0 instance_name
(
// Clock out ports
.clk_out1(clk1_cnt), // output clk_out1
.clk_out2(clk2_seg), // output clk_out2
.clk_in1(clk_in1)
); // input clk_in1
cnt instance_cnt(
.cnt(r_cnt),
.clk1(clk1_cnt)
);
seg instance_seg(
.seg(seg_display),
.cnt(r_cnt),
.clk2(clk2_seg)
);
endmodule
现在主要由以下问题:
我上板之后发现有跳动,但一直都是 E(且七个段颜色不一)
如果要加使能信号,是4个数码管中只有一个 在跳动,那我应该把它放在主文件中当作输入吗?还是在seg这个module中呢?
如果能被解答就太感谢了 !因为被学校强制要求上这个课我也很无奈,自己啥也不会 ,还在学习中。。
PS 标签实在是在不到verilog,好尴尬。。。随便贴了一个,见谅。。