请高手指教--怎么实现占空比1:1得三分频电路呢?
请高手指教--怎么实现占空比1:1得三分频电路呢?
到www.21ic.com.cn的bbs上面收一下
这种频率不可能是触发器输出的,没实际意义。
PLL
这种问题很可笑其实
在实际的电路中其实还是尽量的简单,不要又是正沿,又是负沿的,这样对后面的DFT什么的都不方便,对时序分析也不好。
在QUARTUS 中实现
仅仅只需调用LPM模块中的PLL模块;
如果你英文基础好的话,应该很简单的;
我以前做过,模拟过,是能实现的,而且可以变相,变频。
回复 #1 gonewith00 的帖子
这种paper很多的,去snug找。
用verilog来实现
module div3(clr,clk,clkout);
input clr,clk;
output clkout;
reg clkreg1,clkreg2;
parameter n=5;
reg[n:0] counter1,counter2;
assign clkout=clkreg1||clkreg2;
always @(posedge clk)
if(clr==1) begin clkreg1=0;counter1=0;end
else begin if(counter1==n-1) begin counter1=0;clkreg1=~clkreg1;end
else if(counter1==(n-1)/2) begin counter1=counter1+1;clkreg1=~clkreg1;end
else begin counter1=counter1+1;end
end
always @(negedge clk)
if(clr==1) begin clkreg2=0;counter2=0;end
else begin if(counter2==n-1) begin counter2=0;clkreg2=~clkreg2;end
else if(counter2==(n-1)/2) begin counter2=counter2+1;clkreg2=~clkreg2;end
else begin counter2=counter2+1;end
end
endmodule
多谢,我也需要,嘿嘿
如果用hdl做的话,必定会上下沿混用,不好实现
前面给的这一段程序貌似不对哈!仿出来是六分频的!
奇数分频,一般不是用FF来实现,可以用FPGA内部的一些时钟资源来实现,如xilinx的DCM
上述程序,个人觉得是5分频,但是占空比还是不对,(没仿过哦)
counter = (n-1)/2,个人觉得应改为counter = (n/2-1),占空比应为50%
或者
输出时钟由两者输出相与也可得到50%的时钟,只是相比于输入时钟,时钟沿没有对齐(未考虑延迟情况下)
上述结果应该不对,
yrr的代码应该是正确的
Always @(posedge clk)
If (clr == 1) counter <= 0;
Else If (counter == n-1) counter <=0;
Else counter <= counter + 1;
Always @(posedge clk)
If (clr == 1) clk_reg1 <= 0;
Else if (counter == n-1) clk_reg1 <= ~clk_reg1;
Else if (counter == (n-1)/2) clk_reg1 <= ~clk_reg1;
Else clk_reg1 <= clk_reg1;
Always @(negedge clk)
If (clr == 1) clk_reg2 <= 0;
Else clk_reg2 <= clk_reg1;
Clk_out = clk_reg1 || clk_reg2;
此code如何?存在什么问题,帮忙指点
虽然以前弄过 不过不知道这个有没有实际意义?
对时钟的上升沿和下降沿分别进行计数,在中间判别高低电平的转化即可
对!这个题用来脑筋急转弯可以!
真正电路一般不会这样用!
LZ是指ASIC中有纯数字实现?
正负各1.5T,所以用一个负沿的DFF就可以解决,
但是有很多细节需要注意,
不然后端比较麻烦
个人想法,
assign clk_n = ~clk;
Always @(posdege clk_n)
If (clr == 1) clk_reg2 <= 0;
Else clk_reg2 <= clk_reg1;
这样就只用了上升沿。
