verilog编程的问题。。急求大神帮助啊
modulenpc(npc,imm,branch,zero,next_pc);input[29:0]npc;input[15:0]imm;inputbranch;inpu...
module npc( npc, imm, branch, zero, next_pc );
input [29:0] npc ;
input [15:0] imm ;
input branch ;
input zero ;
output [29:0] next_pc ;
//
wire [29:0] n_pc ;
wire [29:0] lshift ;
//
if( branch && zero )
begin
lshift[15:0] = imm[15:0];
lshift[31:16] = 0 ;
lshift[31:0]<<2 ;//zuo yi liang wei
n_pc = npc + 1 ;
next_pc = n_pc + lshift ;
end
else
n_pc = npc + 30'b1 ;
next_pc = n_pc ;
endmodule
总有错误:Illegal reference to net "dout".
我明明定义了的啊。。。而且看网上有人说if和case只能用在always中,但是我这个module里面用不到always啊。。。而且我也没有设置clk的端口,该怎么办呢。。。
错误是处在dout <= dm[addr] ;这句这。。 展开
input [29:0] npc ;
input [15:0] imm ;
input branch ;
input zero ;
output [29:0] next_pc ;
//
wire [29:0] n_pc ;
wire [29:0] lshift ;
//
if( branch && zero )
begin
lshift[15:0] = imm[15:0];
lshift[31:16] = 0 ;
lshift[31:0]<<2 ;//zuo yi liang wei
n_pc = npc + 1 ;
next_pc = n_pc + lshift ;
end
else
n_pc = npc + 30'b1 ;
next_pc = n_pc ;
endmodule
总有错误:Illegal reference to net "dout".
我明明定义了的啊。。。而且看网上有人说if和case只能用在always中,但是我这个module里面用不到always啊。。。而且我也没有设置clk的端口,该怎么办呢。。。
错误是处在dout <= dm[addr] ;这句这。。 展开
3个回答
展开全部
那你就不要用if 用 组合逻辑,你这弄得时许逻辑,没有时钟怎么跑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你搞不清组合逻辑与时许逻辑。时序逻辑要有时钟驱动,才有左移。组合逻辑要左移,只能叫做截取!
lshift[31:0]<<2 ; 是什么意思?左移?放在哪儿?要记住吗?没有reg怎么记住?
lshift[31:0]<<2 ; 是什么意思?左移?放在哪儿?要记住吗?没有reg怎么记住?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在always外用组合逻辑 定义为wire型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询