完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
你的问题是在RTL仿真发现的,还是时序仿真发现的,还是上板子测试发现的?不同阶段不用原因。代码最好也贴出来
|
|
|
|
加一个触发器,不用同一个信号,前一个信号只做触发用
|
|
|
|
|
|
|
|
我是自己已经做出来的板子测试出来发现这种情况,基本功能是外部给定一个触发信号,同步输出一个可调脉宽信号,只是这个输出信号与输入信号有一个周期的抖动,谢谢! |
|
|
|
这位朋友,谢谢你的回答,不过没太明白,我是用Verilog语言写的,思路是先检测到上升沿,并给一个寄存器赋值1,根据赋值为1的寄存器输出一个可调脉宽信号。实际测出来输出前言抖动。 |
|
|
|
x282718048 发表于 2016-9-30 15:30 Gate-level仿真中出现这个抖动了吗,把波形图发上来看看 |
|
|
|
坛友能分别给出解决方法吗 |
|
|
|
刚懂个皮毛,一点愚见。RTL级仿真有问题,妥妥的代码问题,不管是verilog还是vhdl写的,行为级仿真只仿真硬件描述语言的功能。时序仿真里面考虑了实际器件的各种延时,出问题的话可能是器件延迟的问题,需要做一下时序约束,也有可能是代码问题,例如别的逻辑过程都是上升沿触发的,偏偏有个写成了下降沿出发,可能造成平白无故多了一个延时。上板子调试出问题的话,可能是电路画的不对,阻抗匹配不对,或者就是用了个坑爹的示波器。如果只有实际板子调试出问题了,一定有勇气坚信自己代码写的没错啊。 |
|
|
|
lfjd05 发表于 2016-10-2 08:59 不错的见解 学习了 |
|
|
|
新手过来取取经,看看
|
|
|
|
lfjd05 发表于 2016-10-2 08:59 大神,我实在找不出原因了,把代码贴出来,麻烦帮忙看下,万分感激! |
|
|
|
|
|
|
|
本帖最后由 lfjd05 于 2016-10-9 14:24 编辑 跑了一下你的代码,在低速情况下没有你说的问题,接近100MHz的时候RTL仿真出现了,毛刺(位于右下角,最后一条波形) 不知道这是不是楼主发现的问题。 怀疑问题出现在这段代码里, always @(posedge clk, negedge reset_n) begin if(!reset_n) begin delay_counter <= 32'b0; width_counter <= 32'b0; trigger_out <= 1'b0; set_out <= 1'b0; end else begin if(upclk) begin if((set_delay_length == 0) || (delay_counter == set_delay_length)) begin set_out = 1'b1; delay_counter = 0; end else delay_counter <= delay_counter + 1'b1; end else begin if((delay_counter > 0) && (delay_counter < set_delay_length)) delay_counter <= delay_counter + 1'b1; else if((set_delay_length != 0) && (delay_counter == set_delay_length)) begin set_out = 1'b1; delay_counter = 0; end else trigger_out = 1'b0; end if(set_out) begin if(width_counter == set_pulse_width) begin width_counter <= 32'b0; delay_counter <= 32'b0; trigger_out <= 1'b0; set_out <= 1'b0; end else begin width_counter <= width_counter + 1'b1; trigger_out <= 1'b1; end end else trigger_out <= 1'b0; end end 组合逻辑过多,速度快的时候由于逻辑电平实际有先后顺序,不是同时到达的,所以波形出现了短暂的跳变。 修改的话,找到组合逻辑比较复杂的地方,加入上升沿判断,只有逻辑满足要求且收到一个clk上升沿时才给输出赋值 |
|
|
|
lfjd05 发表于 2016-10-9 14:22 你好,首先非常谢谢你的建议;我板子的时钟频率是200M的,频率比较高,你仿真出现的毛刺在我实际板子上没有出现,现在出现的问题是:从示波器(4G带宽)上看输出周期信号的前沿相对输入周期信号的前沿有一个周期的抖动,比如说这个周期输入输出上升沿相隔10ns,下一个周期可能是10-15个ns,从示波器上看输入输出前沿相对抖动,也就是有10个ns的固定延时(这是信号延时和寄存器存储引起的),另加5个ns的不固定延时(我所说的一个周期抖动)。麻烦帮忙想下这是怎么产生的?该怎么解决。谢谢你! |
|
|
|
x282718048 发表于 2016-10-9 15:13 哦,我实验室没有示波器能采那么快速度的波形没法给你实测。建议你现在Gate-level仿真里看看有没有这个问题。如果没有说明是硬件电路问题。毕竟就5ns,哪个环节瑕疵都有可能啊 |
|
|
|
|
|
|
|
lfjd05 发表于 2016-10-9 17:44 你好,其实200M的示波器也是可以看出来的!哎!这问题整了好长时间了,头都大了, 硬件应该没问题吧,我用自己时钟产生两路可调延时和脉宽的信号没有一点问题,同步精度也在1ns以内的。 |
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-2 07:39 , Processed in 1.117947 second(s), Total 107, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号