FPGA学习篇之分频器
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学习篇之分频器相关推荐
- FPGA学习之串口篇
FPGA学习之串口篇 文章目录 FPGA学习之串口篇 前言 二.UART发送代码 三.UART接收代码 三. 总结 前言 UART(Universal Asynchronous Receiver/ ...
- 奋斗的小孩系列 FPGA学习altera系列: FPGA学习altera 系列 第二十一篇 数码管设计
奋斗的小孩系列 FPGA学习altera系列: FPGA学习altera 系列 第二十一篇 数码管设计 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是 ...
- Cyclone V SoC FPGA学习之路第二章:硬件篇
Cyclone V SoC FPGA学习之路第二章:硬件篇(内部资源) 前言 上一章了解了<cycloneV device datasheet>,其中数据手册里重点介绍了电源要求,时序参数 ...
- 奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计
奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术 ...
- 奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED
奋斗的小孩系列 FPGA学习altera系列: 第十篇 按键控制LED 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江 ...
- 奋斗的小孩系列 FPGA学习altera系列: 第七篇 添加激励及功能仿真操作
奋斗的小孩系列 FPGA学习altera系列: 第七篇 添加激励及功能仿真操作 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPG ...
- 学习篇--FPGA学习网站
1. OPENCORES.ORG这里提供非常多,非常好的PLD了内核,8051内核就可以在里面找到.进入后,选择project或者由 http//www.opencores.org/browse.c ...
- FPGA学习altera 系列 第十七篇 自动售货机设计
今天给大侠带来"FPGA学习系列 altera"系列,持续更新.此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19+ ...
- FPGA学习---FPGA练习与解答
FPGA练习与解答 练习题目如下,可以练习一下,后面是我做的,欢迎指出错误~ 最后面是可能有用的一些总结,这篇文章可能有用 FPGA学习-数电及verilog知识补充 第一阶段 1.设计4位全加器. ...
最新文章
- C基础(31——35)
- Multiple Object Tracking:多目标跟踪综述
- 思维风暴 codeforces (1060A) Phone Numbers
- 前端学习(3031):vue+element今日头条管理-暂时当前登录用户信息
- mcem r语言代码_R语言阈值自回归模型(TAR)代码示例
- JVM02----垃圾收集上(堆)
- 探讨一下常见支付系统的对外接口
- java8 lamada表达式
- 当relative遇上z-index,半透明度不阻断事件捕获
- DAY3 购物车程序
- C++11常用特性的使用经验总结-概述及目录
- 汇编程序:找出最小值
- SSM9==SSM项目启动过程、xml配置SSM项目及需要的3大配置文件、原生SSM未前后端分离的电商网站项目(角色管理员、购买者)只使用了最基础的注解,Model传参
- 小学计算机面试说课稿,小学信息技术面试说课稿(模板)
- Verilog设计流水灯(一)
- 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
- HR-Saas(二):登录模块
- python加速度算位移_基于Labview的加速度两次积分求位移
- 每月生活费上万元,这届大学生花钱有多狠?
- 第2章-系统控制原理 -> 经典控制理论
热门文章
- 【python爬虫】HIMCM2016 FedEx联邦快递的一日达地图
- python表白神器_python教程之抖音同款表白神器——Python让你的七夕更完美!
- java常用命令javac、javap、jps、jstack
- 运营入门——超级运营术
- 连续arq协议的利用率_KCP 协议与源码分析
- Java程序员:教科书般的排查与分析过程,带你碾压面试官!
- 续写墨仓式传奇 专访爱普生市场负责人
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----alias(自定义别名)篇
- 企业实操任务- 正式环境Redis服务启用密码认知
- 描点 原笔迹 web 解析 显示 技术