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

Subversion Repositories iota_pow_vhdl

[/] [iota_pow_vhdl/] [trunk/] [vhdl_altera_de1/] [de1.vhd] - Diff between revs 4 and 7

Only display areas with differences | Details | Blame | View Log

Rev 4 Rev 7
-- IOTA Pearl Diver VHDL Port
-- IOTA Pearl Diver VHDL Port
--
--
-- Written 2018 by Thomas Pototschnig <microengineer18@gmail.com>
-- 2018 by Thomas Pototschnig <microengineer18@gmail.com,
--
-- http://microengineer.eu
-- This source code is currently licensed under
-- discord: pmaxuw#8292
-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
--
-- 
-- Permission is hereby granted, free of charge, to any person obtaining
-- http://www.microengineer.eu
-- a copy of this software and associated documentation files (the
-- 
-- "Software"), to deal in the Software without restriction, including
-- If you like my project please consider a donation to
-- without limitation the rights to use, copy, modify, merge, publish,
--
-- distribute, sublicense, and/or sell copies of the Software, and to
-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY
-- permit persons to whom the Software is furnished to do so, subject to
--
-- the following conditions:
-- As soon as donations reach 1000MIOTA, everything will become
-- 
-- GPL and open for any use - commercial included.
-- 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 SOFTWAR
 
 
library IEEE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
 
