multidimensional-array - 是否可以在 VHDL 中将端口声明为未知大小的二维矩阵?
问题描述
我需要在不知道其大小的情况下处理输入端口。下面是我的代码。因为我是 vhdl 的初学者,所以我对这种语言感到困惑。我正在尝试使用 Aldec Riviera Pro 2020.04 模拟器在在线游乐场上编写代码。
library IEEE;
use IEEE.numeric_std.all;
PACKAGE vsd is
TYPE array_2d is array(natural<>,natural<>) of INTEGER;
END PACKAGE;
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use work.vsd.all;
entity my_conv is
port(
in_signal : in array_2d;
conv_signal : in array_2d;
result : out array_2d
);
end my_conv;
architecture arc of my_conv is
function conv_fn (conv_m, conv_n,indis_m, indis_n : natural) return INTEGER is
variable sum : INTEGER := 0;
begin
for i in conv_m-1 downto 0 loop
for j in conv_n-1 downto 0 loop
sum := sum + in_signal(i,j) * conv_signal(indis_m-i,indis_n-j);
end loop;
end loop;
return sum;
end conv_fn;
VARIABLE var_conv_m, var_conv_n, var_in_m, var_in_n : INTEGER;
VARIABLE temp_result : array_2d;
BEGIN
var_conv_m := conv_signal'length(1);
var_conv_n := conv_signal'length / var_conv_m;
for i in var_conv_m-1 downto 0 loop
for j in var_conv_n-1 downto 0 loop
temp_result(i,j) := conv_fn(var_conv_m,var_conv_n,i,j);
end loop;
end loop;
result := temp_result;
END arc;
解决方案
推荐阅读
- python - 如何遍历两个字典列表以查找公共键值对?
- python-3.x - Python:如何连接两个数据帧,其中一个具有重复的键
- mongodb - Spring Data Entity UUID 在 MongoDB 中存储为 legacy UUID
- typescript - 如何从日期对象(2019 年 10 月 25 日星期五 15:27:01 GMT+0530(印度标准时间))获取“2019 年 10 月 25 日星期五”?
- javascript - 根据第一个数组重新排列数组
- json - Hadoop 从 HDFS 读取 JSON
- php - 在关系数据库中使用 UUID 列与递增 ID 和单独的 UUID 列(Laravel,Eloquent)
- sapui5 - 使用 data-sap-ui-oninit="module:..." 引导时出现参考错误
- javascript - 如何正确输入 React 输入切换值,通过`onClick`返回什么
- python - 尝试在 Gurobi 中创建更复杂的变量