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

📄 mdm.vhd

📁 实用的程序代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
      DRCK   : in  std_logic;
      TDO    : out std_logic;

      -- MicroBlaze Debug Signals
      Dbg_Clk_0     : out std_logic;
      Dbg_TDI_0     : out std_logic;
      Dbg_TDO_0     : in  std_logic;
      Dbg_Reg_En_0  : out std_logic_vector(0 to 4);
      Dbg_Capture_0 : out std_logic;
      Dbg_Update_0  : out std_logic;

      Dbg_Clk_1     : out std_logic;
      Dbg_TDI_1     : out std_logic;
      Dbg_TDO_1     : in  std_logic;
      Dbg_Reg_En_1  : out std_logic_vector(0 to 4);
      Dbg_Capture_1 : out std_logic;
      Dbg_Update_1  : out std_logic;

      Dbg_Clk_2     : out std_logic;
      Dbg_TDI_2     : out std_logic;
      Dbg_TDO_2     : in  std_logic;
      Dbg_Reg_En_2  : out std_logic_vector(0 to 4);
      Dbg_Capture_2 : out std_logic;
      Dbg_Update_2  : out std_logic;

      Dbg_Clk_3     : out std_logic;
      Dbg_TDI_3     : out std_logic;
      Dbg_TDO_3     : in  std_logic;
      Dbg_Reg_En_3  : out std_logic_vector(0 to 4);
      Dbg_Capture_3 : out std_logic;
      Dbg_Update_3  : out std_logic;

      Dbg_Clk_4     : out std_logic;
      Dbg_TDI_4     : out std_logic;
      Dbg_TDO_4     : in  std_logic;
      Dbg_Reg_En_4  : out std_logic_vector(0 to 4);
      Dbg_Capture_4 : out std_logic;
      Dbg_Update_4  : out std_logic;

      Dbg_Clk_5     : out std_logic;
      Dbg_TDI_5     : out std_logic;
      Dbg_TDO_5     : in  std_logic;
      Dbg_Reg_En_5  : out std_logic_vector(0 to 4);
      Dbg_Capture_5 : out std_logic;
      Dbg_Update_5  : out std_logic;

      Dbg_Clk_6     : out std_logic;
      Dbg_TDI_6     : out std_logic;
      Dbg_TDO_6     : in  std_logic;
      Dbg_Reg_En_6  : out std_logic_vector(0 to 4);
      Dbg_Capture_6 : out std_logic;
      Dbg_Update_6  : out std_logic;

      Dbg_Clk_7     : out std_logic;
      Dbg_TDI_7     : out std_logic;
      Dbg_TDO_7     : in  std_logic;
      Dbg_Reg_En_7  : out std_logic_vector(0 to 4);
      Dbg_Capture_7 : out std_logic;
      Dbg_Update_7  : out std_logic;

      FSL0_S_Clk     : out std_logic;
      FSL0_S_Read    : out std_logic;
      FSL0_S_Data    : in  std_logic_vector(0 to C_FSL_DATA_SIZE-1);
      FSL0_S_Control : in  std_logic;
      FSL0_S_Exists  : in  std_logic;
      FSL0_M_Clk     : out std_logic;
      FSL0_M_Write   : out std_logic;
      FSL0_M_Data    : out std_logic_vector(0 to C_FSL_DATA_SIZE-1);
      FSL0_M_Control : out std_logic;
      FSL0_M_Full    : in  std_logic;

      jtag_clk : out std_logic;
      trig     : out std_logic_vector(7 downto 0);
      data     : out std_logic_vector(31 downto 0)
      );
  end component MDM_Core;

  -- The only difference between BSCAN_VIRTEX and BSCAN_VIRTEX2 is the
  -- addition of the CAPTURE output which is not being used.
  --
  -- constant Virtex2_Based : boolean := (derived(C_FAMILY,virtex2p) and
  --                                      not derived(C_FAMILY,virtex));
  -- This was always false:
  -- constant Virtex2_Based : boolean := false;
  --
  -- Virtex2 works fine with the Virtex version
  -- constant Virtex_Based : boolean := not Virtex4_Based and not Virtex2_Based;

  constant Virtex4_Based : boolean := equalIgnoreCase(C_FAMILY, "virtex4");

  constant Virtex_Based : boolean := not Virtex4_Based;

  -- MDM signals
  signal tdi     : std_logic;
  signal reset   : std_logic;
  signal update  : std_logic;
  signal capture : std_logic;
  signal shift   : std_logic;
  signal sel     : std_logic;
  signal drck    : std_logic;
  signal drck_i  : std_logic;
  signal tdo     : std_logic;

  signal tdo1    : std_logic;
  signal sel1    : std_logic;
  signal drck1_i : std_logic;
  signal drck1   : std_logic;

  attribute period           : string;
  attribute period of drck_i : signal is "80";
  
