描述
LogiCORE IP PC-CFR的迭代次数是什么意思?
解
在数据表的第12页上,有一节“迭代次数”。通常,这是满足要求所需的级联PC_CFR IP内核的数量。输入数据进入第一个PC_CFR IP,第一个PC_CFR IP的输出进入第二个PC_CFR IP,依此类推。下面是使用generate语句的示例:
库IEEE;
使用IEEE.std_logic_1164.all;
使用IEEE.std_logic_ARITH.ALL;
使用IEEE.std_logic_UNSIGNED.ALL;
库UNISIM;
使用UNISIM.vcomponents.all;
entity pc_cfr_iteration_top是
港口 (
clk:在std_logic中;
rst:在std_logic中;
threshold:在std_logic_vector中(15 downto 0);
alloc_sp_0:在std_logic_vector中(9 downto 0);
alloc_sp_1:在std_logic_vector中(9 downto 0);
alloc_sp_2:在std_logic_vector中(9 downto 0);
cpram_ntaps:在std_logic_vector中(8 downto 0);
cpram_clk:在std_logic中;
cpram_we:在std_logic中;
cpram_addr:在std_logic_vector中(31 downto 0);
cpram_din:在std_logic_vector中(31 downto 0);
din_I:在std_logic_vector(15 downto 0);
din_Q:在std_logic_vector(15 downto 0);
dout_I:out std_logic_vector(15 downto 0);
dout_Q:out std_logic_vector(15 downto 0));
结束;
pc_cfr_iteration_top混合的架构是
– 以下是PC_CFR IP组件声明:
组件pc_cfr_iteration
港口 (
aclk:IN std_logic;
areset:IN std_logic;
sparam_threshold:IN std_logic_VECTOR(15 downto 0);
sparam_alloc_spacing:IN std_logic_VECTOR(9 downto 0);
sparam_filter_n_taps:IN std_logic_VECTOR(8 downto 0);
sreg_aclk:IN std_logic;
sreg_areset:IN std_logic;
sreg_awvalid:IN std_logic;
sreg_awready:OUT std_logic;
sreg_awaddr:IN std_logic_VECTOR(31 downto 0);
sreg_wvalid:IN std_logic;
sreg_wready:OUT std_logic;
sreg_wdata:IN std_logic_VECTOR(31 downto 0);
sdata_valid:IN std_logic;
sdata_ready:OUT std_logic;
sdata_i:IN std_logic_VECTOR(15 downto 0);
sdata_q:IN std_logic_VECTOR(15 downto 0);
mdata_valid:OUT std_logic;
mdata_ready:IN std_logic;
mdata_i:OUT std_logic_VECTOR(15 downto 0);
mdata_q:OUT std_logic_VECTOR(15 downto 0);
mstat_data:OUT std_logic_VECTOR(31 downto 0));
最终组件;
signal sdata_ready:std_logic_vector(31 downto 0);
signal sdata_valid:std_logic_vector(31 downto 0);
signal mdata_ready:std_logic_vector(31 downto 0);
signal mdata_valid:std_logic_vector(31 downto 0);
type array_32x16是std_logic_vector的数组(0到31)(15 downto 0);
signal sdata_i:array_32x16;
signal sdata_q:array_32x16;
signal mdata_i:array_32x16;
signal mdata_q:array_32x16;
signal alloc_spacing:array_32x16;
开始
dout_I <= sdata_i(3);
dout_Q <= sdata_q(3);
sdata_i(0)<= din_I;
sdata_q(0)<= din_Q;
alloc_spacing(0)(9 downto 0)<= alloc_sp_0;
alloc_spacing(1)(9 downto 0)<= alloc_sp_1;
alloc_spacing(2)(9 downto 0)<= alloc_sp_2;
– 生成3次迭代的语句
cfr:for i in 0 to 2 generate
sdata_i(i + 1)<= mdata_i(i);
sdata_q(i + 1)<= mdata_q(i);
sdata_valid(i + 1)<= mdata_valid(i);
mdata_ready(i)<= sdata_ready(i + 1);
单位:pc_cfr_iteration
港口映射(
aclk => clk,
areset => rst,
sparam_threshold => threshold,
sparam_alloc_spacing => alloc_spacing(i)(9 downto 0),
sparam_filter_n_taps => cpram_ntaps(8 downto 0),
sreg_aclk => cpram_clk,
sreg_areset =>’0’,
sreg_awvalid => cpram_we,
sreg_awready =>打开,
sreg_awaddr => cpram_addr,
sreg_wvalid => cpram_we,
sreg_wready =>打开,
sreg_wdata => cpram_din,
sdata_valid => sdata_valid(i),
sdata_ready => sdata_ready(i),
sdata_i => sdata_i(i),
sdata_q => sdata_q(i),
mdata_valid => mdata_valid(i),
mdata_ready => mdata_ready(i),
mdata_i => mdata_i(i),
mdata_q => mdata_q(i),
mstat_data => open);
结束生成;
sdata_valid(0)<=’1′;
sdata_ready(3)<=’1′;
结束;
有关LogiCORE IP峰值消除波峰因数降低发布说明和已知问题,请参阅(Xilinx答复33760) 。
没有回复内容