-1
AES Verilog 코드를 생성하고 있고, 4x4 행렬에 각각 16 개의 입력 [7 : 0]을 수집해야하므로이를 정의하고 초기화를 구현해야합니다. 행렬 어떻게해야합니까?Verilog에서 2D 배열을 선언하는 방법은 무엇입니까? 입력으로 4x4 행렬을 가져오고 싶습니다.
AES Verilog 코드를 생성하고 있고, 4x4 행렬에 각각 16 개의 입력 [7 : 0]을 수집해야하므로이를 정의하고 초기화를 구현해야합니다. 행렬 어떻게해야합니까?Verilog에서 2D 배열을 선언하는 방법은 무엇입니까? 입력으로 4x4 행렬을 가져오고 싶습니다.
Verilog 입력을 생성하여 해당 배열을 가져 오는 방법을 묻는다면 여러 입력, 압축 된 배열 또는 경우에 따라 압축을 푼 배열을 가질 수 있습니다.
다중 입력 :
module aes (
input [7:0] data_1,
input [7:0] data_2,
//...
input [7:0] data_16
);
포장을 푼 배열
module aes #(
parameter DATA_W = 8,
parameter BYTE_COUNT = 16,
) (
input [DATA_W*BYTE_COUNT -1:0] data
);
포장 배열, 일반적이지는 다른 유형으로 :
module aes #(
parameter DATA_W = 8,
parameter BYTE_COUNT = 16,
) (
input [DATA_W-1:0] data [0:BYTE_COUNT-1]
);
나는 확실하지 않다 얼마나 잘 다차원 배열은 포트로 지원되지만 SystemVerilog 2001에서는 다차원 배열 유형이 지원됩니다. 이 입력 행렬이 아니라 약간 초기화 리셋 신호 또는 다른 클리어 신호에 의해 수행 될 플롭 플립 시프트에 저장된 경우
reg [7:0] data [0:3][0:3];
:
는 4 × 4 배열로 데이터를 보유 , 비동기 재설정의 경우 :integer x, y;
always @(posedge clk or negede rst_n) begin
if (~rst_n) begin
for (x=0,x<4,x=x+1) begin
for (y=0,y<4,y=y+1) begin
data[x][y] <= 8'h00 ;
end
end
end
else begin
//Control on rising edge of clk
end
end
NB : for 루프는 컴파일 시간에 언로드되며 하드웨어에는 아무런 동적 요소도 없습니다.