begin  -- architecture IMP

  -- Connect USER1 signal to external ports
  tdo1 <= bscan_tdo1;

  bscan_drck1  <= drck1;
  bscan_sel1   <= sel1;
  bscan_tdi    <= tdi;
  bscan_reset  <= reset;
  bscan_shift  <= shift;
  bscan_update <= update;
  bscan_capture <= capture;
  
  Using_Virtex : if (Virtex_Based) generate
    BSCAN_VIRTEX_I : BSCAN_VIRTEX
      port map (
        TDO1   => tdo1,                 -- [in  std_logic]
        TDO2   => tdo,                  -- [in  std_logic]
        UPDATE => update,               -- [out std_logic]
        SHIFT  => shift,                -- [out std_logic]
        RESET  => reset,                -- [out std_logic]
        TDI    => tdi,                  -- [out std_logic]
        SEL1   => sel1,                 -- [out std_logic]
        DRCK1  => drck1_i,              -- [out std_logic]
        SEL2   => sel,                  -- [out std_logic]
        DRCK2  => drck_i);              -- [out std_logic]

    capture <= '0';               -- Ground unconnected pin
    
  end generate Using_Virtex;

  -- The only difference between BSCAN_VIRTEX and BSCAN_VIRTEX2
  -- is the addition of the CAPTURE output which is being left open
  --
  -- Using_Virtex2 : if (Virtex2_Based) generate
  --   BSCAN_VIRTEX2_I : BSCAN_VIRTEX2
  --     port map (
  --       TDO1    => bscan_tdo1,          -- [in  std_logic]
  --       TDO2    => tdo,                 -- [in  std_logic]
  --       UPDATE  => update,              -- [out std_logic]
  --       SHIFT   => shift,               -- [out std_logic]
  --       RESET   => reset,               -- [out std_logic]
  --       TDI     => tdi,                 -- [out std_logic]
  --       SEL1    => bscan_sel1,          -- [out std_logic]
  --       DRCK1   => bscan_drck1,         -- [out std_logic]
  --       SEL2    => sel,                 -- [out std_logic]
  --       DRCK2   => drck_i,              -- [out std_logic]
  --       CAPTURE => capture);            -- [out std_logic]
  -- 
  -- end generate Using_Virtex2;

  Using_Virtex4 : if (Virtex4_Based) generate
    BSCAN_VIRTEX4_I : BSCAN_VIRTEX4
      generic map (
        JTAG_CHAIN => 1)
      port map (
        TDO    => tdo,                  -- [in  std_logic]
        UPDATE => update,               -- [out std_logic]
        SHIFT  => shift,                -- [out std_logic]
        RESET  => reset,                -- [out std_logic]
        TDI    => tdi,                  -- [out std_logic]
        SEL    => sel,                  -- [out std_logic]
        DRCK   => drck_i,               -- [out std_logic]
        CAPTURE => capture);            -- [out std_logic]

    -- Ground signals pretending to be CHAIN 1
    -- This does not actually use CHAIN 1
    sel1 <= '0';
    drck1_i <= '0';

    -- tdo1 is unused

  end generate Using_Virtex4;

  BUFG_DRCK1 : BUFG
    port map (
      O => drck1,                       -- [out std_logic]
      I => drck1_i);                    -- [in std_logic]
  
  BUFG_DRCK2 : BUFG
    port map (
      O => drck,
      I => drck_i);

  MDM_Core_I1 : MDM_Core
    generic map (
      C_BASEADDR      => C_BASEADDR,         -- [std_logic_vector(0 to 31)]
      C_HIGHADDR      => C_HIGHADDR,         -- [std_logic_vector(0 to 31)]
      C_MB_DBG_PORTS  => C_MB_DBG_PORTS,     -- [integer]
      C_USE_UART      => C_USE_UART,         -- [integer]
      C_UART_WIDTH    => C_UART_WIDTH,       -- [integer]
      C_USE_FSL       => C_WRITE_FSL_PORTS,  -- [integer]
      C_FSL_DATA_SIZE => C_FSL_DATA_SIZE)    -- [integer]
    port map (
      -- Global signals
      OPB_Clk         => OPB_Clk,            -- [in  std_logic]
      OPB_Rst         => OPB_Rst,            -- [in  std_logic]

      Interrupt     => Interrupt,  -- [out std_logic]
      Ext_BRK       => Ext_BRK,  -- [out std_logic]
      Ext_NM_BRK    => Ext_NM_BRK,  -- [out std_logic]
      Debug_SYS_Rst => Debug_SYS_Rst,  -- [out std_logic]
      Debug_Rst     => Debug_Rst,  -- [out std_logic]

      -- OPB signals
      OPB_ABus    => OPB_ABus,  -- [in  std_logic_vector(0 to 31)]
      OPB_BE      => OPB_BE,  -- [in  std_logic_vector(0 to 3)]
      OPB_RNW     => OPB_RNW,  -- [in  std_logic]
      OPB_select  => OPB_select,  -- [in  std_logic]
      OPB_seqAddr => OPB_seqAddr,  -- [in  std_logic]
      OPB_DBus    => OPB_DBus,  -- [in  std_logic_vector(0 to 31)]

      MDM_DBus    => MDM_DBus,  -- [out std_logic_vector(0 to 31)]
      MDM_errAck  => MDM_errAck,  -- [out std_logic]
      MDM_retry   => MDM_retry,  -- [out std_logic]
      MDM_toutSup => MDM_toutSup,  -- [out std_logic]
      MDM_xferAck => MDM_xferAck,  -- [out std_logic]

      -- JTAG signals
      TDI    => tdi,  -- [in  std_logic]
      RESET  => reset,  -- [in  std_logic]
      UPDATE => update,  -- [in  std_logic]
      SHIFT  => shift,  -- [in  std_logic]
      SEL    => sel,  -- [in  std_logic]
      DRCK   => drck,  -- [in  std_logic]
      TDO    => tdo,  -- [out std_logic]

      -- MicroBlaze Debug Signals
      Dbg_Clk_0     => Dbg_Clk_0,  -- [out std_logic]
      Dbg_TDI_0     => Dbg_TDI_0,  -- [out std_logic]
      Dbg_TDO_0     => Dbg_TDO_0,  -- [in  std_logic]
      Dbg_Reg_En_0  => Dbg_Reg_En_0,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_0 => Dbg_Capture_0,  -- [out std_logic]
      Dbg_Update_0  => Dbg_Update_0,  -- [out std_logic]

      Dbg_Clk_1     => Dbg_Clk_1,  -- [out std_logic]
      Dbg_TDI_1     => Dbg_TDI_1,  -- [out std_logic]
      Dbg_TDO_1     => Dbg_TDO_1,  -- [in  std_logic]
      Dbg_Reg_En_1  => Dbg_Reg_En_1,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_1 => Dbg_Capture_1,  -- [out std_logic]
      Dbg_Update_1  => Dbg_Update_1,  -- [out std_logic]

      Dbg_Clk_2     => Dbg_Clk_2,  -- [out std_logic]
      Dbg_TDI_2     => Dbg_TDI_2,  -- [out std_logic]
      Dbg_TDO_2     => Dbg_TDO_2,  -- [in  std_logic]
      Dbg_Reg_En_2  => Dbg_Reg_En_2,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_2 => Dbg_Capture_2,  -- [out std_logic]
      Dbg_Update_2  => Dbg_Update_2,  -- [out std_logic]

      Dbg_Clk_3     => Dbg_Clk_3,  -- [out std_logic]
      Dbg_TDI_3     => Dbg_TDI_3,  -- [out std_logic]
      Dbg_TDO_3     => Dbg_TDO_3,  -- [in  std_logic]
      Dbg_Reg_En_3  => Dbg_Reg_En_3,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_3 => Dbg_Capture_3,  -- [out std_logic]
      Dbg_Update_3  => Dbg_Update_3,  -- [out std_logic]

      Dbg_Clk_4     => Dbg_Clk_4,  -- [out std_logic]
      Dbg_TDI_4     => Dbg_TDI_4,  -- [out std_logic]
      Dbg_TDO_4     => Dbg_TDO_4,  -- [in  std_logic]
      Dbg_Reg_En_4  => Dbg_Reg_En_4,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_4 => Dbg_Capture_4,  -- [out std_logic]
      Dbg_Update_4  => Dbg_Update_4,  -- [out std_logic]

      Dbg_Clk_5     => Dbg_Clk_5,  -- [out std_logic]
      Dbg_TDI_5     => Dbg_TDI_5,  -- [out std_logic]
      Dbg_TDO_5     => Dbg_TDO_5,  -- [in  std_logic]
      Dbg_Reg_En_5  => Dbg_Reg_En_5,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_5 => Dbg_Capture_5,  -- [out std_logic]
      Dbg_Update_5  => Dbg_Update_5,  -- [out std_logic]

      Dbg_Clk_6     => Dbg_Clk_6,  -- [out std_logic]
      Dbg_TDI_6     => Dbg_TDI_6,  -- [out std_logic]
      Dbg_TDO_6     => Dbg_TDO_6,  -- [in  std_logic]
      Dbg_Reg_En_6  => Dbg_Reg_En_6,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_6 => Dbg_Capture_6,  -- [out std_logic]
      Dbg_Update_6  => Dbg_Update_6,  -- [out std_logic]

      Dbg_Clk_7     => Dbg_Clk_7,  -- [out std_logic]
      Dbg_TDI_7     => Dbg_TDI_7,  -- [out std_logic]
      Dbg_TDO_7     => Dbg_TDO_7,  -- [in  std_logic]
      Dbg_Reg_En_7  => Dbg_Reg_En_7,  -- [out std_logic_vector(0 to 3)]
      Dbg_Capture_7 => Dbg_Capture_7,  -- [out std_logic]
      Dbg_Update_7  => Dbg_Update_7,  -- [out std_logic]

      FSL0_S_Clk     => FSL0_S_Clk,
      FSL0_S_Read    => FSL0_S_Read,
      FSL0_S_Data    => FSL0_S_Data,
      FSL0_S_Control => FSL0_S_Control,
      FSL0_S_Exists  => FSL0_S_Exists,
      FSL0_M_Clk     => FSL0_M_Clk,
      FSL0_M_Write   => FSL0_M_Write,
      FSL0_M_Data    => FSL0_M_Data,
      FSL0_M_Control => FSL0_M_Control,
      FSL0_M_Full    => FSL0_M_Full,

      jtag_clk => open,
      trig     => open,
      data     => open
      );

end architecture IMP;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -