FPGA学习篇之分频器

文章目录

  • FPGA学习篇之分频器
  • 前言
  • 一、偶数分频
  • 二、奇数分频
  • 总结

前言

  分频器是数字电路中最常用的基本电路之一,目的是对输入时钟进行分频,输出任何低于输入时钟的频率。在FPGA设计中,可以采用锁相环来获得任何占空比、相位可调的时钟信号。在代码编写中,我们可以通过计数器来对时钟进行简单的分频。

一、偶数分频

  采用最大计数长度位N的计数器,将最高位作为输出,则可以对输入频率进行2N分频。

module divider #(parameter cfactor = 4)(input clk_in,input rst_n,output clk_out
);reg [7:0] cnt;  // 最大支持256分频reg   clk_loc;assign clk_out = (cfactor == 1) ? clk_in : clk_loc ;
always@(posedge clk_in or negedge rst_n)if(!rst_n)cnt <= 'h0;else if(cnt < cfactor - 1)cnt <= cnt + 1'b1;elsecnt <= 'h0;always@(posedge clk_in or negedge rst_n)if(!rst_n)clk_loc <= 1'b1;else if(cnt == cfactor/2 -1)clk_loc <= 1'b0;else if(cnt == cfactor -1)     clk_loc <= 1'b1;endmodule

二、奇数分频

  上面的代码如果进行奇数分频,会出现占空比不是1:1的情况,在代码中生成两个占空比不为1:1的时钟,再将它们相与,便会得到一个占空比位1:1的奇数分频时钟。

module divider_odd #(parameter cfactor = 5)(input clk_in,input rst_n,output clk_out
);reg [7:0] cnt;  // 最大支持256分频reg       clk1;reg       clk2;assign clk_out =  clk1 & clk2;always@(posedge clk_in or negedge rst_n)if(!rst_n)cnt <= 'h0;else if(cnt < cfactor - 1)cnt <= cnt + 1'b1;elsecnt <= 'h0;always@(posedge clk_in or negedge rst_n)if(!rst_n)clk1 <= 1'b1;else if(cnt == cfactor/2)clk1 <= 1'b0;else if(cnt == cfactor -1)       clk1 <= 1'b1;always@(negedge clk_in or negedge rst_n)if(!rst_n)clk2 <= 1'b1;else if(cnt == cfactor/2)clk2 <= 1'b0;else if(cnt == cfactor -1)        clk2 <= 1'b1;              endmodule

总结

  在FPGA设计中,由于分频过后的时钟没有经过全局时钟网络,所以在高速设计中直接使用计数分频后的时钟可能存在风险。为了避免风险,可以将输出时钟改为输出使能信号,让需要低频率时钟的部分仍然使用高频率时钟来触发,同时加入分频后产生的使能信号作为动作条件,这样可以增加设计的稳定性。

FPGA学习篇之分频器相关推荐

  1. FPGA学习之串口篇

    FPGA学习之串口篇 文章目录 FPGA学习之串口篇 前言 二.UART发送代码 三.UART接收代码 三. 总结 前言   UART(Universal Asynchronous Receiver/ ...

  2. 奋斗的小孩系列 FPGA学习altera系列: FPGA学习altera 系列 第二十一篇 数码管设计

    奋斗的小孩系列 FPGA学习altera系列: FPGA学习altera 系列 第二十一篇 数码管设计 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是 ...

  3. Cyclone V SoC FPGA学习之路第二章:硬件篇

    Cyclone V SoC FPGA学习之路第二章:硬件篇(内部资源) 前言 上一章了解了<cycloneV device datasheet>,其中数据手册里重点介绍了电源要求,时序参数 ...

  4. 奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计

    奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术 ...

  5. 奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED

    奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江 ...

  6. 奋斗的小孩系列 FPGA学习altera系列: 第七篇 添加激励及功能仿真操作

    奋斗的小孩系列 FPGA学习altera系列: 第七篇 添加激励及功能仿真操作 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPG ...

  7. 学习篇--FPGA学习网站

    1.  OPENCORES.ORG这里提供非常多,非常好的PLD了内核,8051内核就可以在里面找到.进入后,选择project或者由 http//www.opencores.org/browse.c ...

  8. FPGA学习altera 系列 第十七篇 自动售货机设计

    今天给大侠带来"FPGA学习系列 altera"系列,持续更新.此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19+ ...

  9. FPGA学习---FPGA练习与解答

    FPGA练习与解答 练习题目如下,可以练习一下,后面是我做的,欢迎指出错误~ 最后面是可能有用的一些总结,这篇文章可能有用 FPGA学习-数电及verilog知识补充 第一阶段 1.设计4位全加器. ...

最新文章

  1. C基础(31——35)
  2. Multiple Object Tracking:多目标跟踪综述
  3. 思维风暴 codeforces (1060A) Phone Numbers
  4. 前端学习(3031):vue+element今日头条管理-暂时当前登录用户信息
  5. mcem r语言代码_R语言阈值自回归模型(TAR)代码示例
  6. JVM02----垃圾收集上(堆)
  7. 探讨一下常见支付系统的对外接口
  8. java8 lamada表达式
  9. 当relative遇上z-index,半透明度不阻断事件捕获
  10. DAY3 购物车程序
  11. C++11常用特性的使用经验总结-概述及目录
  12. 汇编程序:找出最小值
  13. SSM9==SSM项目启动过程、xml配置SSM项目及需要的3大配置文件、原生SSM未前后端分离的电商网站项目(角色管理员、购买者)只使用了最基础的注解,Model传参
  14. 小学计算机面试说课稿,小学信息技术面试说课稿(模板)
  15. Verilog设计流水灯(一)
  16. 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
  17. HR-Saas(二):登录模块
  18. python加速度算位移_基于Labview的加速度两次积分求位移
  19. 每月生活费上万元,这届大学生花钱有多狠?
  20. 第2章-系统控制原理 -> 经典控制理论

热门文章

  1. 【python爬虫】HIMCM2016 FedEx联邦快递的一日达地图
  2. python表白神器_python教程之抖音同款表白神器——Python让你的七夕更完美!
  3. java常用命令javac、javap、jps、jstack
  4. 运营入门——超级运营术
  5. 连续arq协议的利用率_KCP 协议与源码分析
  6. Java程序员:教科书般的排查与分析过程,带你碾压面试官!
  7. 续写墨仓式传奇 专访爱普生市场负责人
  8. 全面分析RHCE7(红帽认证工程师)考试题目之 ----alias(自定义别名)篇
  9. 企业实操任务- 正式环境Redis服务启用密码认知
  10. 描点 原笔迹 web 解析 显示 技术