entity de1 is
entity de1 is
        port (
        port (
--              ////////////////////    Clock Input             ////////////////////     
--              ////////////////////    Clock Input             ////////////////////     
                CLOCK_24 : in std_logic_vector (1 downto 0);
                CLOCK_24 : in std_logic_vector (1 downto 0);
                CLOCK_27 : in std_logic_vector (1 downto 0);
                CLOCK_27 : in std_logic_vector (1 downto 0);
                CLOCK_50 : in std_logic;
                CLOCK_50 : in std_logic;
                EXT_CLOCK : in std_logic;
                EXT_CLOCK : in std_logic;
--              ////////////////////    Push Button             ////////////////////
--              ////////////////////    Push Button             ////////////////////
                KEY : in std_logic_vector(3 downto 0);
                KEY : in std_logic_vector(3 downto 0);
--              ////////////////////    DPDT Switch             ////////////////////
--              ////////////////////    DPDT Switch             ////////////////////
                SW : in std_logic_vector (9 downto 0);
                SW : in std_logic_vector (9 downto 0);
--              ////////////////////    7-SEG Dispaly   ////////////////////
--              ////////////////////    7-SEG Dispaly   ////////////////////
                HEX0 : out std_logic_vector (6 downto 0);
                HEX0 : out std_logic_vector (6 downto 0);
                HEX1 : out std_logic_vector (6 downto 0);
                HEX1 : out std_logic_vector (6 downto 0);
                HEX2 : out std_logic_vector (6 downto 0);
                HEX2 : out std_logic_vector (6 downto 0);
                HEX3 : out std_logic_vector (6 downto 0);
                HEX3 : out std_logic_vector (6 downto 0);
--              ////////////////////////        LED             ////////////////////////
--              ////////////////////////        LED             ////////////////////////
                LEDG : out std_logic_vector (7 downto 0);
                LEDG : out std_logic_vector (7 downto 0);
                LEDR : out std_logic_vector (9 downto 0);
                LEDR : out std_logic_vector (9 downto 0);
--              ////////////////////////        UART    ////////////////////////
--              ////////////////////////        UART    ////////////////////////
                UART_TXD : out std_logic;
                UART_TXD : out std_logic;
                UART_RXD : in std_logic;
                UART_RXD : in std_logic;
--              /////////////////////   SDRAM Interface         ////////////////
--              /////////////////////   SDRAM Interface         ////////////////
                DRAM_DQ : inout std_logic_vector (15 downto 0);
                DRAM_DQ : inout std_logic_vector (15 downto 0);
                DRAM_ADDR : out std_logic_vector (11 downto 0);
                DRAM_ADDR : out std_logic_vector (11 downto 0);
                DRAM_LDQM : out std_logic;
                DRAM_LDQM : out std_logic;
                DRAM_UDQM : out std_logic;
                DRAM_UDQM : out std_logic;
                DRAM_WE_N : out std_logic;
                DRAM_WE_N : out std_logic;
                DRAM_CAS_N : out std_logic;
                DRAM_CAS_N : out std_logic;
                DRAM_RAS_N : out std_logic;
                DRAM_RAS_N : out std_logic;
                DRAM_CS_N : out std_logic;
                DRAM_CS_N : out std_logic;
                DRAM_BA_0 : out std_logic;
                DRAM_BA_0 : out std_logic;
                DRAM_BA_1 : out std_logic;
                DRAM_BA_1 : out std_logic;
                DRAM_CLK : out std_logic;
                DRAM_CLK : out std_logic;
                DRAM_CKE : out std_logic;
                DRAM_CKE : out std_logic;
--              ////////////////////    Flash Interface         ////////////////
--              ////////////////////    Flash Interface         ////////////////
                FL_DQ : inout std_logic_vector (7 downto 0);
                FL_DQ : inout std_logic_vector (7 downto 0);
                FL_ADDR : out std_logic_vector (21 downto 0);
                FL_ADDR : out std_logic_vector (21 downto 0);
                FL_WE_N : out std_logic;
                FL_WE_N : out std_logic;
                FL_RST_N : out std_logic;
                FL_RST_N : out std_logic;
                FL_OE_N : out std_logic;
                FL_OE_N : out std_logic;
                FL_CE_N : out std_logic;
                FL_CE_N : out std_logic;
--              ////////////////////    SRAM Interface          ////////////////
--              ////////////////////    SRAM Interface          ////////////////
                SRAM_DQ : inout std_logic_vector (15 downto 0);
                SRAM_DQ : inout std_logic_vector (15 downto 0);
                SRAM_ADDR : out std_logic_vector (17 downto 0);
                SRAM_ADDR : out std_logic_vector (17 downto 0);
                SRAM_UB_N : out std_logic;
                SRAM_UB_N : out std_logic;
                SRAM_LB_N : out std_logic;
                SRAM_LB_N : out std_logic;
                SRAM_WE_N : out std_logic;
                SRAM_WE_N : out std_logic;
                SRAM_CE_N : out std_logic;
                SRAM_CE_N : out std_logic;
                SRAM_OE_N : out std_logic;
                SRAM_OE_N : out std_logic;
--              ////////////////////    SD_Card Interface       ////////////////
--              ////////////////////    SD_Card Interface       ////////////////
                SD_DAT : inout std_logic;
                SD_DAT : inout std_logic;
                SD_DAT3 : inout std_logic;
                SD_DAT3 : inout std_logic;
                SD_CMD : inout std_logic;
                SD_CMD : inout std_logic;
                SD_CLK : out std_logic;
                SD_CLK : out std_logic;
--              ////////////////////    USB JTAG link   ////////////////////
--              ////////////////////    USB JTAG link   ////////////////////
                TDI : in std_logic;
                TDI : in std_logic;
                TCK : in std_logic;
                TCK : in std_logic;
                TCS : in std_logic;
                TCS : in std_logic;
            TDO : out std_logic;
            TDO : out std_logic;
--              ////////////////////    I2C             ////////////////////////////
--              ////////////////////    I2C             ////////////////////////////
                I2C_SDAT : inout std_logic;
                I2C_SDAT : inout std_logic;
                I2C_SCLK : out std_logic;
                I2C_SCLK : out std_logic;
--              ////////////////////    PS2             ////////////////////////////
--              ////////////////////    PS2             ////////////////////////////
                PS2_DAT : in std_logic;
                PS2_DAT : in std_logic;
                PS2_CLK : in std_logic;
                PS2_CLK : in std_logic;
--              ////////////////////    VGA             ////////////////////////////
--              ////////////////////    VGA             ////////////////////////////
                VGA_HS : out std_logic;
                VGA_HS : out std_logic;
                VGA_VS : out std_logic;
                VGA_VS : out std_logic;
                VGA_R  : out std_logic_vector (3 downto 0);
                VGA_R  : out std_logic_vector (3 downto 0);
                VGA_G: out std_logic_vector (3 downto 0);
                VGA_G: out std_logic_vector (3 downto 0);
                VGA_B: out std_logic_vector (3 downto 0);
                VGA_B: out std_logic_vector (3 downto 0);
--              ////////////////        Audio CODEC             ////////////////////////
--              ////////////////        Audio CODEC             ////////////////////////
                AUD_ADCLRCK : inout std_logic;
                AUD_ADCLRCK : inout std_logic;
                AUD_ADCDAT : in std_logic;
                AUD_ADCDAT : in std_logic;
                AUD_DACLRCK : inout std_logic;
                AUD_DACLRCK : inout std_logic;
                AUD_DACDAT : out std_logic;
                AUD_DACDAT : out std_logic;
                AUD_BCLK : out std_logic;
                AUD_BCLK : out std_logic;
                AUD_XCK : out std_logic;
                AUD_XCK : out std_logic;
--              ////////////////////    GPIO    ////////////////////////////
--              ////////////////////    GPIO    ////////////////////////////
                GPIO_0 : inout std_logic_vector (35 downto 0);
                GPIO_0 : inout std_logic_vector (35 downto 0);
                GPIO_1 : inout std_logic_vector (35 downto 0)
                GPIO_1 : inout std_logic_vector (35 downto 0)
        );
        );
