Verilog设计流水灯(分频)

本文介绍如何使用Verilog设计一个1HZ的流水灯,基于100MHz时钟分频,通过计数器实现。内容包括设计思路、代码实现以及仿真验证技巧。
摘要由CSDN通过智能技术生成

题目描述

在开发板中,有一个内置的时钟周期,为100MHZ,我们需要使用这样一个时钟信号来设计一个1HZ的流水灯(使用8个led灯),也就是一秒钟有一个灯是亮起的,依次从左到右。
另外还有一个低有效的复位使能端、一个同步保持使能(有效时流水灯亮起状况不变)

分析

首先,1HZ和100MHZ的时钟周期需要进行转换,然后利用新的时钟信号进行led灯信号变更即可。

分频部分
思路是这样的,既然是100MHZ,也就是10-8s的时钟周期,那么我们就需要进行计数,当计数到108时,才是一个新的时钟信号的一个周期;但是我们知道时钟信号是会有一个高低电平翻转的,也就是说当计数到108的一半时,需要有一个信号翻转。
代码:

`timescale 1ns / 1ps
module divider(
    input rst_n_i,					//一个低有效的复位使能
    input clk_i,
    output reg clk_o
    );
    reg [28:0]cnt = 'b0;
always@(posedge clk_i or negedge rst_n_i) begin
    if(rst_n_i == 1'b0)				//复位使能有效
        cnt <= 'b0;
    else if(cnt == 9999_9999)		//一个周期
        cnt <= 'b000
  • 5
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值