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

📄 usb_new_pck_setup.vhdl

📁 usb rtl code, to fpga or asic
💻 VHDL
字号:
------------------------------------------------------------------------------------
---- File >>> usb_new_pck_setup.vhdl 
---- Iden >>>							970613-15:59:12
----
---- Project:           USB Development
---- Customer:          Philips_ITCL
----
---- VHDL Design Unit:  package PCK_SETUP
---- Written by:        Geert Verbruggen
----                    Easics nv
----                    http://www.easics.com      
----                    mailto: vhdl@easics.be
----
---- Creation Date:     Fri, 13 Jun 1997
----
---- Purpose:
----
---- Revision history:
----
------------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

library work;
use work.PCK_GENERAL.all;
use work.PCK_USB.all;
use work.PCK_CONFIGURATION.all;

package PCK_SETUP is

  -- Endpoint Configurations for USB and physical endpoints
  constant USBEndpointSetup: T_USBEndpointSetup := GetUSBEndpointSetup;

  constant USBOutEndpointType: T_USBEPType       := USBEndpointSetup.OUTEP.EndpointType;
  constant USBInEndpointType:  T_USBEPType       := USBEndpointSetup.INEP.EndpointType;
  constant USBOutPhysEP:       T_USBPhysEndpoint := USBEndpointSetup.OUTEP.PhysEndpoint;
  constant USBInPhysEP:        T_USBPhysEndpoint := USBEndpointSetup.INEP.PhysEndpoint;
  constant USBOutHandler:      T_USBHandler      := USBEndpointSetup.OUTEP.Handler;
  constant USBInHandler:       T_USBHandler      := USBEndpointSetup.INEP.Handler;
  constant USBOutBufferSize:   T_USBBufferSize   := USBEndpointSetup.OUTEP.BufferSize;
  constant USBInBufferSize:    T_USBBufferSize   := USBEndpointSetup.INEP.BufferSize;

  -- boolean vectors for pin configuration and register configuration bits
  subtype S_PINConfigArray is booleans(PINCONFIG_Range-1 downto 0);
  subtype S_UCConfigArray is booleans(UCCONFIG_Range-1 downto 0);

  -- Definition of interrupt register
  subtype S_IntrBools is booleans(N_INTR_BITS-1 downto 0);
  subtype S_IntrBits is unsigned(N_INTR_BITS-1 downto 0);
  subtype S_IntrBitsRange is integer range 0 to N_INTR_BITS-1;

  -- Definition of ChipID
  subtype S_ChipID is unsigned(CHIPID_WIDTH-1 downto 0);

  ----------------------------------------------------------------
  -- Embedded Port Status and port Status Change
  ----------------------------------------------------------------

  subtype S_HubPortStatus is T_HubPortStatus_array(0 to N_DOWNSTREAM_PORTS-1);
  subtype S_HubPortStatusChange is T_HubPortStatusChange_array(0 to N_DOWNSTREAM_PORTS-1);
  subtype S_EmbPortStatus is T_EmbPortStatus_array(0 to N_EMBEDDED_PORTS-1);
  subtype S_EmbPortStatusChange is T_EmbPortStatusChange_array(0 to N_EMBEDDED_PORTS-1);

  ------------------------------------------------------------------
  ------------------------------------------------------------------
  --            Endpoint capabilities as a function of USB        --
  --                 device, Endpoint and Direction               --
  ------------------------------------------------------------------
  ------------------------------------------------------------------
  function OutEndpointEnabled(USBDevice: S_USBDeviceRange;
			      USBEndpoint: S_USBEndpointRange;
			      Config: S_ConfigArray) return boolean;

  function InEndpointEnabled(USBDevice: S_USBDeviceRange;
			     USBEndpoint: S_USBEndpointRange;
			     Config: S_ConfigArray) return boolean;

  function OutSetupEnabled(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return boolean;

  function OutIsoEnabled(USBDevice: S_USBDeviceRange;
			 USBEndpoint: S_USBEndpointRange;
			 Config: S_ConfigArray) return boolean;

  function InIsoEnabled(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return boolean;

  function OutEpType(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return T_EndpointType_enum;

  function InEpType(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return T_EndpointType_enum;


  ------------------------------------------------------------------
  ------------------------------------------------------------------
  --            Endpoint properties as a function of USB          --
  --                 device, Endpoint and Direction               --
  ------------------------------------------------------------------
  ------------------------------------------------------------------
  function OutBufferSize(USBDevice: S_USBDeviceRange;
                         USBEndpoint: S_USBEndpointRange;
                         Config: S_ConfigArray) return S_BufferSizeRange;

  function InBufferSize(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return S_BufferSizeRange;

  ------------------------------------------------------------------
  ------------------------------------------------------------------
  --       Mapping from USB Device, Endpoint, Direction to        --
  --                       Physical endpoint                      --
  ------------------------------------------------------------------
  ------------------------------------------------------------------
  function OutPhysEndpoint(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return S_PhysEndpointRange;

  function InPhysEndpoint(USBDevice: S_USBDeviceRange;
			  USBEndpoint: S_USBEndpointRange;
			  Config: S_ConfigArray) return S_PhysEndpointRange;

  function OutHandler(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return S_HandlerRange;

  function InHandler(USBDevice: S_USBDeviceRange;
			  USBEndpoint: S_USBEndpointRange;
			  Config: S_ConfigArray) return S_HandlerRange;

  ------------------------------------------------------------------
  ------------------------------------------------------------------
  --                   Several Constants                          --
  ------------------------------------------------------------------
  ------------------------------------------------------------------


  -- Endpoint Status Byte
  constant EPSTAT_USB_BUFFER: integer := 0;
  constant EPSTAT_UC_BUFFER:  integer := 1;
  constant EPSTAT_B0_SETUP:   integer := 2;
  constant EPSTAT_B1_SETUP:   integer := 3;
  constant EPSTAT_NEXT_PID:   integer := 4;
  constant EPSTAT_B0_FULL:    integer := 5;
  constant EPSTAT_B1_FULL:    integer := 6;
  constant EPSTAT_STALLED:    integer := 7;

  -- Transaction Status Byte
  constant TRSTAT_SUCCES:     integer := 0;
  constant TRSTAT_ERROR_LOW:  integer := 1;
  constant TRSTAT_ERROR_HIGH: integer := 4;
  constant TRSTAT_SETUP:      integer := 5;
  constant TRSTAT_PID:        integer := 6;
  constant TRSTAT_NOT_READ:   integer := 7;

end PCK_SETUP;


package body PCK_SETUP is

  ------------------------------------------------------------------
  --            Endpoint capabilities as a function of USB        --
  --                 device, Endpoint and Direction               --
  ------------------------------------------------------------------

  function OutEndpointEnabled(USBDevice: S_USBDeviceRange;
			      USBEndpoint: S_USBEndpointRange;
			      Config: S_ConfigArray) return boolean is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutEndpointType(EPConfiguration)(USBDevice)(USBEndpoint) /= UNUSED;
  end OutEndpointEnabled;


  function InEndpointEnabled(USBDevice: S_USBDeviceRange;
			     USBEndpoint: S_USBEndpointRange;
			     Config: S_ConfigArray) return boolean is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInEndpointType(EPConfiguration)(USBDevice)(USBEndpoint) /= UNUSED;
  end InEndpointEnabled;


  function OutSetupEnabled(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return boolean is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutEndpointType(EPConfiguration)(USBDevice)(USBEndpoint) = CONTROL;
  end OutSetupEnabled;


  function OutIsoEnabled(USBDevice: S_USBDeviceRange;
			 USBEndpoint: S_USBEndpointRange;
			 Config: S_ConfigArray) return boolean is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutEndpointType(EPConfiguration)(USBDevice)(USBEndpoint) = ISOCHRONOUS;
  end OutIsoEnabled;


  function InIsoEnabled(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return boolean is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInEndpointType(EPConfiguration)(USBDevice)(USBEndpoint) = ISOCHRONOUS;
  end InIsoEnabled;


  function OutEpType(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return T_EndpointType_enum is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutEndpointType(EPConfiguration)(USBDevice)(USBEndpoint);
  end OutEPType;


  function InEpType(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return T_EndpointType_enum is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInEndpointType(EPConfiguration)(USBDevice)(USBEndpoint);
  end InEPType;

  ------------------------------------------------------------------
  --            Endpoint properties as a function of USB          --
  --                 device, Endpoint and Direction               --
  ------------------------------------------------------------------

  function OutBufferSize(USBDevice: S_USBDeviceRange;
			 USBEndpoint: S_USBEndpointRange;
			 Config: S_ConfigArray) return S_BufferSizeRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutBufferSize(EPConfiguration)(USBDevice)(USBEndpoint);
  end OutBufferSize;


  function InBufferSize(USBDevice: S_USBDeviceRange;
			USBEndpoint: S_USBEndpointRange;
			Config: S_ConfigArray) return S_BufferSizeRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInBufferSize(EPConfiguration)(USBDevice)(USBEndpoint);
  end InBufferSize;


  ------------------------------------------------------------------
  --       Mapping from USB Device, Endpoint, Direction to        --
  --                       Physical endpoint                      --
  ------------------------------------------------------------------

  function OutPhysEndpoint(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return S_PhysEndpointRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutPhysEP(EPConfiguration)(USBDevice)(USBEndpoint);
  end OutPhysEndpoint;


  function InPhysEndpoint(USBDevice: S_USBDeviceRange;
			  USBEndpoint: S_USBEndpointRange;
			  Config: S_ConfigArray) return S_PhysEndpointRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInPhysEP(EPConfiguration)(USBDevice)(USBEndpoint);
  end InPhysEndpoint;


  function OutHandler(USBDevice: S_USBDeviceRange;
			   USBEndpoint: S_USBEndpointRange;
			   Config: S_ConfigArray) return S_HandlerRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBOutHandler(EPConfiguration)(USBDevice)(USBEndpoint);
  end OutHandler;


  function InHandler(USBDevice: S_USBDeviceRange;
			  USBEndpoint: S_USBEndpointRange;
			  Config: S_ConfigArray) return S_HandlerRange is
    variable EPConfiguration: S_ConfigurationRange;
  begin
    EPConfiguration := GetConfiguration(Config);
    return USBInHandler(EPConfiguration)(USBDevice)(USBEndpoint);
  end InHandler;


end PCK_SETUP;

⌨️ 快捷键说明

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