集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1693|回复: 3

fpga做频率计遇到的问题

[复制链接]
CHANG 发表于 2010-6-28 00:37:03 | 显示全部楼层 |阅读模式
我在作频率计时,碰到一个问题。如果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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 09:34 , Processed in 0.060774 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表