找回密码
 注册
关于网站域名变更的通知
查看: 1668|回复: 5
打印 上一主题 下一主题

求教:verilog编程实际开发中遇到的两个问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-11 20:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
1 运行环境是cpld,外部时钟27M。因为有些信号不需要这么高的时钟,所以内部做了一个毫秒发生器,用毫秒发生器的输出做时钟,响应一些事件。这种做法,我在两个项目中都用过
+ A- l7 j6 h7 X  出现的现象是:在第一个项目中,编译时没有发生报警,在第二个项目中发生报警,说某些信号建立时间不够。
! T4 V7 W) t" m1 H& F  怀疑:第一个项目中用毫秒发生器同步的逻辑较少,而且比较简单,第二个项目逻辑比较复杂,可能是因为比较复杂,所以时间不够/ v9 Y: S/ r4 @$ r/ m: M: p

& A: T& X+ J) {) S( }  我的问题:在cpld中编写毫秒发生器,然后用这个发生器做时钟,这中方法是否正规,能不能这样用?
1 z( n6 K2 @5 p2 j$ p- P: q8 m7 j
2  在看一些FPGA例程的时候,曾经看到过这样的编写方式# y! D" P% W' M/ G$ y
    always @(state)beging     (第一种写法)' h) K, R& M3 c7 B6 k
    end
5 F: M; a6 Y, V: c+ I8 b( Z6 p) p   但是我在看书时,也看到过,说在fpga中用verilog编程时,always事件只能用posedge,或者negedge,如! `3 Y9 N1 ]3 V5 i* }: }
    always @(posedge state)begin   (第二种写法)
3 W6 @' v3 y4 C7 a) j; E/ R! T    end
- y( B9 E2 n3 E9 a) ]. v( D   不能做电平事件,否则综合无法通过,我用电平编译时有时会出报警  ~+ E/ F1 }+ O3 u5 n
+ K% o# M1 a& @5 E& [
   我的问题是,综合时,是支持第一种写法,还是支持第二种写法?

该用户从未签到

2#
 楼主| 发表于 2009-9-12 22:34 | 只看该作者
没有人回答吗?
  • TA的每日心情
    开心
    2025-6-11 15:53
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    3#
    发表于 2009-9-14 11:02 | 只看该作者
    always @(state)begin      end这种做法是对的他产生组合逻辑;一般always语句就是用这中方法产生组合逻辑。

    该用户从未签到

    4#
    发表于 2009-9-15 21:58 | 只看该作者
    同上

    该用户从未签到

    5#
    发表于 2009-9-25 11:31 | 只看该作者
    问题1:如果用发生器直接做时钟,若产生时钟的发生器组合逻辑过于复杂,会造成时钟歪斜time skin。可用使能时钟改之,即用全局时钟作为时钟,用发生器的始终作为使能端;: p. m# P7 j5 [* U; `
    问题2: 应该都可以综合,always @(posedge *)是边沿触发,也是时序逻辑。而always @(*)是电平触发,是组合逻辑,相当于assigned * ,只是逻辑比较复杂

    该用户从未签到

    6#
    发表于 2009-9-25 11:32 | 只看该作者
    如果always @(state)是状态机的话……综合器是不支持异步状态机的
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-20 02:04 , Processed in 0.109375 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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