一、题目要求
题目:每隔10ms,让LED灯的一个8状态循环执行一次(每个状态的变化时间值小一点,方便测试,比如设置为10us)
二、实验步骤
1.底层代码
刚开始我直接想到的方法是规定了每个状态的开始时间,加上题目要求最好状态间的时间间隔最好为10us,所以正好可以设置准确的计数时间,其实和流水灯差不多。
代码如下:
`timescale 1ns / 1ps
module led8(
input clk,
input rst_n,
input [7:0] user,
output reg led
);
reg [31:0] cnt;
parameter counter = 500;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt <= 1'b0;
end
else if(cnt==500_000-1)begin
cnt <= 1'b0;
end
else begin
cnt <= cnt + 1'b1;
end
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
led <= 1'b0;
end
else if(cnt==counter-1)begin
led <= user[7];
end
else if(cnt==2*counter-1)begin
led <= user[6];
end
else if(cnt==3*counter<