【个人向6】Verilog基础手撕:一篇搞定所有分频电路

文章简介

个人学习总结6 - Verilog基础手撕:一篇搞定所有分频电路
个人向!!!
重点出现在招聘机考题与面试手撕中,个人尽力总结,有点基础就可以看!
软件:Quartus_II。
参考:清华大学出版社 - 数字IC设计入门
参考:数字IC手撕代码-分频器(任意小数分频) - 哔哩哔哩
此文章包括:偶数分频(50%、非50%);奇数分频(非50%、50%、特殊);特殊小数分频。
个人NTU在读,欢迎指正


Verilog基础语法、基础模块与仿真可见前面文章 :)


目录

文章简介

目录

1. 偶数分频

1.1. 时钟6分频,50%占空

1.2. 时钟6分频,2/6占空

2. 奇数分频

2.1. 时钟5分频,2/5占空

2.2. 时钟5分频,50%占空

拓展2.2. 奇数N分频50%占空

 2.3. 奇数特殊分频,3/10占空

3.小数17/3分频,3/17占空


1. 偶数分频

1.1. 时钟6分频,50%占空

- 占空比一般是指高电平占总时钟周期的比例,1/4就是1000。
方法:偶数50%占空很简单,计数到一半翻转输出时钟就行。012是0,345是1。

module TestModule (
    input clk_in, rst_n,  // 输入时钟、异步复位
    output reg clk_out   // 输出分频时钟信号,分频时钟信号更慢
);
    reg [1:0] counter;   // 2位计数器,用于计数到2

    always @(posedge clk_in or negedge rst_n) 
	begin
	    if (!rst_n) 
		begin
			counter <= 0;
            clk_out <= 0;
        end 
		else 
		begin
			if (counter == 2)  //012到2翻转输出时钟
			begin
				counter <= 0;  //计数回到0
				clk_out <= !clk_out;  //输出时钟翻转
            end 
			else   //小于2时
            counter <= counter + 1;  //counter++
		end
	end
endmodule

1.2. 时钟6分频,2/6占空

方法:加内部计数器,01是1,2345是0。
模块化:先看复位,在管输出。

module TestModule (
    input clk_in, rst_n,  // 输入时钟、异步复位
    output reg clk_out   // 输出分频时钟信号,分频时钟信号更慢
);
    reg [2:0] counter;   // 3位计数器,用于计数到5

    always @(posedge clk_in or negedge rst_n) 
	begin
		if (!rst_n) 
		begin
			counter <= 0;
            clk_out <= 0;
        end 
		else 
		begin
			//先看复位
			if (counter == 5) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值