OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [VHDL/] [Open8_cfg.vhd] - Rev 258

Go to most recent revision | Compare with Previous | Blame | View Log

-- VHDL units : em_interface
-- Description: Connects all of the components that comprise the ROMEO/JAGM
--               ESAF test stimulus controller
--
-- Revision History
-- Author          Date     Change
------------------ -------- ---------------------------------------------------
-- Seth Henry      04/16/20 Version block added
 
library ieee;
  use ieee.std_logic_1164.all;
 
library work;
  use work.open8_pkg.all;
  use work.open8_cfg.all;
 
entity em_interface is
port(
  -- Master oscillator
  Ext_50M_Osc                : in  std_logic;
  -- Push buttons
  KEY0                       : in  std_logic;
  KEY1                       : in  std_logic;
  -- LED outputs
  LEDS                       : out std_logic_vector(7 downto 0);
  -- Configuration Switches
  DIPSW                      : in  std_logic_vector(3 downto 0);
  -- GPINs (input only)
  GPIN0                      : in  std_logic_vector(1 downto 0);
  GPIN1                      : in  std_logic_vector(1 downto 0);
  GPIN2                      : in  std_logic_vector(2 downto 0);
  -- GPIO
  GPIO0                      : inout std_logic_vector(33 downto 0);
  GPIO1                      : inout std_logic_vector(33 downto 0);
  GPIO2                      : inout std_logic_vector(12 downto 0)
);
end entity;
 
