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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5620|回复: 18

[求助] assign 无法赋值

[复制链接]
发表于 2014-7-31 14:09:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
用assign 产生八相位时钟,具体是

assign #(1*(period/4))   a[0]=b;
assign #(2*(period/4))   a[1]=b;
assign #(3*(period/4))   a[2]=b;
assign #(4*(period/4))   a[3]=b;

其中b是已经产生的时钟反转信号,a是wire类型,问题是第4句a[3]没信号,一直为零,感觉b没有传导给a[3],前三个信号都有,请各位大神帮忙分析一下,谢谢!
 楼主| 发表于 2014-7-31 18:34:23 | 显示全部楼层
求大神指导。。。
发表于 2014-7-31 21:35:47 | 显示全部楼层
把a和b的波形贴出来
 楼主| 发表于 2014-8-1 13:55:39 | 显示全部楼层
回复 3# orlye


    波形搞不出来,就是b是时钟信号,a[0],a[1],a[2]都是b的延时,只有a[3]一直为低电平。我怀疑是assign后面延时的原因
发表于 2014-8-1 19:57:57 | 显示全部楼层
有没有可能是在第四个时钟下这个进程被打断了。非阻塞赋值都会有这样的问题的
发表于 2014-8-1 22:00:47 | 显示全部楼层
reg clk1,clk2,clk3,clk4;
        initial begin
                clk1 = 1'b0;
                #0;
                forever #10 clk1 = ~clk1;
        end
        initial begin
                clk2 = 1'b0;
                #1;
                forever #10 clk2 = ~clk2;
        end
        initial begin
                clk3 = 1'b0;
                #2;
                forever #10 clk3 = ~clk3;
        end
        initial begin
                clk4 = 1'b0;
                #3;
                forever #10 clk4 = ~clk4;
        end

不是应该用initial 块的么? 怎么是直接assign的?
 楼主| 发表于 2014-8-3 21:14:41 | 显示全部楼层
回复 5# cxhy


    为什么会打断呢,求详解
发表于 2014-8-5 22:15:41 | 显示全部楼层
有可能是因为,每当过了4*(period/4)的时候,你的b恰好都是0.所以你以为没有赋值,实际上是赋值了,只不过恰巧是0罢了
 楼主| 发表于 2014-8-6 10:14:41 | 显示全部楼层
回复 8# lvguang


    应该不是的,带delay的assign赋值是在等号右边表达式有变化时立即采样,然后进入延时等待,再赋值,我也试过#3.1*(period/4),也没有波形,应该是延时出了问题。
发表于 2014-8-6 10:42:05 | 显示全部楼层
第一,个人感觉时延是不是应该在assign之前?
第二,个人感觉period是不是刚好和B周期一样?
另外好像这种“#3.1*(period/4)” 在仿真的时候会把小数点后面的省略了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 20:35 , Processed in 0.024440 second(s), 8 queries , Gzip On, Redis On.

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