Vhdl DDR3米格Vivado IP

Vhdl DDR3米格Vivado IP,vhdl,fpga,ram,vivado,Vhdl,Fpga,Ram,Vivado,我试图使用米格7接口DDR3内存到Artix 7 FPGA。 我对使用IP非常陌生,我只知道VHDL(不是Verilog)。我已经上传了我的代码。在我的代码中,init_calib_complete永远不会变高 任何人都可以找到我的代码有什么问题或给我一个示例代码,请 -我只使用代码的最后几行,其余的只是声明 -我已将LEDV7和LEDV6连接到LED library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_unsigned.a

我试图使用米格7接口DDR3内存到Artix 7 FPGA。 我对使用IP非常陌生,我只知道VHDL(不是Verilog)。我已经上传了我的代码。在我的代码中,init_calib_complete永远不会变高

任何人都可以找到我的代码有什么问题或给我一个示例代码,请

-我只使用代码的最后几行,其余的只是声明

-我已将LEDV7和LEDV6连接到LED

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
entity Main_PRG is
Port ( 

 -- Inouts
 ddr3_dq                        : inout std_logic_vector(7 downto 0);
 ddr3_dqs_p                     : inout std_logic_vector(0 downto 0);
 ddr3_dqs_n                     : inout std_logic_vector(0 downto 0);

 -- Outputs
 ddr3_addr                      : out   std_logic_vector(13 downto 0);
 ddr3_ba                        : out   std_logic_vector(2 downto 0);
 ddr3_ras_n                     : out   std_logic;
 ddr3_cas_n                     : out   std_logic;
 ddr3_we_n                      : out   std_logic;
 ddr3_reset_n                   : out   std_logic;
 ddr3_ck_p                      : out   std_logic_vector(0 downto 0);
 ddr3_ck_n                      : out   std_logic_vector(0 downto 0);
 ddr3_cke                       : out   std_logic_vector(0 downto 0);
 ddr3_cs_n                      : out   std_logic_vector(0 downto 0);
 ddr3_odt                       : out   std_logic_vector(0 downto 0);

 -- Inputs
 -- Differential system clocks
 sys_clk_p                      : in    std_logic;
 sys_clk_n                      : in    std_logic;
 -- Single-ended iodelayctrl clk (reference clock)
 clk_ref_i                                : in    std_logic;

        LEDV6 : out STD_LOGIC ;
        LEDV7 : out STD_LOGIC
        );
end Main_PRG;
architecture Behavioral of Main_PRG is
signal app_addr                    : std_logic_vector(27 downto 0);

signal app_addr                    : std_logic_vector(27 downto 0);
signal app_addr_i                  : std_logic_vector(31 downto 0);
      signal app_cmd                     : std_logic_vector(2 downto 0);
      signal app_en                      : std_logic;
      signal app_rdy                     : std_logic;
      signal app_rdy_i                   : std_logic;
  signal app_rd_data                 : std_logic_vector(63 downto 0);
  signal app_rd_data_end             : std_logic;
  signal app_rd_data_valid           : std_logic;
  signal app_rd_data_valid_i         : std_logic;
  signal app_wdf_data                : std_logic_vector(63 downto 0);
  signal app_wdf_end                 : std_logic;
  signal app_wdf_rdy                 : std_logic;
  signal app_wdf_rdy_i               : std_logic;
  signal app_sr_active               : std_logic;
  signal app_ref_ack                 : std_logic;
  signal app_zq_ack                  : std_logic;
  signal app_wdf_wren                : std_logic;
  signal mem_pattern_init_done       : std_logic_vector(0 downto 0);
  signal modify_enable_sel           : std_logic;
  signal data_mode_manual_sel        : std_logic_vector(2 downto 0);
  signal addr_mode_manual_sel        : std_logic_vector(2 downto 0);
  signal cmp_error                   : std_logic;
  signal tg_wr_data_counts           : std_logic_vector(47 downto 0);
  signal tg_rd_data_counts           : std_logic_vector(47 downto 0);
  signal init_calib_complete_i       : std_logic;
  signal tg_compare_error_i          : std_logic;
  signal tg_rst                      : std_logic;
  signal po_win_tg_rst               : std_logic;
  signal manual_clear_error          : std_logic_vector(0 downto 0);

  signal clk                         : std_logic;
  signal rst                         : std_logic;

  signal vio_modify_enable           : std_logic_vector(0 downto 0);
  signal vio_data_mode_value         : std_logic_vector(3 downto 0);
  signal vio_pause_traffic           : std_logic_vector(0 downto 0);
  signal vio_addr_mode_value         : std_logic_vector(2 downto 0);
  signal vio_instr_mode_value        : std_logic_vector(3 downto 0);
  signal vio_bl_mode_value           : std_logic_vector(1 downto 0);
  signal vio_fixed_instr_value       : std_logic_vector(2 downto 0);
  signal vio_data_mask_gen           : std_logic_vector(0 downto 0);
  signal dbg_clear_error             : std_logic_vector(0 downto 0);
  signal vio_tg_rst                  : std_logic_vector(0 downto 0);
  signal dbg_sel_pi_incdec           : std_logic_vector(0 downto 0);
  signal dbg_pi_f_inc                : std_logic_vector(0 downto 0);
  signal dbg_pi_f_dec                : std_logic_vector(0 downto 0);
  signal dbg_sel_po_incdec           : std_logic_vector(0 downto 0);
  signal dbg_po_f_inc                : std_logic_vector(0 downto 0);
  signal dbg_po_f_stg23_sel          : std_logic_vector(0 downto 0);
  signal dbg_po_f_dec                : std_logic_vector(0 downto 0);
  signal vio_dbg_sel_pi_incdec           : std_logic_vector(0 downto 0);
  signal vio_dbg_pi_f_inc                : std_logic_vector(0 downto 0);
  signal vio_dbg_pi_f_dec                : std_logic_vector(0 downto 0);
  signal vio_dbg_sel_po_incdec           : std_logic_vector(0 downto 0);
  signal vio_dbg_po_f_inc                : std_logic_vector(0 downto 0);
  signal vio_dbg_po_f_stg23_sel          : std_logic_vector(0 downto 0);
  signal vio_dbg_po_f_dec                : std_logic_vector(0 downto 0);
  signal all_zeros1                  : std_logic_vector(31 downto 0):= (others => '0');
  signal all_zeros2                  : std_logic_vector(38 downto 0):= (others => '0');
  signal wdt_en_w                    : std_logic_vector(0 downto 0);
  signal cmd_wdt_err_w               : std_logic;
  signal wr_wdt_err_w                : std_logic;
  signal rd_wdt_err_w                : std_logic;
