gowin GW1N4 LED

基于上已篇文章基础上增加LED闪烁的功能

 《gowin GW1N4 OSC IP 使用》 gowin GW1N4 OSC IP 使用-CSDN博客 https://blog.csdn.net/wzy15965343032/article/details/136172184?spm=1001.2014.3001.5502

代码:

module osc_test(
    input rst_n,
    output test_clk,
    output reg led,
    output led2
);
parameter BLINK_PERIOD = 12_500_000;  // LED 翻转周期

//parameter BLINK_PERIOD = 0.5 / (1 / 50,000,000) = 25,000,000
//parameter BLINK_PERIOD = 0.5 / (1 / 25,000,000) = 12,500,000

reg [31:0] counter;  // 32 bits counter for BLINK_PERIOD cycles
wire clkin;

Gowin_OSC my_osc (
    .oscout(clkin)
);

assign test_clk = clkin;
assign led2 = led;

always @(posedge clkin or negedge rst_n) begin
    if (~rst_n) begin  // Reset counter and LED on negative edge of rst_n
        counter <= 0;
        led <= 0;
    end 
        else 
        begin
        if (counter == BLINK_PERIOD) begin  // Toggle LED every BLINK_PERIOD cycles
            led <= ~led;
            counter <= 0;  // Reset counter
        end else begin
            counter <= counter + 1;  // Increment counter
        end
    end
end

endmodule

这段代码定义了一个名为 osc_test 的模块,其中包含了一个时钟信号 clkin,一个复位信号 rst_n,以及两个输出信号 ledled2

  • parameter BLINK_PERIOD = 12_500_000; 定义了 LED 翻转的周期,即 LED 每隔 BLINK_PERIOD 个时钟周期翻转一次。
  • reg [31:0] counter; 定义了一个 32 位的寄存器 counter,用于计数时钟周期。
  • wire clkin; 定义了一个时钟信号输入端口 clkin
  • Gowin_OSC my_osc (.oscout(clkin)); 实例化了一个名为 my_oscGowin_OSC 模块,将其输出端口 oscout 连接到 clkin
  • assign test_clk = clkin;clkin 赋值给 test_clk,用于输出测试时钟信号。
  • assign led2 = led;led 的状态赋值给 led2,使得 led2led 同步。

接下来是一个 always 块,用于控制 LED 的翻转。在时钟信号 clkin 的上升沿或复位信号 rst_n 的下降沿触发时执行。如果复位信号 rst_n 为低电平,则将 counterled 复位为 0;否则,当 counter 达到 BLINK_PERIOD 时,翻转 led 并将 counter 复位为 0,否则递增 counter

最后,注释部分是被注释掉的之前的代码,可能是之前版本的 LED 翻转实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值