URL
https://opencores.org/ocsvn/System09/System09/trunk
Subversion Repositories System09
Compare Revisions
- This comparison shows the changes necessary to convert path
/System09/trunk/rtl
- from Rev 104 to Rev 105
- ↔ Reverse comparison
Rev 104 → Rev 105
/System09_Digilent_3S1000/System09_Digilent_3S1000.ise
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
System09_Digilent_3S1000/System09_Digilent_3S1000.ise
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: System09_Digilent_3S1000/_ngo/netlist.lst
===================================================================
--- System09_Digilent_3S1000/_ngo/netlist.lst (nonexistent)
+++ System09_Digilent_3S1000/_ngo/netlist.lst (revision 105)
@@ -0,0 +1,2 @@
+C:\Vhdl\System09\rtl\System09_Digilent_3S1000\my_unicpu09.ngc 1220792754
+OK
Index: System09_Digilent_3S1000/System09_Digilent_3S1000.vhd
===================================================================
--- System09_Digilent_3S1000/System09_Digilent_3S1000.vhd (nonexistent)
+++ System09_Digilent_3S1000/System09_Digilent_3S1000.vhd (revision 105)
@@ -0,0 +1,867 @@
+--===========================================================================--
+-- --
+-- Synthesizable 6809 SoC Top Level File For Digilent XC3S1000 Starter Board --
+-- --
+--===========================================================================--
+--
+-- File name : System09_Digilent_3S1000.vhd
+--
+-- Purpose : Implements the top level of a Quad core 6809 instruction
+-- System on a Chip (SoC) for the Digilent Spartan 3 Starter board
+-- fitted with the XC3S1000 FPGA.
+-- Memory mapping of peripherals and memory are similar to the
+-- SWTPc 6809 MP-09.
+--
+-- Status: : *** Currently under development ***
+-- The version for the Digilenet Spartan 3 Starter board using the
+-- XC3S200 FPGA should also work on the XC3S1000 if the FPGA type
+-- is changed in the Xilinx ISE project file.
+--
+-- Dependencies : ieee.Std_Logic_1164
+-- ieee.std_logic_unsigned
+-- ieee.std_logic_arith
+-- ieee.numeric_std
+--
+-- Uses : mon_rom (sys09bug_rom4k_b16.vhd) Monitor ROM
+-- quadcpu09 (quadcpu09.vhd) Quad CPU core
+-- dat_ram (datram.vhd) Dynamic Address Translation
+-- acia6850 (acia6850.vhd) ACIA (UART)
+-- keyboard (keyboard.vhd) PS/2 Keyboard
+-- (ps2_keyboard.vhd)
+-- (keymap_rom)
+-- vdu8 (vdu8.vhd) Video Display Unit
+-- (char_rom2K_b16.vhd)
+-- (ram2k_b16.vhd)
+-- seven_segment (SevenSegment.vhd) Seven Segment Display
+--
+-- Author : John E. Kent
+--
+-- Email : dilbert57@opencores.org
+--
+-- Web : http://opencores.org/project,system09
+--
+-- Copyright (C) 2003 - 2010 John Kent
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+--
+--===========================================================================--
+-- --
+-- Revision History --
+-- --
+--===========================================================================--
+--
+-- Version Date Author Changes
+--
+-- Version 0.1 - 20 March 2003 - John Kent
+-- Version 0.2 - 30 March 2003 - John Kent
+-- Version 0.3 - 29 April 2003 - John Kent
+-- Version 0.4 - 29 June 2003 - John Kent
+--
+-- Version 0.5 - 19 July 2003 - John Kent
+-- prints out "Hello World"
+--
+-- Version 0.6 - 5 September 2003 - John Kent
+-- Runs SBUG
+--
+-- Version 1.0- 6 Sep 2003 - John Kent
+-- Inverted sys_clk
+-- Initial release to Open Cores
+--
+-- Version 1.1 - 17 Jan 2004 - John Kent
+-- Updated miniUart.
+--
+-- Version 1.2 - 25 Jan 2004 - John Kent
+-- removed signals "test_alu" and "test_cc"
+-- Trap hardware re-instated.
+--
+-- Version 1.3 - 11 Feb 2004 - John Kent
+-- Designed forked off to produce System09_VDU
+-- Added VDU component
+-- VDU runs at 25MHz and divides the clock by 2 for the CPU
+-- UART Runs at 57.6 Kbps
+--
+-- Version 2.0 - 2 September 2004 - John Kent
+-- ported to Digilent Xilinx Spartan3 starter board
+-- removed Compaact Flash and Trap Logic.
+-- Replaced SBUG with KBug9s
+--
+-- Version 2.1 - 21 November 2006 - John Kent
+-- Replaced KBug9s with Sys09bug 1.0
+-- Inverted bottom nybble of DAT register outputs
+-- Changed ROM & I/O decoding to be compatible with SWTPc
+-- Upped the serial baud rate to 115.2 KBd
+-- added multiple global clock buffers
+-- (Uart would not operate correctly)
+--
+-- Version 2.2 - 22 December 2006 - John Kent
+-- Increased CPU clock from 12.5MHz to 25 MHz.
+-- Removed some of the global clock buffers
+-- Added LED output register
+-- Changed address decoding to 4K Blocks
+--
+-- Version 2.3 - 1 June 2007 - John Kent
+-- Updated VDU & ACIA
+-- Changed decoding for Sys09Bug
+--
+-- Version 2.4 - 31 January 2008 - John Kent
+-- ACIA does not appear to work.
+-- Made RAM OE and WE strobes synchonous to sys_clk
+--
+-- Version 3.0 - 16 June 2010 - John Kent
+-- *** Under development ***
+-- Updated GPL notice.
+-- Work under way to implementing a quad core version.
+--
+--===========================================================================--
+library ieee;
+ use ieee.std_logic_1164.all;
+ use ieee.std_logic_arith.all;
+ use ieee.std_logic_unsigned.all;
+ use ieee.numeric_std.all;
+
+entity my_system09 is
+ port(
+ sys_clk : in Std_Logic; -- System Clock input
+ rst_sw : in Std_logic; -- Master Reset input (active high)
+ nmi_sw : in Std_logic;
+
+ -- Memory Interface signals
+ ram_addr : out Std_Logic_Vector(17 downto 0);
+ ram_wen : out Std_Logic;
+ ram_oen : out Std_Logic;
+
+ ram1_cen : out Std_Logic;
+ ram1_ubn : out Std_Logic;
+ ram1_lbn : out Std_Logic;
+ ram1_data : inout Std_Logic_Vector(15 downto 0);
+
+ ram2_cen : out Std_Logic;
+ ram2_ubn : out Std_Logic;
+ ram2_lbn : out Std_Logic;
+ ram2_data : inout Std_Logic_Vector(15 downto 0);
+
+ -- PS/2 Keyboard
+ ps2c : inout Std_logic;
+ ps2d : inout Std_Logic;
+
+ -- ACIA Interface
+ rxd : in Std_Logic;
+ txd : out Std_Logic;
+
+ -- CRTC output signals
+ vs : out Std_Logic;
+ hs : out Std_Logic;
+ blue : out std_logic;
+ green : out std_logic;
+ red : out std_logic;
+
+ -- LEDS & Switches
+ switches : in std_logic_vector(7 downto 0);
+ leds : out std_logic_vector(7 downto 0);
+
+ -- seven segment display
+ segments : out std_logic_vector(7 downto 0);
+ digits : out std_logic_vector(3 downto 0)
+ );
+end my_system09;
+
+-------------------------------------------------------------------------------
+-- Architecture for System09
+-------------------------------------------------------------------------------
+architecture my_computer of my_system09 is
+ -----------------------------------------------------------------------------
+ -- constants
+ -----------------------------------------------------------------------------
+ constant SYS_CLK_FREQ : integer := 50000000; -- FPGA System Clock
+ constant VGA_CLK_FREQ : integer := 25000000; -- VGA Pixel Clock
+ constant CPU_CLK_FREQ : integer := 25000000; -- CPU Clock
+ constant BAUD_RATE : integer := 57600; -- Baud Rate
+ constant ACIA_CLK_FREQ : integer := BAUD_RATE * 16;
+
+ type hold_state_type is ( hold_release_state, hold_request_state );
+
+ -----------------------------------------------------------------------------
+ -- Signals
+ -----------------------------------------------------------------------------
+
+ -- ACIA Interface signals
+ signal acia_clk : std_logic;
+ signal acia_cs : Std_Logic;
+ signal acia_data_out : Std_Logic_Vector(7 downto 0);
+ signal acia_irq : Std_Logic;
+ signal acia_rxd : Std_Logic;
+ signal acia_txd : Std_Logic;
+ signal acia_dcd_n : Std_Logic;
+-- signal acia_rts_n : Std_Logic;
+ signal acia_cts_n : Std_Logic;
+
+ -- keyboard port
+ signal kbd_cs : std_logic;
+ signal kbd_data_out : std_logic_vector(7 downto 0);
+ signal kbd_irq : std_logic;
+
+ -- LEDs
+ signal led_cs : std_logic;
+ signal led_data_out : std_logic_vector(7 downto 0);
+
+ -- RAM
+ signal ram_cs : std_logic; -- memory chip select
+ signal ram_data_out : std_logic_vector(7 downto 0);
+ signal ram1_ce : std_logic;
+ signal ram1_ub : std_logic;
+ signal ram1_lb : std_logic;
+ signal ram2_ce : std_logic;
+ signal ram2_ub : std_logic;
+ signal ram2_lb : std_logic;
+ signal ram_we : std_logic;
+ signal ram_oe : std_logic;
+
+ -- CPU Interface signals
+ signal cpu_rst : Std_Logic;
+ signal cpu_clk : Std_Logic;
+ signal cpu_vma : std_logic;
+ signal cpu_addr : std_logic_vector(19 downto 0);
+ signal cpu_rw : std_logic;
+ signal cpu_data_in : std_logic_vector(7 downto 0);
+ signal cpu_data_out : std_logic_vector(7 downto 0);
+ signal cpu_firq : std_logic;
+ signal cpu_irq : std_logic;
+ signal cpu_nmi : std_logic;
+ signal cpu_halt : std_logic;
+ signal cpu_hold : std_logic;
+
+ -- Video Display Unit
+ signal vdu_cs : std_logic;
+ signal vdu_data_out : std_logic_vector(7 downto 0);
+ signal vga_clk : std_logic;
+
+ -- 7 Segment Display
+ signal seg_cs : std_logic;
+ signal seg_data_out : std_logic_vector(7 downto 0);
+
+ -- System Clock Prescaler
+ signal clk_count : std_logic;
+
+-----------------------------------------------------------------
+--
+-- Quad CPU09 CPU core
+--
+-----------------------------------------------------------------
+
+component quadcpu09
+ port (
+ clk : in std_logic;
+ rst : in std_logic;
+ vma : out std_logic;
+ addr : out std_logic_vector(19 downto 0);
+ rw : out std_logic;
+ data_out : out std_logic_vector(7 downto 0);
+ data_in : in std_logic_vector(7 downto 0);
+ irq : in std_logic;
+ nmi : in std_logic;
+ firq : in std_logic;
+ halt : in std_logic;
+ hold : in std_logic
+ );
+end component;
+
+
+-----------------------------------------------------------------
+--
+-- 6850 ACIA
+--
+-----------------------------------------------------------------
+
+component acia6850
+ port (
+ clk : in Std_Logic; -- System Clock
+ rst : in Std_Logic; -- Reset input (active high)
+ cs : in Std_Logic; -- ACIA Chip Select
+ addr : in Std_Logic; -- Register Select
+ rw : in Std_Logic; -- Read / Not Write
+ data_in : in Std_Logic_Vector(7 downto 0); -- Data Bus In
+ data_out : out Std_Logic_Vector(7 downto 0); -- Data Bus Out
+ irq : out Std_Logic; -- Interrupt
+ RxC : in Std_Logic; -- Receive Baud Clock
+ TxC : in Std_Logic; -- Transmit Baud Clock
+ RxD : in Std_Logic; -- Receive Data
+ TxD : out Std_Logic; -- Transmit Data
+ DCD_n : in Std_Logic; -- Data Carrier Detect
+ CTS_n : in Std_Logic; -- Clear To Send
+ RTS_n : out Std_Logic -- Request To send
+ );
+end component;
+
+-----------------------------------------------------------------
+--
+-- ACIA Clock divider
+--
+-----------------------------------------------------------------
+
+component ACIA_Clock
+ generic (
+ SYS_CLK_FREQ : integer := SYS_CLK_FREQ;
+ ACIA_CLK_FREQ : integer := ACIA_CLK_FREQ
+ );
+ port (
+ CLK : in std_logic; -- System Clock Input
+ ACIA_CLK : out std_logic -- ACIA Clock output
+ );
+end component;
+
+
+----------------------------------------
+--
+-- PS/2 Keyboard
+--
+----------------------------------------
+
+component keyboard
+ generic(
+ KBD_CLK_FREQ : integer := CPU_CLK_FREQ
+ );
+ port(
+ clk : in std_logic;
+ rst : in std_logic;
+ cs : in std_logic;
+ addr : in std_logic;
+ rw : in std_logic;
+ data_in : in std_logic_vector(7 downto 0);
+ data_out : out std_logic_vector(7 downto 0);
+ irq : out std_logic;
+ kbd_clk : inout std_logic;
+ kbd_data : inout std_logic
+ );
+end component;
+
+----------------------------------------
+--
+-- Video Display Unit.
+--
+----------------------------------------
+component vdu8
+ generic(
+ VGA_CLK_FREQ : integer := VGA_CLK_FREQ; -- HZ
+ VGA_HOR_CHARS : integer := 80; -- CHARACTERS 25.6us
+ VGA_HOR_CHAR_PIXELS : integer := 8; -- PIXELS 0.32us
+ VGA_HOR_FRONT_PORCH : integer := 16; -- PIXELS 0.64us (0.94us)
+ VGA_HOR_SYNC : integer := 96; -- PIXELS 3.84us (3.77us)
+ VGA_HOR_BACK_PORCH : integer := 48; -- PIXELS 1.92us (1.89us)
+ VGA_VER_CHARS : integer := 25; -- CHARACTERS 12.8ms
+ VGA_VER_CHAR_LINES : integer := 16; -- LINES 0.512ms
+ VGA_VER_FRONT_PORCH : integer := 10; -- LINES 0.320ms
+ VGA_VER_SYNC : integer := 2; -- LINES 0.064ms
+ VGA_VER_BACK_PORCH : integer := 34 -- LINES 1.088ms
+ );
+ port(
+ -- control register interface
+ vdu_clk : in std_logic; -- CPU Clock - 12.5MHz
+ vdu_rst : in std_logic;
+ vdu_cs : in std_logic;
+ vdu_addr : in std_logic_vector(2 downto 0);
+ vdu_rw : in std_logic;
+ vdu_data_in : in std_logic_vector(7 downto 0);
+ vdu_data_out : out std_logic_vector(7 downto 0);
+
+ -- vga port connections
+ vga_clk : in std_logic; -- VGA Pixel Clock - 25 MHz
+ vga_red_o : out std_logic;
+ vga_green_o : out std_logic;
+ vga_blue_o : out std_logic;
+ vga_hsync_o : out std_logic;
+ vga_vsync_o : out std_logic
+ );
+end component;
+
+----------------------------------------
+--
+-- Seven Segment Display driver
+--
+----------------------------------------
+
+component seven_segment is
+ port (
+ clk : in std_logic;
+ rst : in std_logic;
+ cs : in std_logic;
+ addr : in std_logic_vector(1 downto 0);
+ rw : in std_logic;
+ data_in : in std_logic_vector(7 downto 0);
+ data_out : out std_logic_vector(7 downto 0);
+ segments : out std_logic_vector(7 downto 0);
+ digits : out std_logic_vector(3 downto 0)
+ );
+end component;
+
+component BUFG
+ port (
+ i : in std_logic;
+ o : out std_logic
+ );
+end component;
+
+begin
+ -----------------------------------------------------------------------------
+ -- Instantiation of internal components
+ -----------------------------------------------------------------------------
+
+my_quadcpu : quadcpu09 port map (
+ clk => cpu_clk,
+ rst => cpu_rst,
+ vma => cpu_vma,
+ addr => cpu_addr(19 downto 0),
+ rw => cpu_rw,
+ data_out => cpu_data_out,
+ data_in => cpu_data_in,
+ irq => cpu_irq,
+ nmi => cpu_nmi,
+ firq => cpu_firq,
+ halt => cpu_halt,
+ hold => cpu_hold
+ );
+
+my_acia : acia6850 port map (
+ clk => cpu_clk,
+ rst => cpu_rst,
+ cs => acia_cs,
+ addr => cpu_addr(0),
+ rw => cpu_rw,
+ data_in => cpu_data_out,
+ data_out => acia_data_out,
+ irq => acia_irq,
+ RxC => acia_clk,
+ TxC => acia_clk,
+ RxD => acia_rxd,
+ TxD => acia_txd,
+ DCD_n => acia_dcd_n,
+ CTS_n => acia_cts_n,
+ RTS_n => open
+ );
+
+
+----------------------------------------
+--
+-- ACIA Clock
+--
+----------------------------------------
+my_ACIA_Clock : ACIA_Clock
+ generic map(
+ SYS_CLK_FREQ => SYS_CLK_FREQ,
+ ACIA_CLK_FREQ => ACIA_CLK_FREQ
+ )
+ port map(
+ clk => sys_clk,
+ acia_clk => acia_clk
+ );
+
+
+----------------------------------------
+--
+-- PS/2 Keyboard Interface
+--
+----------------------------------------
+my_keyboard : keyboard
+ generic map (
+ KBD_CLK_FREQ => CPU_CLK_FREQ
+ )
+ port map(
+ clk => cpu_clk,
+ rst => cpu_rst,
+ cs => kbd_cs,
+ addr => cpu_addr(0),
+ rw => cpu_rw,
+ data_in => cpu_data_out(7 downto 0),
+ data_out => kbd_data_out(7 downto 0),
+ irq => kbd_irq,
+ kbd_clk => ps2c,
+ kbd_data => ps2d
+ );
+
+----------------------------------------
+--
+-- Video Display Unit instantiation
+--
+----------------------------------------
+my_vdu : vdu8
+ generic map(
+ VDU_CLK_FREQ => CPU_CLK_FREQ, -- HZ
+ VGA_CLK_FREQ => VGA_CLK_FREQ, -- HZ
+ VGA_HOR_CHARS => 80, -- CHARACTERS
+ VGA_VER_CHARS => 25, -- CHARACTERS
+ VGA_PIXELS_PER_CHAR => 8, -- PIXELS
+ VGA_LINES_PER_CHAR => 16, -- LINES
+ VGA_HOR_BACK_PORCH => 40, -- PIXELS
+ VGA_HOR_SYNC => 96, -- PIXELS
+ VGA_HOR_FRONT_PORCH => 24, -- PIXELS
+ VGA_VER_BACK_PORCH => 13, -- LINES
+ VGA_VER_SYNC => 1, -- LINES
+ VGA_VER_FRONT_PORCH => 36 -- LINES
+ )
+ port map(
+
+ -- Control Registers
+ vdu_clk => cpu_clk, -- 12.5 MHz System Clock in
+ vdu_rst => cpu_rst,
+ vdu_cs => vdu_cs,
+ vdu_addr => cpu_addr(2 downto 0),
+ vdu_rw => cpu_rw,
+ vdu_data_in => cpu_data_out,
+ vdu_data_out => vdu_data_out,
+
+ -- vga port connections
+ vga_clk => vga_clk, -- 25 MHz VDU pixel clock
+ vga_red_o => red,
+ vga_green_o => green,
+ vga_blue_o => blue,
+ vga_hsync_o => hs,
+ vga_vsync_o => vs
+ );
+
+
+----------------------------------------
+--
+-- Seven Segment Display instantiation
+--
+----------------------------------------
+
+my_seg : seven_segment port map (
+ clk => cpu_clk,
+ rst => cpu_rst,
+ cs => seg_cs,
+ addr => cpu_addr(1 downto 0),
+ rw => cpu_rw,
+ data_in => cpu_data_out,
+ data_out => seg_data_out,
+ segments => segments,
+ digits => digits
+ );
+
+
+vga_clk_buffer : BUFG port map(
+ i => clk_count,
+ o => vga_clk
+ );
+
+cpu_clk_buffer : BUFG port map(
+ i => clk_count,
+ o => cpu_clk
+ );
+
+--
+-- Clock divider
+-- Assumes 50 MHz system clock
+-- 25MHz pixel clock
+-- 25MHz CPU clock
+--
+sys09_clock : process( sys_clk, clk_count )
+begin
+ if sys_clk'event and sys_clk='1' then
+ clk_count <= not clk_count;
+ end if;
+end process;
+
+----------------------------------------------------------------------
+--
+-- Process to decode memory map
+--
+----------------------------------------------------------------------
+
+mem_decode: process( cpu_addr, cpu_rw, cpu_vma,
+ acia_data_out,
+ kbd_data_out,
+ vdu_data_out,
+ seg_data_out,
+ led_data_out,
+ ram_data_out
+ )
+begin
+ cpu_data_in <= (others=>'0');
+ dat_cs <= '0';
+ acia_cs <= '0';
+ kbd_cs <= '0';
+ vdu_cs <= '0';
+ seg_cs <= '0';
+ led_cs <= '0';
+ ram_cs <= '0';
+-- timer_cs <= '0';
+-- trap_cs <= '0';
+-- pb_cs <= '0';
+-- ide_cs <= '0';
+-- ether_cs <= '0';
+-- slot1_cs <= '0';
+-- slot2_cs <= '0';
+
+ --
+ -- IO Devices $E000 - $EFFF
+ --
+ if cpu_addr(15 downto 12) = "1110" then -- $XE000 - $XEFFF
+ case cpu_addr(11 downto 8) is
+ --
+ -- SWTPC peripherals from $E000 to $E0FF
+ --
+ when "0000" =>
+ case cpu_addr(7 downto 4) is
+ --
+ -- ACIA ($E000 - $E00F)
+ --
+ when "0000" =>
+ acia_cs <= cpu_vma;
+ cpu_data_in <= acia_data_out;
+
+ --
+ -- Reserved - FD1771 FDC ($E010 - $E01F) (SWTPC)
+ --
+
+ --
+ -- Keyboard port ($E020 - $E02F)
+ --
+ when "0010" =>
+ kbd_cs <= cpu_vma;
+ cpu_data_in <= kbd_data_out;
+
+ --
+ -- VDU port ($E030 - $E03F)
+ --
+ when "0011" =>
+ vdu_cs <= cpu_vma;
+ cpu_data_in <= vdu_data_out;
+
+ --
+ -- Reserved - SWTPc MP-T ($E040 - $E04F)
+ --
+
+ --
+ -- Reserved - Timer ($E050 - $E05F) (B5-X300)
+ --
+
+ --
+ -- Reserved - Bus Trap Logic ($E060 - $E06F) (B5-X300)
+ --
+
+ --
+ -- Reserved - I/O port ($E070 - $E07F) (B5-X300)
+ --
+
+ --
+ -- Reserved - PTM 6840 ($E080 - $E08F) (SWTPC)
+ --
+
+ --
+ -- Reserved - PIA Timer ($E090 - $E09F) (SWTPC)
+ --
+
+ --
+ -- Read Switched port ($E0A0 - $E0AF)
+ -- Write LEDS
+ --
+ when "1010" =>
+ led_cs <= cpu_vma;
+ cpu_data_in <= led_data_out;
+
+ --
+ -- 7 segment display port ($E0B0 - $E0BF)
+ --
+ when "1011" =>
+ seg_cs <= cpu_vma;
+ cpu_data_in <= seg_data_out;
+
+
+ when others => -- $EXC0 to $EXFF
+ null;
+ end case;
+ --
+ -- XST-3.0 Peripheral Bus goes here
+ -- $E100 to $E1FF
+ -- Four devices
+ -- IDE, Ethernet, Slot1, Slot2
+ --
+-- when "0001" =>
+-- cpu_data_in <= pb_data_out;
+-- pb_cs <= cpu_vma;
+-- case cpu_addr(7 downto 6) is
+ --
+ -- IDE Interface $E100 to $E13F
+ --
+-- when "00" =>
+-- ide_cs <= cpu_vma;
+ --
+ -- Ethernet Interface $E140 to $E17F
+ --
+-- when "01" =>
+-- ether_cs <= cpu_vma;
+ --
+ -- Slot 1 Interface $E180 to $E1BF
+ --
+-- when "10" =>
+-- slot1_cs <= cpu_vma;
+ --
+ -- Slot 2 Interface $E1C0 to $E1FF
+ --
+-- when "11" =>
+-- slot2_cs <= cpu_vma;
+ --
+ -- Nothing else
+ --
+-- when others =>
+-- null;
+-- end case;
+ --
+ -- $E200 to $EFFF reserved for future use
+ --
+ when others =>
+ null;
+ end case;
+ --
+ -- Everything else is RAM
+ --
+ else
+ ram_cs <= cpu_vma;
+ cpu_data_in <= ram_data_out;
+ end if;
+end process;
+
+
+--
+-- 1M byte SRAM Control
+-- Processes to read and write memory based on bus signals
+--
+ram_process: process( cpu_rst, sys_clk,
+ cpu_addr, cpu_rw, cpu_vma, cpu_data_out,
+ ram_cs,
+ ram1_ce, ram1_ub, ram1_lb, ram1_data,
+ ram2_ce, ram2_ub, ram2_lb, ram2_data,
+ ram_we, ram_oe )
+begin
+ --
+ -- ram_hold signal helps
+ --
+ if( cpu_rst = '1' ) then
+ ram_we <= '0';
+ ram_oe <= '0';
+ --
+ -- Clock Hold on rising edge
+ --
+ elsif( sys_clk'event and sys_clk='1' ) then
+ if (ram_cs = '1') and (ram_we = '0') and (ram_oe = '0') then
+ ram_we <= not cpu_rw;
+ ram_oe <= cpu_rw;
+ else
+ ram_we <= '0';
+ ram_oe <= '0';
+ end if;
+ end if;
+
+ ram_wen <= not ram_we;
+ ram_oen <= not ram_oe;
+
+ ram1_ce <= ram_cs and (not cpu_addr(1));
+ ram1_ub <= not cpu_addr(0);
+ ram1_lb <= cpu_addr(0);
+ ram1_cen <= not ram1_ce;
+ ram1_ubn <= not ram1_ub;
+ ram1_lbn <= not ram1_lb;
+
+ ram2_ce <= ram_cs and cpu_addr(1);
+ ram2_ub <= not cpu_addr(0);
+ ram2_lb <= cpu_addr(0);
+ ram2_cen <= not ram2_ce;
+ ram2_ubn <= not ram2_ub;
+ ram2_lbn <= not ram2_lb;
+
+ ram_addr(17 downto 0) <= cpu_addr(19 downto 2);
+
+ if ram_we = '1' and ram1_ce = '1' and ram1_lb = '1' then
+ ram1_data(7 downto 0) <= cpu_data_out;
+ else
+ ram1_data(7 downto 0) <= "ZZZZZZZZ";
+ end if;
+
+ if ram_we = '1' and ram1_ce = '1' and ram1_ub = '1' then
+ ram1_data(15 downto 8) <= cpu_data_out;
+ else
+ ram1_data(15 downto 8) <= "ZZZZZZZZ";
+ end if;
+
+ if ram_we = '1' and ram2_ce = '1' and ram2_lb = '1' then
+ ram2_data(7 downto 0) <= cpu_data_out;
+ else
+ ram2_data(7 downto 0) <= "ZZZZZZZZ";
+ end if;
+
+ if ram_we = '1' and ram2_ce = '1' and ram2_ub = '1' then
+ ram2_data(15 downto 8) <= cpu_data_out;
+ else
+ ram2_data(15 downto 8) <= "ZZZZZZZZ";
+ end if;
+
+ case cpu_addr(1 downto 0) is
+ when "00" =>
+ ram_data_out <= ram1_data(15 downto 8);
+ when "01" =>
+ ram_data_out <= ram1_data(7 downto 0);
+ when "10" =>
+ ram_data_out <= ram2_data(15 downto 8);
+ when others =>
+ ram_data_out <= ram2_data(7 downto 0);
+ end case;
+end process;
+
+--
+-- LEDS output register
+--
+led_output : process( cpu_clk, cpu_rst, switches )
+begin
+ if cpu_rst = '1' then
+ leds <= (others=>'0');
+ elsif cpu_clk'event and cpu_clk='0' then
+ if led_cs = '1' and cpu_rw = '0' then
+ leds <= cpu_data_out;
+ end if;
+ end if;
+ led_data_out <= switches;
+end process;
+
+--
+-- Interrupts and other bus control signals
+--
+interrupts : process( rst_sw,
+ acia_irq,
+ kbd_irq,
+ nmi_sw
+ )
+begin
+ if sys_clk'event and sys_clk = '1' then
+ cpu_rst <= rst_sw; -- CPU reset is active high
+ end if;
+ cpu_firq <= kbd_irq;
+ cpu_nmi <= nmi_sw;
+ cpu_irq <= acia_irq;
+ cpu_halt <= '0';
+ cpu_hold <= '0';
+end process;
+
+--
+-- ACIA pin assignments
+--
+acia_assignments : process( rxd, acia_txd )
+begin
+ acia_dcd_n <= '0';
+ acia_cts_n <= '0';
+ acia_rxd <= rxd;
+ txd <= acia_txd;
+end process;
+
+
+end my_computer; --===================== End of architecture =======================--
+
Index: System09_Digilent_3S1000/my_system09_summary.html
===================================================================
--- System09_Digilent_3S1000/my_system09_summary.html (nonexistent)
+++ System09_Digilent_3S1000/my_system09_summary.html (revision 105)
@@ -0,0 +1,36 @@
+Xilinx Implementation Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: System09_Digilent_3S1000/System09_Digilent_3S1000.ise_ISE_Backup
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: System09_Digilent_3S1000/System09_Digilent_3S1000.ise_ISE_Backup
===================================================================
--- System09_Digilent_3S1000/System09_Digilent_3S1000.ise_ISE_Backup (nonexistent)
+++ System09_Digilent_3S1000/System09_Digilent_3S1000.ise_ISE_Backup (revision 105)
Design Overview for my_system09
+Property | Value |
Project Name: | c:\vhdl\system09\rtl\system09_digilent_3s1000 |
Target Device: | xc3s1000 |
Report Generated: | Saturday 05/15/10 at 20:45 |
Printable Summary (View as HTML) | my_system09_summary.html |
Device Utilization Summary
+Logic Utilization | Used | Available | Utilization | Note(s) |
Data Not Yet Available |
Performance Summary
+Property | Value |
Data Not Yet Available |
Failing Constraints
+Constraint(s) | Requested | Actual | Logic Levels |
Data Not Yet Available |
Detailed Reports
+Report Name | Status | Last Date Modified |
System09_Digilent_3S1000/System09_Digilent_3S1000.ise_ISE_Backup
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: System09_Digilent_3S1000/automake.log
===================================================================
Index: System09_Digilent_3S1000/dat_ram_summary.html
===================================================================
--- System09_Digilent_3S1000/dat_ram_summary.html (nonexistent)
+++ System09_Digilent_3S1000/dat_ram_summary.html (revision 105)
@@ -0,0 +1,36 @@
+Xilinx Implementation Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: System09_Digilent_3S1000/System09_Digilent_3S1000.dhp
===================================================================
--- System09_Digilent_3S1000/System09_Digilent_3S1000.dhp (nonexistent)
+++ System09_Digilent_3S1000/System09_Digilent_3S1000.dhp (revision 105)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$06f5=6?2.Yi{g|inl9$4(6=';98#?/$0g8*+ZTxhxmc=Scicq[wij:bUi=; yhe00?+([[ykyxl`<\bjbvZthe;aTn<8!vif.6705::1%"Q]asvbj6Zd`hxT~bc=k^`22+pol$89:>?6;/,_Wugu|hd8Pi~}2j]a53(q`m;n7# SSqcqpdh4Tmzy>fQm17,ula+6=<8:i6 !\Rrbvqgi;Un{~?ePb04-rmb*98>=5!.]Qsewrff:V`itcnp^pliZukajo%zej=5:,-XVvfz}ke?Qejylcs[wijWzfboh yhe/15<45=2$%P^~nrucm7Ymbqdk{Sab_rnjg`(q`m'9=4=>9:,-XVvfz}ke?Q|nm3i\f40)~an:i6 !\Rrbvqgi;Uxja?ePb04-rmb*:;?9=h5!.]Qsewrff:Vym`??84./^Ptdtsig9Wt}?9cwd[v5tW{ef8fQm17,ula4e3'$W_}o}t`l0Xvt80h~kR}j|mT>}Prno7oZd6>'|ch ?87735?+([^ANGPLMFA^Aokfm)~an:n6 !\WJGHYGDAHUH`bmd.wjg)453=8h0"#RYHEN_EFOFWJfdof yhe/2710602$%P[FKL]Qfr`hTmngnby yhe3g?+([^ANGP^kyeoQfchci|'|ch ?<953g?+([^ANGP^kyeoQfchci|'|ch ?<9437?+([^ANGPlmfa7:64+pol830"#RYHEN_efof>1?;"{fk-3;024?<&'V]DIBSabkb2=37&bo!?7<7068*+ZQ@MFWndzPftl`*snc901%"QXGDM^amqYa}gi%zej"10325<=)&U\CHARmiu]eqke)~an&==109-*YPOLEVh|x>6.wjg53=)&U\CHARlpt2:*snc%;<3<<84./^ULAJ[ky;5#xgd,05<4753'$WZEJC\ecwvdk)~an:;6 !\WJGHYbf|{kf"{fk-353241<&'V]DIBSd`vqeh(q`m'9;=9>4:,-XSNCDUanuoanre,ula7>3'$WZEJC\jgzfjgul'|ch <9133:?+([^ANGPfkvbncq`+pol$8==>?>;/,_RMBKTdg?? yhe35?+([^ANGP`{c33,ula+6??<::6 !\WJGHYkrd:8%zej"16445==)&U\CHARs3]ha|dhi{n%zej>d:,-XSNCDUzx>Rejycmbva(q`m'9=:?>d:,-XSNCDUzx>Rejycmbva(q`m'9=:<>5:,-XSNCDU{~mimu1;-rmb6i2$%P[FKL]sveaew}93%zej"27755d=)&U\CHAR~u`f`tp6>&bo!?8:7038*+ZQ@MFWxdcjr/tk`40<&'V]DIBSthofv+pol$8<>>?9;/,_RMBKT}cfi yhe/13726<2$%P[FKL]wmmfvr80$}di?6;/,_RMBKT|dbo}{?9/tk`(45:<;27# SVIFOXphnky;5#xgd,0163773'$WZEJC\wfv<+pol8?0"#RYHEN_ras?&bo!?:78078*+ZQ@MFWzi{7.wjg)72?1h1:>?>70064?34<;<4`92623?08?89l5>267:42518h1:>:88590;=d=6:><<:4?=4`926200>0;<5l5>264435?1?h1:>:8870271d=6:><<;;1`9262>6082>>l5>26:15<2?1h1:>:6=18:30d=6:>29>==:8`9262>5:9<<=l5>26:16405>h1:>5<7996;3d=6:18354??399BvfnIidoi7L|lhN`iafrt12Hgcne[yqg:?FIJE@^_II94CSGBP@B?3Jef|D`|t`9Fjqosq@dxxl5Jnukw}Kgjmk1MeakKeqgm`v>Wriecmeh|9;Rgqr`u6k2Yrykb08]Gmbokmg~T?^??01,ula463Zsxxhc?9^Fjcljbf}U8_<>?0/tk`(4??:8:7^w|tdo3=ZBno`fnbyQ28m1jodo9842.6<25i2khelQllnahb>gdahUh`bmd-01606=fden0myz}_cwebZtfe880myz}_cwebZtfe$8?5564bhlgEweoi2hbbiKathvzf>dnfmZjofoheg9amkbWijajkhJjcm;8flrXn|dhh5miu]eqket%8;:;h5miu]eqket%8;:495mugeg?fnfzVh~jkQ}al31?fnfzVh~jkQ}al/10<1?3jbj~R|`me9`ldtXzfg&>?875:asq5?f3jz~<4#=697f?fvrWjf`So{ifdp27>ew}ViggRlzfggq)7>?1>1omyQ}ala8`drXzhg&>:?=6:fsvZ4lj2n{~R546`?lhdd|nn!<998b9jjfjrll':;:9l;hl`hpbb%;;h7d`lltff)745?j1bbnbzdd/1602d3`dh`xjj-3050f=nfjf~hh#=482`?lhdd|nn!?8>4b9jjfjrll'9:86l;hl`hpbb%;<3>n5fnbnv``+5?92h7d`lltff)715=j1bbnbzdd/1<23d3`dh`xjj-3;0<==lmphdmjk;jgzfjgul$8=>=o4kd{neuYugdl0ghwbaq]qkh+590287`cz7:oljZthej1fccQ}ol/23=723dg??o4mtn06(70?;=0atQnchc`?hXijcj!?673e9n}ZgdahUh`bmd139n}ZgdahUh`bmd-3:;0g=jqVida}{{es33?hXkfg{yyk}-3:;53=jqVi{yo5by^asq(45;<20atQkps]3`>k~WmzyS=#=22:;?hXlyxT=i5by^fsvZ7*:;9246cv_erq[7b80`8i|Ylmphdmj>0:oz[nc~jfkyh <78448i|Yje|h0atQbmt/1660?3dsTaxb<2e9n}Zkrd:8&>?:>f:oz[uu5Wbornbo}d068i|Yw{;U`itl`asf.6345i2grS|{ndbrvb>k~Wxjhn~z-3:;63=jqVxdao5by^pli(45;><0atQ|ef`8i|Ytmn'9459m;l{\w|usmd:2==5by^qzwqcj80'945>k;l{\qkodx|:2S=?=;l{\qkodx|:2S=#=675g?hX}gch|x>6_031?hX}gch|x>6_0/123>c3dsTycglpt2:[7753dsTycglpt2:[7+5>?3o7`wPuok`tp6>W:;97`wPuok`tp6>W:'9::>9;l{\rase3dsTzi{"29:5f>hrelxboR}{d99lfoOillrh7}}=_jgzfjgul8;0|~m2{~mimu1;.6302>2xjaR445}al`22Zu>k2xjao?9_r;\w<5;>7;smn)7408=1yc`>6;smn4(700:>0~bc>9:pli4+6?1>87zc8:pwh(74=<20~yb"1522<>tsd$;>9464run.521402x` ?883:8vqj*:82;46|{l,02=<>?=;8:pwh(45=020~yb"234:<>tsd$8?5864run.634602x` <967:8vqj*:?2=46|{l,0456>:<68:pwh(4><:i0nae@p`lJdmk2yhc}kIimgLfoe<{je{iAgaeOwn`>ub~ldThibeov26>ub~ldThibeov.5167>2yba}bje:qw`Zjho`iT=<8;f:qw`Zjho`iTmg{h008wqbXdfmboR{ashemaa3<|`gn~l5{ilgq)715011~bdmu1;g?phnky;5 <=3248qkotad20y~k"1037<>stm$;:=864urg.547102xi ?<49:8qvc*9:>246{|e,3015><}zo&=>;>8:wpa(74=;20y~k"1270<>stm$;85:64urg.56??02xi ?<98:8qvc*9>46{|e,3613><}zo&=8;88:wpa(70>020y~k"1653<>stm$;<;<64urg.521?02xi ?878:8qvc*9>2;46{|e,0231><}zo&><9:8:wpa(46??20y~k"2054<>stm$8:;564urg.64?202xi <>97:8qvc*:83<46{|e,016=><}zo&>?<68:wpa(45;920y~k"2312<>stm$89??64urg.673202xi <=57:8qvc*:;?<46{|e,0120><}zo&>?898:wpa(45>>20y~k"25;2<>stm$8?5?64urg.61?402xi <914:8qvc*:?;=46{|e,0552><}zo&>;?78:wpa(419020y~k"277:<>stm$8=:=64urg.630602xi <963:8qvc*:?<846{|e,0521><}zo&>;6<8:wpa(410=20y~k"262:<>stm$8<==64urg.627602xi <827:8qvc*:>8<46{|e,0;33><}zo&>5988:wpa(4??120y~k"295:<>stm$82?464urg.6<2702xi <640`8rfijxfdnby};;wfv<<=ql|2&>97;c:tgqZeoi{Uyc`?>;wfv[fnfzVxda <;97g8rbgXkeaTnxhies30?safWjf`So{ifdp.6=>?<2}d~fsO@q1g7>FGpo31J7?n:0yP0`<991`954>6nrd=o7?4n7f90>"1j34<6;;<22o31=7?<27;3g?759:o0_9j5f882>455>0:h6<<>789P1<212Y?h7h6:08277d2i:0:54?:;R7:>c?=93;8>o;m2;d;a`=Tbd9P0a=9k>=96];d;d:>4<6;;h=<54=ab20?V3>2o31=7?<2c43=?76;::0_9j5f882>455j?:j6?9>d49P1<;2Y?h7h6:08277d1=o09j:ji;R7:>c?=93;8>o890;c553=T4<6;;h=:?4=9gg4?V2c2o31=7?<2c456?4f?k:0_875f882>455j?n36?98b29P0a57h6:08277d1lk0:=io8;R6g>c?=93;8>o8kb;37gcb<991`954>6n2do=7l8f:M53?61<6xI1c83>4<629qX8h4i9;39564119h1>88>e:l6e?756;2xjc0=92d?o7?4O7094>"2l3:0(8=51`9'10<73-<;6=5+5g80<>I2:3:0C8850:Me1?7|uk2j6=4?:183k`12olmjkhif:l7g?4782E=>7>4O7;97~{H=j0;7pl>0383>5<729qej;4=;o6`>4673F<96=5+5c8;=>"2m3lj7)8>:608K21=82Em97?t}N74>4}zuk;;?7>50;294~ha>390b9m51128K34=82.>n766;%7f>cd<,?;1;?5@7683?J`228qvC8951z~f463290;6=4?{od5>1=i4Og795~{H=>0:wpsm7`83>5<729qej;49;o6`>=6{|M63?7|uth50;294~ha>3h0b9m5819L27<73-?n6:74O6:94>Ia=3;pqpsrvG31>5<6280;w^:j:g;95?74:k?mj76>bd9m1d<63k;86=4?:883k`1281e8n4>;N41>5=#=m0;7);<:038 03=82.=<7>4$4d97<=H=;0;7B;9:19Lb0<6sth3n7>50;294~ha>3lmjkhifg9m0f<5891D:?4?;N4:>3}zG=?<,I0?3:0Ck;51zL12<6stwi==850;294?6|fo<1?:5a4b8245=H>;0;7);m:9;8 0c=nk1/:<482:M43?650;2xjc0=;11e8n4>019L27<73-?i6574$4g9bf=#>80<>6A87;28Kc3=9rwD9:4>{|a55>=83:1<7>tng497<=i4Og795~{H=>0:wpsm11;94?6=83:pbk853c9m0f<6891D:?4?;%7a>4663-?n6<:9;%42>24=1<6Ai5;3xyJ3028qvqo??a;294?6=8rdm:7=k;o6`>4673F<96=5+5c820a=#=l0<56*91;51?J10291Dj84>{|M63?7|uth<=7>50;294~ha>39m7c:l:39L27<73-?:6:>4O5`94>Ia=3;pqB;8:0y~ygc4290;6=4?{od5>1b264}zutw}J<;50;395?6|[=o1j44>:011f0`a21;ij6`:a;38f40=83:1:7>tng495>h3k3;0C;<50:&6`?6<,<91=95+5483?!07291/9k4d290;6=4?{od5>c`anolmj6`;c;034>I1:3:0C;753zL1f<73th:5}in?0856`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxd68j0;6=4?:1ymb3<4i2d?o7??0:M56?6<,"193=97B98:19Lb0<6stE>;7?t}|`24a<7290;6=uaf780`>h3k3;;<6A92;28 0d=99;0(8k51548 37=?;1D;:4?;Nd6>4}zG<=1=vsrbg:94?6=83:pbk853g9m0f<53F<96=5+508e3>I3j3:0Ck;51zL12<6stwii94?:183>5}in?0?h6`;c;68K34=82.?m7k=;%45>5=#=80m;6A;f;28K06=82E<:7>4Og795~{Hn=0:wpsr}wD5>5<6280;w^:j:g;95?74:k?mj7?67228j0g=92h<6=4?:783k`1281e8n4>;N41>5=#=m0;7);<:49'10<73-<;6=5+5g80f>I2:3:0C8850:Me1?7|uk2o6=4?:183k`12olmjkhif:l7g?4782E=>7>4O7;97~{H=j0;7pl>0d83>5<729qej;4<0:l7g?7782E=>7>4$4`9<<=#=l0mm6*91;51?J10291Dj84>{|M63?7|uth:5}in?08=6`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxd6990;6=4?:1ymb3<4<2d?o7??0:M56?6<,=83:1<7>tng4973=i
Design Overview for dat_ram
+Property | Value |
Project Name: | c:\vhdl\system09\rtl\system09_digilent_3s1000 |
Target Device: | xc3s1000 |
Report Generated: | Wednesday 06/16/10 at 21:17 |
Printable Summary (View as HTML) | dat_ram_summary.html |
Device Utilization Summary
+Logic Utilization | Used | Available | Utilization | Note(s) |
Data Not Yet Available |
Performance Summary
+Property | Value |
Data Not Yet Available |
Failing Constraints
+Constraint(s) | Requested | Actual | Logic Levels |
Data Not Yet Available |
Detailed Reports
+Report Name | Status | Last Date Modified |