signal cntr2                  : std_logic_vector(31 downto 0):= (others => '0');
signal cntr1                  : std_logic_vector(31 downto 0):= (others => '0');


component DDR3_RAM
    port(
  ddr3_dq       : inout std_logic_vector(7 downto 0);
  ddr3_dqs_p    : inout std_logic_vector(0 downto 0);
  ddr3_dqs_n    : inout std_logic_vector(0 downto 0);

  ddr3_addr     : out   std_logic_vector(13 downto 0);
  ddr3_ba       : out   std_logic_vector(2 downto 0);
  ddr3_ras_n    : out   std_logic;
  ddr3_cas_n    : out   std_logic;
  ddr3_we_n     : out   std_logic;
  ddr3_reset_n  : out   std_logic;
  ddr3_ck_p     : out   std_logic_vector(0 downto 0);
  ddr3_ck_n     : out   std_logic_vector(0 downto 0);
  ddr3_cke      : out   std_logic_vector(0 downto 0);
  ddr3_cs_n     : out   std_logic_vector(0 downto 0);
  ddr3_odt      : out   std_logic_vector(0 downto 0);
  app_addr                  : in    std_logic_vector(27 downto 0);
  app_cmd                   : in    std_logic_vector(2 downto 0);
  app_en                    : in    std_logic;
  app_wdf_data              : in    std_logic_vector(63 downto 0);
  app_wdf_end               : in    std_logic;
  app_wdf_wren              : in    std_logic;
  app_rd_data               : out   std_logic_vector(63 downto 0);
  app_rd_data_end           : out   std_logic;
  app_rd_data_valid         : out   std_logic;
  app_rdy                   : out   std_logic;
  app_wdf_rdy               : out   std_logic;
  app_sr_req                : in    std_logic;
  app_ref_req               : in    std_logic;
  app_zq_req                : in    std_logic;
  app_sr_active             : out   std_logic;
  app_ref_ack               : out   std_logic;
  app_zq_ack                : out   std_logic;
  ui_clk                    : out   std_logic;
  ui_clk_sync_rst           : out   std_logic;
  init_calib_complete       : out   std_logic;
  -- System Clock Ports
  sys_clk_p                      : in    std_logic;
  sys_clk_n                      : in    std_logic;
  -- Reference Clock Ports
  clk_ref_i                                : in    std_logic;
  sys_rst             : in std_logic
  );
end component DDR3_RAM;

----------------------------------------------------------
---DDR RAM Interface signals
----------------------------------------------------------
CONSTANT READ_CMD   : STD_LOGIC_VECTOR (2 downto 0) := "001";
CONSTANT WRITE_CMD  : STD_LOGIC_VECTOR (2 downto 0) := "000";

