大家好,
我用的软件是ISE13.1.芯片是spartan3a。
请教一个非常蹊跷的问题。
代码如下:
reg flag;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
flag <= 0;
else if(full_pulse)
flag <= 1;
else if(color == 2'd3)
flag <= 0;
else
;
end
full_pulse是一个脉冲,color是一个颜色计数。
问题是,有的情况下,当full_pulse使flag = 1之后,flag又立刻变成0,而此时rst_n一直是1的,color也没有加到3,就是说让flag变成0的条件并没有满足。
为什么flag会自动拉低呢?
非常感谢!
共10条
1/1 1 跳转至页
是的,您的想法有些问题。因为数字设计应该坚持同步设计原则,以保证电路的可靠性。目前full_pulse 来自另外一个clock domain, 而且是一个脉冲,而不是电平。这种情况下,你可以采用toggle synchronizer [Ref 1] 来处理,以在新的clock domain 中能产生一个完整的脉冲。 目前你所遇到这种情况,可能是因为你在cross clock domain 后,又经过一系列组合逻辑,会产生毛刺。在同步设计的情况下,毛刺不是问题,但是在异步cross clock domain 情况下,就会引起误触发 Ref: [1] Practical design for transferring signals between clock domains, By Michael Crews and Yong Yuenyongsgool, Philips Semiconductors, EDN Magazine, Feb, 2003
共10条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |
我要赚赏金
