程序的VHDL传递范围
我正在编写自己的包来处理由于VHDL-2008不可用而产生的类似于通用矩阵的对象(目前我只关心编译和模拟)。 我的目标是从矩阵M_中得到矩阵M_,以便:程序的VHDL传递范围,vhdl,Vhdl,我正在编写自己的包来处理由于VHDL-2008不可用而产生的类似于通用矩阵的对象(目前我只关心编译和模拟)。 我的目标是从矩阵M_中得到矩阵M_,以便: M_out(i downto 0, j downto 0) <= M_in(k+i downto k, l+j downto l); M_out(i下降到0,j下降到0)无约束索引范围自然范围不是类信号、变量、常量或文件的VHDL对象。因此,它不能被传递到子程序中。我不会将切片操作作为过程来实现,因为它是一种类似函数的行为 本发明提供了
M_out(i downto 0, j downto 0) <= M_in(k+i downto k, l+j downto l);
M_out(i下降到0,j下降到0)无约束索引范围自然范围
不是类信号、变量、常量或文件的VHDL对象。因此,它不能被传递到子程序中。我不会将切片操作作为过程来实现,因为它是一种类似函数的行为
本发明提供了一种用于处理矩阵及其切片的实现。中提供了实现
在该文件中也可以找到更专门的函数来分割或。它还提供分配矩阵部分的过程
该软件包用于模拟和合成
不幸的是,切片多维数组将不会成为此过程的一部分。我会确保再次讨论VHDL-202x
VHDL-2017允许将范围传递到子程序中。语言的变化增加了这种能力。看到我所在大学服务器上的编译器不支持VHDL-2008,我想我不会很快获得新功能,但很高兴知道这一点。然后传递整数。
type matrix is array(natural range <>, natural range <>) of std_logic;
...
procedure slice_matrix(signal m_out: out matrix;
constant rows: natural range<>;
constant cols: natural range<>;
signal m_in: in matrix);
** Error: custom_types.vhd(9): near "<>": syntax error
** Error: custom_types.vhd(9): near "<>": syntax error
function slm_slice(slm : T_SLM; RowIndex : natural; ColIndex : natural; Height : natural; Width : natural) return T_SLM is
variable Result : T_SLM(Height - 1 downto 0, Width - 1 downto 0) := (others => (others => '0'));
begin
for i in 0 to Height - 1 loop
for j in 0 to Width - 1 loop
Result(i, j) := slm(RowIndex + i, ColIndex + j);
end loop;
end loop;
return Result;
end function;