signal data_1 : std_logic_vector (63 downto 0); 
signal data_2 : std_logic_vector (63 downto 0);

    type state_machine is (Init, Write_1, Set_Data_1, Write_2, Set_Data_2,
  Read_Prep_1, Read_1, Read_Wait_1, Read_Prep_2, Read_2, Read_Wait_2, 
 Done);
 signal state        : state_machine := Init;
 signal next_state   : state_machine;

 signal Curr_State   : std_logic_vector(2 downto 0):="000";  
 signal Reset        : std_logic := '0' ;  
 begin 
u_DDR3_RAM : DDR3_RAM
  port map (
   -- Memory interface ports
   ddr3_addr                      => ddr3_addr,
   ddr3_ba                        => ddr3_ba,
   ddr3_cas_n                     => ddr3_cas_n,
   ddr3_ck_n                      => ddr3_ck_n,
   ddr3_ck_p                      => ddr3_ck_p,
   ddr3_cke                       => ddr3_cke,
   ddr3_ras_n                     => ddr3_ras_n,
   ddr3_reset_n                   => ddr3_reset_n,
   ddr3_we_n                      => ddr3_we_n,
   ddr3_dq                        => ddr3_dq,
   ddr3_dqs_n                     => ddr3_dqs_n,
   ddr3_dqs_p                     => ddr3_dqs_p,
   init_calib_complete            => init_calib_complete_i,
   ddr3_cs_n                      => ddr3_cs_n,
   ddr3_odt                       => ddr3_odt,
-- Application interface ports
   app_addr                       => app_addr,
   app_cmd                        => app_cmd,
   app_en                         => app_en,
   app_wdf_data                   => app_wdf_data,
   app_wdf_end                    => app_wdf_end,
   app_wdf_wren                   => app_wdf_wren,
   app_rd_data                    => app_rd_data,
   app_rd_data_end                => app_rd_data_end,
   app_rd_data_valid              => app_rd_data_valid,
   app_rdy                        => app_rdy,
   app_wdf_rdy                    => app_wdf_rdy,
   app_sr_req                     => '0',
   app_ref_req                    => '0',
   app_zq_req                     => '0',
   app_sr_active                  => app_sr_active,
   app_ref_ack                    => app_ref_ack,
   app_zq_ack                     => app_zq_ack,
   ui_clk                         => clk,
   ui_clk_sync_rst                => rst,
-- System Clock Ports
   sys_clk_p                       => sys_clk_p,
   sys_clk_n                       => sys_clk_n,
-- Reference Clock Ports
   clk_ref_i                      => clk_ref_i,
    sys_rst                        => '1'
    );
-- End of User Design top instance





process(clk)
begin
    if  rising_edge(clk) then
       if cntr1(27) = '0' then
         cntr1 <= cntr1 + 1 ;
       end if;    
    end if ;
end process ;      


Reset <= cntr1(28) ;

process (clk)
begin
    if rising_edge(clk) then
    if init_calib_complete_i = '1' then
        LEDV6 <= '1' ;
        LEDV7 <= '0' ;
    else
        LEDV6 <= '1' ;
        LEDV7 <= '1' ;
    end if;    
        if Reset = '0' then
            app_en       <= '0';
            app_wdf_wren <= '0';
            app_wdf_end  <= '0';
            app_cmd      <= (others => '0');
            app_addr     <= (others => '0');
            app_wdf_data <= (others => '0');
            state <= Init;
        else
            app_en       <= '0';
            app_wdf_wren <= '0';
            app_wdf_end  <= '0';

            app_cmd      <= (others => '0');
            app_addr     <= (others => '0');
            app_wdf_data <= (others => '0');


            --LEDV6 <= '1' ;
            --LEDV7 <= '1' ;


            case state is
                when Init =>
                    Curr_State <= "001";
                    data_1 <= (others => '0');
                    data_2 <= (others => '0');

                    --LEDV6 <= '1' ;
                    --LEDV7 <= '0' ;


                    if app_rdy = '1' then
                        state <= Write_1;
                    else 
                        state <= Init;
                    end if;
                when Write_1 =>

                    --LEDV6 <= '0' ;
                    --LEDV7 <= '0' ;

                when others =>
                    --LEDV6 <= '0' ;
                    --LEDV6 <= '0' ;


                end case;

        end if ;                
    end if;
end process;                        