architecture behave of em_interface is
 
  -- I/O mapping aliases
 
  -- Clocks & Resets
  alias  Sys_Clock_50M       is Ext_50M_Osc;
 
  -- External Pushbuttons
  alias  FMSIM_PB_Reset      is GPIN2(0);
  alias  FPGA_PB_Reset       is GPIN2(2);
  alias  DBG_PB              is GPIO2(3);
 
  -- Diagnostic
  alias  JP1_1               is GPIN0(0);
  alias  JP1_3               is GPIN0(1);
 
  alias  JP1_37              is GPIO0(30);
  alias  JP1_38              is GPIO0(31);
  alias  JP1_39              is GPIO0(32);
  alias  JP1_40              is GPIO0(33);
 
  alias  JP2_4               is GPIO1(1);
 
  -- Status LED
  alias  Status_LED          is GPIO2(10);
 
  -- Telemetry Serial
  alias  TM_Tx_Out           is GPIO1(0);
  alias  TM_CTS_In           is GPIN1(1);
 
  -- Vector RX (TS Input)
  alias  Vec_Rx              is GPIN1(0);
 
  -- MAX 7221 SPI Interface
  alias  MX_LDCSn            is GPIO2(9);
  alias  Mx_Clock            is GPIO2(5);
  alias  Mx_Data             is GPIO2(7);
 
  -- SDLC Serial Interface
  alias  SDLC_EM2IF          is GPIO0(18);
  alias  SDLC_Clock          is GPIO0(19);
  alias  SDLC_IF2EM          is GPIO0(20);
 
  -- Relay/Discrete I/O
  alias  EM_Elec_Power       is GPIO2(8);
  alias  EM_Arm_Power        is GPIO0(29);
  alias  EM_Separation       is GPIO0(5);
  alias  EM_Detonate_Cmd_1   is GPIO0(17);
  alias  EM_Detonate_Cmd_2   is GPIO0(9);
  alias  EM_Test_G1          is GPIO0(7);
  alias  EM_Test_G2          is GPIO0(11);
  alias  EM_Test_Mode        is GPIO0(2);
 
  alias  EM_Config_ID_1      is GPIO0(0);
  alias  EM_Config_ID_2      is GPIO0(4);
  alias  EM_Config_ID_3      is GPIO0(8);
  alias  EM_Spare_1          is GPIO0(1);
  alias  EM_Int_Impact       is GPIO0(3);
  alias  EM_FPGA_POR_Reset   is GPIO0(6);
  alias  EM_PIC_POR_Reset    is GPIO0(10);
  alias  EM_Spare_Rly        is GPIO0(12);
 
  alias  EM_Accel_PDM        is GPIO2(11);
 
  -- Unused EM signals
  alias  EM_TXD_TST          is GPIO0(13);
  alias  EM_Aux_In_1         is GPIO0(14);
  alias  EM_Aux_Out_1        is GPIO0(15);
  alias  EM_RCV_TST          is GPIO0(16);
 
  -- PC FM Simulator IF          (NANO)
  alias  PC_Contact          is GPIO0(26);
  alias  PC_EM2FM            is GPIO0(27);
  alias  PC_FM2EM            is GPIO0(28);
  alias  PC_Fire_Out         is GPIO0(21);
 
  -- MC FM Simulator IF          (NANO)
  alias  MC_Contact          is GPIO0(23);
  alias  MC_EM2FM            is GPIO0(24);
  alias  MC_FM2EM            is GPIO0(25);
  alias  MC_Fire_Out         is GPIO0(22);
 
  -- NI DIO
  alias  NI_P0_0             is GPIO1(17);
  alias  NI_P0_1             is GPIO1(2);
  alias  NI_P0_2             is GPIO1(15);
  alias  NI_P0_3             is GPIO1(4);
  alias  NI_P0_4             is GPIO1(13);
  alias  NI_P0_5             is GPIO1(6);
  alias  NI_P0_6             is GPIO1(11);
  alias  NI_P0_7             is GPIO1(8);
 
  alias  NI_P1_0             is GPIO1(9);
  alias  NI_P1_1             is GPIO1(10);
  alias  NI_P1_2             is GPIO1(7);
  alias  NI_P1_3             is GPIO1(12);
  alias  NI_P1_4             is GPIO1(5);
  alias  NI_P1_5             is GPIO1(14);
  alias  NI_P1_6             is GPIO1(3);
  alias  NI_P1_7             is GPIO1(16);
 
  alias  NI_P2_0             is GPIO1(33);
  alias  NI_P2_1             is GPIO1(18);
  alias  NI_P2_2             is GPIO1(31);
  alias  NI_P2_3             is GPIO1(20);
  alias  NI_P2_4             is GPIO1(29);
  alias  NI_P2_5             is GPIO1(22);
  alias  NI_P2_6             is GPIO1(27);
  alias  NI_P2_7             is GPIO1(20);
 
  alias  NI_P3_0             is GPIO1(25);
  alias  NI_P3_1             is GPIO1(26);
  alias  NI_P3_2             is GPIO1(23);
  alias  NI_P3_3             is GPIO1(28);
  alias  NI_P3_4             is GPIO1(21);
  alias  NI_P3_5             is GPIO1(30);
  alias  NI_P3_6             is GPIO1(19);
  alias  NI_P3_7             is GPIO1(32);
 
  -- Internal mapping signals
 
  signal Sys_Async_Reset     : std_logic;
 
  signal Ext_Switches        : DATA_TYPE := x"00";
  signal CPU_Flags           : EXT_GP_FLAGS := "00000";
 
  signal BAR_LED             : DATA_TYPE := x"00";
 
  signal Vec_Req             : std_logic := '0';
  signal Vec_Index           : std_logic_vector(5 downto 0) := "000000";
  signal Vec_Data            : std_logic_vector(15 downto 0 ) := x"0000";
 
