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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: chupenghui

[求助] fpga 时序逻辑的问题

[复制链接]
发表于 2010-5-19 15:25:43 | 显示全部楼层
是变化前的吧
发表于 2010-5-19 18:18:41 | 显示全部楼层
为什么是在变化前啊?
发表于 2010-5-20 13:05:21 | 显示全部楼层
这个是一个比较深的话题,由设计思想的时间区域概念决定的。
发表于 2010-5-20 16:09:43 | 显示全部楼层
为什么用两个呢
发表于 2010-5-20 17:08:15 | 显示全部楼层
!!!!!!!!!!!!!!!!!
发表于 2010-5-20 17:09:25 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!!
发表于 2010-5-20 17:10:26 | 显示全部楼层
!!!!!!!!!!!!!!!!!
发表于 2010-5-20 17:22:50 | 显示全部楼层
always @(posedge clk or negedge rst
      if (rst)
     begin
         sta_condition <= #1 1'b0;
         sto_condition <= #1 1'b0;
     end
   else
     begin
         sta_condition <= #1 ~sSDA &  dSDA & sSCL;//
         sto_condition <= #1  sSDA & ~dSDA & sSCL;//
     end


always @(posedge clk or negedge rst
    else if (rst)
     busy <= #1 1'b0;
   else
     busy <= #1 sta_condition  & ~sto_condition;
发表于 2010-5-20 17:24:21 | 显示全部楼层
编译过不到吧
发表于 2010-5-22 18:27:26 | 显示全部楼层
本帖最后由 jemmyplus 于 2010-5-22 18:29 编辑

没错,这段RTL Code如果拿去做simulation,应该busy会一直unkonw到底,
因为sta_condition,sto_condition 在初始时,并没有给定值,所以值是unknow.
假设程序是要做async low reset,则程序要改为
always @(posedge clk or negedge rst
      if (!rst)
     begin
         sta_condition <= #1 1'b0;
         sto_condition <= #1 1'b0;
     end
   else
     begin
         sta_condition <= #1 ~sSDA &  dSDA & sSCL;//
         sto_condition <= #1  sSDA & ~dSDA & sSCL;//
     end
always @(posedge clk or negedge rst

    else if (!rst)
     busy <= #1 1'b0;
   else
     busy <= #1 sta_condition  & ~sto_condition;
其中
#1 的目的只是让simulation出来的结果更接近真实的情况,

如果不加#1,那就是看simulator的判定,一般是会判定"变化之前"
但是这有可能会视simulator的不同而有所不同.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-6 13:57 , Processed in 0.022114 second(s), 6 queries , Gzip On, Redis On.

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