使用 VHDL 在 FPGA 上实现阵列
Array implementation on FPGA using VHDL
我的 VHDL 代码中有以下行:
prbs_reg_feed <= prbs_reg_ip(byte_indx);
哪里
type reg_type is array (0 to 63) of std_logic_vector(8 downto 0);
signal prbs_reg_feed : std_logic_vector(8 downto 0);
signal prbs_reg_ip : reg_type;
我想知道 FPGA 实现。
谢谢,
维杰
这将综合为很多组合逻辑。这个组合逻辑将有近 600 个输入和 9 个输出。
使用 FPGA 合成器,如果您要围绕此行编写一些代码:
prbs_reg_feed <= prbs_reg_ip(byte_indx);
为了让你的代码表现得更像一个 RAM,那么你可能会得到一个 RAM。 (您应该阅读合成器输出的报告文件以确保确定。)
process(clock) is
begin
if rising_edge(clock) then
if we = '1' then
prbs_reg_ip(byte_indx) <= datain;
end if;
prbs_reg_feed <= prbs_reg_ip(byte_indx);
end if;
end process;
注意:这假设 byte_indx
是一个 integer
。
小心并了解您的目标 FPGA,这将被实现为内存块而不是组合逻辑。
一个典型的限制是赋值
prbs_reg_feed <= prbs_reg_ip(byte_indx);
必须放置在时钟进程中,因为内存块通常是同步的。
唯一可以确定的方法是花几分钟尝试自行合成此块,然后阅读合成报告。如果第一次尝试不起作用,请阅读文档并进一步实验。
内存。 ROM 可以是一样的,但是没有办法写它,也许声明 prbs_reg_ip
为常数而不是信号,例如
constant prbs_reg_ip : reg_type := ( 0 => X"C3", 1 => "80", 2 => "FF", ...);
对于一些FPGA或者FPGA工具,你可能需要在表示内存的信号(或类型)上添加一个属性,例如
signal prbs_reg_ip : reg_type;
attribute ram_style : string;
attribute ram_style of prbs_reg_ip : signal is "block"; -- or "distributed"
有关此示例,请参阅 this Xilinx answer。
我的 VHDL 代码中有以下行:
prbs_reg_feed <= prbs_reg_ip(byte_indx);
哪里
type reg_type is array (0 to 63) of std_logic_vector(8 downto 0);
signal prbs_reg_feed : std_logic_vector(8 downto 0);
signal prbs_reg_ip : reg_type;
我想知道 FPGA 实现。
谢谢, 维杰
这将综合为很多组合逻辑。这个组合逻辑将有近 600 个输入和 9 个输出。
使用 FPGA 合成器,如果您要围绕此行编写一些代码:
prbs_reg_feed <= prbs_reg_ip(byte_indx);
为了让你的代码表现得更像一个 RAM,那么你可能会得到一个 RAM。 (您应该阅读合成器输出的报告文件以确保确定。)
process(clock) is
begin
if rising_edge(clock) then
if we = '1' then
prbs_reg_ip(byte_indx) <= datain;
end if;
prbs_reg_feed <= prbs_reg_ip(byte_indx);
end if;
end process;
注意:这假设 byte_indx
是一个 integer
。
小心并了解您的目标 FPGA,这将被实现为内存块而不是组合逻辑。
一个典型的限制是赋值
prbs_reg_feed <= prbs_reg_ip(byte_indx);
必须放置在时钟进程中,因为内存块通常是同步的。
唯一可以确定的方法是花几分钟尝试自行合成此块,然后阅读合成报告。如果第一次尝试不起作用,请阅读文档并进一步实验。
prbs_reg_ip
为常数而不是信号,例如
constant prbs_reg_ip : reg_type := ( 0 => X"C3", 1 => "80", 2 => "FF", ...);
对于一些FPGA或者FPGA工具,你可能需要在表示内存的信号(或类型)上添加一个属性,例如
signal prbs_reg_ip : reg_type;
attribute ram_style : string;
attribute ram_style of prbs_reg_ip : signal is "block"; -- or "distributed"
有关此示例,请参阅 this Xilinx answer。