今天解决了一个很基础的问题
0赞
发表于 2011/3/1 15:02:02
阅读(1697)
今天解决了一个很基础的问题
在论坛里看到有人提问如下代码报错: define plus 3'd0 `define minus 3'd1 `define band 3'd2 `define bor 3'd3 `define unegate 3'd4 module alu(opcode,out,a,b); input[2:0]opcode; input [7:0]a,b; output[7:0]out; reg[7:0]out; always@(opcode or a or b) begin case(opcode) plus:out=a+b; minus:out=a-b; band:out=a&b; bor:out=a|b; unegate:out=~a; default:out=8'hx; endcase end endmodule 显示错误 :Error (10161): Verilog HDL error at alu.v(14): object "plus" is not declared
首先plus 3'd0这样的应该为3'b0,否则和后面的t[2:0]opcode;位数无法对应语法没有什么问题,但是编译确实提示错误把`define 改成reg或者 parameter肯定没问题 最后我明白了,`define unegate 4定义的变量,在引用时也要`plus这样才行哈哈,原来竟是一个小小的`符号惹的祸。