⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 correlate_and_accumulate_xst.vhd

📁 如何使用ISE和FPGA使用指南
💻 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 + -