FPGA学习之二:使多个LED以不同的频率闪烁

一、设计目标

使8个led灯分别按照0.1s、0.2s、0.3s、...、0.8s的闪烁周期闪烁

二、设计方法

调用单个led闪烁模块,重定义参数

三、led_run8.v代码

其中led_flash.v代码在上一篇文章已经讲述,故不赘述。

module led_run8(
   clk,
   reset_n,
   led
    );
    parameter WIDTH=8;
    input clk;
    input reset_n;
    output [WIDTH-1:0]led;
	//例化调用模块
   led_flash2  led_flash2_inst0(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[0])
        );
    defparam led_flash2_inst0.MCNT=2499999;
	
    led_flash2  led_flash2_inst1(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[1])
        );
     defparam led_flash2_inst1.MCNT=4999999;
    
    led_flash2  led_flash2_inst2(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[2])
        );
     defparam led_flash2_inst2.MCNT=7499999;
    
    led_flash2  led_flash2_inst3(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[3])
        );
    defparam led_flash2_inst3.MCNT=9999999;
	
    led_flash2  led_flash2_inst4(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[4])
        );
     defparam led_flash2_inst4.MCNT=12499999;
    
    led_flash2  led_flash2_inst5(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[5])
        );
     defparam led_flash2_inst5.MCNT=14999999;
    
    led_flash2  led_flash2_inst6(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[6])
        );
     defparam led_flash2_inst6.MCNT=17499999;
    
    led_flash2  led_flash2_inst7(
   .reset_n(reset_n),
   .clk(clk),
   .led(led[7])
        );
     defparam led_flash2_inst7.MCNT=19999999;
    
endmodule

四、led_run8_tb.v代码

`timescale 1ns / 1ns
module led_run8_tb;
reg clk;
reg reset_n;
wire [7:0]led;
led_run8 led_run8(
   .clk(clk),
   .reset_n(reset_n),
   .led(led)
    );

initial clk = 1;    //定义初始时钟信号
	always #10 clk = ~clk;
	initial begin
	   reset_n = 0;
	   #201;
	   reset_n = 1;
	   #2000000000;
	   $stop;
       end
endmodule

五、仿真波形

 从波形可以看出,led各个翻转周期均与设计一致,故设计完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值