「Verilog学习笔记」任意奇数倍时钟分频

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

复制代码
`timescale 1ns/1ns

module clk_divider
    #(parameter dividor = 5)
( 	input clk_in,
	input rst_n,
	output clk_out
);

	parameter CNT_WIDTH = $clog2(dividor - 1) ; 
	reg flag1, flag2 ; 
	reg [CNT_WIDTH:0] cnt ; 

	always @ (posedge clk_in or negedge rst_n) 
		if (!rst_n) cnt <= 0 ; 
		else cnt <= cnt == dividor - 1 ? 0 : cnt + 1 ; 
	
	always @ (posedge clk_in or negedge rst_n) 
		if (!rst_n) flag1 <= 0 ; 
		else if (cnt == (dividor - 1) >> 1) flag1 <= ~flag1 ; 
		else if (cnt == dividor - 1) flag1 <= ~flag1 ; 
		else flag1 <= flag1 ; 
	
	always @ (negedge clk_in or negedge rst_n) 
		if (!rst_n) flag2 <= 0 ; 
		else if (cnt == (dividor - 1) >> 1) flag2 <= ~flag2 ; 
		else if (cnt == dividor - 1) flag2 <= ~flag2 ; 
		else flag2 <= flag2 ; 

	assign clk_out = flag1 || flag2 ;

endmodule
相关推荐
糖炒栗子032623 分钟前
learn-claude-code 简要记录
笔记·python
lucky_syq26 分钟前
专栏目录与学习路线 | 48 篇正文导览
人工智能·学习
小心亦新36 分钟前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
red_redemption1 小时前
自由学习记录(217)
学习
LYS_06181 小时前
Python学习(3)(数据类型小尾巴,条件控制,循环语句)
学习
迪丽热爱1 小时前
每日英语-12
学习
PC2005-cloud1 小时前
Elasticsearch 学习笔记:集群实战(3 控制节点 + 3 数据节点部署与故障转移)
笔记·学习·elasticsearch
世人万千丶1 小时前
物品借还闭环:鸿蒙物品清单种子数据与清单效果
学习·华为·harmonyos·鸿蒙
我命由我123451 小时前
商圈六大配套
学习·职场和发展·求职招聘·职场发展·产品经理·学习方法·零售
云水初2 小时前
【agent篇】RAG 知识库构建避坑指南
开发语言·python·学习·agent·rag