CHANG 发表于 2010-6-28 00:37:03

fpga做频率计遇到的问题

我在作频率计时,碰到一个问题。如果CLK频率是1HZ,要用其控制一个输出EN和一个CLR,他们的频率是0.5HZ,
EN是在CLK 一个上升沿是低电平,下一个上升沿是高电平,以后依次类推
CLR在CLK第一个周期内下降沿由0'变成1,在第二个CLK周期内下降沿不变保持‘0',以后依此类推



没有思路


请各位指点一下,
谢谢了

encounter 发表于 2010-6-28 01:58:08

楼主说的是分频器吧,只是EN是上升沿触发的,CLR是下降沿触发的

CTT 发表于 2010-6-28 02:32:25

應該是除頻器&nbsp; &nbsp;我之前寫過類似的&nbsp;&nbsp;你參考看看&nbsp;&nbsp;共四個模組&nbsp;&nbsp;含testbench&nbsp;&nbsp;我的輸出是跟你一樣 互為除頻後反相&nbsp; &nbsp;已合成過&nbsp;&nbsp;完全ok<br>
我是用d正反器&nbsp;&nbsp;來做的 不知道跟您的要求符合嗎<br>
<br>
`timescale 1 us/1 ns<br>
module CLK_GEN (CLK_N, CLK_P, CLK, RESET_B);<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;output CLK_N;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;output CLK_P;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;input CLK;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;input RESET_B;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;CLK_DIV div0(.Q_OUT(Q_OUT), .CLK(CLK),&nbsp;&nbsp;.RESET_B(RESET_B));<br>
&nbsp;&nbsp;assign CLK_N = ~Q_OUT;<br>
&nbsp;&nbsp;assign CLK_P = Q_OUT;<br>
&nbsp;&nbsp;<br>
endmodule<br>
<br>
/////////////////////////////////////////////////////////////<br>
`timescale 1 us/1 ns<br>
module D_FF(Q_OUT, CLK, d, RESET_B);<br>
<br>
output Q_OUT;<br>
<br>
input d, CLK, RESET_B;<br>
<br>
reg Q_OUT;<br>
<br>
always @(posedge CLK or negedge RESET_B)<br>
&nbsp;&nbsp;if (RESET_B==1'b0)<br>
&nbsp; &nbsp;Q_OUT&lt;=1'b0;<br>
&nbsp;&nbsp;else <br>
&nbsp; &nbsp;Q_OUT&lt;=d;<br>
endmodule<br>
<br>
///////////////////////////////////////////////////////////////<br>
`timescale 1 us/1 ns<br>
module CLK_DIV(Q_OUT, CLK, RESET_B);<br>
output Q_OUT;<br>
<br>
input RESET_B;<br>
input CLK;<br>
<br>
wire d;<br>
<br>
D_FF dff0(.Q_OUT(Q_OUT), .d(d), .CLK(CLK), .RESET_B(RESET_B));<br>
&nbsp; &nbsp;not n1(d, Q_OUT);<br>
<br>
endmodule<br>
<br>
////////////////////////////////////////////////////////////////<br>
`timescale 1 us/1 ns<br>
module stimulus;<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;reg CLK;<br>
reg RESET_B;<br>
<br>
CLK_GEN top1(.CLK_N(CLK_N), .CLK_P(CLK_P),&nbsp;&nbsp;.CLK(CLK),&nbsp;&nbsp;.RESET_B(RESET_B));<br>
<br>
initial<br>
&nbsp;&nbsp;begin<br>
&nbsp; &nbsp;&nbsp;&nbsp;CLK = 1'b1;&nbsp;&nbsp;<br>
&nbsp; &nbsp;#10 RESET_B = 1'b0;<br>
&nbsp; &nbsp;&nbsp;&nbsp;#10 RESET_B = 1'b1;<br>
&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;<br>
&nbsp;&nbsp;end<br>
&nbsp;&nbsp;<br>
always <br>
&nbsp; &nbsp; #5 CLK = ~CLK;<br>
&nbsp; &nbsp; <br>
initial <br>
&nbsp; &nbsp; #10000 $finish;<br>
&nbsp; &nbsp; <br>
endmodule

encounter 发表于 2010-6-28 03:27:58

我做过的频率计不是这样子的,你说的我不懂了.<br>
好像控制模块做的不对
页: [1]
查看完整版本: fpga做频率计遇到的问题