在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3258|回复: 4

[求助] 请教时钟拉长

[复制链接]
发表于 2012-5-22 10:01:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 forlsy 于 2012-5-22 10:15 编辑

请教下各位大大,如何将时钟拉长?比如





  1. 'timescale 1ns/1ps
  2. always #244 clk = ~clk  //这是产生一个488ns的周期时钟  //使用一个帧同步信号syn,对时钟进行强行复位,帧同步信号周期125us,计算后,会有256个clk// 但125us - 256*488ns = 72ns
  3. //要用syn将最后一个(第255个)clk强行拉长72ns,请问该怎么实现啊?
  4. always #244 begin    if(!frame_synch)         begin           clk488ns = ~clk488ns;        end        else        begin           clk488ns = clk488ns;        end  end        


复制代码




我用上面的代码跑出来,实现不了功能...  
请教各位 应该怎么实现? 谢谢了....
发表于 2012-5-22 10:26:25 | 显示全部楼层
你给的代码连计数到255周期都没有,怎么可能实现,你主时钟是多少也不知道。
其实你都有帧同步信号了,靠帧同步强制复位不就好了,没必要拉长最后一个clk
 楼主| 发表于 2012-5-25 10:33:09 | 显示全部楼层
回复 2# falloutmx


   这里给的代码没给全  大概意思是一帧当中最后如果剩下有多余的时间,要求这段多余的时间内 时钟被拉高(或者保持不变)  在下一帧开始后又恢复正常。
由于只是在testbench里实现,后来我找了个方法 用always #125000 syn=~syn; 来实现帧信号的产生,  用repeat来实现的clk的拉长,最后做出来了。

但这里有个问题,比如我用vhdl写的话  其实一个process就直接搞定了,因为process可以不用跟延时,而verilog中的always必须要跟延时
比如




  1. process
  2. begin
  3. # 244 clk=~clk;  end


复制代码






  1. always #244
  2. begin
  3. clk =~clk;
  4. end


复制代码



就这么点区别,如果里面跟点逻辑判断  差别就大了  因为always总是要先等244再执行,而process则是判断了,再看等不等244

说回来  刚入门  语言不熟是大问题...
发表于 2012-5-26 19:09:43 | 显示全部楼层
我写一个你看看
initial begin
    clk = 1'b0;
    forever begin
          #244;
          clk = ~clk;
    end
end
 楼主| 发表于 2012-5-28 10:27:44 | 显示全部楼层
回复 5# zhongjee

您写的这个是产生488周期的时钟 并没有涉及到拉长的问题哈 thanks anyway~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-17 07:22 , Processed in 0.034929 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表