300 lines
18 KiB
VHDL
300 lines
18 KiB
VHDL
|
-- -----------------------------------------------------------------------------
|
||
|
-- Copyright (c) 2014 Benjamin Krill <benjamin@krll.de>
|
||
|
--
|
||
|
-- Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
|
-- of this software and associated documentation files (the "Software"), to deal
|
||
|
-- in the Software without restriction, including without limitation the rights
|
||
|
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
|
-- copies of the Software, and to permit persons to whom the Software is
|
||
|
-- furnished to do so, subject to the following conditions:
|
||
|
--
|
||
|
-- The above copyright notice and this permission notice shall be included in
|
||
|
-- all copies or substantial portions of the Software.
|
||
|
--
|
||
|
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
|
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
|
-- THE SOFTWARE.
|
||
|
-- -----------------------------------------------------------------------------
|
||
|
library ieee;
|
||
|
use ieee.std_logic_1164.all;
|
||
|
use ieee.numeric_std.all;
|
||
|
|
||
|
library soc_system;
|
||
|
use soc_system.all;
|
||
|
|
||
|
entity sockit is
|
||
|
port (
|
||
|
clk : in std_logic;
|
||
|
reset_n : in std_logic;
|
||
|
|
||
|
hps_mem_a : out std_logic_vector(14 downto 0);
|
||
|
hps_mem_ba : out std_logic_vector( 2 downto 0);
|
||
|
hps_mem_ck : out std_logic;
|
||
|
hps_mem_ck_n : out std_logic;
|
||
|
hps_mem_cke : out std_logic;
|
||
|
hps_mem_cs_n : out std_logic;
|
||
|
hps_mem_ras_n : out std_logic;
|
||
|
hps_mem_cas_n : out std_logic;
|
||
|
hps_mem_we_n : out std_logic;
|
||
|
hps_mem_reset_n : out std_logic;
|
||
|
hps_mem_dq : inout std_logic_vector(31 downto 0);
|
||
|
hps_mem_dqs : inout std_logic_vector( 3 downto 0);
|
||
|
hps_mem_dqs_n : inout std_logic_vector( 3 downto 0);
|
||
|
hps_mem_odt : out std_logic;
|
||
|
hps_mem_dm : out std_logic_vector( 3 downto 0);
|
||
|
hps_oct_rzqin : in std_logic;
|
||
|
hps_emac1_inst_tx_clk : out std_logic;
|
||
|
hps_emac1_inst_txd0 : out std_logic;
|
||
|
hps_emac1_inst_txd1 : out std_logic;
|
||
|
hps_emac1_inst_txd2 : out std_logic;
|
||
|
hps_emac1_inst_txd3 : out std_logic;
|
||
|
hps_emac1_inst_rxd0 : in std_logic;
|
||
|
hps_emac1_inst_mdio : inout std_logic;
|
||
|
hps_emac1_inst_mdc : out std_logic;
|
||
|
hps_emac1_inst_rx_ctl : in std_logic;
|
||
|
hps_emac1_inst_tx_ctl : out std_logic;
|
||
|
hps_emac1_inst_rx_clk : in std_logic;
|
||
|
hps_emac1_inst_rxd1 : in std_logic;
|
||
|
hps_emac1_inst_rxd2 : in std_logic;
|
||
|
hps_emac1_inst_rxd3 : in std_logic;
|
||
|
hps_qspi_inst_io0 : inout std_logic;
|
||
|
hps_qspi_inst_io1 : inout std_logic;
|
||
|
hps_qspi_inst_io2 : inout std_logic;
|
||
|
hps_qspi_inst_io3 : inout std_logic;
|
||
|
hps_qspi_inst_ss0 : out std_logic;
|
||
|
hps_qspi_inst_clk : out std_logic;
|
||
|
hps_sdio_inst_cmd : inout std_logic;
|
||
|
hps_sdio_inst_d0 : inout std_logic;
|
||
|
hps_sdio_inst_d1 : inout std_logic;
|
||
|
hps_sdio_inst_clk : out std_logic;
|
||
|
hps_sdio_inst_d2 : inout std_logic;
|
||
|
hps_sdio_inst_d3 : inout std_logic;
|
||
|
hps_usb1_inst_d0 : inout std_logic;
|
||
|
hps_usb1_inst_d1 : inout std_logic;
|
||
|
hps_usb1_inst_d2 : inout std_logic;
|
||
|
hps_usb1_inst_d3 : inout std_logic;
|
||
|
hps_usb1_inst_d4 : inout std_logic;
|
||
|
hps_usb1_inst_d5 : inout std_logic;
|
||
|
hps_usb1_inst_d6 : inout std_logic;
|
||
|
hps_usb1_inst_d7 : inout std_logic;
|
||
|
hps_usb1_inst_clk : in std_logic;
|
||
|
hps_usb1_inst_stp : out std_logic;
|
||
|
hps_usb1_inst_dir : in std_logic;
|
||
|
hps_usb1_inst_nxt : in std_logic;
|
||
|
hps_spim0_inst_clk : out std_logic;
|
||
|
hps_spim0_inst_mosi : out std_logic;
|
||
|
hps_spim0_inst_miso : in std_logic;
|
||
|
hps_spim0_inst_ss0 : out std_logic;
|
||
|
hps_spim1_inst_clk : out std_logic;
|
||
|
hps_spim1_inst_mosi : out std_logic;
|
||
|
hps_spim1_inst_miso : in std_logic;
|
||
|
hps_spim1_inst_ss0 : out std_logic;
|
||
|
hps_uart0_inst_rx : in std_logic;
|
||
|
hps_uart0_inst_tx : out std_logic;
|
||
|
hps_i2c1_inst_sda : inout std_logic;
|
||
|
hps_i2c1_inst_scl : inout std_logic;
|
||
|
hps_gpio_inst_gpio00 : inout std_logic;
|
||
|
hps_gpio_inst_gpio09 : inout std_logic;
|
||
|
hps_gpio_inst_gpio35 : inout std_logic;
|
||
|
hps_gpio_inst_gpio48 : inout std_logic;
|
||
|
hps_gpio_inst_gpio53 : inout std_logic;
|
||
|
hps_gpio_inst_gpio54 : inout std_logic;
|
||
|
hps_gpio_inst_gpio55 : inout std_logic;
|
||
|
hps_gpio_inst_gpio56 : inout std_logic;
|
||
|
hps_gpio_inst_gpio61 : inout std_logic;
|
||
|
hps_gpio_inst_gpio62 : inout std_logic;
|
||
|
|
||
|
--------------------------------------------------------------------------
|
||
|
-- fpga interface
|
||
|
--------------------------------------------------------------------------
|
||
|
clk_100 : in std_logic; -- 2.5v 100 mhz (2nd copy to max)
|
||
|
clk_50 : in std_logic; -- 2.5v 50mhz (2nd copy to max)
|
||
|
clk_top1 : in std_logic; -- 2.5v 156.25 mhz adjustable
|
||
|
clk_bot1 : in std_logic; -- 1.5v 100 mhz ajustable
|
||
|
fpga_reset_n : in std_logic; -- 2.5v nios cpu reset pushbutton
|
||
|
|
||
|
-- silabs clock generator
|
||
|
clkgen_i2c_sclk : out std_logic;
|
||
|
clkgen_i2c_sdat : inout std_logic;
|
||
|
|
||
|
-- user in/out
|
||
|
user_dipsw_fpga : in std_logic_vector(3 downto 0);
|
||
|
user_led_fpga : out std_logic_vector(3 downto 0);
|
||
|
user_pb_fpga : in std_logic_vector(3 downto 0);
|
||
|
irda_rxd : in std_logic; -- irda receive led
|
||
|
fan_ctrl : out std_logic; -- control for fan
|
||
|
|
||
|
-- fpga ddr3
|
||
|
ddr3_fpga_a : out std_logic_vector(14 downto 0); -- sstl15 address
|
||
|
ddr3_fpga_ba : out std_logic_vector( 2 downto 0); -- sstl15 bank address
|
||
|
ddr3_fpga_casn : out std_logic; -- sstl15 column address strobe
|
||
|
ddr3_fpga_cke : out std_logic; -- sstl15 clock enable
|
||
|
ddr3_fpga_clk_n : out std_logic; -- sstl15 diff clock - neg
|
||
|
ddr3_fpga_clk_p : out std_logic; -- sstl15 diff clock - pos
|
||
|
ddr3_fpga_csn : out std_logic; -- sstl15 chip select
|
||
|
ddr3_fpga_dm : out std_logic_vector( 3 downto 0); -- sstl15 data write mask
|
||
|
ddr3_fpga_dq : inout std_logic_vector(31 downto 0); -- sstl15 data bus
|
||
|
ddr3_fpga_dqs_n : inout std_logic_vector( 3 downto 0); -- sstl15 diff data strobe - neg
|
||
|
ddr3_fpga_dqs_p : inout std_logic_vector( 3 downto 0); -- sstl15 diff data strobe - pos
|
||
|
ddr3_fpga_odt : out std_logic; -- sstl15 on-die termination enable
|
||
|
ddr3_fpga_rasn : in std_logic; -- sstl15 row address strobe
|
||
|
ddr3_fpga_resetn : in std_logic; -- sstl15 reset
|
||
|
ddr3_fpga_wen : in std_logic; -- sstl15 write enable
|
||
|
ddr3_fpga_rzq : in std_logic; -- oct_rzqinon-die termination enable
|
||
|
--oct_rdn : in std_logic; -- sstl15 on-die termination enable
|
||
|
--oct_rup : in std_logic; -- sstl15 on-die termination enable
|
||
|
|
||
|
-- temp. sensor
|
||
|
temp_cs_n : out std_logic; -- chip select
|
||
|
temp_sclk : out std_logic; -- slave clock
|
||
|
temp_mosi : out std_logic; -- data out
|
||
|
temp_miso : in std_logic; -- data in
|
||
|
|
||
|
-- vga
|
||
|
vga_clk : out std_logic; -- video clock
|
||
|
vga_hs : out std_logic; -- horizontal synch
|
||
|
vga_vs : out std_logic; -- vertical synch
|
||
|
vga_r : out std_logic_vector( 7 downto 0); -- red
|
||
|
vga_g : out std_logic_vector( 7 downto 0); -- green
|
||
|
vga_b : out std_logic_vector( 7 downto 0); -- blue
|
||
|
vga_blank_n : in std_logic; -- composite blank control
|
||
|
vga_sync_n : in std_logic; -- composite synch control
|
||
|
|
||
|
-- audio
|
||
|
aud_adcdat : in std_logic; -- adc serial data or i2c_sclk
|
||
|
aud_adclrck : in std_logic; -- fddr3e clock
|
||
|
aud_bclk : in std_logic; -- bit clock
|
||
|
aud_dacdat : out std_logic; -- dac serial data
|
||
|
aud_daclrck : inout std_logic; -- fddr3e clock
|
||
|
aud_i2c_sclk : out std_logic;
|
||
|
aud_i2c_sdat : inout std_logic;
|
||
|
aud_mute : out std_logic;
|
||
|
aud_xck : out std_logic;
|
||
|
|
||
|
-- HSMC/HSMA
|
||
|
-- --hsmc_clkin_n : out std_logic_vector( 2 downto 1);
|
||
|
-- hsmc_clkin_p : out std_logic_vector( 2 downto 1);
|
||
|
-- --hsmc_clkout_n : out std_logic_vector( 2 downto 1);
|
||
|
-- hsmc_clkout_p : out std_logic_vector( 2 downto 1);
|
||
|
-- hsmc_clk_in0 : in std_logic;
|
||
|
-- hsmc_clk_out0 : out std_logic;
|
||
|
-- hsmc_d : inout std_logic_vector( 3 downto 0);
|
||
|
-- -- hsmc_xcvr
|
||
|
-- --hsmc_gxb_rx_n : in std_logic_vector( 7 downto 0);
|
||
|
-- hsmc_gxb_rx_p : in std_logic_vector( 7 downto 0);
|
||
|
-- --hsmc_gxb_tx_n : out std_logic_vector( 7 downto 0);
|
||
|
-- hsmc_gxb_tx_p : out std_logic_vector( 7 downto 0);
|
||
|
-- --hsmc_ref_clk_n : in std_logic;
|
||
|
-- hsmc_ref_clk_p : in std_logic;
|
||
|
-- --hsmc_rx_n : in std_logic_vector(16 downto 0);
|
||
|
-- hsmc_rx_p : in std_logic_vector(16 downto 0);
|
||
|
-- hsmc_scl : out std_logic;
|
||
|
-- hsmc_sda : inout std_logic;
|
||
|
-- --hsmc_tx_n : out std_logic_vector(16 downto 0);
|
||
|
-- hsmc_tx_p : out std_logic_vector(16 downto 0);
|
||
|
--
|
||
|
-- qspi flash
|
||
|
fpga_epqc_data : inout std_logic_vector( 3 downto 0); -- flash data
|
||
|
fpga_epqc_dclk : out std_logic; -- data clock
|
||
|
fpga_epqc_ncso : out std_logic -- chip select
|
||
|
);
|
||
|
end sockit;
|
||
|
|
||
|
architecture sockit of sockit is
|
||
|
signal hps_fpga_reset_n : std_logic;
|
||
|
signal fpga_led_i : std_logic_vector(3 downto 0);
|
||
|
begin
|
||
|
soc_0: entity soc_system.soc_system
|
||
|
port map (
|
||
|
clk_clk => clk_bot1,
|
||
|
reset_reset_n => hps_fpga_reset_n,
|
||
|
memory_mem_a => hps_mem_a,
|
||
|
memory_mem_ba => hps_mem_ba,
|
||
|
memory_mem_ck => hps_mem_ck,
|
||
|
memory_mem_ck_n => hps_mem_ck_n,
|
||
|
memory_mem_cke => hps_mem_cke,
|
||
|
memory_mem_cs_n => hps_mem_cs_n,
|
||
|
memory_mem_ras_n => hps_mem_ras_n,
|
||
|
memory_mem_cas_n => hps_mem_cas_n,
|
||
|
memory_mem_we_n => hps_mem_we_n,
|
||
|
memory_mem_reset_n => hps_mem_reset_n,
|
||
|
memory_mem_dq => hps_mem_dq,
|
||
|
memory_mem_dqs => hps_mem_dqs,
|
||
|
memory_mem_dqs_n => hps_mem_dqs_n,
|
||
|
memory_mem_odt => hps_mem_odt,
|
||
|
memory_mem_dm => hps_mem_dm,
|
||
|
memory_oct_rzqin => hps_oct_rzqin,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TX_CLK => hps_emac1_inst_tx_clk,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TXD0 => hps_emac1_inst_txd0,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TXD1 => hps_emac1_inst_txd1,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TXD2 => hps_emac1_inst_txd2,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TXD3 => hps_emac1_inst_txd3,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RXD0 => hps_emac1_inst_rxd0,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_MDIO => hps_emac1_inst_mdio,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_MDC => hps_emac1_inst_mdc,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RX_CTL => hps_emac1_inst_rx_ctl,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_TX_CTL => hps_emac1_inst_tx_ctl,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RX_CLK => hps_emac1_inst_rx_clk,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RXD1 => hps_emac1_inst_rxd1,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RXD2 => hps_emac1_inst_rxd2,
|
||
|
hps_0_hps_io_hps_io_emac1_inst_RXD3 => hps_emac1_inst_rxd3,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_IO0 => hps_qspi_inst_io0,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_IO1 => hps_qspi_inst_io1,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_IO2 => hps_qspi_inst_io2,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_IO3 => hps_qspi_inst_io3,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_SS0 => hps_qspi_inst_ss0,
|
||
|
hps_0_hps_io_hps_io_qspi_inst_CLK => hps_qspi_inst_clk,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_CMD => hps_sdio_inst_cmd,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_D0 => hps_sdio_inst_d0,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_D1 => hps_sdio_inst_d1,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_CLK => hps_sdio_inst_clk,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_D2 => hps_sdio_inst_d2,
|
||
|
hps_0_hps_io_hps_io_sdio_inst_D3 => hps_sdio_inst_d3,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D0 => hps_usb1_inst_d0,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D1 => hps_usb1_inst_d1,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D2 => hps_usb1_inst_d2,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D3 => hps_usb1_inst_d3,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D4 => hps_usb1_inst_d4,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D5 => hps_usb1_inst_d5,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D6 => hps_usb1_inst_d6,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_D7 => hps_usb1_inst_d7,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_CLK => hps_usb1_inst_clk,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_STP => hps_usb1_inst_stp,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_DIR => hps_usb1_inst_dir,
|
||
|
hps_0_hps_io_hps_io_usb1_inst_NXT => hps_usb1_inst_nxt,
|
||
|
hps_0_hps_io_hps_io_spim0_inst_CLK => hps_spim0_inst_clk,
|
||
|
hps_0_hps_io_hps_io_spim0_inst_MOSI => hps_spim0_inst_mosi,
|
||
|
hps_0_hps_io_hps_io_spim0_inst_MISO => hps_spim0_inst_miso,
|
||
|
hps_0_hps_io_hps_io_spim0_inst_SS0 => hps_spim0_inst_ss0,
|
||
|
hps_0_hps_io_hps_io_spim1_inst_CLK => hps_spim1_inst_clk,
|
||
|
hps_0_hps_io_hps_io_spim1_inst_MOSI => hps_spim1_inst_mosi,
|
||
|
hps_0_hps_io_hps_io_spim1_inst_MISO => hps_spim1_inst_miso,
|
||
|
hps_0_hps_io_hps_io_spim1_inst_SS0 => hps_spim1_inst_ss0,
|
||
|
hps_0_hps_io_hps_io_uart0_inst_RX => hps_uart0_inst_rx,
|
||
|
hps_0_hps_io_hps_io_uart0_inst_TX => hps_uart0_inst_tx,
|
||
|
hps_0_hps_io_hps_io_i2c1_inst_SDA => hps_i2c1_inst_sda,
|
||
|
hps_0_hps_io_hps_io_i2c1_inst_SCL => hps_i2c1_inst_scl,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO00 => hps_gpio_inst_gpio00,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO09 => hps_gpio_inst_gpio09,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO35 => hps_gpio_inst_gpio35,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO48 => hps_gpio_inst_gpio48,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO53 => hps_gpio_inst_gpio53,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO54 => hps_gpio_inst_gpio54,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO55 => hps_gpio_inst_gpio55,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO56 => hps_gpio_inst_gpio56,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO61 => hps_gpio_inst_gpio61,
|
||
|
hps_0_hps_io_hps_io_gpio_inst_GPIO62 => hps_gpio_inst_gpio62,
|
||
|
led_pio_external_connection_in_port => fpga_led_i,
|
||
|
led_pio_external_connection_out_port => fpga_led_i,
|
||
|
dipsw_pio_external_connection_export => user_dipsw_fpga,
|
||
|
button_pio_external_connection_export => user_pb_fpga(1 downto 0),
|
||
|
hps_0_h2f_reset_reset_n => hps_fpga_reset_n,
|
||
|
clock_bridge_65_out_clk_clk => open
|
||
|
);
|
||
|
|
||
|
end sockit;
|