📄 correlate_and_accumulate_xst.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
Library UNISIM;
use UNISIM.vcomponents.all;
entity correlate_and_accumulate is
generic (
Ka : std_logic_vector (7 downto 0) := "10001101";
Kb : std_logic_vector (7 downto 0) := "11100101";
Kc : std_logic_vector (7 downto 0) := "00101110";
Kd : std_logic_vector (7 downto 0) := "11010001");
port (
rd_clk : in std_logic;
wr_clk_cha : in std_logic;
wr_clk_chb : in std_logic;
wr_clk_chc : in std_logic;
reset : in std_logic;
wr_clk_chd : in std_logic;
data_cha : in std_logic;
data_chb : in std_logic;
data_chc : in std_logic;
data_chd : in std_logic;
final_data : out std_logic_vector(7 downto 0);
mac_cha : out std_logic_vector (20 downto 0);
mac_chb : out std_logic_vector (20 downto 0);
mac_chc : out std_logic_vector (20 downto 0);
mac_chd : out std_logic_vector (20 downto 0);
mac_dv : out std_logic_vector (3 downto 0);
valid_ch : out std_logic_vector (3 downto 0));
end correlate_and_accumulate;
architecture structure of correlate_and_accumulate is
COMPONENT rd_clk_core
PORT(
CLKIN_IN : IN std_logic;
RST_IN : IN std_logic;
CLKIN_IBUFG_OUT : OUT std_logic;
CLK0_OUT : OUT std_logic;
LOCKED_OUT : OUT std_logic);
END COMPONENT;
component data_control
port (
clk : in std_logic;
reset : in std_logic;
rd_data_cha : in std_logic_vector (7 downto 0);
rd_data_chb : in std_logic_vector (7 downto 0);
rd_data_chc : in std_logic_vector (7 downto 0);
rd_data_chd : in std_logic_vector (7 downto 0);
pn_lock_rd_clk : in std_logic_vector(3 downto 0);
almost_full : in std_logic_vector(3 downto 0);
almost_empty : in std_logic_vector(3 downto 0);
full : in std_logic_vector(3 downto 0);
empty : in std_logic_vector(3 downto 0);
rd : out std_logic_vector (3 downto 0);
valid_ch : out std_logic_vector (3 downto 0);
mac_dv : out std_logic_vector (3 downto 0);
final_data : out std_logic_vector (7 downto 0);
mac_cha : out std_logic_vector (20 downto 0);
mac_chb : out std_logic_vector (20 downto 0);
mac_chc : out std_logic_vector (20 downto 0);
mac_chd : out std_logic_vector (20 downto 0));
end component data_control;
component ch_fifo
generic (
K : std_logic_vector (7 downto 0) := "10001101");
port (
rd_clk : in std_logic;
clk_bufio : in std_logic;
clk_bufr : in std_logic;
clk_bufr_div8 : in std_logic;
reset : in std_logic;
data_ch : in std_logic;
rd : in std_logic;
pn_lock_rd_clk : out std_logic;
almost_full : out std_logic;
almost_empty : out std_logic;
full : out std_logic;
empty : out std_logic;
rd_data : out std_logic_vector (7 downto 0));
end component ch_fifo;
component wr_clk_core
port ( wr_clk : in STD_LOGIC;
reset : in STD_LOGIC;
wr_clk_bufio : out STD_LOGIC;
wr_clk_bufr : out STD_LOGIC;
wr_clk_bufr_div8 : out STD_LOGIC);
end component wr_clk_core;
signal rd_data_cha, rd_data_chb, rd_data_chc, rd_data_chd : std_logic_vector (7 downto 0);
signal rd, pn_lock_rd_clk, almost_full, almost_empty, full, empty : std_logic_vector (3 downto 0);
signal rd_clk_bufg : std_logic;
signal wr_clk_cha_bufio, wr_clk_chb_bufio, wr_clk_chc_bufio, wr_clk_chd_bufio : std_logic;
signal wr_clk_cha_bufr, wr_clk_chb_bufr, wr_clk_chc_bufr, wr_clk_chd_bufr : std_logic;
signal wr_clk_cha_bufr_div8, wr_clk_chb_bufr_div8, wr_clk_chc_bufr_div8, wr_clk_chd_bufr_div8 : std_logic;
signal vcc, gnd : std_logic;
begin -- structure
vcc <= '1';
gnd <= '0';
rd_clk_core_inst : rd_clk_core PORT MAP(
CLKIN_IN => rd_clk,
RST_IN => reset,
CLKIN_IBUFG_OUT => open,
CLK0_OUT => rd_clk_bufg,
LOCKED_OUT => open);
data_control_inst : data_control
port map(
clk => rd_clk_bufg,
reset => reset,
rd_data_cha => rd_data_cha,
rd_data_chb => rd_data_chb,
rd_data_chc => rd_data_chc,
rd_data_chd => rd_data_chd,
pn_lock_rd_clk => pn_lock_rd_clk,
almost_full => almost_full,
almost_empty => almost_empty,
full => full,
empty => empty,
rd => rd,
valid_ch => valid_ch,
mac_dv => mac_dv,
final_data => final_data,
mac_cha => mac_cha,
mac_chb => mac_chb,
mac_chc => mac_chc,
mac_chd => mac_chd);
cha_fifo_inst : ch_fifo
generic map (
K => Ka)
port map(
rd_clk => rd_clk_bufg,
clk_bufio => wr_clk_cha_bufio,
clk_bufr => wr_clk_cha_bufr,
clk_bufr_div8 => wr_clk_cha_bufr_div8,
reset => reset,
data_ch => data_cha,
rd => rd(0),
pn_lock_rd_clk => pn_lock_rd_clk(0),
almost_full => almost_full(0),
almost_empty => almost_empty(0),
full => full(0),
empty => empty(0),
rd_data => rd_data_cha);
chb_fifo_inst : ch_fifo
generic map (
K => Kb)
port map(
rd_clk => rd_clk_bufg,
clk_bufio => wr_clk_chb_bufio,
clk_bufr => wr_clk_chb_bufr,
clk_bufr_div8 => wr_clk_chb_bufr_div8,
reset => reset,
data_ch => data_chb,
rd => rd(1),
pn_lock_rd_clk => pn_lock_rd_clk(1),
almost_full => almost_full(1),
almost_empty => almost_empty(1),
full => full(1),
empty => empty(1),
rd_data => rd_data_chb);
chc_fifo_inst : ch_fifo
generic map (
K => Kc)
port map(
rd_clk => rd_clk_bufg,
clk_bufio => wr_clk_chc_bufio,
clk_bufr => wr_clk_chc_bufr,
clk_bufr_div8 => wr_clk_chc_bufr_div8,
reset => reset,
data_ch => data_chc,
rd => rd(2),
pn_lock_rd_clk => pn_lock_rd_clk(2),
almost_full => almost_full(2),
almost_empty => almost_empty(2),
full => full(2),
empty => empty(2),
rd_data => rd_data_chc);
chd_fifo_inst : ch_fifo
generic map (
K => Kd)
port map(
rd_clk => rd_clk_bufg,
clk_bufio => wr_clk_chd_bufio,
clk_bufr => wr_clk_chd_bufr,
clk_bufr_div8 => wr_clk_chd_bufr_div8,
reset => reset,
data_ch => data_chd,
rd => rd(3),
pn_lock_rd_clk => pn_lock_rd_clk(3),
almost_full => almost_full(3),
almost_empty => almost_empty(3),
full => full(3),
empty => empty(3),
rd_data => rd_data_chd);
wr_clk_cha_core : wr_clk_core
port map (
wr_clk => wr_clk_cha,
reset => reset,
wr_clk_bufio => wr_clk_cha_bufio,
wr_clk_bufr => wr_clk_cha_bufr,
wr_clk_bufr_div8 => wr_clk_cha_bufr_div8);
wr_clk_chb_core: wr_clk_core
port map (
wr_clk => wr_clk_chb,
reset => reset,
wr_clk_bufio => wr_clk_chb_bufio,
wr_clk_bufr => wr_clk_chb_bufr,
wr_clk_bufr_div8 => wr_clk_chb_bufr_div8);
wr_clk_chc_core: wr_clk_core
port map (
wr_clk => wr_clk_chc,
reset => reset,
wr_clk_bufio => wr_clk_chc_bufio,
wr_clk_bufr => wr_clk_chc_bufr,
wr_clk_bufr_div8 => wr_clk_chc_bufr_div8);
wr_clk_chd_core: wr_clk_core
port map (
wr_clk => wr_clk_chd,
reset => reset,
wr_clk_bufio => wr_clk_chd_bufio,
wr_clk_bufr => wr_clk_chd_bufr,
wr_clk_bufr_div8 => wr_clk_chd_bufr_div8);
end structure;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -