首页 > 其他分享 >13-分频器-奇分频

13-分频器-奇分频

时间:2023-05-27 10:34:38浏览次数:37  
标签:分频 分频器 clk 13 sys rst reg 时钟

1. 奇分频

实现将一个系统时钟进行 5 分频的奇数分频的功能。可以用于将高频的时钟降低为低频的时钟工作使用。

1.1 框图及波形

  • 在偶数分频方法中,波形绘制时,计数器只要计数到M/2-1,计数器清零;但是在奇数分频时,不能用这样的方式(不存在1.5、2.5个周期计数)奇数分频直接计数到M(计数的最大值)

五分频时钟,计数到四,输出信号可以在0-2的时候保持低电平,3-4保持高电平,此时采用的是上升沿采样,占空比不是50%

采用下降沿采样,相当于将上升沿采样的波形向左移动半个时钟周期,占空比也不是50%,不是我们想要的波形

将上面的波形进行或运算,可以得到五分频时钟,编写代码的时候,上升沿和下降沿采用的波形可以作为中间变量

1.2 RTL

module divider_five(
  input wire sys_clk,
  input wire sys_rst_n,
  
  output wire clk_out  
);

  reg [2:0] cnt;
  reg clk_1;
  reg clk_2;

  // 计数器变量赋值
  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      cnt <= 3'd0;
    else if(cnt == 3'd4)
      cnt <= 3'd0;
    else 
      cnt <= cnt + 3'd1;

  // clk_1变量赋值
  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      clk_1 <= 1'b0;
    else if(cnt == 3'd2)
      clk_1 <= 1'b1;
    else if(cnt == 3'd4)
      clk_1 <= 1'b0;
    else 
      clk_1 <= clk1;

  // clk_2变量赋值,时钟下降沿触发,需要修改敏感列表
  always@(negedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      clk_2 <= 1'b0;
    else if(cnt == 3'd2)
      clk_2 <= 1'b1;
    else if(cnt == 3'd4)
      clk_2 <= 1'b0;
    else 
      clk_2 <= clk1;

  // 输出信号
  assign clk_out = clk_1 | clk2;
endmodule
  • 创建quartus工程,添加代码,进行代码编译

1.3 Testbench

`timescale 1ns/1ns
module tb_divider_five();
  reg sys_clk;
  reg sys_rst_n;  

  wire [1:0] clk_out;

  // 初始化时钟和复位信号
  initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #20;
    sys_rst_n = 1'b1;
  end
    
  // 模拟时钟信号
  always #10 sys_clk = ~sys_clk;
  
  // 模块的实例化
  divider_six divider_five_inst(
    .sys_clk (sys_clk),
    .sys_rst_n (sys_rst_n),
    .clk_out (clk_out)
  );
endmodule
  • 添加仿真文件,进行仿真设置,进行仿真

1.4 优化(设置标志位)

  • 在计数器最大值减一之后产生一个周期脉冲然后计数器重新开始进行计数
module divider_five(
  input wire sys_clk,
  input wire sys_rst_n,
  output reg clk_flag
);
  
  reg [2:0] cnt;
  
  always @ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      cnt <= 3'd0;
    else if(cnt == 3'd4)
      cnt <= 3'd0;
    else
      cnt <= cnt + 3'd1;

  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      cnt_flag <= 1'b0;
    else if(cnt == 3'd3)
      cnt_flag <= 1'b1;
    else 
      cnt_flag <= 1'b0;
endmodule

`timescale 1ns/1ns
module tb_divider_five();
  reg sys_clk;
  reg sys_rst_n;  

  wire [2:0] clk_flag;

  // 初始化时钟和复位信号
  initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #20;
    sys_rst_n = 1'b1;
  end
    
  // 模拟时钟信号
  always #10 sys_clk = ~sys_clk;
  
  // 模块的实例化
  divider_six divider_six_inst(
    .sys_clk (sys_clk),
    .sys_rst_n (sys_rst_n),
    .clk_flag (clk_flag)
  );
endmodule

  • 用两个计数器,一个由输入时钟上升沿触发,一个由输入时钟下降沿触发,最后将两个计数器的输出相或,即可得到占空比为50%的方波波形。(尽量避免将分频后时钟用作module内的后级时钟输入,但可以用于其他module的时钟输入)
  • 若要实现N分频,只需在计数器计数到N-1(重新从0开始计数)时,输出分频标志即可。

标签:分频,分频器,clk,13,sys,rst,reg,时钟
From: https://www.cnblogs.com/Icer-newer/p/17433147.html

相关文章

  • BT137-ASEMI双向可控硅BT134参数、尺寸、规格
    编辑:llBT137-ASEMI双向可控硅BT134参数、尺寸、规格型号:BT137品牌:ASEMI封装:TO-220特性:可控硅正向电流:8A反向耐压:600V引脚数量:3芯片个数:1包装方式:3000pcs/盘浪涌电流:40A特点:双向可控硅工作温度:-40℃~150℃BT137应用:主要应用于调光、控温、马达控制BT137双向可控硅......
  • 1332. Remove Palindromic Subsequences刷题笔记
    容易陷入思维盲区,只有a和b的字符串,只会有2个或1个回文classSolution:defremovePalindromeSub(self,s:str)->int:return2-(s==s[::-1])......
  • 1342. Number of Steps to Reduce a Number to Zero刷题笔记
    easy题,按照逻辑写就行了classSolution:defnumberOfSteps(self,num:int)->int:step=0whilenum:ifnum%2==0:num=num/2else:num-=1step+=1returnste......
  • AtCoder Regular Contest 139 E Wazir
    洛谷传送门AtCoder传送门好题。这种题一般可以考虑,观察最优解的性质,对于性质计数。发现如果\(n,m\)均为偶数,可以放满。就是类似这样:#.#.#..#.#.##.#.#..#.#.#因此答案就是\(2\)。如果\(n,m\)有一个为偶数,不妨假设\(n\)为偶数。那么最优解形似:#.#...#..##..#......
  • 每日一练 | 网络工程师软考真题 Day13
    阅读以下说明,回答以下问题1至问题6。【说明】某公司的两个部门均采用Windows2003的NAT功能共享宽带连接访问Internet,其网络结构和相关参数如图2-1所示。ISP为该公司分配的公网IP地址段为202.117.12.32/29。【问题1】在Windows2003中, (1) 不能实现NAT功能。备选答案:A.终端效劳管......
  • PMBOK的132种工具
    一、数据收集技术,用于从各种渠道收集数据与信息,共有九种数据收集工具与技术。1.标杆对照:和别的比比。2.头脑风暴:一起想。3.核查表:比如全班学生的数理化成绩表,列为姓名,行为科目。4.核对单:Checklist。5.焦点小组:小组一起交流。6.访谈:一问一答。7.市场调查:各种渠道了解市场情况......
  • BT136-ASEMI代理长电原装双向可控硅BT136
    编辑:llBT136-ASEMI代理长电原装双向可控硅BT136型号:2P4M品牌:长电\CJ封装:TO-220正向电流:6A反向电压:800V引脚数量:3芯片个数:1芯片尺寸:漏电流:>10ua恢复时间: 浪涌电流:30A包装方式:盘装封装尺寸:如图特性:单向可控硅工作结温:-40℃~125℃BT136的电性参数:正向电流6A;反向电压800V......
  • BT136-ASEMI代理长电原装双向可控硅BT136
    编辑:llBT136-ASEMI代理长电原装双向可控硅BT136型号:2P4M品牌:长电\CJ封装:TO-220正向电流:6A反向电压:800V引脚数量:3芯片个数:1芯片尺寸:漏电流:>10ua恢复时间:浪涌电流:30A包装方式:盘装封装尺寸:如图特性:单向可控硅工作结温:-40℃~125℃BT136的电性参数:正向电流6A;反向电压8......
  • ABAP:CO11N,CO13保存前增强
    SE18:WORKORDER_CONFIRMMETHODif_ex_workorder_confirm~at_save.DATA:s_vornrTYPERANGEOFresb-vornr.DATA:lv_vornrLIKELINEOFs_vornr.DATA:lv_gmngaTYPEafru-gmnga,lv_mengeTYPEmseg-menge,lv_menge_s......
  • BT134-ASEMI代理长电原装双向可控硅BT134
    编辑:llBT134-ASEMI代理长电原装双向可控硅BT134型号:BT134品牌:长电\CJ封装:TO-126特性:可控硅正向电流:4A反向耐压:600V引脚数量:3芯片个数:1包装方式:3000pcs/盘浪涌电流:40A 特点:单向可控硅工作温度:-40℃~150℃BT134特征塑料中的玻璃钝化三端双向可控硅开关用于要求高双向瞬态和阻塞电压能......