fpga做频率计遇到的问题
我在作频率计时,碰到一个问题。如果CLK频率是1HZ,要用其控制一个输出EN和一个CLR,他们的频率是0.5HZ,EN是在CLK 一个上升沿是低电平,下一个上升沿是高电平,以后依次类推
CLR在CLK第一个周期内下降沿由0'变成1,在第二个CLK周期内下降沿不变保持‘0',以后依此类推
没有思路
请各位指点一下,
谢谢了 楼主说的是分频器吧,只是EN是上升沿触发的,CLR是下降沿触发的 應該是除頻器 我之前寫過類似的 你參考看看 共四個模組 含testbench 我的輸出是跟你一樣 互為除頻後反相 已合成過 完全ok<br>
我是用d正反器 來做的 不知道跟您的要求符合嗎<br>
<br>
`timescale 1 us/1 ns<br>
module CLK_GEN (CLK_N, CLK_P, CLK, RESET_B);<br>
output CLK_N;<br>
output CLK_P;<br>
<br>
input CLK;<br>
input RESET_B;<br>
<br>
CLK_DIV div0(.Q_OUT(Q_OUT), .CLK(CLK), .RESET_B(RESET_B));<br>
assign CLK_N = ~Q_OUT;<br>
assign CLK_P = Q_OUT;<br>
<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>
if (RESET_B==1'b0)<br>
Q_OUT<=1'b0;<br>
else <br>
Q_OUT<=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>
not n1(d, Q_OUT);<br>
<br>
endmodule<br>
<br>
////////////////////////////////////////////////////////////////<br>
`timescale 1 us/1 ns<br>
module stimulus;<br>
<br>
reg CLK;<br>
reg RESET_B;<br>
<br>
CLK_GEN top1(.CLK_N(CLK_N), .CLK_P(CLK_P), .CLK(CLK), .RESET_B(RESET_B));<br>
<br>
initial<br>
begin<br>
CLK = 1'b1; <br>
#10 RESET_B = 1'b0;<br>
#10 RESET_B = 1'b1;<br>
<br>
<br>
end<br>
<br>
always <br>
#5 CLK = ~CLK;<br>
<br>
initial <br>
#10000 $finish;<br>
<br>
endmodule 我做过的频率计不是这样子的,你说的我不懂了.<br>
好像控制模块做的不对
页:
[1]