• 已绑定课时
  • 工程师可点评
  • 需修改

【作业要求】 1、请画出1s跑马灯的时序图? 2、请使用Verilog设计一个翻转灯:led隔1s翻转一次,led一开始亮两个灯,1s之后亮另外两个灯(写出详细的代码)? 【我的做法】1、不知道用啥画 2、在原来代码的基础上将初态改为0011,移位改为2 module W_LED( input clk , input rst , output reg [3:0] led ); parameter …

童乐天
68 0
需修改
需修改
教务评价

需修改

3342599708 · 2026-08-05

1、画时序图可以用软件visio或者是TimeGen3,没有软件也可以用笔在本子上画出来,再拍照上传。 2、计数器从0开始计数,只能计到最大值-1. led应该想左移动两位,而不是1位。代码中写的向左移动1位。

1、请画出1s跑马灯的时序图?

2、请使用Verilog设计一个翻转灯:led隔1s翻转一次,led一开始亮两个灯,1s之后亮另外两个灯(写出详细的代码)?

2、在原来代码的基础上将初态改为0011,移位改为2

module W_LED(
input            clk       ,
input            rst       ,
output reg [3:0] led
);
parameter                TIME_1s = 26'd50_000_000;
reg        [25:0]        cnt                    ;
/////1s计时器
always@(posedge clk)
if(!rst)
cnt <= 0;
else
if(cnt < TIME_1s)
cnt <= cnt + 1;
else
cnt <= 0;
always@(posedge clk)
if(!rst)
led <= 4'b0011;    /////分支1:赋初值
else if(cnt == TIME_1s)    /////1s达到
begin
if(led == 4'b1100)
led <= 4'b0011;
else    /////led != 4'b1000
led <= led << 1;    /////led左移1位
end
else    /////1s没有记到
led <= led;    /////led保持
endmodule

学习上下文

产出状态

工程师已阅68 位工程师
教务需修改