【无标题】

流水灯

module led(
input sys_clk,
input sys_rst_n,
output [3:0]led_out,
output led_flag
);

reg [6:0]cnt; //cnt触发器的位数为log_2 max_cnt;
reg [3:0]q;
parameter max_cnt = 99;

always @(posedge sys_clk or negedge sys_rst_n ) begin
if(!sys_rst_n)begin
q <= 4’b1110;end
else if(cnt == max_cnt)begin
q <= {q[2:0],q[3]};
end
else begin
q <= q;end
end

always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)begin
cnt <= 25’d0;end
else if(cnt == max_cnt)begin
cnt<= 25’d0;end
else begin
cnt <= cnt + 1’b1;
end
end
assign led_out = q;
assign led_flag = (cnt==max_cnt)? 1’b1:1’b0;

endmodule

testbench

include "led.v" timescale 1ns / 1ps

module tb_led;

// led Parameters
parameter PERIOD = 20;

// led Inputs
reg sys_clk = 0 ;
reg sys_rst_n = 0 ;

// led Outputs
wire [3:0] led_out ;

initial
begin
forever #(PERIOD/2) sys_clk=~sys_clk;
end

initial
begin
#(PERIOD*2) sys_rst_n = 1;
end

led u_led (
.sys_clk ( sys_clk ),
.sys_rst_n ( sys_rst_n ),

.led_out                 ( led_out    [3:0] ),
.led_flag                ( led_flag         )

);

initial
begin
$dumpfile(“led.vcd”);
$dumpvars;
#10000
$finish;
end

endmodule

仿真波形

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值