集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1272|回复: 2

高手求救,verilog怎么实现变化的频率

[复制链接]
AlexSweet 发表于 2012-7-23 21:31:35 | 显示全部楼层 |阅读模式
高手求救,verilog怎么实现变化的频率?该模块的分频系数是有外部给定的。如一个八位的二进制数。部分程序代码如下:
module clock(clk, divN,clkout);

input clk;
input [7:0] divN;
output clkout;

reg clkout;
reg [7:0] cnt;

always @(posedge clk)
begin
        if (cnt == divN)
                begin
                cnt <=0;
                clkout <= ~clkout;
                end
        else
                begin
                cnt <= cnt + 8'd1;
                end
end

endmodule

现在的问题是,我的仿真结果和divN的值不一致。请大侠指点一二。多谢了。
 楼主| AlexSweet 发表于 2012-7-23 21:32:41 | 显示全部楼层
Quartus II 的仿真波形不对啊
@HDL现场 该用户已被删除
@HDL现场 发表于 2012-7-26 15:35:10 | 显示全部楼层
以上是不对的,你这样的分频数位divN * 2了
如果要分频数为divN,
则把这句"if (cnt == divN)"  改成  "if (cnt[6:0] == divN[7:1])",     (divN[7:0] 相当于divN除以2)
但是不能保证完全正确,因为如果divN为奇数(即最低位为0),则就有一个时钟差了。因为除以2不能为整数;
如果是奇数分频,则考虑使用双沿时钟。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-7-1 05:54 , Processed in 0.060270 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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