end;
end;
 
 
architecture beh of de1 is
architecture beh of de1 is
 
 
 
 
signal reset : std_logic;
signal reset : std_logic;
 
 
signal pll_clk : std_logic;
signal pll_clk : std_logic;
signal pll_reset : std_logic := '0';
signal pll_reset : std_logic := '0';
signal pll_locked : std_logic;
signal pll_locked : std_logic;
 
 
signal spi_data_tx : std_logic_vector(31 downto 0);
signal spi_data_tx : std_logic_vector(31 downto 0);
signal spi_data_rx  : std_logic_vector(31 downto 0);
signal spi_data_rx  : std_logic_vector(31 downto 0);
signal spi_data_rx_en : std_logic;
signal spi_data_rx_en : std_logic;
 
 
signal running : std_logic := '0';
signal running : std_logic := '0';
signal overflow : std_logic := '0';
signal overflow : std_logic := '0';
signal found : std_logic := '0';
signal found : std_logic := '0';
 
 
signal spi_mosi : std_logic;
signal spi_mosi : std_logic;
signal spi_miso : std_logic;
signal spi_miso : std_logic;
signal spi_sck : std_logic;
signal spi_sck : std_logic;
signal spi_ss : std_logic;
signal spi_ss : std_logic;
signal pll_slow : std_logic;
signal pll_slow : std_logic;
component spi_slave
component spi_slave
        port
        port
        (
        (
                clk : in std_logic;
                clk : in std_logic;
                reset : in std_logic;
                reset : in std_logic;
 
 
                mosi : in std_logic;
                mosi : in std_logic;
                miso : out std_logic;
                miso : out std_logic;
                sck : in std_logic;
                sck : in std_logic;
                ss : in std_logic;
                ss : in std_logic;
 
 
 
 
                data_rd : in std_logic_vector(31 downto 0);
                data_rd : in std_logic_vector(31 downto 0);
                data_wr : out std_logic_vector(31 downto 0);
                data_wr : out std_logic_vector(31 downto 0);
                data_wren : out std_logic
                data_wren : out std_logic
        );
        );
end component;
end component;
 
 
component pll
component pll
        PORT
        PORT
        (
        (
                areset          : IN STD_LOGIC  := '0';
                areset          : IN STD_LOGIC  := '0';
                inclk0          : IN STD_LOGIC  := '0';
                inclk0          : IN STD_LOGIC  := '0';
                c0              : OUT STD_LOGIC ;
                c0              : OUT STD_LOGIC ;
                c1 : out std_logic;
                c1 : out std_logic;
                locked          : OUT STD_LOGIC
                locked          : OUT STD_LOGIC
        );
        );
end component;
end component;
 
 
component curl
component curl
        port
        port
        (
        (
                clk : in std_logic;
                clk : in std_logic;
                clk_slow : in std_logic;
                clk_slow : in std_logic;
                reset : in std_logic;
                reset : in std_logic;
 
 
                spi_data_rx : in std_logic_vector(31 downto 0);
                spi_data_rx : in std_logic_vector(31 downto 0);
                spi_data_tx : out std_logic_vector(31 downto 0);
                spi_data_tx : out std_logic_vector(31 downto 0);
                spi_data_rxen : in std_logic;
                spi_data_rxen : in std_logic;
 
 
                overflow : out std_logic;
                overflow : out std_logic;
                running : out std_logic;
                running : out std_logic;
                found : out std_logic
                found : out std_logic
        );
        );
