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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 运行环境是cpld,外部时钟27M。因为有些信号不需要这么高的时钟,所以内部做了一个毫秒发生器,用毫秒发生器的输出做时钟,响应一些事件。这种做法,我在两个项目中都用过
. [  N) X& @0 _  出现的现象是:在第一个项目中,编译时没有发生报警,在第二个项目中发生报警,说某些信号建立时间不够。
* Q0 Y. u' O' i3 |6 d  怀疑:第一个项目中用毫秒发生器同步的逻辑较少,而且比较简单,第二个项目逻辑比较复杂,可能是因为比较复杂,所以时间不够2 Q7 s9 F) y$ y  ^0 @' w
' j3 S0 D. [6 f3 y7 Q9 G5 \& D
  我的问题:在cpld中编写毫秒发生器,然后用这个发生器做时钟,这中方法是否正规,能不能这样用?% w6 T# @" J& A: q" e

& k+ o. [3 N: }$ j2  在看一些FPGA例程的时候,曾经看到过这样的编写方式
* J' q* _* G4 l/ C% y2 @! ?    always @(state)beging     (第一种写法)
) s: s* [9 A6 @# q0 u; E  j    end% d8 J/ ]* ^( x) Q4 E& q- f. I8 m
   但是我在看书时,也看到过,说在fpga中用verilog编程时,always事件只能用posedge,或者negedge,如
' I* S% G) H/ G& ]" ]8 E6 f9 a    always @(posedge state)begin   (第二种写法)
" z5 S( r0 u2 e% A$ }% Z    end
0 C  \* U( o* M   不能做电平事件,否则综合无法通过,我用电平编译时有时会出报警
1 H8 M1 n* d  O- ~
' b( x  r( u' M7 ~   我的问题是,综合时,是支持第一种写法,还是支持第二种写法?

该用户从未签到

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。可用使能时钟改之,即用全局时钟作为时钟,用发生器的始终作为使能端;
    4 j+ `9 z" _8 a' J, v) H7 \问题2: 应该都可以综合,always @(posedge *)是边沿触发,也是时序逻辑。而always @(*)是电平触发,是组合逻辑,相当于assigned * ,只是逻辑比较复杂

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-5 03:15 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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