begin
 
  Reset_Input_proc: process( Sys_Clock_50M, FPGA_PB_Reset, NI_P0_7 )
  begin
    if( FPGA_PB_Reset = '0' or NI_P0_7 = '1' )then
      Sys_Async_Reset        <= '0';
    elsif( rising_edge( Sys_Clock_50M ) )then
      Sys_Async_Reset        <= '1';
    end if;
  end process;
 
  Vec_Req                    <= NI_P0_6;
 
  Vec_Index                  <= NI_P0_5 & NI_P0_4 & NI_P0_3 &
                                NI_P0_2 & NI_P0_1 & NI_P0_0;
 
  Vec_Data                   <= NI_P2_7 & NI_P2_6 & NI_P2_5 & NI_P2_4 &
                                NI_P2_3 & NI_P2_2 & NI_P2_1 & NI_P2_0 &
                                NI_P1_7 & NI_P1_6 & NI_P1_5 & NI_P1_4 &
                                NI_P1_3 & NI_P1_2 & NI_P1_1 & NI_P1_0;
 
  NI_P3_0                    <= BAR_LED(0);
  NI_P3_1                    <= BAR_LED(1);
  NI_P3_2                    <= BAR_LED(2);
  NI_P3_3                    <= BAR_LED(3);
  NI_P3_4                    <= BAR_LED(4);
  NI_P3_5                    <= BAR_LED(5);
  NI_P3_6                    <= BAR_LED(6);
  NI_P3_7                    <= BAR_LED(7);
 
  LEDS                       <= BAR_LED;
 
  Ext_Switches               <= DIPSW & KEY1 & KEY0 & DBG_PB & FMSIM_PB_Reset;
 
  JP1_37                     <= CPU_Flags(EXT_ISR);
  JP1_38                     <= CPU_Flags(EXT_GP5);
  JP1_39                     <= CPU_Flags(EXT_GP6);
  JP1_40                     <= CPU_Flags(EXT_GP7);
 
  U_CORE : entity work.em_core
  port map(
    Sys_Async_Reset          => Sys_Async_Reset,
    Sys_Clock_50M            => Sys_Clock_50M,
 
    -- Switches
    Ext_Switches             => Ext_Switches,
 
    -- LEDS
    BAR_LED                  => BAR_LED,
    Status_LED               => Status_LED,
 
    -- CPU Flags
    CPU_Flags                => CPU_Flags,
 
    -- Telemetry Serial
    TM_Tx_Out                => TM_Tx_Out,
    TM_CTS_In                => TM_CTS_In,
 
    -- MAX 7221 SPI Interface
    MX_LDCSn                 => MX_LDCSn,
    Mx_Clock                 => Mx_Clock,
    Mx_Data                  => Mx_Data,
 
    -- Vector RX (Aux TS Input)
    Vec_Req                  => Vec_Req,
    Vec_Index                => Vec_Index,
    Vec_Data                 => Vec_Data,
    Vec_Rx                   => Vec_Rx,
 
    -- SDLC Serial Interface
    SDLC_EM2IF               => SDLC_EM2IF,
    SDLC_Clock               => SDLC_Clock,
    SDLC_IF2EM               => SDLC_IF2EM,
 
    -- Relay/Discrete I/O
    EM_Elec_Power            => EM_Elec_Power,
    EM_Arm_Power             => EM_Arm_Power,
    EM_Separation            => EM_Separation,
    EM_Detonate_Cmd_1        => EM_Detonate_Cmd_1,
    EM_Detonate_Cmd_2        => EM_Detonate_Cmd_2,
    EM_Test_G1               => EM_Test_G1,
    EM_Test_G2               => EM_Test_G2,
    EM_Test_Mode             => EM_Test_Mode,
 
    EM_Config_ID_1           => EM_Config_ID_1,
    EM_Config_ID_2           => EM_Config_ID_2,
    EM_Config_ID_3           => EM_Config_ID_3,
    EM_Spare_1               => EM_Spare_1,
    EM_Int_Impact            => EM_Int_Impact,
    EM_FPGA_POR_Reset        => EM_FPGA_POR_Reset,
    EM_PIC_POR_Reset         => EM_PIC_POR_Reset,
    EM_Spare_Rly             => EM_Spare_Rly,
 
    EM_Accel_PDM             => EM_Accel_PDM,
 
    -- PC FM Simulator IF
    PC_Contact               => PC_Contact,
    PC_EM2FM                 => PC_EM2FM,
    PC_FM2EM                 => PC_FM2EM,
    PC_Fire_Out              => PC_Fire_Out,
 
    -- MC FM Simulator IF
    MC_Contact               => MC_Contact,
    MC_EM2FM                 => MC_EM2FM,
    MC_FM2EM                 => MC_FM2EM,
    MC_Fire_Out              => MC_Fire_Out
  );
 
end architecture;

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.