关于verilog的延时赋值,求教高手!!!

`timescale1ns/100psmoduleshady121202(r24,r14,p,clk,timer,bas,nrst,lamp);inputr24,r14,... `timescale 1ns/100ps
module shady121202(r24,r14,p,clk,timer,bas,nrst,lamp);
input r24,r14,p,clk,nrst,bas;
output[11:0]timer;
output lamp;
reg[11:0] timer;
reg[2:0] cs,ns;
reg lamp;
reg count;
wire i;
reg j;
assign i=r24|r14|p|count;
parameter[2:0] s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b100;
always(posedge i)begin
j<=#10 i;
end
always@(posedge i,negedge nrst)begin
if(!nrst) cs=s1;
else cs<=ns;
end
always@(cs,r24,r14,p,count)
case(cs)
s0:begin
if(r24|count) ns=s1;
else if(r14) ns=s2;
else if(p) ns=s3;
else ns=s0;
end
s1:begin
if(r24) ns=s0;
else ns=s1;
end
s2:begin
if(r14) ns=s0;
else ns=s2;
end
s3:begin
if(p) ns=s0;
else ns=s3;
end
default:begin
ns=s1;
end
endcase
......
我想把i的值延迟10ns后赋给j,不知道哪里错了,请高手指点。谢谢了!
展开
 我来答
百度网友21d6cd0
2012-12-15 · TA获得超过162个赞
知道答主
回答量:84
采纳率:100%
帮助的人:32.5万
展开全部
什么错了?是综合编译错了吗?延时是行为描述,是不可综合的
更多追问追答
追问
仿真的时候,j和i一致,没有延时10ns的状态。另外,有什么可以综合的方法么?谢谢了!
追答
真是很奇怪的写法,i作为时钟信号。
首先,你的i上升沿到达,再把i赋值给j,这种做法本身就存在问题,这个时候是应该赋值0还是1呢?所以你想延迟10ns赋值。我想这就是你的初衷吧。但即使是延迟了,这个问题还是存在呀,只是处理的时间延后了而已
其次,在你的代码中,clk信号一直都没用,是你写错了,还是你就是这么设计的呢?如果你把clk作为时钟去替代i做时钟试试会有什么变化。
再次,你的coding style实在是不好,i,j一般都是作为integer定义的。遵循常规的定义习惯,对阅读是有很大帮助的,毕竟你写的东西也要方便别人看,而不仅仅是自己看。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式