FPGA偶数分频器的设计详解(特别适合小白) 首先,我们了解一下什么是周期,以我的女朋友——右手为例,我的右手握住一根长条形的物体,在竖直方向做上下运动,完成一次上下运动的时间叫做一个周期,如下图:请自行补脑,提前备好营养快线和湿巾纸。。。不好意思我跑题了 周期的倒数叫做频率,那么,频率怎么理解呢? 还是以我的女朋友为例,她完成一次上下运动的时间越短,频率也就越快,说得通俗一点就是:频率就是手速,手速越快=频率越快=秒啥啥啥的。
再回到主题,硬件上,有个东西专门用来产生固定的频率,叫做晶振,比如,FPGA的外接晶振是50M时钟,也就是说,板子上电后,这个晶振就会持续的给FPGA提供一个50M的时钟频率,怎么理解呢?
就好比,电路板是人体,FPGA是大脑,他有感觉,晶振是右手 板子上电后,右手就给身体的某个部位做上下运动,手速有多快呢?50MHz,什么概念呢?1秒钟做50000000次,1秒钟做五千万次,你说你的大脑,也就是FPGA,能不爽吗?
现在,我觉得身体吃不消了,感觉身体被掏空,50MHz的手速太快,我受不了,我想让右手把手速放慢1倍,也就是2分频
2分频的意思是:原来我撸2次的时间,现在只撸1次
以此类推,8分频的意思是:原来我撸8次的时间,现在只撸1次
好,原理搞清楚了,再来看看时钟波形是啥样? 两个上升沿之间的波形也就是一个周期,
现在,我们来设计一个4分频的分频电路,参考时钟50MHz,
很显然,对于4分频而言,我需要一个计数器,对50M时钟的每个上升沿进行计数,当计数到4时,50M时钟已经走完了4个周期,而此时,我的目标4分频时钟刚好走完一个周期,
对于10分频而言,我需要一个计数器,对50M时钟的每个上升沿进行计数,当计数到10时,50M时钟已经走完了10个周期,而此时,我的目标10分频时钟刚好走完一个周期,
看verilog代码:
module DVI(
input clk,
input rst,
output wire DVI_4,
output wire DVI_10
);
reg [2:0] r_dvi4; //4分频时钟计数器
reg [3:0] r_dvi10; //10分频时钟计数器
reg dvi4;
reg dvi10;
assign DVI_4=dvi4;
assign DVI_10=dvi10;
///
//4分频时钟产生模块
always @(posedge clk) begin
if(!rst) begin
r_dvi4
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?