Algorithm 如何在verilog中声明2D数组?我想要一个4x4矩阵作为输入
我正在创建一个AES verilog代码,我需要在一个4x4矩阵中收集16个输入[7:0],因此我需要定义它并实现矩阵的初始化。我该怎么做?如果您询问如何创建Verilog输入以获取该阵列,您可以有多个输入、压缩阵列或在某些情况下未压缩阵列 多输入:Algorithm 如何在verilog中声明2D数组?我想要一个4x4矩阵作为输入,algorithm,encryption,verilog,Algorithm,Encryption,Verilog,我正在创建一个AES verilog代码,我需要在一个4x4矩阵中收集16个输入[7:0],因此我需要定义它并实现矩阵的初始化。我该怎么做?如果您询问如何创建Verilog输入以获取该阵列,您可以有多个输入、压缩阵列或在某些情况下未压缩阵列 多输入: module aes ( input [7:0] data_1, input [7:0] data_2, //... input [7:0] data_16 ); 无包装阵列 module aes #( parameter D
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支持多维数组类型
要将数据保存为4x4阵列,请执行以下操作:
reg [7:0] data [0:3][0:3];
如果这不是一个输入矩阵,而是位移入并存储在触发器中,则初始化将通过复位信号或另一个清除信号完成,用于异步复位:
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
整数x,y;
始终@(posedge clk或negede rst_n)开始
如果开始
对于(x=0,x