这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 关于奇数分频的实现问题

共5条 1/1 1 跳转至

关于奇数分频的实现问题

菜鸟
2011-04-19 14:26:27     打赏
以前曾经遇到过几次要求实现3分频的问题,不知道提出这些问题的人是出于什么目的。反正还是比较有意思的,个人感觉就是对于触发器的使用熟练与否的问题。第一次遇到时由于比较突然,先是考虑用触发器作一个,想了想思路没太理顺,后来便想这用verilog描述一个。原理其实很简单,就是用电平触发计数,电平一发生改变 就触发计数器计数一次,如此一个,计3个电平状态,输出翻转一次,刚好6个电平状态是3个时钟周期,输出一个完整时钟周期,就实现了3分频。后来在ISE里边如此描述:
p { margin-bottom: 0.21cm; }

module dv3( output clk_out,

input clk_in,

input reset

);

 

reg [1:0] cnt;

reg clk_out_temp;

 

always @ (clk_in or reset)

begin

if(reset == 1)

begin

cnt <= 0;

clk_out_temp <= 0;

end

else if(cnt >= 2'b10)

begin

cnt <= 0;

clk_out_temp <= ~clk_out_temp;

end

else

cnt <= cnt + 1;

end

 

assign clk_out = clk_out_temp;

 

endmodule



编译综合以后查看了一下RTL网表,发现不太友好:


没看见时钟到底怎么使用的,而且内部实现太没全弄明白,由于没有FPGA板子,没验证,仅仅是做了一下前仿,发现是可以实现3分频的,仿真波形如下:


后来一次偶然机会作一个电路内部的移位寄存器处理,发现实际是可以用移位寄存器来实现3分频的,整理了一下思路,得到如下电路:




这个可以不用工具仿真,手工画以下时序图就可以得出结果啦。

后来在网上搜了一下3分频电路,发现也有用JK触发器实现的,当然,更多的是用verilog或者VHDL描述的一团糟的逻辑混乱代码,也不知道能否实现,鄙人无甚兴趣研究

其实这个思路是实现奇数分频的一个好思路,其他的如5、7、9.。。。分频,增加移位寄存器到长度即可同样实现。原理就是将时钟移位分频成占空比非50%的目标频率信号,然后用两路移相信号拼出所要的目标信号!



关键词: 关于     奇数     实现     问题    

菜鸟
2011-04-19 14:27:19     打赏
2楼
:-),发现图片处理的不是太完美

工程师
2011-04-20 13:25:32     打赏
3楼
你可以試著使用一些 DFFE 
去設計出奇數分頻的方式!

菜鸟
2012-06-06 12:01:22     打赏
4楼
always@(clk_in)在这里是不可以综合的,仿真是没问题的,若要综合的话分别用POSEDGE和negedge来建立两个模块!

工程师
2012-06-06 15:57:52     打赏
5楼
嗯,仿真是一回事,可综合是另一回事。我也经常遇到前面仿真好好的,后面综合不了。呵呵

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]