Initial commit
This commit is contained in:
		| @@ -0,0 +1,75 @@ | ||||
| library ieee ; | ||||
| use ieee.std_logic_1164.all; | ||||
|  | ||||
| package components is | ||||
|  | ||||
|   -- Yosys wrapper components | ||||
|  | ||||
|   component EHXPLLL | ||||
|   generic | ||||
|   ( | ||||
|     CLKI_DIV         : integer := 1; | ||||
|     CLKFB_DIV        : integer := 1; | ||||
|     CLKOP_DIV        : integer := 8; | ||||
|     CLKOS_DIV        : integer := 8; | ||||
|     CLKOS2_DIV       : integer := 8; | ||||
|     CLKOS3_DIV       : integer := 8; | ||||
|     CLKOP_ENABLE     : string  := "ENABLED"; | ||||
|     CLKOS_ENABLE     : string  := "DISABLED"; | ||||
|     CLKOS2_ENABLE    : string  := "DISABLED"; | ||||
|     CLKOS3_ENABLE    : string  := "DISABLED"; | ||||
|     CLKOP_CPHASE     : integer := 0; | ||||
|     CLKOS_CPHASE     : integer := 0; | ||||
|     CLKOS2_CPHASE    : integer := 0; | ||||
|     CLKOS3_CPHASE    : integer := 0; | ||||
|     CLKOP_FPHASE     : integer := 0; | ||||
|     CLKOS_FPHASE     : integer := 0; | ||||
|     CLKOS2_FPHASE    : integer := 0; | ||||
|     CLKOS3_FPHASE    : integer := 0; | ||||
|     FEEDBK_PATH      : string  := "CLKOP"; | ||||
|     CLKOP_TRIM_POL   : string  := "RISING"; | ||||
|     CLKOP_TRIM_DELAY : integer := 0; | ||||
|     CLKOS_TRIM_POL   : string  := "RISING"; | ||||
|     CLKOS_TRIM_DELAY : integer := 0; | ||||
|     OUTDIVIDER_MUXA  : string  := "DIVA"; | ||||
|     OUTDIVIDER_MUXB  : string  := "DIVB"; | ||||
|     OUTDIVIDER_MUXC  : string  := "DIVC"; | ||||
|     OUTDIVIDER_MUXD  : string  := "DIVD"; | ||||
|     PLL_LOCK_MODE    : integer := 0; | ||||
|     PLL_LOCK_DELAY   : integer := 200; | ||||
|     STDBY_ENABLE     : string  := "DISABLED"; | ||||
|     REFIN_RESET      : string  := "DISABLED"; | ||||
|     SYNC_ENABLE      : string  := "DISABLED"; | ||||
|     INT_LOCK_STICKY  : string  := "ENABLED"; | ||||
|     DPHASE_SOURCE    : string  := "DISABLED"; | ||||
|     PLLRST_ENA       : string  := "DISABLED"; | ||||
|     INTFB_WAKE       : string  := "DISABLED" | ||||
|   ); | ||||
|   port | ||||
|   ( | ||||
|     CLKI         : IN  std_logic := 'X'; | ||||
|     CLKFB        : IN  std_logic := 'X'; | ||||
|     RST          : IN  std_logic := 'X'; | ||||
|     STDBY        : IN  std_logic := 'X'; | ||||
|     PLLWAKESYNC  : IN  std_logic := 'X'; | ||||
|     PHASESEL1    : IN  std_logic := 'X'; | ||||
|     PHASESEL0    : IN  std_logic := 'X'; | ||||
|     PHASEDIR     : IN  std_logic := 'X'; | ||||
|     PHASESTEP    : IN  std_logic := 'X'; | ||||
|     PHASELOADREG : IN  std_logic := 'X'; | ||||
|     ENCLKOP      : IN  std_logic := 'X'; | ||||
|     ENCLKOS      : IN  std_logic := 'X'; | ||||
|     ENCLKOS2     : IN  std_logic := 'X'; | ||||
|     ENCLKOS3     : IN  std_logic := 'X'; | ||||
|     CLKOP        : OUT std_logic := 'X'; | ||||
|     CLKOS        : OUT std_logic := 'X'; | ||||
|     CLKOS2       : OUT std_logic := 'X'; | ||||
|     CLKOS3       : OUT std_logic := 'X'; | ||||
|     LOCK         : OUT std_logic := 'X'; | ||||
|     INTLOCK      : OUT std_logic := 'X'; | ||||
|     REFCLK       : OUT std_logic := 'X'; | ||||
|     CLKINTFB     : OUT std_logic := 'X' | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
| end package; | ||||
| @@ -0,0 +1,145 @@ | ||||
| -- ################################################################################################# | ||||
| -- # << NEORV32 - Processor-Internal DMEM for Lattice iCE40 UltraPlus >>                           # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # Memory has a physical size of 64kb (2 x SPRAMs).                                              # | ||||
| -- # Logical size DMEM_SIZE must be less or equal.                                                 # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # BSD 3-Clause License                                                                          # | ||||
| -- #                                                                                               # | ||||
| -- # Copyright (c) 2021, Stephan Nolting. All rights reserved.                                     # | ||||
| -- #                                                                                               # | ||||
| -- # Redistribution and use in source and binary forms, with or without modification, are          # | ||||
| -- # permitted provided that the following conditions are met:                                     # | ||||
| -- #                                                                                               # | ||||
| -- # 1. Redistributions of source code must retain the above copyright notice, this list of        # | ||||
| -- #    conditions and the following disclaimer.                                                   # | ||||
| -- #                                                                                               # | ||||
| -- # 2. Redistributions in binary form must reproduce the above copyright notice, this list of     # | ||||
| -- #    conditions and the following disclaimer in the documentation and/or other materials        # | ||||
| -- #    provided with the distribution.                                                            # | ||||
| -- #                                                                                               # | ||||
| -- # 3. Neither the name of the copyright holder nor the names of its contributors may be used to  # | ||||
| -- #    endorse or promote products derived from this software without specific prior written      # | ||||
| -- #    permission.                                                                                # | ||||
| -- #                                                                                               # | ||||
| -- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS   # | ||||
| -- # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF               # | ||||
| -- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE    # | ||||
| -- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,     # | ||||
| -- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # | ||||
| -- # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED    # | ||||
| -- # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     # | ||||
| -- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED  # | ||||
| -- # OF THE POSSIBILITY OF SUCH DAMAGE.                                                            # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # The NEORV32 Processor - https://github.com/stnolting/neorv32              (c) Stephan Nolting # | ||||
| -- ################################################################################################# | ||||
|  | ||||
| library ieee; | ||||
| use ieee.std_logic_1164.all; | ||||
| use ieee.numeric_std.all; | ||||
|  | ||||
| library neorv32; | ||||
| use neorv32.neorv32_package.all; | ||||
|  | ||||
| library iCE40; | ||||
| use iCE40.components.all; | ||||
|  | ||||
| architecture neorv32_dmem_rtl of neorv32_dmem is | ||||
|  | ||||
|   -- advanced configuration -------------------------------------------------------------------------------- | ||||
|   constant spram_sleep_mode_en_c : boolean := false; -- put DMEM into sleep mode when idle (for low power) | ||||
|   -- ------------------------------------------------------------------------------------------------------- | ||||
|  | ||||
|   -- IO space: module base address -- | ||||
|   constant hi_abb_c : natural := 31; -- high address boundary bit | ||||
|   constant lo_abb_c : natural := index_size_f(64*1024); -- low address boundary bit | ||||
|  | ||||
|   -- local signals -- | ||||
|   signal acc_en : std_ulogic; | ||||
|   signal mem_cs : std_ulogic; | ||||
|   signal rdata  : std_ulogic_vector(31 downto 0); | ||||
|   signal rden   : std_ulogic; | ||||
|  | ||||
|   -- SPRAM signals -- | ||||
|   signal spram_clk   : std_logic; | ||||
|   signal spram_addr  : std_logic_vector(13 downto 0); | ||||
|   signal spram_di_lo : std_logic_vector(15 downto 0); | ||||
|   signal spram_di_hi : std_logic_vector(15 downto 0); | ||||
|   signal spram_do_lo : std_logic_vector(15 downto 0); | ||||
|   signal spram_do_hi : std_logic_vector(15 downto 0); | ||||
|   signal spram_be_lo : std_logic_vector(03 downto 0); | ||||
|   signal spram_be_hi : std_logic_vector(03 downto 0); | ||||
|   signal spram_we    : std_logic; | ||||
|   signal spram_pwr_n : std_logic; | ||||
|   signal spram_cs    : std_logic; | ||||
|  | ||||
| begin | ||||
|  | ||||
|   -- Sanity Checks -------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   assert false report "NEORV32 PROCESSOR CONFIG NOTE: Using iCE40up SPRAM-based DMEM." severity note; | ||||
|   assert not (DMEM_SIZE > 64*1024) report "NEORV32 PROCESSOR CONFIG ERROR: DMEM has a fixed physical size of 64kB. Logical size must be less or equal." severity error; | ||||
|  | ||||
|  | ||||
|   -- Access Control ------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   acc_en <= '1' when (addr_i(hi_abb_c downto lo_abb_c) = DMEM_BASE(hi_abb_c downto lo_abb_c)) else '0'; | ||||
|   mem_cs <= acc_en and (rden_i or wren_i); | ||||
|  | ||||
|  | ||||
|   -- Memory Access -------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   imem_spram_lo_inst : SB_SPRAM256KA | ||||
|   port map ( | ||||
|     ADDRESS    => spram_addr,  -- I | ||||
|     DATAIN     => spram_di_lo, -- I | ||||
|     MASKWREN   => spram_be_lo, -- I | ||||
|     WREN       => spram_we,    -- I | ||||
|     CHIPSELECT => spram_cs,    -- I | ||||
|     CLOCK      => spram_clk,   -- I | ||||
|     STANDBY    => '0',         -- I | ||||
|     SLEEP      => spram_pwr_n, -- I | ||||
|     POWEROFF   => '1',         -- I | ||||
|     DATAOUT    => spram_do_lo  -- O | ||||
|   ); | ||||
|  | ||||
|   imem_spram_hi_inst : SB_SPRAM256KA | ||||
|   port map ( | ||||
|     ADDRESS    => spram_addr,  -- I | ||||
|     DATAIN     => spram_di_hi, -- I | ||||
|     MASKWREN   => spram_be_hi, -- I | ||||
|     WREN       => spram_we,    -- I | ||||
|     CHIPSELECT => spram_cs,    -- I | ||||
|     CLOCK      => spram_clk,   -- I | ||||
|     STANDBY    => '0',         -- I | ||||
|     SLEEP      => spram_pwr_n, -- I | ||||
|     POWEROFF   => '1',         -- I | ||||
|     DATAOUT    => spram_do_hi  -- O | ||||
|   ); | ||||
|  | ||||
|   -- access logic and signal type conversion -- | ||||
|   spram_clk   <= std_logic(clk_i); | ||||
|   spram_addr  <= std_logic_vector(addr_i(13+2 downto 0+2)); | ||||
|   spram_di_lo <= std_logic_vector(data_i(15 downto 00)); | ||||
|   spram_di_hi <= std_logic_vector(data_i(31 downto 16)); | ||||
|   spram_we    <= '1' when ((acc_en and wren_i) = '1') else '0'; -- global write enable | ||||
|   spram_cs    <= std_logic(mem_cs); | ||||
|   spram_be_lo <= std_logic(ben_i(1)) & std_logic(ben_i(1)) & std_logic(ben_i(0)) & std_logic(ben_i(0)); -- low byte write enable | ||||
|   spram_be_hi <= std_logic(ben_i(3)) & std_logic(ben_i(3)) & std_logic(ben_i(2)) & std_logic(ben_i(2)); -- high byte write enable | ||||
|   spram_pwr_n <= '0' when ((spram_sleep_mode_en_c = false) or (mem_cs = '1')) else '1'; -- LP mode disabled or IMEM selected | ||||
|   rdata       <= std_ulogic_vector(spram_do_hi) & std_ulogic_vector(spram_do_lo); | ||||
|  | ||||
|   buffer_ff: process(clk_i) | ||||
|   begin | ||||
|     if rising_edge(clk_i) then | ||||
|       ack_o <= mem_cs; | ||||
|       rden  <= acc_en and rden_i; | ||||
|     end if; | ||||
|   end process buffer_ff; | ||||
|  | ||||
|   -- output gate -- | ||||
|   data_o <= rdata when (rden = '1') else (others => '0'); | ||||
|  | ||||
|  | ||||
| end neorv32_dmem_rtl; | ||||
| @@ -0,0 +1,146 @@ | ||||
| -- ################################################################################################# | ||||
| -- # << NEORV32 - Processor-Internal IMEM for Lattice iCE40 UltraPlus >>                           # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # Memory has a physical size of 64kb (2 x SPRAMs).                                              # | ||||
| -- # Logical size IMEM_SIZE must be less or equal.                                                 # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # BSD 3-Clause License                                                                          # | ||||
| -- #                                                                                               # | ||||
| -- # Copyright (c) 2021, Stephan Nolting. All rights reserved.                                     # | ||||
| -- #                                                                                               # | ||||
| -- # Redistribution and use in source and binary forms, with or without modification, are          # | ||||
| -- # permitted provided that the following conditions are met:                                     # | ||||
| -- #                                                                                               # | ||||
| -- # 1. Redistributions of source code must retain the above copyright notice, this list of        # | ||||
| -- #    conditions and the following disclaimer.                                                   # | ||||
| -- #                                                                                               # | ||||
| -- # 2. Redistributions in binary form must reproduce the above copyright notice, this list of     # | ||||
| -- #    conditions and the following disclaimer in the documentation and/or other materials        # | ||||
| -- #    provided with the distribution.                                                            # | ||||
| -- #                                                                                               # | ||||
| -- # 3. Neither the name of the copyright holder nor the names of its contributors may be used to  # | ||||
| -- #    endorse or promote products derived from this software without specific prior written      # | ||||
| -- #    permission.                                                                                # | ||||
| -- #                                                                                               # | ||||
| -- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS   # | ||||
| -- # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF               # | ||||
| -- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE    # | ||||
| -- # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,     # | ||||
| -- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # | ||||
| -- # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED    # | ||||
| -- # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     # | ||||
| -- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED  # | ||||
| -- # OF THE POSSIBILITY OF SUCH DAMAGE.                                                            # | ||||
| -- # ********************************************************************************************* # | ||||
| -- # The NEORV32 Processor - https://github.com/stnolting/neorv32              (c) Stephan Nolting # | ||||
| -- ################################################################################################# | ||||
|  | ||||
| library ieee; | ||||
| use ieee.std_logic_1164.all; | ||||
| use ieee.numeric_std.all; | ||||
|  | ||||
| library neorv32; | ||||
| use neorv32.neorv32_package.all; | ||||
|  | ||||
| library iCE40; | ||||
| use iCE40.components.all; | ||||
|  | ||||
| architecture neorv32_imem_rtl of neorv32_imem is | ||||
|  | ||||
|   -- advanced configuration -------------------------------------------------------------------------------- | ||||
|   constant spram_sleep_mode_en_c : boolean := false; -- put IMEM into sleep mode when idle (for low power) | ||||
|   -- ------------------------------------------------------------------------------------------------------- | ||||
|  | ||||
|   -- IO space: module base address -- | ||||
|   constant hi_abb_c : natural := 31; -- high address boundary bit | ||||
|   constant lo_abb_c : natural := index_size_f(64*1024); -- low address boundary bit | ||||
|  | ||||
|   -- local signals -- | ||||
|   signal acc_en : std_ulogic; | ||||
|   signal mem_cs : std_ulogic; | ||||
|   signal rdata  : std_ulogic_vector(31 downto 0); | ||||
|   signal rden   : std_ulogic; | ||||
|  | ||||
|   -- SPRAM signals -- | ||||
|   signal spram_clk   : std_logic; | ||||
|   signal spram_addr  : std_logic_vector(13 downto 0); | ||||
|   signal spram_di_lo : std_logic_vector(15 downto 0); | ||||
|   signal spram_di_hi : std_logic_vector(15 downto 0); | ||||
|   signal spram_do_lo : std_logic_vector(15 downto 0); | ||||
|   signal spram_do_hi : std_logic_vector(15 downto 0); | ||||
|   signal spram_be_lo : std_logic_vector(03 downto 0); | ||||
|   signal spram_be_hi : std_logic_vector(03 downto 0); | ||||
|   signal spram_we    : std_logic; | ||||
|   signal spram_pwr_n : std_logic; | ||||
|   signal spram_cs    : std_logic; | ||||
|  | ||||
| begin | ||||
|  | ||||
|   -- Sanity Checks -------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   assert false report "NEORV32 PROCESSOR CONFIG NOTE: Using iCE40up SPRAM-based IMEM." severity note; | ||||
|   assert not (IMEM_AS_IROM = true) report "NEORV32 PROCESSOR CONFIG ERROR: ICE40 Ultra Plus SPRAM cannot be initialized by bitstream!" severity failure; | ||||
|   assert not (IMEM_SIZE > 64*1024) report "NEORV32 PROCESSOR CONFIG ERROR: IMEM has a fixed physical size of 64kB. Logical size must be less or equal." severity error; | ||||
|  | ||||
|  | ||||
|   -- Access Control ------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   acc_en <= '1' when (addr_i(hi_abb_c downto lo_abb_c) = IMEM_BASE(hi_abb_c downto lo_abb_c)) else '0'; | ||||
|   mem_cs <= acc_en and (rden_i or wren_i); | ||||
|  | ||||
|  | ||||
|   -- Memory Access -------------------------------------------------------------------------- | ||||
|   -- ------------------------------------------------------------------------------------------- | ||||
|   imem_spram_lo_inst : SB_SPRAM256KA | ||||
|   port map ( | ||||
|     ADDRESS    => spram_addr,  -- I | ||||
|     DATAIN     => spram_di_lo, -- I | ||||
|     MASKWREN   => spram_be_lo, -- I | ||||
|     WREN       => spram_we,    -- I | ||||
|     CHIPSELECT => spram_cs,    -- I | ||||
|     CLOCK      => spram_clk,   -- I | ||||
|     STANDBY    => '0',         -- I | ||||
|     SLEEP      => spram_pwr_n, -- I | ||||
|     POWEROFF   => '1',         -- I | ||||
|     DATAOUT    => spram_do_lo  -- O | ||||
|   ); | ||||
|  | ||||
|   imem_spram_hi_inst : SB_SPRAM256KA | ||||
|   port map ( | ||||
|     ADDRESS    => spram_addr,  -- I | ||||
|     DATAIN     => spram_di_hi, -- I | ||||
|     MASKWREN   => spram_be_hi, -- I | ||||
|     WREN       => spram_we,    -- I | ||||
|     CHIPSELECT => spram_cs,    -- I | ||||
|     CLOCK      => spram_clk,   -- I | ||||
|     STANDBY    => '0',         -- I | ||||
|     SLEEP      => spram_pwr_n, -- I | ||||
|     POWEROFF   => '1',         -- I | ||||
|     DATAOUT    => spram_do_hi  -- O | ||||
|   ); | ||||
|  | ||||
|   -- access logic and signal type conversion -- | ||||
|   spram_clk   <= std_logic(clk_i); | ||||
|   spram_addr  <= std_logic_vector(addr_i(13+2 downto 0+2)); | ||||
|   spram_di_lo <= std_logic_vector(data_i(15 downto 00)); | ||||
|   spram_di_hi <= std_logic_vector(data_i(31 downto 16)); | ||||
|   spram_we    <= '1' when ((acc_en and wren_i) = '1') else '0'; -- global write enable | ||||
|   spram_cs    <= std_logic(mem_cs); | ||||
|   spram_be_lo <= std_logic(ben_i(1)) & std_logic(ben_i(1)) & std_logic(ben_i(0)) & std_logic(ben_i(0)); -- low byte write enable | ||||
|   spram_be_hi <= std_logic(ben_i(3)) & std_logic(ben_i(3)) & std_logic(ben_i(2)) & std_logic(ben_i(2)); -- high byte write enable | ||||
|   spram_pwr_n <= '0' when ((spram_sleep_mode_en_c = false) or (mem_cs = '1')) else '1'; -- LP mode disabled or IMEM selected | ||||
|   rdata       <= std_ulogic_vector(spram_do_hi) & std_ulogic_vector(spram_do_lo); | ||||
|  | ||||
|   buffer_ff: process(clk_i) | ||||
|   begin | ||||
|     if rising_edge(clk_i) then | ||||
|       ack_o <= mem_cs; | ||||
|       rden  <= acc_en and rden_i; | ||||
|     end if; | ||||
|   end process buffer_ff; | ||||
|  | ||||
|   -- output gate -- | ||||
|   data_o <= rdata when (rden = '1') else (others => '0'); | ||||
|  | ||||
|  | ||||
| end neorv32_imem_rtl; | ||||
| @@ -0,0 +1,126 @@ | ||||
| library ieee ; | ||||
| use ieee.std_logic_1164.all; | ||||
|  | ||||
| package components is | ||||
|  | ||||
|   -- Yosys / IceCube wrapper components | ||||
|  | ||||
|   component SB_GB | ||||
|   port( | ||||
|     GLOBAL_BUFFER_OUTPUT         : out std_logic; | ||||
|     USER_SIGNAL_TO_GLOBAL_BUFFER : in  std_logic | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
|   component SB_HFOSC | ||||
|   generic ( | ||||
|     CLKHF_DIV : string | ||||
|   ); | ||||
|   port ( | ||||
|     CLKHFPU  : in  std_logic; | ||||
|     CLKHFEN  : in  std_logic; | ||||
|     CLKHF    : out std_logic | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
|   component SB_PLL40_CORE is | ||||
|   generic ( | ||||
|     FEEDBACK_PATH                  : string := "SIMPLE"; | ||||
|     DELAY_ADJUSTMENT_MODE_FEEDBACK : string := "FIXED"; | ||||
|     DELAY_ADJUSTMENT_MODE_RELATIVE : string := "FIXED"; | ||||
|     SHIFTREG_DIV_MODE              : std_logic := '0'; | ||||
|     FDA_FEEDBACK                   : std_logic_vector(3 downto 0) := x"0"; | ||||
|     FDA_RELATIVE                   : std_logic_vector(3 downto 0) := x"0"; | ||||
|     PLLOUT_SELECT                  : string := "GENCLK"; | ||||
|     DIVR                           : std_logic_vector(3 downto 0) := x"0"; | ||||
|     DIVF                           : std_logic_vector(6 downto 0) := "0000000"; | ||||
|     DIVQ                           : std_logic_vector(2 downto 0) := "000"; | ||||
|     FILTER_RANGE                   : std_logic_vector(2 downto 0) := "000"; | ||||
|     ENABLE_ICEGATE                 : bit := '0'; | ||||
|     TEST_MODE                      : bit := '0'; | ||||
|     EXTERNAL_DIVIDE_FACTOR         : integer := 1 | ||||
|   ); | ||||
|   port ( | ||||
|     REFERENCECLK    : in  std_logic; | ||||
|     PLLOUTCORE      : out std_logic; | ||||
|     PLLOUTGLOBAL    : out std_logic; | ||||
|     EXTFEEDBACK     : in  std_logic; | ||||
|     DYNAMICDELAY    : in  std_logic_vector(7 downto 0); | ||||
|     LOCK            : out std_logic; | ||||
|     BYPASS          : in  std_logic; | ||||
|     RESETB          : in  std_logic; | ||||
|     LATCHINPUTVALUE : in  std_logic; | ||||
|     SDO             : out std_logic; | ||||
|     SDI             : in  std_logic; | ||||
|     SCLK            : in  std_logic | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
|   component SB_PLL40_PAD | ||||
|   generic ( | ||||
|     FEEDBACK_PATH                   : string := "SIMPLE"; | ||||
|     DELAY_ADJUSTMENT_MODE_FEEDBACK  : string := "FIXED"; | ||||
|     DELAY_ADJUSTMENT_MODE_RELATIVE  : string := "FIXED"; | ||||
|     SHIFTREG_DIV_MODE               : bit_vector(1 downto 0) := "00"; | ||||
|     FDA_FEEDBACK                    : bit_vector(3 downto 0) := "0000"; | ||||
|     FDA_RELATIVE                    : bit_vector(3 downto 0) := "0000"; | ||||
|     PLLOUT_SELECT                   : string := "GENCLK"; | ||||
|     DIVR                            : bit_vector(3 downto 0) := x"0"; | ||||
|     DIVF                            : bit_vector(6 downto 0) := "0000000"; | ||||
|     DIVQ                            : bit_vector(2 downto 0) := "000"; | ||||
|     FILTER_RANGE                    : bit_vector(2 downto 0) := "000"; | ||||
|     ENABLE_ICEGATE                  : bit := '0'; | ||||
|     TEST_MODE                       : bit := '0'; | ||||
|     EXTERNAL_DIVIDE_FACTOR          : integer := 1 | ||||
|   ); | ||||
|   port ( | ||||
|     PACKAGEPIN      : in  std_logic; | ||||
|     PLLOUTCORE      : out std_logic; | ||||
|     PLLOUTGLOBAL    : out std_logic; | ||||
|     EXTFEEDBACK     : in  std_logic; | ||||
|     DYNAMICDELAY    : in  std_logic_vector(7 downto 0); | ||||
|     LOCK            : out std_logic; | ||||
|     BYPASS          : in  std_logic; | ||||
|     RESETB          : in  std_logic; | ||||
|     LATCHINPUTVALUE : in  std_logic; | ||||
|     SDO             : out std_logic; | ||||
|     SDI             : in  std_logic; | ||||
|     SCLK            : in  std_logic | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
|   component SB_RGBA_DRV | ||||
|   generic ( | ||||
|     CURRENT_MODE : string := "0b0"; | ||||
|     RGB0_CURRENT : string := "0b000000"; | ||||
|     RGB1_CURRENT : string := "0b000000"; | ||||
|     RGB2_CURRENT : string := "0b000000" | ||||
|   ); | ||||
|   port ( | ||||
|     RGB0PWM  : in  std_logic; | ||||
|     RGB1PWM  : in  std_logic; | ||||
|     RGB2PWM  : in  std_logic; | ||||
|     CURREN   : in  std_logic; | ||||
|     RGBLEDEN : in  std_logic; | ||||
|     RGB0     : out std_logic; | ||||
|     RGB1     : out std_logic; | ||||
|     RGB2     : out std_logic | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
|   component SB_SPRAM256KA | ||||
|   port ( | ||||
|     ADDRESS    : in std_logic_vector(13 downto 0); | ||||
|     DATAIN     : in std_logic_vector(15 downto 0); | ||||
|     MASKWREN   : in std_logic_vector(3 downto 0); | ||||
|     WREN       : in std_logic; | ||||
|     CHIPSELECT : in std_logic; | ||||
|     CLOCK      : in std_logic; | ||||
|     STANDBY    : in std_logic; | ||||
|     SLEEP      : in std_logic; | ||||
|     POWEROFF   : in std_logic; | ||||
|     DATAOUT    : out std_logic_vector(15 downto 0) | ||||
|   ); | ||||
|   end component; | ||||
|  | ||||
| end package; | ||||
		Reference in New Issue
	
	Block a user