文章目录
一.实验任务
1.闪烁数码管
在HEX0上连续循环地显示数字0~9,每秒刷新一次显 示。使用计数器产生1 s的时间间隔,这个计数器的时钟由 DE2-115平台上的50
MHz时钟提供。注意:这个设计中只允 许使用DE2-115平台上的50 MHz时钟,而不允许使用其他时
钟,并保证所有的触发器都直接使用这个50 MHz时钟。
2.循环显示的“HELLO”
设计一个电路实现在HEX7~HEX0上循环显示 “HELLO”,使所有字母从右向左移动,每秒移动一次, 移动模式如表6.5所示。
二.闪烁数码管
该实验使用了1个数码管HEX0,每一秒更换数字显示0~9,采用平台的50MHZ时钟。
①设计1s计时器模块
time_count.v
module time_count(
input wire clk, //时钟,50MHZ
input wire rst_n, //复位信号,下降沿有效,negative
output wire sec_1//1s输出一个脉冲信号
);
parameter MAX_NUM = 26'd49_999_999;//记最大数1s,50_000_000次
reg [25:0] cnt_1;//计数寄存器
reg sec_1_r;
//1s计时器
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt_1 <= 26'd0;
end
else if(cnt_1 == MAX_NUM)begin
cnt_1 <= 26'd0;
end
else begin
cnt_1 <= cnt_1 + 1'd1;
end
end
//1s脉冲信号
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
sec_1_r <= 1'b0;
end
else if(cnt_1 == MAX_NUM)begin
sec_1_r <= 1'b1;
end
else begin
sec_1_r <= 1'b0;
end
end
assign sec_1 = sec_1_r