end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.std_logic_unsigned.all;
实体主项目是
港口(
--伊努特
ddr3_dq:inout标准逻辑向量(7到0);
ddr3_dqs_p:inout标准逻辑向量(0到0);
ddr3\u dqs\u n:inout标准逻辑向量(0到0);
--输出
ddr3地址:输出标准逻辑向量(13向下至0);
ddr3_ba:输出标准逻辑向量(2到0);
ddr3_ras_n:输出标准逻辑;
ddr3\u cas\u n:输出标准逻辑;
ddr3\u we\u n:输出标准逻辑;
ddr3\u复位\u n:输出标准\u逻辑;
ddr3\u ck\u p:输出标准逻辑向量(0到0);
ddr3检查:输出标准逻辑向量(0到0);
ddr3:out标准逻辑向量(0到0);
ddr3\u cs\u n:输出标准逻辑向量(0到0);
ddr3_odt:输出标准逻辑向量(0到0);
--投入
--差分系统时钟
系统时钟:在标准逻辑中;
系统时钟:在标准逻辑中;
--单端iodelayctrl时钟(参考时钟)
时钟参考i:标准逻辑中;
LEDV6:输出标准逻辑;
LEDV7:输出标准逻辑
);
末端主管道;
主_PRG的架构是
信号应用地址:标准逻辑向量(27向下至0);
信号应用地址:标准逻辑向量(27向下至0);
信号应用地址i:标准逻辑向量(31向下至0);
信号应用程序指令:标准逻辑向量(2到0);
信号应用:标准逻辑;
信号应用:标准逻辑;
信号应用程序i:标准逻辑;
信号应用程序数据:标准逻辑向量(63向下至0);
信号应用程序数据端:标准逻辑;
信号应用程序数据有效:标准逻辑;
信号应用程序数据有效:标准逻辑;
信号应用程序wdf数据:标准逻辑向量(63向下至0);
信号应用程序wdf端:标准逻辑;
信号应用:标准逻辑;
信号应用程序wdf rdy i:标准逻辑;
信号应用程序sr激活:标准逻辑;
信号应用参考确认:标准逻辑;
信号应用程序确认:标准逻辑;
信号应用程序:标准逻辑;
信号内存模式初始化完成:标准逻辑向量(0到0);
信号修改\启用\选择:标准\逻辑;
信号数据模式手动选择:标准逻辑向量(2到0);
信号添加模式手动选择:标准逻辑向量(2到0);
信号cmp_错误:标准_逻辑;
信号tg_wr_数据_计数:标准逻辑_向量(47向下至0);
信号tg_rd_数据_计数:标准逻辑_向量(47向下至0);
信号初始校准完成:标准逻辑;
信号tg\u比较\u错误\u i:std\u逻辑;
信号转换:标准逻辑;
信号点温升:标准逻辑;
信号手动清除错误:标准逻辑向量(0到0);
信号时钟:标准逻辑;
信号rst:std_逻辑;
信号vio_修改_启用:标准逻辑_向量(0向下至0);
信号vio_数据_模式_值:标准逻辑_向量(3到0);
信号vio_暂停_流量:标准逻辑_矢量(0向下至0);
信号vio_addr_mode_值:标准逻辑向量(2到0);
信号vio仪表模式值:标准逻辑向量(3到0);
信号vio_bl_mode_值:标准逻辑向量(1到0);
信号vio固定仪表值:标准逻辑矢量(2到0);
信号vio数据屏蔽发生器:标准逻辑向量(0到0);
信号dbg_清除_错误:标准逻辑_向量(0到0);
信号vio_tg_rst:std_逻辑_向量(0到0);
信号dbg_sel_pi_incdec:std_logic_vector(0到0);
信号dbg_pi_f_inc:std_逻辑_向量(0到0);
信号dbg_pi_f_dec:std_逻辑_向量(0到0);
信号dbg_sel_po_incdec:std_逻辑_向量(0到0);
信号dbg_po_f_inc:std_逻辑_向量(0到0);
信号dbg_po_f_stg23_sel:std_逻辑_向量(0向下至0);
信号dbg_po_f_dec:std_逻辑_向量(0到0);
信号vio_dbg_sel_pi_incdec:std_逻辑_矢量(0到0);
信号vio_dbg_pi_f_inc:std_逻辑_向量(0到0);
信号vio_dbg_pi_f_dec:std_逻辑_向量(0到0);
信号vio_dbg_sel_po_incdec:std_逻辑_矢量(0到0);
信号vio_dbg_po_f_inc:std_逻辑_向量(0到0);
信号vio_dbg_po_f_stg23_sel:std_逻辑_向量(0到0);
信号vio_dbg_po_f_dec:std_逻辑_向量(0到0);
信号全零1:std逻辑向量(31到0):=(其他=>'0');
信号全零2:std逻辑向量(38向下至0):=(其他=>'0');
信号wdt_en_w:std_逻辑_向量(0到0);
信号指令wdt错误w:标准逻辑;
信号wr_wdt_err_w:std_逻辑;
信号rd_wdt_err_w:std_逻辑;
信号cntr2:std_逻辑_向量(31向下至0):=(其他=>'0');
信号cntr1:std_逻辑_向量(31向下至0):=(