微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 将50MHZ分频到19.2KHZ

将50MHZ分频到19.2KHZ

时间:10-02 整理:3721RD 点击:
请各位大虾帮忙,如何将50MHZ的时钟分频到19.2KHZ啊?小弟先谢谢了!

怎么没人回啊,求求各位大虾了,我要弄不出来,老板得杀了我啊,

把方法告诉你吧:50M/19.2K除下来是个小数,你可以这样干.假如是a.b那么你就把他看成m次a分频,和n次a+1次分频,如果你要占空比必须是50%的话,那么把最靠近a的两个偶数作为分频系数,至于这两次分频个分多少次能凑够19.2你列个方程解个。然后把这两种分频,打匀。从宏观上,你能得到1秒钟19.2K的频率了。

小数分频吧

绝对可以,仿真通过:
module Devided(_50MHzOut,_19_2KHzOut);
input _50MHzOut;
output _19_2KHzOut;
reg _19_2KHzOut;
reg[12:0] Q;
always@(posedge _50MHzOut)
if (Q==13'd1301)
begin
Q<=13'd0;_19_2KHzOut<=~_19_2KHzOut;end
else Q<=Q+1'b1;
endmodule

楼上程序加上tb
`timescale 1ns/1ns
module Devided(_50MHzOut,_19_2KHzOut);
input _50MHzOut;
output _19_2KHzOut;
reg _19_2KHzOut=1'b0;
reg[12:0] Q=13'b0;
always@(posedge _50MHzOut)
         if (Q==13'd1301)
                begin
                        Q<=13'd0;
        _19_2KHzOut<=~_19_2KHzOut;
                end
   else Q<=Q+1'b1;
endmodule

`timescale 1ns/1ns
module test;
reg _50MHzOut;
wire _19_2KHzOut;
initial
        begin
                 _50MHzOut = 1'd0;
                  # 100   $stop;
        end
always
          #10 _50MHzOut = ~_50MHzOut ;       
Devided Devided_1(._50MHzOut(_50MHzOut),._19_2KHzOut(_19_2KHzOut));
endmodule

楼上说的对

..............

除不尽的啊,billwaston 的方法不错

按billwaston的方法,50M/19.2K=2604.17   采用2604/2605分频  
累加数为100-17=83  程序如下:
//2604分频电路
module fd2604(clkin, clkout);
input clkin;
output clkout;
reg clkout;
reg[12:0] q;
always@(posedge[/email] clkin)
begin
begin
if(q<2603)
q<=q+1;
else
q<=0;
end
clkout<=q[11];
end
endmodule
//2605分频
module fd2605(clkin, clkout);
input clkin;
output clkout;
reg clkout;
reg[12:0] q;
always@(posedge[/email] clkin)
begin
begin
if(q<2604)
q<=q+1;
else
q<=0;
end
clkout<=q[11];
end
endmodule
//2604/2605分频
module fd26045(clkin,clkout);
input clkin;
output clkout;
reg clkout;
reg[7:0] a;
wire clkout1,clkout2;
fd2604 fd26041(clkin,clkout1);
fd2605 fd26051(clkin,clkout2);
always@(posedge clkin[/email])
begin
if(a<100)
begin
clkout<=clkout2;
a<=a+8'd83;
end
else
begin
clkout<=clkout1;
a<=a-8'd100;
end
end
endmodule

上面always语句不是email改一下

always@(posedge clkin)

可以看看《Verilog程序设计与实践》里面的分频比交错法,不过不能得到标准的占空比1:1的方波

11# zhouliang
直接用计数的方法是可以实现分频功能的 为什么这样写?
有什么优点吗?

有小数 ,怎么分频嘛

太好了

路过,顶一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top