特定类型的位级操作包括设置或清零多位值中的一个位,给定其索引及其新值。该操作可以通过具有以下接口的BitSet电路以硬件实现:Verilog中的BitSet电路
- 输入x是代表原始值的4位值。
- 输出y是一个4位值,代表修改后的值,位操作后设为 。
- 输入索引是一个2位值,范围从0到3,表示要修改的位的索引。
- 输入值是一个1位的值,设置为0或1,表示位索引在输出y中应该使用的值。 y中的每个其他位应该与x中的对应位相匹配。
下面的代码我有我的例子都在类:
module BitSet(input [3:0]x,
input [1:0]index,
input value,
output [3:0]y);
[email protected](x,index,value);
begin
if (index = 2'b00)
y[0] = value;
if(index = 2'b01)
y[1]=value;
if(index = 2'b10)
y[2]=value;
if(index=2'b11)
y[3]=value;
end
endmodule
和这里的测试平台:
module BitSet_tb();
reg [3:0]x;
reg [1:0]index;
reg value;
wire [3:0]y;
BitSet uut(
.x(x),
.index(index),
.value(value),
.y(y)
);
initial begin
$monitor ("%d %b %b %b %b", $time, x, index, value, y);
x=4'b0000;
index=2'b00;
value=1'b0;
#10 x=4'b0001;
index=2'b01;
value=1'b0;
#10 x=4'b1111;
index=2'b10;
value=1'b0;
#10 x=4'b1111;
index=2'b11;
value=1'b0;
#10 $finish;
end
endmodule
编译时,我收到以下错误:
bitset.v:10: syntax error
bitset.v:12: error: invalid module item.
bitset.v:13: syntax error
bitset.v:14: error: invalid module item.
bitset.v:15: syntax error
bitset.v:16: error: invalid module item.
bitset.v:17: syntax error
bitset.v:18: error: invalid module item.
bitset.v:19: syntax error
我甚至不确定这是否会做我想要的,但任何人都可以帮助解决这些错误,或者如何修复程序来完成问题?
http://electronics.stackexchange.com/questions/215186/verilog-bitset-circuit – toolic
'总是@(X,指数,value);'< - 除去分号,你应该使用'always @ *',除非你需要遵循1995年的语法。 – Greg