格式错误的语句Verilog 模块myfunction(); 函数[31:0]myfunction; 输入[31:0]a; localparam字节=4; 开始 对于(i=0;i
我不确定您在这里得到的确切错误。但是,我建议使用索引零件选择样式,如下所示:格式错误的语句Verilog 模块myfunction(); 函数[31:0]myfunction; 输入[31:0]a; localparam字节=4; 开始 对于(i=0;i,verilog,Verilog,我不确定您在这里得到的确切错误。但是,我建议使用索引零件选择样式,如下所示: module myfunction(); function [31:0] myfunction; input [31:0] a; localparam bytes = 4; begin for(i=0; i<4;i= i+1) begin myfu
module myfunction();
function [31:0] myfunction;
input [31:0] a;
localparam bytes = 4;
begin
for(i=0; i<4;i= i+1)
begin
myfunction[8*i + 7: 8*i] = input[(3 - i*8) + 7 : (3 -i)*8];
end
endfunction
endmodule
您还应该确保所有的开始和结束都匹配。如@alex.forencich所示,位切片将由
+:
操作符完成,因为您有非常量切片索引
另外,input
是一个SystemVerilog关键字。因此,此处需要更改变量名。i
需要声明。以下代码段是您代码的编译版本
myfunction[8*i +: 8] = input[8*(3-i) +: 8]
模块myfunction_mod();
函数[31:0]myfunction;
输入[31:0]a;
//为示例声明的伪input1
reg[31:0]输入1;
localparam字节=4;
开始
for(int i=0;i请给出确切的错误消息。我这样做了,错误已经消失。我得到一个新错误,如下所示:我在for循环中的myfunction行上不是常量我这样做了,错误已经消失。我得到一个新错误,如下所示:我在for循环中的myfunction行上不是常量。您可能还需要在本地定义i。
module myfunction_mod();
function [31:0] myfunction;
input [31:0] a;
// Dummy input1 declared for sample
reg [31:0] input1;
localparam bytes = 4;
begin
for(int i=0; i<4;i= i+1) // declare i
begin
// Note input1 here
myfunction[8*i +: 8] = input1[8*(3-i) +: 8];
// Else use a here
// myfunction[8*i +: 8] = a[8*(3-i) +: 8];
end
end
endfunction
endmodule