前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >奇分频与偶分频

奇分频与偶分频

作者头像
根究FPGA
发布2020-06-29 15:32:24
1.3K0
发布2020-06-29 15:32:24
举报
文章被收录于专栏:根究FPGA

开头,感谢各位大哥帮忙转发!最近涨粉很快,也感谢各位关注的朋友!

看到了一些interesting的题,和大家分享一下,如果大家有什么额外的见解欢迎大家公众号后台留言!

题目:

设计一个占空比1:1的三分频电路

怎么做暂且不讲,容我先念叨一下这类题的原理!

首先要明确的是:几分频就是输出的分频时钟中包含几个系统时钟。

其次分频有两种,一种是偶分频,另一种是奇分频,我们分开来讲。

一、偶分频

分频在FPGA通过计数器实现,偶分频计数只需计数到N/2-1,然后进行时钟翻转,同时将计数器清零,即可得到(偶数)N分频,很简单就不赘述了。

二、奇分频(占空比50%)

简单的非50%占空比的就不说了,免得浪费大家时间。

实现奇分频的方法有很多种,很常用的方法为相位异或法,该方法的总结:对于实现50%奇数N分频电路,首先进行进行上升沿进行模长N计数,计数选定到某一个值进行输出时钟翻转,然后再经过(N-1)/2(重点!一定是(N-1)/2)再次进行翻转得到一个占空比非50%奇数N分频时钟;同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同,进行输出时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转会生成占空比非50%的奇数N分频时钟,两个占空比非50%的奇数N分频时钟相或运算,得到占空比50%的N分频时钟。

回到正题,设计一个三分频,占空比0.5

代码:

代码语言:javascript
复制
module tfp(
input clk,
input rst_n,
output reg clk0,clk1,
output clk_o
);
reg [1:0]cnt0;
reg [1:0]cnt1;

//占空比1/3的脉冲 001
always@(posedge clk or negedge rst_n)
if(~rst_n)
begin
 cnt0<=0;
 clk0<=1'b0;
end 
else if(cnt0==2'b10)
begin
 clk0<=clk0;
 cnt0<=2'b00;
end 
else begin
 cnt0<=cnt0+1'b1;
 clk0<=~clk0;
end 
endmodule

仿真结果:

升级:设计一个5分频,占空比0.5

代码:

代码语言:javascript
复制
/*
  5分频
*/
module fivefp(
input clk,
input rst_n,
output clko
);
reg [2:0]cnt0;
reg [2:0]cnt1;
reg clk0;
reg clk1;
always@(posedge clk or negedge rst_n)
if(~rst_n)
begin
 clk0<=1'b0;
 cnt0<=3'd0;
end 
else if(cnt0==3'b100)
begin
 clk0<=clk0;
 cnt0<=3'd0;
end 
else if(cnt0==3'b000)  //0时候翻转一次,下一次翻转是(5-1/2=2)系统时钟之后,也就是cnt=2时
begin
 clk0<=~clk0; 
 cnt0<=cnt0+1'b1;
end 
else if(cnt0==3'd2)
begin
 clk0<=~clk0; 
 cnt0<=cnt0+1'b1;
end 
else begin
 clk0<=clk0;
 cnt0<=cnt0+1'b1;
end

always@(negedge clk or negedge rst_n)
if(~rst_n)
begin
 cnt1<=3'b000;
 clk1<=1'b0;
end 
else if(cnt1==0)
begin
 cnt1<=cnt1+1'b1;
 clk1<=~clk1;
end 
else if(cnt1==3'd2)
begin
 cnt1<=cnt1+1'b1;
 clk1<=~clk1;
end 
else if(cnt1==3'd4)
begin
 cnt1<=0;
 clk1<=clk1;
end 
else begin
 cnt1<=cnt1+1'b1;
 clk1<=clk1;
end 

assign clko=clk0|clk1;

endmodule

仿真结果:

~~~~感谢阅读~~~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 设计一个占空比1:1的三分频电路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档