verilog编程实现二进制“于”后位“异或”运算,编译时报错……求大神帮忙看看……

程序如下,要实现的是0‘0000’0000到1‘1111’1111的512个数和1 0001 1101以及1 1010 1111分别进行,先对对应位相与之后逐位异或的运算~~~

module acs (clk,y0,y1);

input clk;
output y0,y1;

reg [511:0] y0,y1;
reg [8:0] x,a,b,i;

i = 9'b 1 1111 1111;
x = 9'b 0 0000 0000;
a = 9'b 1 0001 1101;
b = 9'b 1 1010 1111;

always @(posedge clk)
if(i>=0)
begin
y0[i] = ^ x&a;
y1[i] = ^ x&b;
x=x+1;
i=i-1;
end

else
begin
y0[i] = 0;
y1[i] = 0;
end

endmodule

系统编译的时候报错:“Error (10170): Verilog HDL syntax error at acs.v(9) near text "="; expecting ".", or an identifier, or "(", or "["”

第1个回答  2012-03-31
语法错误
i = 9'b 1 1111 1111;
x = 9'b 0 0000 0000;
a = 9'b 1 0001 1101;
b = 9'b 1 1010 1111;
不能把硬件描述语言当软件开发语言来用。
第2个回答  2012-03-31
i = 9'b 1 1111 1111;
x = 9'b 0 0000 0000;
a = 9'b 1 0001 1101;
b = 9'b 1 1010 1111;

这样赋值是错误的,自己看看书追问

我就是按照我们的教案来弄的……那如果我想对它进行固定的赋值怎么做呢???

追答

wire[8:0] i;
assign i = 9'b 1 1111 1111;

或:

reg[8:0] i;
always@(???)
i <= 9'b 1 1111 1111;

本回答被提问者采纳
相似回答