end component;
end component;
 
 
begin
begin
        pll0 : pll port map (
        pll0 : pll port map (
                areset => pll_reset,
                areset => pll_reset,
                inclk0 => CLOCK_50,
                inclk0 => CLOCK_50,
                c0 => pll_clk,
                c0 => pll_clk,
                c1      => pll_slow,
                c1      => pll_slow,
                locked => pll_locked
                locked => pll_locked
        );
        );
 
 
 
 
        spi0 : spi_slave port map (
        spi0 : spi_slave port map (
                clk => pll_slow,
                clk => pll_slow,
                reset => reset,
                reset => reset,
 
 
                mosi => spi_mosi,
                mosi => spi_mosi,
                miso => spi_miso,
                miso => spi_miso,
                sck => spi_sck,
                sck => spi_sck,
                ss => spi_ss,
                ss => spi_ss,
 
 
                data_rd => spi_data_tx,
                data_rd => spi_data_tx,
                data_wr => spi_data_rx,
                data_wr => spi_data_rx,
                data_wren => spi_data_rx_en
                data_wren => spi_data_rx_en
        );
        );
 
 
        curl0 : curl port map (
        curl0 : curl port map (
                clk => pll_clk,
                clk => pll_clk,
                reset => reset,
                reset => reset,
                clk_slow => pll_slow,
                clk_slow => pll_slow,
 
 
                spi_data_rx => spi_data_rx,
                spi_data_rx => spi_data_rx,
                spi_data_tx => spi_data_tx,
                spi_data_tx => spi_data_tx,
                spi_data_rxen => spi_data_rx_en,
                spi_data_rxen => spi_data_rx_en,
 
 
                overflow => overflow,
                overflow => overflow,
                running => running,
                running => running,
                found => found
                found => found
        );
        );
 
 
 
 
-- disable all DE1 stuff        
-- disable all DE1 stuff        
DRAM_DQ <= (others => 'Z');
DRAM_DQ <= (others => 'Z');
FL_DQ <= (others => 'Z');
FL_DQ <= (others => 'Z');
SRAM_DQ <= (others => 'Z');
SRAM_DQ <= (others => 'Z');
SD_DAT <= 'Z';
SD_DAT <= 'Z';
I2C_SDAT <= 'Z';
I2C_SDAT <= 'Z';
GPIO_0 <= (others => 'Z');
GPIO_0 <= (others => 'Z');
GPIO_1 <= (others => 'Z');
GPIO_1 <= (others => 'Z');
 
 
LEDR <= "0" & "1" & spi_ss & spi_sck & spi_mosi & spi_miso & reset & overflow & found & running;
LEDR <= "0" & "1" & spi_ss & spi_sck & spi_mosi & spi_miso & reset & overflow & found & running;
LEDG <= (others => '0');
LEDG <= (others => '0');
 
 
AUD_BCLK <= '0';
AUD_BCLK <= '0';
AUD_DACLRCK <= '0';
AUD_DACLRCK <= '0';
AUD_ADCLRCK     <= '0';
AUD_ADCLRCK     <= '0';
AUD_XCK <= '0';
AUD_XCK <= '0';
 
 
SRAM_ADDR(17)<='0';
SRAM_ADDR(17)<='0';
 
 
reset <= not SW(0);
reset <= not SW(0);
 
 
spi_mosi <= GPIO_0(0);
spi_mosi <= GPIO_0(0);
spi_sck <= GPIO_0(2);
spi_sck <= GPIO_0(2);
spi_ss <= GPIO_0(3);
spi_ss <= GPIO_0(3);
 
 
-- all pins except one is input
-- all pins except one is input
GPIO_0(3 downto 0) <= "ZZ" & spi_miso & "Z";
GPIO_0(3 downto 0) <= "ZZ" & spi_miso & "Z";
 
 
 
 
end architecture;
end architecture;
 
 

powered by: WebSVN 2.1.0

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