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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: brotherjam

[求助]看看这句赋值为什么不可以?(verilog)

[复制链接]
发表于 2004-5-21 22:48:18 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

因为阻塞式赋值是顺序执行的,所以你的initial块的前两条语句等效于:Half = num[1:7]。
 楼主| 发表于 2004-5-22 01:12:54 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

楼上的每明白我的意思,我的意思是half=num这句没有执行。
发表于 2004-5-22 08:58:15 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

改成half<=num试试
 楼主| 发表于 2004-5-22 12:36:17 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

还是不可以。你可以看看上面的讨论,各种方法都试过了。呵呵,这个问题的确要慢慢体会:)
发表于 2004-5-22 16:57:07 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

楼主主要是对verilog不熟造成的误会。
从你的开始到后来的改动,你可以体会到:
1.initial里对一个变量是顺序赋值的,并且要有延迟来控制时序。
2.需要寄存的信号,必须在always里用寄存器来锁存。
 楼主| 发表于 2004-5-22 17:00:39 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

谢谢楼上的帮助,我写这个程序的确有很多的心得。
发表于 2004-6-7 15:14:33 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

1。在实现的module里,不要出现不可综合的语句,象initial,repeat等。
2。一个reg不要在多个always语句里重复赋值,象count_p和count_n。
3。一个比较好的同步逻辑的写法是这样的:
   parameter udly = 1;

   always@(posedge clock or negedge rst_)  //rst_下划线代表低电平有效。
    if(!rst_)
       count_n <= #udly 'h0;
    else if(count_n==num-1)
       count_n <= #udly 'h0;
    else if(enable)            //加上一个enable信号
       count_n <= #udly count_n + 1'b1;
4。同步逻辑:尽量不要出现用clock的上升沿和下升沿同时触发的always,
   尽量在一个design里应用相同的沿触发条件。
5。多注意点 HDL coding的 style。
      
 楼主| 发表于 2004-6-7 22:28:53 | 显示全部楼层

[求助]看看这句赋值为什么不可以?(verilog)

感谢呀!说的真是太中肯了。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-5 00:59 , Processed in 0.024872 second(s), 7 queries , Gzip On, Redis On.

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