어떻게 wdata [((8 * j) +7)를 쓸 수 있습니까 : (8 * i)] = $ random; Verilog 프로그래밍 언어로? 여기서 i와 j는 reg 타입 변수입니다. Modelsim은 상수 범위 변수에 오류를 발생시킵니다. 나는 어떻게 그것을 적절한 방식으로 쓸 수 있을까?Verilog에서 비트 슬라이싱
-1
A
답변
0
더 자세한 설명을 찾을 수 있습니다.
다음은 하나의 해결책입니다. 그것이 당신을 도울 것이라고 희망.
module temp(clk);
input clk;
reg i, j;
reg [23:0] register, select;
wire [23:0] temp;
initial
begin
i = 'd1;
j = 'd1;
end
generate
for(genvar i = 0; i<24; i++)
begin
assign temp[i] = select[i] ? $random : register[i];
end
endgenerate
always @ (posedge clk)
begin
register <= temp;
end
always @ *
begin
select = (32'hffff_ffff << ((j<<3)+8))^(32'hffff_ffff << (i<<3));
end
endmodule
0
어레이 분할 구조를 사용하십시오. 당신은 당신은 솔루션을위한 미래의 하드웨어에서 생각해야 Array slicing Q&A
bit [7:0] PA, PB;
int loc;
initial begin
loc = 3;
PA = PB; // Read/Write
PA[7:4] = 'hA; // Read/Write of a slice
PA[loc -:4] = PA[loc+1 +:4]; // Read/Write of a variable slice equivalent to PA[3:0] = PA[7:4];
end
의 Verilog 2001 구문에
[M -: N] // negative offset from bit index M, N bit result
[M +: N] // positive offset from bit index M, N bit result
+0
도움 주셔서 감사합니다. – Xeroxpop
감사합니다. Karan에게 도움을주십시오. – Xeroxpop
문제가 해결 된 경우 질문에 대한 답변을 표시하십시오. –