OpenCores
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 + + +

Design Overview for my_system09

+ + + + + + +
PropertyValue
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 UtilizationUsedAvailableUtilizationNote(s)
Data Not Yet Available   
+ +

Performance Summary

+ + + +
PropertyValue
Data Not Yet Available  
+ +

Failing Constraints

+ + + +
Constraint(s)RequestedActualLogic Levels
Data Not Yet Available   
+ +

Detailed Reports

+ + +
Report NameStatusLast Date Modified
+ + 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)
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 + + +

Design Overview for dat_ram

+ + + + + + +
PropertyValue
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 UtilizationUsedAvailableUtilizationNote(s)
Data Not Yet Available   
+ +

Performance Summary

+ + + +
PropertyValue
Data Not Yet Available  
+ +

Failing Constraints

+ + + +
Constraint(s)RequestedActualLogic Levels
Data Not Yet Available   
+ +

Detailed Reports

+ + +
Report NameStatusLast Date Modified
+ + 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*9=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&=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:><<;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*946{|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=i4Og795~{H=>0:wpsme483>5<629qej;4;f:l7g?2{|`gf?6=83:1ag<,?21h45@7783?J12291Dj84>{|Me0?7|utwvq{H=7;295?7=8rY?i7h6:08277d1800:=>=>;o7b>4=e:10;6=49:1ymb3<63g>h6<5@6383?!3c291/9>4=6:&61?6<,?:1<6*:f;1`?J35291D9;4?;Nd6>4}zj1o1<7>50;2xjc0=nolmjkhi;o6`>7673F<96=5@6880xI2k3:0qo?>1;294?6=8rdm:7:6;o6`>4673F<96=5+5c8;=>"2m3lj7)8>:608K21=82Em97?t}N74>4}zuk;:>7>50;294~ha>3>j7c:l:023?J05291/9o479:&6a?`d3-<:6:<4O6594>Ia=3;pqB;8:0y~yg76;3:1<7>50zle2?2d3g>h6<>?;N41>5=#=k0:<<5+5d8203=#>80<>6A87;28Kc3=9rwD9:4>{|ae0<7290;6=uaf787a>h3k380C;<50:&65?g33F>i6=5@f482xI2?3;pqplj6;294?6=8rdm:7;6;o6`>1=H>;0;7):n:d08 30=82.>=7o;;N6e>5=H=90;7B99:19Lb0<6stEm87?t}|~rC`=83;1=7>tS5g9b<<62899n;>6:03074=i=h0:7o??:183>3<7sgl=6<5a4b82?J05291/9i4?;%70>`=#=<0;7)8?:19'1c<4k2E>>7>4O4494>Ia=3;pqo6i:183>5<7sgl=6khifgdeb>h3k38;<6A92;28K3?=;rwD9n4?;|`251<7290;6=uaf780`>h3k3;;<6A92;28 0d=001/9h4ia:&55?153F=<6=5@f482xI2?3;pqpl>1483>5<729qej;47>4$4`9<<=#=l0mn6*91;51?J10291Dj84>{|M63?7|uth:=;4?:183>5}in?0?<6`;c;334>I1:3:0(8l51138 0c=9=<0(;?5739L32<73Fl>650;2xjc0=<;1e8n4=;N41>5=#=80j>6A;b;28Kc3=9rwD9:4>{|aa2<729096=uaf787a>h3k3>0C;<50:&7e?c53-<=6=5+508b6>I3n3:0C8>50:M42?650zle2?3d3g>h655@6383?!3?2mo0(;65d99L33<73F=>6=5@f482xIa<3;pqplj1;294?6=8rdm:7ol;o6`>==H>;0;7);7:d28 3>=l11D;;4?;N56>5=Hn<0:wpAi4;3xyx{zuL9m7>51;394~U3m3l26<4>33`54<<601kh7c;n:09a6g<729036=uaf782?k2d281D:?4?;%7g>5=#=:0956*:5;28 36=82.>j7=k;N71>5=H=?0;7Bh::0y~f<6=83:1<7>tng49bc`anolm7c:l:323?J05291D:44:{|M6g?650;294~ha>3k87c:l:023?J05291/9o479:&6a?`f3-<:6:<4O6594>Ia=3;pqB;8:0y~yg7603:1<7>50zle2?g33g>h6<>?;N41>5=#=k0356*:e;da?!062>80C:950:Me1?7|uF?<6i7hl;%42>24=1<6Ai5;3xyJ3028qvqo?>a;294?6=8rdm:7o9;o6`>4673F<96=5+5c8;=>"2m3n;7)8>:608K21=82Em97?t}N74>4}zuk;:n7>50;294~ha>3k37c:l:023?J05291/9o4>009'1`<6"293n97B:m:19Lb0<6stE>;7?t}|`f`4<,?<1<6*:1;f1?J2a291D9=4?;N55>5=Hn<0:wpAi4;3xygd2290;6=4?{od5>4273g>h655@6383?!3?2k>0(;659g9L33<73F=>6=5@f482xIa<3;pqpsr}wD:>5<6280;w^:j:g;95?74:k<;57?791`8j0g=92hj6=4?:783k`1281e8n4>;N41>5=#=m0;7);<:99'10<73-<;6=5+5g80a>I2:3:0C8850:Me1?7|uk3:6=4?:183k`12olmjkhif:l7g?4782E=>7>4O7;97~{H=j0;7pl>1b83>5<729qej;4;1:l7g?7782E=>7>4$4`9<<=#=l0mm6*91;51?J10291Dj84>{|M63?7|uth:=i4?:183>5}in?0?>6`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxd69l0;6=4?:1ymb3<3;2d?o7??0:M56?6<,"193=97B98:19Lb0<6stE>;7?t}|`b4?6=83:1<`5<7sgl=68?4n5a90>I1:3:0(9o5e39'23<73-?:64h4O5d94>I283:0C:850:Me1?7|uFl?6tS5g9b<<62899n;>6:0;7f2=i=h0:7o=;:183>=<7sgl=6<5a4b82?J05291/9i4?;%70>64<,5=Hn<0:wpl62;294?6=8rdm:7hifgdebc=i2tng497g=i4Og795~{H=>0:wpsm13294?6=83:pbk853b9m0f<6891D:?4?;%7a>=?<,I0?3:0Ck;51zL12<6stwi=??50;294?6|fo<1?i5a4b8245=H>;0;7);m:9;8 0c=nj1/:<482:M43?650;2xjc0=;l1e8n4>019L27<73-?i6574$4g9`5=#>80<>6A87;28Kc3=9rwD9:4>{|a575=83:1<7>tng4905=i80C:950:Me1?7|uF?<6c`2<7sgl=6;;4n5a90>I1:3:0(9o5e39'23<73-?:6kh4O5d94>I283:0C:850:Me1?7|uFl?6"1032:7B99:19L30<73Fl>650;2xjc0=9980b9m58:M56?6<,<21n55+698b5>I0>3:0C:;50:Me1?7|uFl?65<7290;wch9:02`?k2d211D:?4?;%7;>f6<,?21m?5@7783?J12291Dj84>{|Me0?7|uthjj7>50;294~ha>3;:56`;c;:8K34=82.>47oj;%4;>=1<1<6A85;28Kc3=9rwDj94>{|af4<7290;6=uaf78276=i5=H?<0;7Bh::0y~Kc2=9rwvno=50;294?6|fo<1=9k4n5a9<>I1:3:0(865b39'2=4O6794>Ia=3;pqBh;:0y~ygde290;6=4?{od5>4023g>h655@6383?!3?2kk0(;65a59L33<73F=>6=5@f482xIa<3;pqpsr}wD`>5<6280;w^:j:g;95?74:k<;57?653f8j0g=92ho6=4?:783k`1281e8n4>;N41>5=#=m0;7);<:c9'10<73-<;6=5+5g874>I2:3:0C8850:Me1?7|uk386=4?:183k`12olmjkhif:l7g?4782E=>7>4O7;97~{H=j0;7pl>2583>5<729qej;4<9:l7g?7782E=>7>4$4`9<<=#=l0mm6*91;51?J10291Dj84>{|M63?7|uth:>84?:183>5}in?08m6`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxd6:?0;6=4?:1ymb3<4k2d?o7??0:M56?6<,tng497`=i2E?n7>4Og795~{H=>0:wpsmec83>5<629qej;4;a:l7g?2{|`gg?6=83:1ag<,?21h55@7783?J12291Dj84>{|Me0?7|utwvq{H<:182>4<7sZ>n6k751;306g0713;29ij4n4c95>d3290;6;4?{od5>4=ic`anolmj6`;c;034>I1:3:0C;753zL1f<73th:>:4?:183>5}in?08m6`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxd6:10;6=4?:1ymb3<4j2d?o7??0:M56?6<,"193=97B98:19Lb0<6stE>;7?t}|`26<<7290;6=uaf780`>h3k3;;<6A92;28 0d=99;0(8k51548 37=?;1D;:4?;Nd6>4}zG<=1=vsrb9294?6=83:pbk853g9m0f<53F<96=5+5084b>I3j3:0Ck;51zL12<6stwiin4?:182>5}in?0?n6`;c;68K34=82.?m7k=;%45>5=#=804Og795~{Hn=0:wplkd;294?6=8rdm:7;;;o6`>==H>;0;7);7:ec8 3>=l11D;;4?;N56>5=Hn<0:wpAi4;3xyx{zuL8:7>51;394~U3m3l26<4>33`51c<5kk:h7c;n:09a72<7290=6=uaf782?k2d281D:?4?;%7g>5=#=:0896*:5;28 36=82.>j7:=;N71>5=H=?0;7Bh::0y~f<3=83:1<7>tng49bc`anolm7c:l:323?J05291D:44<{|M6g?650;294~ha>32=7c:l:023?J05291/9o479:&6a?`f3-<:6:<4O6594>Ia=3;pqB;8:0y~yg75j3:1<7>50zle2?>03g>h6<>?;N41>5=#=k0356*:e;f3?!062>80C:950:Me1?7|uF?<6479'24<0:2E<;7>4Og795~{H=>0:wpsm15:94?6=83:pbk858c9m0f<53F<96=5+508202=HI283:0C:850:Me1?7|uFl?65<7290;wch9:000?k2d211D:?4?;%7;>42>3-<36:h4O6494>I0=3:0Ck;51zLb1<6stwi;h4?:183>5}in?0:?=5a4b8;?J05291/9548d:&5tng4956b=?:1/:54k6:M42?6?1<6Ai5;3xyJ`328qvqpsrvG07>5<6280;w^:j:g;95?74:k<=<7l=f09m1d<63k8>6=4?:983k`1281e8n4>;N41>5=#=m0;7);<:318 03=82.=<7>4$4d906=H=;0;7B;9:19Lb0<6sth2:7>50;294~ha>3lmjkhifg9m0f<5891D:?4?;N4:>0}zG=?<,I0?3:0Ck;51zL12<6stwi=?k50;294?6|fo<1955a4b8245=H>;0;7);m:9;8 0c=nk1/:<482:M43?650;2xjc0==01e8n4>019L27<73-?i6574$4g9bf=#>80<>6A87;28Kc3=9rwD9:4>{|a566=83:1<7>tng491d=i4Og795~{H=>0:wpsm12394?6=83:pbk855b9m0f<6891D:?4?;%7a>4663-?n6<:9;%42>24=1<6Ai5;3xyJ3028qvqo7j:183>5<7sgl=68k4n5a96>I1:3:0(8?59e9L0g<73Fl>651;2xjc0=?>1e8n4;;N41>5=#6*96;28 07=1m1D8k4?;N73>5=H??0;7Bh::0y~Kc2=9rwini4?:183>5}in?0j>6`;c;:8K34=82.>47ll;%4;>a4<1<6A85;28Kc3=9rwDj94>{|~yxpA:m0;6<4>:1yP0`5<>29qej;4>;o6`>4=H>;0;7);k:19'16<5k2.>97>4$7294>"2n3>?7B;=:19L13<73Fl>6h6?>?;N41>5=H>00=wpA:c;28yg74:3:1<7>50zle2?5a3g>h6<>?;N41>5=#=k0356*:e;db?!062>80C:950:Me1?7|uF?<6i7hm;%42>24=1<6Ai5;3xyJ3028qvqo?<4;294?6=8rdm:7:>;o6`>4673F<96=5+5c8;=>"2m3lh7)8>:608K21=82Em97?t}N74>4}zuk;897>50;294~ha>3>97c:l:023?J05291/9o479:&6a?b73-<:6:<4O6594>Ia=3;pqB;8:0y~yg74>3:1<7>50zle2?223g>h6<>?;N41>5=#=k0:<<5+5d8203=#>80<>6A87;28Kc3=9rwD9:4>{|a561=83:1<7>tng490==io7);j:6;8 37=?;1D;:4?;Nd6>4}zG<=1=vsrbe794?6=83:pbk854`9m0f<53F<96=5+508g0>I3j3:0Ck;51zL12<6stwiik4?:187>5}in?0>i6`;c;68K34=82.?m7k=;%45>5=#=80o86A;f;28K06=82E<:7>4Og795~{Hn=0:wpll7;294?6=8rdm:7o6;o6`>==H>;0;7);7:b48 3>=no1D;;4?;N56>5=Hn<0:wpAi4;3xyxdd13:1<7>50zle2?e43g>h655@6383?!3?2j20(;65fg9L33<73F=>6=5@f482xIa<3;pqpllb;294?6=8rdm:7jk;o6`>==H>;0;7);7:bc8 3>=no1D;;4?;N56>5=Hn<0:wpAi4;3xyxddl3:1<7>50zle2?`03g>h655@6383?!3?2ji0(;65fg9L33<73F=>6=5@f482xIa<3;pqpsr}wD2a?6=93;14<6;;h=:=4l8348j0g=92h:j7>50;794~ha>3;0b9m51:M56?6<,135}in?0mjkhifgd8j1e=:9:0C;<50:M5=?4|uF?h6=5rb01;>5<7290;wch9:cc8j1e=99:0C;<50:&6f?>>3-?n6ko4$73937=H?>0;7Bh::0y~K01=9rwvn<=6:183>5<7sgl=6ol4n5a9556650;2xjc0=jm1e8n4=;N41>5=#=803=6A;b;28Kc3=9rwD9:4>{|ab5<7290;6=uaf78`a>h3k3>0C;<50:&7e?c53-<=6=5+508;5>I3n3:0C8>50:M42?651;394~U3m3l26<4>33`5257>4$4f94>"2;38;7);::19'25<73-?m6984O4094>I2>3:0Ck;51za=<<7290;6=uaf78ebc`anol0b9m52128K34=82E=57=t}N7`>5=zj89j6=4?:183k`12<20b9m51128K34=82.>n766;%7f>cg<,?;1;?5@7683?J`228qvC8951z~f45e290;6=4?{od5>0?4O7094>"2j3227);j:ga8 37=?;1D;:4?;Nd6>4}zG<=1=vsrb01`>5<7290;wch9:4`8j1e=99:0C;<50:&6f?7792.>i7?;6:&55?153F=<6=5@f482xI2?3;pqpl76;294?6=8rdm:7;k;o6`>7=H>;0;7);>:978K1d=82Em97?t}N74>4}zukl:6=4?:183k`12?30b9m54:M56?6<,=k1i?5+6783?!3621?0C9h50:M64?6<1<6Ai5;3xyJ`328qvqpsyF2294?7=93:p_9k5f882>455j?<;6i>92:l6e?755;2xjc0=92d?o7?4O7094>"2l3:0(8=52g9'10<73-<;6=5+5g873>I2:3:0C8850:Me1?7|uk3j6=4?:183k`12olmjkhif:l7g?4782E=>7>4O7;96~{H=j0;7pl>3e83>5<729qej;4:6:l7g?7782E=>7>4$4`9<<=#=l0mm6*91;51?J10291Dj84>{|M63?7|uth:?h4?:183>5}in?0>;6`;c;334>I1:3:0(8l5889'1`5=Hn<0:wpA:7;3xyxdam3:1<7>50zle2?3>3g>h6?5@6383?!362on0C9l50:Me1?7|uF?<65<7290;wch9:748j1e=<2E=>7>4$5c9a7=#>?0;7);>:gf8K1`=82E><7>4O6494>Ia=3;pqBh;:0y~yx{qN?>1<7?51;2xW1c=n00:6<==b7fa>42?1o1e9l4>;c46>5<72>0;wch9:09m0f<63F<96=5+5e83?!342?90(8;50:&54?6<,{|`:f?6=83:1{e9:l1<7>50;2xjc0=091e8n4>019L27<73-?i6574$4g9bd=#>80<>6A87;28Kc3=9rwD9:4>{|a516=83:1<7>tng49<4=i4Og795~{H=>0:wpsm15394?6=83:pbk85839m0f<6891D:?4?;%7a>=?<,I0?3:0Ck;51zL12<6stwi=9<50;294?6|fo<14>5a4b8245=H>;0;7);m:9;8 0c=l91/:<482:M43?6"293i?7B:m:19Lb0<6stE>;7?t}|`bf?6=8321dg<,?<1<6*:1;a7?J2a291D9=4?;N55>5=Hn<0:wpAi4;3xygda290;6=4?{od5>4g43g>h655@6383?!3?2ko0(;65d59L33<73F=>6=5@f482xIa<3;pqpln7;294?6=8rdm:7?m2:l7g?>5=#=10j46*98;53?J11291D;84?;Nd6>4}zGo>1=vsrbc594?6=83:pbk851e`8j1e=02E=>7>4$4:9f3=#>102h6A86;28K23=82Em97?t}Nd7>4}zukim6=4?:183k`128l:7c:l:99L27<73-?36nk4$7:9511<1<6A85;28Kc3=9rwDj94>{|ag6<7290;6=uaf7815d=i5=H?<0;7Bh::0y~Kc2=9rwvn<:l:183>5<7sgl=6?<8;o6`>==H>;0;7);7:06a?!0?2>i0C:850:M41?65=#=103?6*98;5`?J11291D;84?;Nd6>4}zGo>1=vsr}|uB4>=83;1=7>tS5g9b<<62899n;jm:06`=2=i=h0:7o?6:183>3<7sgl=6<5a4b82?J05291/9i4?;%70>41<,5=Hn<0:wpl6c;294?6=8rdm:7hifgdebc=i2:qvC8m50:a515=83:1<7>tng493a=i4Og795~{H=>0:wpsm15694?6=83:pbk857d9m0f<6891D:?4?;%7a>=?<,I0?3:0Ck;51zL12<6stwi=9;50;294?6|fo<14=5a4b8245=H>;0;7);m:022?!3b28>=7)8>:608K21=82Em97?t}N74>4}zuktng49e1=i4$4392`=H6vLMLt0|BCT~I5=38:7B<7:3c8K7>=:o1D>54<4:M1`?463F8n6?84O20964=H;:09:6A<7;02?J5?2;<0C>m5209L7a<5>2E?=7<>;N6;>12I3j3?<7B:m:4a8K1d=>81D8o496:M64?233F?:6974O47901=H=?0?56A:a;67?J3e2=30C8h5459L25<312E=87:;;N46>1?I1m3>?7B8i:5;8K23=<=1D;;480:M4`?1>3F2;65<4O929<2=H0903o6A75;5:?J>12>o0C5o5789L2c1;45@9484a>I>j3=27B7l:848Kd5=1o1Dm;4n8:Mb2?gc3Fk=6o<4O``9=c=Hij0j86Am0;;e?Jd62h>0Co;59g9Lf3d2Id?33m7Bm7:ca8Kf`=kk1Dh?4k4:Mg6?b>3Fn96ik4Oe59gg=Hl10o<6Akc;aa?Jbc2m:0Ch?5cc9La7a6Ia=3l:7Bh7:gc8Kc>=no1Dj54>059Lba0d9L54`=n81D=?>511g8K44028887B?=a;31g>I6:h0:?<5@13c9560k4>229L566=9;20C<=;:000?J74=3;946A>388266=H9:k1=?64O01f>4443F;8j7?=8:M206<6::1D=9:513:8K42?28887B?;9;31<>I6>5@142951g6<<<;N362?73i2E:9i4>589L536=9?80C<8?:044?J7183;=o6A>64821<=H9?<1=8k4O04b>43>3F;=n7?:e:M22c<6=01D=:>514g8K41328?27B?85;36a>I6?k0:945@16a95208e9L5=0=9080C<69:0;4?J7?>3;2o6A>8c823c=H91i1=5:4O0;3>41a3F;2=7?74:M2=0<6?o1D=4851968K4?f28=m7B?6b;3;0>I61o0:;k5@1`295=27g9L5de=9h<0C:05e?J7e:3;j:6A>b6823c=H9k21=l84O0`g>41a3F;ii7?n6:M2g6<6?o1D=n:51`48K4e>28=m7B?la;3b2>I6ko0:;k5@1e295d06<9i;N3g2?7f>2E:hi4>d89L5`6=9l80Ce482`<=H9l<1=ik4O0gb>4b>3F;nn7?ke:M2ac<6l01D=k>51eg8K4`328n27B?i5;3ga>I6nk0:h45@1ga95c02E9<44=049L65e=:9o0C?>l:330?J47k38:46A=108140=H:881>=o4O335>7623F8:;77B<=1;03e>I5:>09<85@23:9674:;N01a?45:2E9?84=309L66>=::k0C?=7:31e?J44038?86A=3e8174=H::o1>>84O361>7563F8??7<<6:M102<5;81D>9652248K72d2;9:7B<;d;002>I5=:09?<5@246961c;N06e?43m2E99k4=309L636=:=o0C?8::312?J41>38?i6A=6e812<=H:>:1>:<4O353>7103F8<<7<8c:M135<5081D>:>52948K7122;<27B<86;05a>I5?h09:45@26`963c;k4O3;6>70>3F82:7<60:M1=g<5>01D>4m52828K7g42;3m7BI5i?09mi5@2`496g44h4O3`5>7g33F8im7<6f:M1fg<5i=1D>oh528d8K7e72;k?7BI5k<09m95@2b;96<`n2E9h<4=cc9L6a0=:0l0C?j8:3aa?J4ck382j6A=de81gg=H:l81>4h4O3g0>7ee3F8n47<6f:M1a<<5kk1D>k>52da8K7`42;l>7BI5n109in5@2g;96c7>6:3g`?J57i39;86A<10804a=H;8>1?<84O237>67e3F9:87==0:M05<<48m1D?f;126>I4::08>k;N11=?56:2E8>k4<0e9L766=;;k0C>=8:210?J54i398o6A<3`8004=H;:l1?>=4O263>65?3F9?87=<3:M000<4;11D?9753218K62f2:937B=:0;107>I4=8088o5@34:9702;k;N16f?51:2E89o4<669L70d=;?i0C>8?:277?J51939>56A<648011=H;?<1?874O24b>6333F9=n7=:9:M02c<4==1D?:>534;8K6132:??7B=85;16=>I4?k08995@36a9720;;;N1;6?50>2E84:4<559L7=>=;><0C>6k:277?J5?m39<:6A<928011=H;0>1?:84O2;:>6333F92m7=86:M0=c<4==1D?l>53648K6g22:??7B=n6;142>I4ik08995@3`a9720oi;N1a2?5e02E8n;4lm:2ce?J5ek39i86A6ga3F9h:7=m4:M0gd<4io1D?nl53c68K6b62:km7B=k2;1`g>{GH \ No newline at end of file Index: System09_Digilent_3S1000/__projnav/sumrpt_tcl.rsp =================================================================== --- System09_Digilent_3S1000/__projnav/sumrpt_tcl.rsp (nonexistent) +++ System09_Digilent_3S1000/__projnav/sumrpt_tcl.rsp (revision 105) @@ -0,0 +1 @@ +set ADucfFile {} Index: System09_Digilent_3S1000/__projnav/runXst_tcl.rsp =================================================================== --- System09_Digilent_3S1000/__projnav/runXst_tcl.rsp (nonexistent) +++ System09_Digilent_3S1000/__projnav/runXst_tcl.rsp (revision 105) @@ -0,0 +1 @@ +set allSynthModules {cpu09.MOD dat_ram.MOD dpr_2k.MOD mul32.MOD my_unicpu09.MOD} Index: System09_Digilent_3S1000/__projnav/System09_Digilent_3S1000.gfl =================================================================== --- System09_Digilent_3S1000/__projnav/System09_Digilent_3S1000.gfl (nonexistent) +++ System09_Digilent_3S1000/__projnav/System09_Digilent_3S1000.gfl (revision 105) @@ -0,0 +1,24 @@ +# xst flow : RunXST +my_system09_summary.html +# xst flow : RunXST +my_system09_summary.html +# xst flow : RunXST +my_system09_summary.html +# xst flow : RunXST +my_system09_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html +# xst flow : RunXST +dat_ram_summary.html Index: System09_Digilent_3S1000/__projnav.log =================================================================== --- System09_Digilent_3S1000/__projnav.log (nonexistent) +++ System09_Digilent_3S1000/__projnav.log (revision 105) @@ -0,0 +1,2201 @@ +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 16. Undefined symbol 'clk_b'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 16. clk_b: Undefined symbol (last report in this block) +ERROR:HDLParsers:507 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 15. ) is not a correct resolution function name +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 16. parse error, unexpected COLON, expecting SEMICOLON or CLOSEPAR +--> + +Total memory usage is 81604 kilobytes + +Number of errors : 4 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 114. parse error, unexpected IDENTIFIER, expecting COMMA or CLOSEPAR +--> + +Total memory usage is 81604 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:3452 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" Line 36. An index or element of the formal port DOPA of RAMB16_S18_S18 is missing in instantiation. +--> + +Total memory usage is 81604 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 94. Undefined symbol 'addr_lo'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 94. addr_lo: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 176. Undefined symbol 'my_mul32'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 176. my_mul32: Undefined symbol (last report in this block) +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 176. parse error, unexpected PROCESS, expecting OPENPAR or TICK or LSQBRACK +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 191. Undefined symbol 'mul_left_lo'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 191. mul_left_lo: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 192. Undefined symbol 'mul_right_hi'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 192. mul_right_hi: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 193. Undefined symbol 'mul_right_lo'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 193. mul_right_lo: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 194. Undefined symbol 'mul_out_0'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 194. mul_out_0: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 195. Undefined symbol 'mul_out_1'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 195. mul_out_1: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 196. Undefined symbol 'mul_out_2'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 196. mul_out_2: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 197. Undefined symbol 'mul_out_3'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 197. mul_out_3: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 198. Undefined symbol 'mul_out'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 198. mul_out: Undefined symbol (last report in this block) +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 210. parse error, unexpected PROCESS, expecting SEMICOLON +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 22 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:3313 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 194. Undefined symbol 'mult_right_hi'. Should it be: mul_right_hi? +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 194. mult_right_hi: Undefined symbol (last report in this block) +ERROR:HDLParsers:3313 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 195. Undefined symbol 'mult_right_lo'. Should it be: mul_right_lo? +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" Line 195. mult_right_lo: Undefined symbol (last report in this block) +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 4 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 43. parse error, unexpected CLOSEPAR, expecting IDENTIFIER +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 43. parse error, unexpected CLOSEPAR, expecting IDENTIFIER +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 159. Undefined symbol 'clk_b'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 159. clk_b: Undefined symbol (last report in this block) +ERROR:HDLParsers:507 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 158. ) is not a correct resolution function name +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 159. parse error, unexpected COLON, expecting SEMICOLON or CLOSEPAR +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 4 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 253. parse error, unexpected CLOSEPAR +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 294. Undefined symbol 'data_in'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 294. data_in: Undefined symbol (last report in this block) +ERROR:HDLParsers:3312 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 295. Undefined symbol 'cid_dato'. +ERROR:HDLParsers:1209 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 295. cid_dato: Undefined symbol (last report in this block) +ERROR:HDLParsers:800 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 333. Type of cpu_dati is incompatible with type of cpu_id. +ERROR:HDLParsers:804 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 362. Size of concat operation is different than size of the target. +ERROR:HDLParsers:1401 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 380. Object mem_dato of mode OUT can not be read. +ERROR:HDLParsers:1402 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 392. Object mem_dati of mode IN can not be updated. +ERROR:HDLParsers:1401 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 393. Object mem_dato of mode OUT can not be read. +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 10 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:800 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 332. Type of cpu_dati is incompatible with type of cpu_id. +ERROR:HDLParsers:804 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 361. Size of concat operation is different than size of the target. +ERROR:HDLParsers:1401 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 379. Object mem_dato of mode OUT can not be read. +ERROR:HDLParsers:1402 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 391. Object mem_dati of mode IN can not be updated. +ERROR:HDLParsers:1401 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 392. Object mem_dato of mode OUT can not be read. +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 5 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:800 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 332. Type of cpu_dati is incompatible with type of cpu_id. +ERROR:HDLParsers:1401 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 379. Object mem_dato of mode OUT can not be read. +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 2 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +ERROR:HDLParsers:800 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 333. Type of cpu_dati is incompatible with type of cpu_id. +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +ERROR:HDLParsers:3384 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 44. String literal "0000000" is not of size 8. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 45. parse error, unexpected CLOSEPAR, expecting IDENTIFIER +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 2 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +ERROR:HDLParsers:164 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" Line 45. parse error, unexpected CLOSEPAR, expecting IDENTIFIER +--> + +Total memory usage is 82628 kilobytes + +Number of errors : 1 ( 0 filtered) +Number of warnings : 0 ( 0 filtered) +Number of infos : 0 ( 0 filtered) + +ERROR: XST failed +Process "Synthesize" did not complete. + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Architecture rtl of Entity mul32 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. + +========================================================================= +* HDL Analysis * +========================================================================= +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +WARNING:Xst:1610 - "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" line 198: Width mismatch. has a width of 64 bits but assigned expression is 208-bit wide. +Entity analyzed. Unit generated. + + +========================================================================= +* HDL Synthesis * +========================================================================= + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd". + Found 8-bit 16-to-1 multiplexer for signal . + Found 18x18-bit multiplier for signal <$n0000> created at line 194. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Summary: + inferred 64 D-type flip-flop(s). + inferred 1 Multiplier(s). + inferred 8 Multiplexer(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd". +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd". + Found 8-bit 16-to-1 multiplexer for signal <$n0000> created at line 176. + Found 8-bit 16-to-1 multiplexer for signal <$n0002>. + Found 8-bit 16-to-1 multiplexer for signal <$n0003>. + Found 8-bit 16-to-1 multiplexer for signal <$n0004>. + Found 8-bit 16-to-1 multiplexer for signal <$n0005>. + Found 8-bit 16-to-1 multiplexer for signal <$n0006>. + Found 8-bit 16-to-1 multiplexer for signal <$n0007>. + Found 8-bit 16-to-1 multiplexer for signal <$n0008>. + Found 8-bit 16-to-1 multiplexer for signal <$n0009>. + Found 8-bit 16-to-1 multiplexer for signal <$n0010>. + Found 8-bit 16-to-1 multiplexer for signal <$n0011>. + Found 8-bit 16-to-1 multiplexer for signal <$n0012>. + Found 8-bit 16-to-1 multiplexer for signal <$n0013>. + Found 8-bit 16-to-1 multiplexer for signal <$n0014>. + Found 8-bit 16-to-1 multiplexer for signal <$n0015>. + Found 8-bit 16-to-1 multiplexer for signal <$n0016>. + Found 8-bit 16-to-1 multiplexer for signal <$n0017>. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Summary: + inferred 136 Multiplexer(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd". + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Found 16x8-bit ROM for signal <$n0058> created at line 1153. + Found 16x211-bit ROM for signal <$n0405>. + Found 16x66-bit ROM for signal <$n0406>. + Found 16x12-bit ROM for signal <$n0340> created at line 3917. + Found 16x6-bit ROM for signal <$n0346> created at line 2637. + Found 16-bit adder for signal <$n0003> created at line 457. + Found 12-bit shifter logical left for signal <$n0091> created at line 3199. + Found 16-bit addsub for signal <$n0278>. + Found 16-bit addsub for signal <$n0279>. + Found 5-bit 4-to-1 multiplexer for signal <$n0280> created at line 2833. + Found 5-bit 4-to-1 multiplexer for signal <$n0281> created at line 3501. + Found 5-bit 4-to-1 multiplexer for signal <$n0283> created at line 2029. + Found 5-bit 16-to-1 multiplexer for signal <$n0284> created at line 1843. + Found 16-bit 4-to-1 multiplexer for signal <$n0287> created at line 3137. + Found 38-bit 4-to-1 multiplexer for signal <$n0297> created at line 2833. + Found 38-bit 16-to-1 multiplexer for signal <$n0302> created at line 1843. + Found 4-bit 16-to-1 multiplexer for signal <$n0309> created at line 1843. + Found 4-bit 4-to-1 multiplexer for signal <$n0310>. + Found 10-bit 4-to-1 multiplexer for signal <$n0318> created at line 2833. + Found 10-bit 16-to-1 multiplexer for signal <$n0321> created at line 1843. + Found 10-bit 4-to-1 multiplexer for signal <$n0324> created at line 2931. + Found 12-bit 4-to-1 multiplexer for signal <$n0325> created at line 2833. + Found 12-bit shifter logical left for signal <$n0326> created at line 3559. + Found 12-bit shifter logical left for signal <$n0329> created at line 3404. + Found 12-bit 16-to-1 multiplexer for signal <$n0330> created at line 1548. + Found 12-bit 16-to-1 multiplexer for signal <$n0333> created at line 1684. + Found 12-bit 16-to-1 multiplexer for signal <$n0334> created at line 1843. + Found 6-bit 16-to-1 multiplexer for signal <$n0344> created at line 1843. + Found 6-bit 4-to-1 multiplexer for signal <$n0347> created at line 2833. + Found 5-bit 16-to-1 multiplexer for signal <$n0351> created at line 1548. + Found 5-bit 4-to-1 multiplexer for signal <$n0352>. + Found 5-bit 16-to-1 multiplexer for signal <$n0354> created at line 1843. + Found 4-bit 4-to-1 multiplexer for signal <$n0363> created at line 3944. + Found 4-bit 4-to-1 multiplexer for signal <$n0364> created at line 4013. + Found 8-bit 16-to-1 multiplexer for signal <$n0373> created at line 1843. + Found 8-bit 16-to-1 multiplexer for signal <$n0379> created at line 3197. + Found 5-bit comparator lessequal for signal <$n0513> created at line 1151. + Found 5-bit comparator lessequal for signal <$n0514> created at line 1150. + Found 5-bit comparator lessequal for signal <$n0515> created at line 1168. + Found 1-bit xor2 for signal <$n0980> created at line 3822. + Found 1-bit xor2 for signal <$n1240> created at line 1398. + Found 1-bit xor2 for signal <$n1241> created at line 1400. + Found 1-bit xor3 for signal <$n1242> created at line 1407. + Found 16-bit xor2 for signal <$n1482> created at line 1201. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 3-bit register for signal . + Found 16-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 8-bit register for signal . + Found 24-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Summary: + inferred 5 ROM(s). + inferred 198 D-type flip-flop(s). + inferred 3 Adder/Subtractor(s). + inferred 3 Comparator(s). + inferred 249 Multiplexer(s). + inferred 3 Combinational logic shifter(s). + inferred 1 Xor(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd". +WARNING:Xst:653 - Signal is used but never assigned. Tied to value 0. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:1780 - Signal is never used or assigned. + Found 8-bit comparator equal for signal <$n0015> created at line 389. + Found 12-bit comparator equal for signal <$n0016> created at line 389. + Found 8-bit comparator not equal for signal <$n0017> created at line 369. + Found 12-bit comparator not equal for signal <$n0018> created at line 369. + Found 1-bit 4-to-1 multiplexer for signal . + Summary: + inferred 4 Comparator(s). + inferred 1 Multiplexer(s). +Unit synthesized. + +INFO:Xst:1767 - HDL ADVISOR - Resource sharing has identified that some arithmetic operations in this design can share the same physical resources for reduced device utilization. For improved clock frequency you may try to disable resource sharing. + +========================================================================= +* Advanced HDL Synthesis * +========================================================================= + +Advanced RAM inference ... +Advanced multiplier inference ... +Advanced Registered AddSub inference ... +Dynamic shift register inference ... + +========================================================================= +HDL Synthesis Report + +Macro Statistics +# ROMs : 5 + 16x12-bit ROM : 1 + 16x211-bit ROM : 1 + 16x6-bit ROM : 1 + 16x66-bit ROM : 1 + 16x8-bit ROM : 1 +# Multipliers : 1 + 18x18-bit multiplier : 1 +# Adders/Subtractors : 3 + 16-bit adder : 1 + 16-bit addsub : 2 +# Registers : 150 + 1-bit register : 115 + 3-bit register : 1 + 8-bit register : 34 +# Comparators : 7 + 12-bit comparator equal : 1 + 12-bit comparator not equal : 1 + 5-bit comparator lessequal : 3 + 8-bit comparator equal : 1 + 8-bit comparator not equal : 1 +# Multiplexers : 44 + 1-bit 4-to-1 multiplexer : 1 + 10-bit 16-to-1 multiplexer : 1 + 10-bit 4-to-1 multiplexer : 2 + 12-bit 16-to-1 multiplexer : 3 + 12-bit 4-to-1 multiplexer : 1 + 16-bit 4-to-1 multiplexer : 1 + 38-bit 16-to-1 multiplexer : 1 + 38-bit 4-to-1 multiplexer : 1 + 4-bit 16-to-1 multiplexer : 1 + 4-bit 4-to-1 multiplexer : 3 + 5-bit 16-to-1 multiplexer : 3 + 5-bit 4-to-1 multiplexer : 4 + 6-bit 16-to-1 multiplexer : 1 + 6-bit 4-to-1 multiplexer : 1 + 8-bit 16-to-1 multiplexer : 20 +# Logic shifters : 3 + 12-bit shifter logical left : 3 +# Xors : 5 + 1-bit xor2 : 3 + 1-bit xor3 : 1 + 16-bit xor2 : 1 + +========================================================================= + +========================================================================= +* Low Level Synthesis * +========================================================================= +WARNING:Xst:1989 - Unit : instances , of unit are equivalent, second instance is removed + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... +Loading device for application Rf_Device from file '3s1000.nph' in environment C:/Xilinx_ISE_7.1. + +Mapping all equations... +Building and optimizing final netlist ... +Found area constraint ratio of 100 (+ 5) on block my_unicpu09, actual ratio is 21. +FlipFlop my_cpu/ea_5 has been replicated 1 time(s) +FlipFlop my_cpu/ea_6 has been replicated 1 time(s) +FlipFlop my_cpu/md_0 has been replicated 3 time(s) +FlipFlop my_cpu/md_1 has been replicated 2 time(s) +FlipFlop my_cpu/md_2 has been replicated 3 time(s) +FlipFlop my_cpu/md_3 has been replicated 3 time(s) +FlipFlop my_cpu/md_4 has been replicated 2 time(s) +FlipFlop my_cpu/md_5 has been replicated 2 time(s) +FlipFlop my_cpu/md_6 has been replicated 2 time(s) +FlipFlop my_cpu/md_7 has been replicated 3 time(s) +FlipFlop my_cpu/op_code_0 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_1 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_2 has been replicated 3 time(s) +FlipFlop my_cpu/op_code_3 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_4 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_5 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_6 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_7 has been replicated 2 time(s) +FlipFlop my_cpu/state_0 has been replicated 10 time(s) +FlipFlop my_cpu/state_1 has been replicated 10 time(s) +FlipFlop my_cpu/state_2 has been replicated 9 time(s) +FlipFlop my_cpu/state_3 has been replicated 9 time(s) +FlipFlop my_cpu/state_4 has been replicated 11 time(s) +FlipFlop my_cpu/state_5 has been replicated 9 time(s) +FlipFlop my_cpu/state_6 has been replicated 12 time(s) +FlipFlop my_cpu/state_7 has been replicated 6 time(s) +PACKER Warning: Lut my_cpu/cpu09__n0279<1>lut driving carry my_cpu/cpu09__n0279<1>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<5>lut driving carry my_cpu/cpu09__n0279<5>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<6>lut driving carry my_cpu/cpu09__n0279<6>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<7>lut driving carry my_cpu/cpu09__n0279<7>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<13>lut driving carry my_cpu/cpu09__n0279<13>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<3>lut driving carry my_cpu/cpu09__n0278<3>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<4>lut driving carry my_cpu/cpu09__n0278<4>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<5>lut driving carry my_cpu/cpu09__n0278<5>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<6>lut driving carry my_cpu/cpu09__n0278<6>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<7>lut driving carry my_cpu/cpu09__n0278<7>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<8>lut driving carry my_cpu/cpu09__n0278<8>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<9>lut driving carry my_cpu/cpu09__n0278<9>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<10>lut driving carry my_cpu/cpu09__n0278<10>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<11>lut driving carry my_cpu/cpu09__n0278<11>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<12>lut driving carry my_cpu/cpu09__n0278<12>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<13>lut driving carry my_cpu/cpu09__n0278<13>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<14>lut driving carry my_cpu/cpu09__n0278<14>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. + +========================================================================= +* Final Report * +========================================================================= + +Device utilization summary: +--------------------------- + +Selected Device : 3s1000ft256-5 + + Number of Slices: 1665 out of 7680 21% + Number of Slice Flip Flops: 505 out of 15360 3% + Number of 4 input LUTs: 3084 out of 15360 20% + Number of bonded IOBs: 67 out of 173 38% + Number of BRAMs: 3 out of 24 12% + Number of MULT18X18s: 1 out of 24 4% + Number of GCLKs: 1 out of 8 12% + + +========================================================================= +TIMING REPORT + + +Clock Information: +------------------ +-----------------------------------+------------------------+-------+ +Clock Signal | Clock buffer(FF name) | Load | +-----------------------------------+------------------------+-------+ +clk | BUFGP | 508 | +-----------------------------------+------------------------+-------+ + +Timing Summary: +--------------- +Speed Grade: -5 + + Minimum period: 28.328ns (Maximum Frequency: 35.301MHz) + Minimum input arrival time before clock: 11.983ns + Maximum output required time after clock: 25.036ns + Maximum combinational path delay: No path found + +========================================================================= + + + + +Started process "Translate". + +PMSPEC -- Overriding Xilinx file +with local file + +Command Line: ngdbuild -intstyle ise -dd +c:\vhdl\system09\rtl\system09_digilent_3s1000/_ngo -nt timestamp -i -p +xc3s1000-ft256-5 my_unicpu09.ngc my_unicpu09.ngd + +Reading NGO file 'C:/Vhdl/System09/rtl/System09_Digilent_3S1000/my_unicpu09.ngc' +... + +Checking timing specifications ... +Checking expanded design ... + +NGDBUILD Design Results Summary: + Number of errors: 0 + Number of warnings: 0 + +Writing NGD file "my_unicpu09.ngd" ... + +Writing NGDBUILD log file "my_unicpu09.bld"... + +NGDBUILD done. + + + + +Started process "Map". + +PMSPEC -- Overriding Xilinx file +with local file +Using target part "3s1000ft256-5". +Mapping design into LUTs... +Running directed packing... +Running delay-based LUT packing... +Running related packing... + +Design Summary: +Number of errors: 0 +Number of warnings: 0 +Logic Utilization: + Number of Slice Flip Flops: 505 out of 15,360 3% + Number of 4 input LUTs: 3,070 out of 15,360 19% +Logic Distribution: + Number of occupied Slices: 1,706 out of 7,680 22% + Number of Slices containing only related logic: 1,706 out of 1,706 100% + Number of Slices containing unrelated logic: 0 out of 1,706 0% + *See NOTES below for an explanation of the effects of unrelated logic +Total Number 4 input LUTs: 3,085 out of 15,360 20% + Number used as logic: 3,070 + Number used as a route-thru: 15 + Number of bonded IOBs: 67 out of 173 38% + Number of Block RAMs: 3 out of 24 12% + Number of MULT18X18s: 1 out of 24 4% + Number of GCLKs: 1 out of 8 12% + +Total equivalent gate count for design: 223,800 +Additional JTAG gate count for IOBs: 3,216 +Peak Memory Usage: 136 MB + +NOTES: + + Related logic is defined as being logic that shares connectivity - e.g. two + LUTs are "related" if they share common inputs. When assembling slices, + Map gives priority to combine logic that is related. Doing so results in + the best timing performance. + + Unrelated logic shares no connectivity. Map will only begin packing + unrelated logic into a slice once 99% of the slices are occupied through + related logic packing. + + Note that once logic distribution reaches the 99% level through related + logic packing, this does not mean the device is completely utilized. + Unrelated logic packing will then begin, continuing until all usable LUTs + and FFs are occupied. Depending on your timing budget, increased levels of + unrelated logic packing may adversely affect the overall timing performance + of your design. + +Mapping completed. +See MAP report file "my_unicpu09_map.mrp" for details. + + + + +Started process "Place & Route". + + + + +Constraints file: my_unicpu09.pcf. +PMSPEC -- Overriding Xilinx file +with local file +Loading device for application Rf_Device from file '3s1000.nph' in environment +C:/Xilinx_ISE_7.1. + "my_unicpu09" is an NCD, version 3.1, device xc3s1000, package ft256, speed +-5 + +Initializing temperature to 85.000 Celsius. (default - Range: 0.000 to 85.000 +Celsius) +Initializing voltage to 1.140 Volts. (default - Range: 1.140 to 1.260 Volts) + + +Device speed data version: "PRODUCTION 1.37 2005-07-22". + + +Device Utilization Summary: + + Number of BUFGMUXs 1 out of 8 12% + Number of External IOBs 67 out of 173 38% + Number of LOCed IOBs 0 out of 67 0% + + Number of MULT18X18s 1 out of 24 4% + Number of RAMB16s 3 out of 24 12% + Number of Slices 1706 out of 7680 22% + Number of SLICEMs 8 out of 3840 1% + + + +Overall effort level (-ol): Standard (set by user) +Placer effort level (-pl): Standard (set by user) +Placer cost table entry (-t): 1 +Router effort level (-rl): Standard (set by user) + + +Starting Placer + +Phase 1.1 +Phase 1.1 (Checksum:98e117) REAL time: 1 secs + +Phase 2.31 +Phase 2.31 (Checksum:1312cfe) REAL time: 1 secs + +Phase 3.2 +. + + +Phase 3.2 (Checksum:1c9c37d) REAL time: 2 secs + +Phase 4.3 +Phase 4.3 (Checksum:26259fc) REAL time: 2 secs + +Phase 5.5 +Phase 5.5 (Checksum:2faf07b) REAL time: 2 secs + +Phase 6.8 +.................................... +Phase 6.8 (Checksum:e635dd) REAL time: 3 secs + +Phase 7.5 +Phase 7.5 (Checksum:42c1d79) REAL time: 3 secs + +Phase 8.18 +Phase 8.18 (Checksum:4c4b3f8) REAL time: 5 secs + +Phase 9.5 +Phase 9.5 (Checksum:55d4a77) REAL time: 5 secs + +Writing design to file my_unicpu09.ncd + + +Total REAL time to Placer completion: 5 secs +Total CPU time to Placer completion: 5 secs + +Starting Router + +Phase 1: 12874 unrouted; REAL time: 6 secs + +Phase 2: 12434 unrouted; REAL time: 6 secs + +Phase 3: 4732 unrouted; REAL time: 7 secs + +Phase 4: 0 unrouted; REAL time: 9 secs + + +Total REAL time to Router completion: 9 secs +Total CPU time to Router completion: 9 secs + +Generating "PAR" statistics. + +************************** +Generating Clock Report +************************** + ++---------------------+--------------+------+------+------------+-------------+ +| Clock Net | Resource |Locked|Fanout|Net Skew(ns)|Max Delay(ns)| ++---------------------+--------------+------+------+------------+-------------+ +| clk_BUFGP | BUFGMUX5| No | 406 | 0.406 | 1.023 | ++---------------------+--------------+------+------+------------+-------------+ + +Generating Pad Report. + +All signals are completely routed. + +Total REAL time to PAR completion: 11 secs +Total CPU time to PAR completion: 10 secs + +Peak Memory Usage: 111 MB + +Placement: Completed - No errors found. +Routing: Completed - No errors found. + +Number of error messages: 0 +Number of warning messages: 0 +Number of info messages: 1 + +Writing design to file my_unicpu09.ncd + + + +PAR done! + +Started process "Generate Post-Place & Route Static Timing". + +PMSPEC -- Overriding Xilinx file +with local file +Loading device for application Rf_Device from file '3s1000.nph' in environment +C:/Xilinx_ISE_7.1. + "my_unicpu09" is an NCD, version 3.1, device xc3s1000, package ft256, speed +-5 + +Analysis completed Sun Sep 07 22:57:50 2008 +-------------------------------------------------------------------------------- + +Generating Report ... + +Number of warnings: 0 +Total time: 5 secs + + + + + + + +Started process "Programming File Generation Report". + + + +Project Navigator Auto-Make Log File +------------------------------------- + + + + + + + + + + +Started process "Synthesize". + + +========================================================================= +* HDL Compilation * +========================================================================= +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd" in Library work. +Architecture rtl of Entity cpu09 is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd" in Library work. +Architecture rtl of Entity dat_ram is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd" in Library work. +Architecture rtl of Entity dpr_2k is up to date. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd" in Library work. +Entity compiled. +Entity (Architecture ) compiled. +Compiling vhdl file "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd" in Library work. +Architecture rtl of Entity my_unicpu09 is up to date. + +========================================================================= +* HDL Analysis * +========================================================================= +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + +Analyzing Entity (Architecture ). +Entity analyzed. Unit generated. + + +========================================================================= +* HDL Synthesis * +========================================================================= + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/mul32.vhd". + Found 8-bit 16-to-1 multiplexer for signal . + Found 18x18-bit multiplier for signal <$n0000> created at line 194. + Found 18x18-bit multiplier for signal <$n0001> created at line 195. + Found 18x18-bit multiplier for signal <$n0002> created at line 196. + Found 18x18-bit multiplier for signal <$n0003> created at line 197. + Found 64-bit adder for signal <$n0004> created at line 198. + Found 64-bit adder for signal <$n0013>. + Found 64-bit adder for signal <$n0014>. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Summary: + inferred 64 D-type flip-flop(s). + inferred 3 Adder/Subtractor(s). + inferred 4 Multiplier(s). + inferred 8 Multiplexer(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../Spartan3/dpr2k_b16.vhd". +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/datram.vhd". + Found 8-bit 16-to-1 multiplexer for signal <$n0000> created at line 176. + Found 8-bit 16-to-1 multiplexer for signal <$n0002>. + Found 8-bit 16-to-1 multiplexer for signal <$n0003>. + Found 8-bit 16-to-1 multiplexer for signal <$n0004>. + Found 8-bit 16-to-1 multiplexer for signal <$n0005>. + Found 8-bit 16-to-1 multiplexer for signal <$n0006>. + Found 8-bit 16-to-1 multiplexer for signal <$n0007>. + Found 8-bit 16-to-1 multiplexer for signal <$n0008>. + Found 8-bit 16-to-1 multiplexer for signal <$n0009>. + Found 8-bit 16-to-1 multiplexer for signal <$n0010>. + Found 8-bit 16-to-1 multiplexer for signal <$n0011>. + Found 8-bit 16-to-1 multiplexer for signal <$n0012>. + Found 8-bit 16-to-1 multiplexer for signal <$n0013>. + Found 8-bit 16-to-1 multiplexer for signal <$n0014>. + Found 8-bit 16-to-1 multiplexer for signal <$n0015>. + Found 8-bit 16-to-1 multiplexer for signal <$n0016>. + Found 8-bit 16-to-1 multiplexer for signal <$n0017>. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Summary: + inferred 136 Multiplexer(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/cpu09.vhd". + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Using one-hot encoding for signal . + Found 16x8-bit ROM for signal <$n0058> created at line 1153. + Found 16x211-bit ROM for signal <$n0405>. + Found 16x66-bit ROM for signal <$n0406>. + Found 16x12-bit ROM for signal <$n0340> created at line 3917. + Found 16x6-bit ROM for signal <$n0346> created at line 2637. + Found 16-bit adder for signal <$n0003> created at line 457. + Found 12-bit shifter logical left for signal <$n0091> created at line 3199. + Found 16-bit addsub for signal <$n0278>. + Found 16-bit addsub for signal <$n0279>. + Found 5-bit 4-to-1 multiplexer for signal <$n0280> created at line 2833. + Found 5-bit 4-to-1 multiplexer for signal <$n0281> created at line 3501. + Found 5-bit 4-to-1 multiplexer for signal <$n0283> created at line 2029. + Found 5-bit 16-to-1 multiplexer for signal <$n0284> created at line 1843. + Found 16-bit 4-to-1 multiplexer for signal <$n0287> created at line 3137. + Found 38-bit 4-to-1 multiplexer for signal <$n0297> created at line 2833. + Found 38-bit 16-to-1 multiplexer for signal <$n0302> created at line 1843. + Found 4-bit 16-to-1 multiplexer for signal <$n0309> created at line 1843. + Found 4-bit 4-to-1 multiplexer for signal <$n0310>. + Found 10-bit 4-to-1 multiplexer for signal <$n0318> created at line 2833. + Found 10-bit 16-to-1 multiplexer for signal <$n0321> created at line 1843. + Found 10-bit 4-to-1 multiplexer for signal <$n0324> created at line 2931. + Found 12-bit 4-to-1 multiplexer for signal <$n0325> created at line 2833. + Found 12-bit shifter logical left for signal <$n0326> created at line 3559. + Found 12-bit shifter logical left for signal <$n0329> created at line 3404. + Found 12-bit 16-to-1 multiplexer for signal <$n0330> created at line 1548. + Found 12-bit 16-to-1 multiplexer for signal <$n0333> created at line 1684. + Found 12-bit 16-to-1 multiplexer for signal <$n0334> created at line 1843. + Found 6-bit 16-to-1 multiplexer for signal <$n0344> created at line 1843. + Found 6-bit 4-to-1 multiplexer for signal <$n0347> created at line 2833. + Found 5-bit 16-to-1 multiplexer for signal <$n0351> created at line 1548. + Found 5-bit 4-to-1 multiplexer for signal <$n0352>. + Found 5-bit 16-to-1 multiplexer for signal <$n0354> created at line 1843. + Found 4-bit 4-to-1 multiplexer for signal <$n0363> created at line 3944. + Found 4-bit 4-to-1 multiplexer for signal <$n0364> created at line 4013. + Found 8-bit 16-to-1 multiplexer for signal <$n0373> created at line 1843. + Found 8-bit 16-to-1 multiplexer for signal <$n0379> created at line 3197. + Found 5-bit comparator lessequal for signal <$n0513> created at line 1151. + Found 5-bit comparator lessequal for signal <$n0514> created at line 1150. + Found 5-bit comparator lessequal for signal <$n0515> created at line 1168. + Found 1-bit xor2 for signal <$n0980> created at line 3822. + Found 1-bit xor2 for signal <$n1240> created at line 1398. + Found 1-bit xor2 for signal <$n1241> created at line 1400. + Found 1-bit xor3 for signal <$n1242> created at line 1407. + Found 16-bit xor2 for signal <$n1482> created at line 1201. + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 3-bit register for signal . + Found 16-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 1-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 8-bit register for signal . + Found 16-bit register for signal . + Found 8-bit register for signal . + Found 24-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Found 16-bit register for signal . + Summary: + inferred 5 ROM(s). + inferred 198 D-type flip-flop(s). + inferred 3 Adder/Subtractor(s). + inferred 3 Comparator(s). + inferred 249 Multiplexer(s). + inferred 3 Combinational logic shifter(s). + inferred 1 Xor(s). +Unit synthesized. + + +Synthesizing Unit . + Related source file is "C:/Vhdl/System09/rtl/System09_Digilent_3S1000/../VHDL/unicpu09.vhd". +WARNING:Xst:653 - Signal is used but never assigned. Tied to value 0. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:646 - Signal > is assigned but never used. +WARNING:Xst:1780 - Signal is never used or assigned. + Found 8-bit comparator equal for signal <$n0015> created at line 389. + Found 12-bit comparator equal for signal <$n0016> created at line 389. + Found 8-bit comparator not equal for signal <$n0017> created at line 369. + Found 12-bit comparator not equal for signal <$n0018> created at line 369. + Found 1-bit 4-to-1 multiplexer for signal . + Summary: + inferred 4 Comparator(s). + inferred 1 Multiplexer(s). +Unit synthesized. + +INFO:Xst:1767 - HDL ADVISOR - Resource sharing has identified that some arithmetic operations in this design can share the same physical resources for reduced device utilization. For improved clock frequency you may try to disable resource sharing. + +========================================================================= +* Advanced HDL Synthesis * +========================================================================= + +Advanced RAM inference ... +Advanced multiplier inference ... +Advanced Registered AddSub inference ... +Dynamic shift register inference ... + +========================================================================= +HDL Synthesis Report + +Macro Statistics +# ROMs : 5 + 16x12-bit ROM : 1 + 16x211-bit ROM : 1 + 16x6-bit ROM : 1 + 16x66-bit ROM : 1 + 16x8-bit ROM : 1 +# Multipliers : 4 + 18x18-bit multiplier : 4 +# Adders/Subtractors : 6 + 16-bit adder : 1 + 16-bit addsub : 2 + 64-bit adder : 3 +# Registers : 150 + 1-bit register : 115 + 3-bit register : 1 + 8-bit register : 34 +# Comparators : 7 + 12-bit comparator equal : 1 + 12-bit comparator not equal : 1 + 5-bit comparator lessequal : 3 + 8-bit comparator equal : 1 + 8-bit comparator not equal : 1 +# Multiplexers : 44 + 1-bit 4-to-1 multiplexer : 1 + 10-bit 16-to-1 multiplexer : 1 + 10-bit 4-to-1 multiplexer : 2 + 12-bit 16-to-1 multiplexer : 3 + 12-bit 4-to-1 multiplexer : 1 + 16-bit 4-to-1 multiplexer : 1 + 38-bit 16-to-1 multiplexer : 1 + 38-bit 4-to-1 multiplexer : 1 + 4-bit 16-to-1 multiplexer : 1 + 4-bit 4-to-1 multiplexer : 3 + 5-bit 16-to-1 multiplexer : 3 + 5-bit 4-to-1 multiplexer : 4 + 6-bit 16-to-1 multiplexer : 1 + 6-bit 4-to-1 multiplexer : 1 + 8-bit 16-to-1 multiplexer : 20 +# Logic shifters : 3 + 12-bit shifter logical left : 3 +# Xors : 5 + 1-bit xor2 : 3 + 1-bit xor3 : 1 + 16-bit xor2 : 1 + +========================================================================= + +========================================================================= +* Low Level Synthesis * +========================================================================= +WARNING:Xst:1989 - Unit : instances , of unit are equivalent, second instance is removed + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... + +Optimizing unit ... +Loading device for application Rf_Device from file '3s1000.nph' in environment C:/Xilinx_ISE_7.1. + +Mapping all equations... +Building and optimizing final netlist ... +Found area constraint ratio of 100 (+ 5) on block my_unicpu09, actual ratio is 21. +FlipFlop my_cpu/ea_5 has been replicated 1 time(s) +FlipFlop my_cpu/ea_6 has been replicated 1 time(s) +FlipFlop my_cpu/md_0 has been replicated 3 time(s) +FlipFlop my_cpu/md_1 has been replicated 3 time(s) +FlipFlop my_cpu/md_2 has been replicated 2 time(s) +FlipFlop my_cpu/md_3 has been replicated 3 time(s) +FlipFlop my_cpu/md_4 has been replicated 1 time(s) +FlipFlop my_cpu/md_5 has been replicated 1 time(s) +FlipFlop my_cpu/md_6 has been replicated 1 time(s) +FlipFlop my_cpu/md_7 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_0 has been replicated 3 time(s) +FlipFlop my_cpu/op_code_1 has been replicated 3 time(s) +FlipFlop my_cpu/op_code_2 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_3 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_4 has been replicated 3 time(s) +FlipFlop my_cpu/op_code_5 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_6 has been replicated 2 time(s) +FlipFlop my_cpu/op_code_7 has been replicated 2 time(s) +FlipFlop my_cpu/state_0 has been replicated 11 time(s) +FlipFlop my_cpu/state_1 has been replicated 9 time(s) +FlipFlop my_cpu/state_2 has been replicated 10 time(s) +FlipFlop my_cpu/state_3 has been replicated 8 time(s) +FlipFlop my_cpu/state_4 has been replicated 12 time(s) +FlipFlop my_cpu/state_5 has been replicated 9 time(s) +FlipFlop my_cpu/state_6 has been replicated 11 time(s) +FlipFlop my_cpu/state_7 has been replicated 6 time(s) +PACKER Warning: Lut my_cpu/cpu09__n0279<5>lut driving carry my_cpu/cpu09__n0279<5>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<6>lut driving carry my_cpu/cpu09__n0279<6>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<7>lut driving carry my_cpu/cpu09__n0279<7>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0279<13>lut driving carry my_cpu/cpu09__n0279<13>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<3>lut driving carry my_cpu/cpu09__n0278<3>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<4>lut driving carry my_cpu/cpu09__n0278<4>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<5>lut driving carry my_cpu/cpu09__n0278<5>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<6>lut driving carry my_cpu/cpu09__n0278<6>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<7>lut driving carry my_cpu/cpu09__n0278<7>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<8>lut driving carry my_cpu/cpu09__n0278<8>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<9>lut driving carry my_cpu/cpu09__n0278<9>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<10>lut driving carry my_cpu/cpu09__n0278<10>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<11>lut driving carry my_cpu/cpu09__n0278<11>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<12>lut driving carry my_cpu/cpu09__n0278<12>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<13>lut driving carry my_cpu/cpu09__n0278<13>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. +PACKER Warning: Lut my_cpu/cpu09__n0278<14>lut driving carry my_cpu/cpu09__n0278<14>cy can not be packed with the carry due to conflict with the common signal requirement between the LUT inputs and the Carry DI/MAND pins. This would result in an extra LUT for a feedthrough. + +========================================================================= +* Final Report * +========================================================================= + +Device utilization summary: +--------------------------- + +Selected Device : 3s1000ft256-5 + + Number of Slices: 1725 out of 7680 22% + Number of Slice Flip Flops: 503 out of 15360 3% + Number of 4 input LUTs: 3204 out of 15360 20% + Number of bonded IOBs: 67 out of 173 38% + Number of BRAMs: 3 out of 24 12% + Number of MULT18X18s: 4 out of 24 16% + Number of GCLKs: 1 out of 8 12% + + +========================================================================= +TIMING REPORT + + +Clock Information: +------------------ +-----------------------------------+------------------------+-------+ +Clock Signal | Clock buffer(FF name) | Load | +-----------------------------------+------------------------+-------+ +clk | BUFGP | 506 | +-----------------------------------+------------------------+-------+ + +Timing Summary: +--------------- +Speed Grade: -5 + + Minimum period: 29.223ns (Maximum Frequency: 34.219MHz) + Minimum input arrival time before clock: 11.983ns + Maximum output required time after clock: 25.540ns + Maximum combinational path delay: No path found + +========================================================================= + + + + +Started process "Translate". + +PMSPEC -- Overriding Xilinx file +with local file + +Command Line: ngdbuild -intstyle ise -dd +c:\vhdl\system09\rtl\system09_digilent_3s1000/_ngo -nt timestamp -i -p +xc3s1000-ft256-5 my_unicpu09.ngc my_unicpu09.ngd + +Reading NGO file 'C:/Vhdl/System09/rtl/System09_Digilent_3S1000/my_unicpu09.ngc' +... + +Checking timing specifications ... +Checking expanded design ... + +NGDBUILD Design Results Summary: + Number of errors: 0 + Number of warnings: 0 + +Writing NGD file "my_unicpu09.ngd" ... + +Writing NGDBUILD log file "my_unicpu09.bld"... + +NGDBUILD done. + + + + +Started process "Map". + +PMSPEC -- Overriding Xilinx file +with local file +Using target part "3s1000ft256-5". +Mapping design into LUTs... +Running directed packing... +Running delay-based LUT packing... +Running related packing... + +Design Summary: +Number of errors: 0 +Number of warnings: 0 +Logic Utilization: + Number of Slice Flip Flops: 503 out of 15,360 3% + Number of 4 input LUTs: 3,145 out of 15,360 20% +Logic Distribution: + Number of occupied Slices: 1,767 out of 7,680 23% + Number of Slices containing only related logic: 1,767 out of 1,767 100% + Number of Slices containing unrelated logic: 0 out of 1,767 0% + *See NOTES below for an explanation of the effects of unrelated logic +Total Number 4 input LUTs: 3,207 out of 15,360 20% + Number used as logic: 3,145 + Number used as a route-thru: 62 + Number of bonded IOBs: 67 out of 173 38% + Number of Block RAMs: 3 out of 24 12% + Number of MULT18X18s: 4 out of 24 16% + Number of GCLKs: 1 out of 8 12% + +Total equivalent gate count for design: 236,981 +Additional JTAG gate count for IOBs: 3,216 +Peak Memory Usage: 138 MB + +NOTES: + + Related logic is defined as being logic that shares connectivity - e.g. two + LUTs are "related" if they share common inputs. When assembling slices, + Map gives priority to combine logic that is related. Doing so results in + the best timing performance. + + Unrelated logic shares no connectivity. Map will only begin packing + unrelated logic into a slice once 99% of the slices are occupied through + related logic packing. + + Note that once logic distribution reaches the 99% level through related + logic packing, this does not mean the device is completely utilized. + Unrelated logic packing will then begin, continuing until all usable LUTs + and FFs are occupied. Depending on your timing budget, increased levels of + unrelated logic packing may adversely affect the overall timing performance + of your design. + +Mapping completed. +See MAP report file "my_unicpu09_map.mrp" for details. + + + + +Started process "Place & Route". + + + + +Constraints file: my_unicpu09.pcf. +PMSPEC -- Overriding Xilinx file +with local file +Loading device for application Rf_Device from file '3s1000.nph' in environment +C:/Xilinx_ISE_7.1. + "my_unicpu09" is an NCD, version 3.1, device xc3s1000, package ft256, speed +-5 + +Initializing temperature to 85.000 Celsius. (default - Range: 0.000 to 85.000 +Celsius) +Initializing voltage to 1.140 Volts. (default - Range: 1.140 to 1.260 Volts) + + +Device speed data version: "PRODUCTION 1.37 2005-07-22". + + +Device Utilization Summary: + + Number of BUFGMUXs 1 out of 8 12% + Number of External IOBs 67 out of 173 38% + Number of LOCed IOBs 0 out of 67 0% + + Number of MULT18X18s 4 out of 24 16% + Number of RAMB16s 3 out of 24 12% + Number of Slices 1767 out of 7680 23% + Number of SLICEMs 22 out of 3840 1% + + + +Overall effort level (-ol): Standard (set by user) +Placer effort level (-pl): Standard (set by user) +Placer cost table entry (-t): 1 +Router effort level (-rl): Standard (set by user) + + +Starting Placer + +Phase 1.1 +Phase 1.1 (Checksum:98ef29) REAL time: 1 secs + +Phase 2.31 +Phase 2.31 (Checksum:1312cfe) REAL time: 1 secs + +Phase 3.2 +. + + +Phase 3.2 (Checksum:1c9c37d) REAL time: 1 secs + +Phase 4.3 +Phase 4.3 (Checksum:26259fc) REAL time: 1 secs + +Phase 5.5 +Phase 5.5 (Checksum:2faf07b) REAL time: 1 secs + +Phase 6.8 +................................................. +Phase 6.8 (Checksum:fb7411) REAL time: 4 secs + +Phase 7.5 +Phase 7.5 (Checksum:42c1d79) REAL time: 4 secs + +Phase 8.18 +Phase 8.18 (Checksum:4c4b3f8) REAL time: 5 secs + +Phase 9.5 +Phase 9.5 (Checksum:55d4a77) REAL time: 5 secs + +Writing design to file my_unicpu09.ncd + + +Total REAL time to Placer completion: 6 secs +Total CPU time to Placer completion: 6 secs + +Starting Router + +Phase 1: 13294 unrouted; REAL time: 6 secs + +Phase 2: 12845 unrouted; REAL time: 7 secs + +Phase 3: 5146 unrouted; REAL time: 8 secs + +Phase 4: 0 unrouted; REAL time: 11 secs + + +Total REAL time to Router completion: 11 secs +Total CPU time to Router completion: 11 secs + +Generating "PAR" statistics. + +************************** +Generating Clock Report +************************** + ++---------------------+--------------+------+------+------------+-------------+ +| Clock Net | Resource |Locked|Fanout|Net Skew(ns)|Max Delay(ns)| ++---------------------+--------------+------+------+------------+-------------+ +| clk_BUFGP | BUFGMUX5| No | 403 | 0.412 | 1.041 | ++---------------------+--------------+------+------+------------+-------------+ + +Generating Pad Report. + +All signals are completely routed. + +Total REAL time to PAR completion: 12 secs +Total CPU time to PAR completion: 12 secs + +Peak Memory Usage: 120 MB + +Placement: Completed - No errors found. +Routing: Completed - No errors found. + +Number of error messages: 0 +Number of warning messages: 0 +Number of info messages: 1 + +Writing design to file my_unicpu09.ncd + + + +PAR done! + +Started process "Generate Post-Place & Route Static Timing". + +PMSPEC -- Overriding Xilinx file +with local file +Loading device for application Rf_Device from file '3s1000.nph' in environment +C:/Xilinx_ISE_7.1. + "my_unicpu09" is an NCD, version 3.1, device xc3s1000, package ft256, speed +-5 + +Analysis completed Sun Sep 07 23:06:23 2008 +-------------------------------------------------------------------------------- + +Generating Report ... + +Number of warnings: 0 +Total time: 5 secs + + + + + + + +Started process "Generate Programming File". + + + +Project Navigator Auto-Make Log File +------------------------------------- + + + +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.ngc" +deleting "my_unicpu09.ngr" +deleting "__projnav/ednTOngd_tcl.rsp" +deleting ""c:\vhdl\system09\rtl\system09_digilent_3s1000/_ngo"" +deleting "my_unicpu09.ngd" +deleting "my_unicpu09_ngdbuild.nav" +deleting "my_unicpu09.bld" +deleting ".untf" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09_map.ncd" +deleting "my_unicpu09.ngm" +deleting "my_unicpu09.pcf" +deleting "my_unicpu09.nc1" +deleting "my_unicpu09.mrp" +deleting "my_unicpu09_map.mrp" +deleting "my_unicpu09.mdf" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_map.ngm" +deleting "__projnav/ncdTOtwr_tcl.rsp" +deleting "my_unicpu09.twr" +deleting "my_unicpu09.twx" +deleting "my_unicpu09.tsi" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_summary.html" +deleting "__projnav/nc1TOncd_tcl.rsp" +deleting "my_unicpu09.ncd" +deleting "my_unicpu09.par" +deleting "my_unicpu09.pad" +deleting "my_unicpu09_pad.txt" +deleting "my_unicpu09_pad.csv" +deleting "my_unicpu09.pad_txt" +deleting "my_unicpu09.dly" +deleting "reportgen.log" +deleting "my_unicpu09.xpi" +deleting "my_unicpu09.grf" +deleting "my_unicpu09.itr" +deleting "my_unicpu09_last_par.ncd" +deleting "my_unicpu09.placed_ncd_tracker" +deleting "my_unicpu09.routed_ncd_tracker" +deleting "my_unicpu09.cmd_log" +deleting "__projnav/my_unicpu09_ncdTOut_tcl.rsp" +deleting "__projnav/bitgen.rsp" +deleting "bitgen.ut" +deleting "my_unicpu09.ut" +deleting "my_unicpu09.bgn" +deleting "my_unicpu09.rbt" +deleting "my_unicpu09.ll" +deleting "my_unicpu09.msk" +deleting "my_unicpu09.drc" +deleting "my_unicpu09.nky" +deleting "my_unicpu09.bit" +deleting "my_unicpu09.bin" +deleting "my_unicpu09.isc" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.lso" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09.syr" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.sprj" +deleting "my_unicpu09.ana" +deleting "my_unicpu09.stx" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09.ngc" +deleting "my_unicpu09.ngr" +deleting "__projnav/ednTOngd_tcl.rsp" +deleting ""c:\vhdl\system09\rtl\system09_digilent_3s1000/_ngo"" +deleting "my_unicpu09.ngd" +deleting "my_unicpu09_ngdbuild.nav" +deleting "my_unicpu09.bld" +deleting ".untf" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_summary.html" +deleting "my_unicpu09_map.ncd" +deleting "my_unicpu09.ngm" +deleting "my_unicpu09.pcf" +deleting "my_unicpu09.nc1" +deleting "my_unicpu09.mrp" +deleting "my_unicpu09_map.mrp" +deleting "my_unicpu09.mdf" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_map.ngm" +deleting "__projnav/ncdTOtwr_tcl.rsp" +deleting "my_unicpu09.twr" +deleting "my_unicpu09.twx" +deleting "my_unicpu09.tsi" +deleting "my_unicpu09.cmd_log" +deleting "my_unicpu09_summary.html" +deleting "__projnav/nc1TOncd_tcl.rsp" +deleting "my_unicpu09.ncd" +deleting "my_unicpu09.par" +deleting "my_unicpu09.pad" +deleting "my_unicpu09_pad.txt" +deleting "my_unicpu09_pad.csv" +deleting "my_unicpu09.pad_txt" +deleting "my_unicpu09.dly" +deleting "reportgen.log" +deleting "my_unicpu09.xpi" +deleting "my_unicpu09.grf" +deleting "my_unicpu09.itr" +deleting "my_unicpu09_last_par.ncd" +deleting "my_unicpu09.placed_ncd_tracker" +deleting "my_unicpu09.routed_ncd_tracker" +deleting "my_unicpu09.cmd_log" +deleting "__projnav/my_unicpu09_ncdTOut_tcl.rsp" +deleting "__projnav/bitgen.rsp" +deleting "bitgen.ut" +deleting "my_unicpu09.ut" +deleting "my_unicpu09.bgn" +deleting "my_unicpu09.rbt" +deleting "my_unicpu09.ll" +deleting "my_unicpu09.msk" +deleting "my_unicpu09.drc" +deleting "my_unicpu09.nky" +deleting "my_unicpu09.bit" +deleting "my_unicpu09.bin" +deleting "my_unicpu09.isc" +deleting "my_unicpu09.cmd_log" +deleting "my_system09_summary.html" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "my_unicpu09.prj" +deleting "my_unicpu09.prj" +deleting "__projnav/my_unicpu09.xst" +deleting "./xst" +deleting "__projnav/System09_Digilent_3S1000.gfl" +deleting "__projnav/System09_Digilent_3S1000_flowplus.gfl" +deleting System09_Digilent_3S1000.dhp +Finished cleaning up project + Index: System09_Digilent_3S1000/System09_Digilent_3S1000.ucf =================================================================== --- System09_Digilent_3S1000/System09_Digilent_3S1000.ucf (nonexistent) +++ System09_Digilent_3S1000/System09_Digilent_3S1000.ucf (revision 105) @@ -0,0 +1,142 @@ +#PACE: Start of Constraints generated by PACE + +#PACE: Start of PACE I/O Pin Assignments +NET "sys_clk" LOC = "T9" ; +# +# PUSH BUTTONS +# +NET "rst_sw" LOC = "L14" ; +NET "nmi_sw" LOC = "L13" ; +# +# LEDs +# +NET "leds<0>" LOC = "K12"; +NET "leds<1>" LOC = "P14"; +NET "leds<2>" LOC = "L12"; +NET "leds<3>" LOC = "N14"; +NET "leds<4>" LOC = "P13"; +NET "leds<5>" LOC = "N12"; +NET "leds<6>" LOC = "P12"; +NET "leds<7>" LOC = "P11"; +# +# Switches +# +NET "switches<0>" LOC = "F12"; +NET "switches<1>" LOC = "G12"; +NET "switches<2>" LOC = "H14"; +NET "switches<3>" LOC = "H13"; +NET "switches<4>" LOC = "J14"; +NET "switches<5>" LOC = "J13"; +NET "switches<6>" LOC = "K14"; +NET "switches<7>" LOC = "K13"; +# +# PS/2 KEYBOARD +# +NET "ps2c" LOC = "M16" ; +NET "ps2d" LOC = "M15" ; +# +# UART +# +NET "rxd" LOC = "T13" ; +NET "txd" LOC = "R13" ; +# +# VDU +# +NET "red" LOC = "R12" ; +NET "green" LOC = "T12" ; +NET "blue" LOC = "R11" ; +NET "hs" LOC = "R9" ; +NET "vs" LOC = "T10" ; +# +# 7 SEGMENT DISPLAY +# +NET "segments<0>" LOC = "E14"; +NET "segments<1>" LOC = "G13"; +NET "segments<2>" LOC = "N15"; +NET "segments<3>" LOC = "P15"; +NET "segments<4>" LOC = "R16"; +NET "segments<5>" LOC = "F13"; +NET "segments<6>" LOC = "N16"; +NET "segments<7>" LOC = "P16"; +NET "digits<0>" LOC = "D14"; +NET "digits<1>" LOC = "G14"; +NET "digits<2>" LOC = "F14"; +NET "digits<3>" LOC = "E13"; +# +# RAM Address bus +# +NET "ram_addr<0>" LOC = "L5" ; +NET "ram_addr<1>" LOC = "N3" ; +NET "ram_addr<2>" LOC = "M4" ; +NET "ram_addr<3>" LOC = "M3" ; +NET "ram_addr<4>" LOC = "L4" ; +NET "ram_addr<5>" LOC = "G4" ; +NET "ram_addr<6>" LOC = "F3" ; +NET "ram_addr<7>" LOC = "F4" ; +NET "ram_addr<8>" LOC = "E3" ; +NET "ram_addr<9>" LOC = "E4" ; +NET "ram_addr<10>" LOC = "G5" ; +NET "ram_addr<11>" LOC = "H3" ; +NET "ram_addr<12>" LOC = "H4" ; +NET "ram_addr<13>" LOC = "J4" ; +NET "ram_addr<14>" LOC = "J3" ; +NET "ram_addr<15>" LOC = "K3" ; +NET "ram_addr<16>" LOC = "K5" ; +NET "ram_addr<17>" LOC = "L3" ; +NET "ram_oen" LOC = "K4" ; +NET "ram_wen" LOC = "G3" ; +# +# RAM1 +# +NET "ram1_cen" LOC = "P7" ; +NET "ram1_lbn" LOC = "P6" ; +NET "ram1_ubn" LOC = "T4" ; +NET "ram1_data<0>" LOC = "N7" ; +NET "ram1_data<1>" LOC = "T8" ; +NET "ram1_data<2>" LOC = "R6" ; +NET "ram1_data<3>" LOC = "T5" ; +NET "ram1_data<4>" LOC = "R5" ; +NET "ram1_data<5>" LOC = "C2" ; +NET "ram1_data<6>" LOC = "C1" ; +NET "ram1_data<7>" LOC = "B1" ; +NET "ram1_data<8>" LOC = "D3" ; +NET "ram1_data<9>" LOC = "P8" ; +NET "ram1_data<10>" LOC = "F2" ; +NET "ram1_data<11>" LOC = "H1" ; +NET "ram1_data<12>" LOC = "J2" ; +NET "ram1_data<13>" LOC = "L2" ; +NET "ram1_data<14>" LOC = "P1" ; +NET "ram1_data<15>" LOC = "R1" ; +# +# RAM2 +# +NET "ram2_cen" LOC = "N5" ; +NET "ram2_lbn" LOC = "P5" ; +NET "ram2_ubn" LOC = "R4" ; +NET "ram2_data<0>" LOC = "P2" ; +NET "ram2_data<1>" LOC = "N2" ; +NET "ram2_data<2>" LOC = "M2" ; +NET "ram2_data<3>" LOC = "K1" ; +NET "ram2_data<4>" LOC = "J1" ; +NET "ram2_data<5>" LOC = "G2" ; +NET "ram2_data<6>" LOC = "E1" ; +NET "ram2_data<7>" LOC = "D1" ; +NET "ram2_data<8>" LOC = "D2" ; +NET "ram2_data<9>" LOC = "E2" ; +NET "ram2_data<10>" LOC = "G1" ; +NET "ram2_data<11>" LOC = "F5" ; +NET "ram2_data<12>" LOC = "C3" ; +NET "ram2_data<13>" LOC = "K2" ; +NET "ram2_data<14>" LOC = "M1" ; +NET "ram2_data<15>" LOC = "N1" ; +# +# Timing Constraints +# +NET "sys_clk" TNM_NET = "sys_clk"; +TIMESPEC "TS_sys_clk" = PERIOD "sys_clk" 20 ns LOW 50 %; + +#PACE: Start of PACE Area Constraints + +#PACE: Start of PACE Prohibit Constraints + +#PACE: End of Constraints generated by PACE Index: System09_Digilent_3S1000/userlang.tpl =================================================================== --- System09_Digilent_3S1000/userlang.tpl (nonexistent) +++ System09_Digilent_3S1000/userlang.tpl (revision 105) @@ -0,0 +1,6 @@ +[Verilog.User Templates] +type=folder +[VHDL.User Templates] +type=folder +[ABEL.User Templates] +type=folder Index: System09_Terasic_DE1/wrappers.vhd.bak =================================================================== --- System09_Terasic_DE1/wrappers.vhd.bak (nonexistent) +++ System09_Terasic_DE1/wrappers.vhd.bak (revision 105) @@ -0,0 +1,130 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity mon_rom is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end mon_rom; + +architecture SYN of mon_rom is +begin + + rom_inst : entity work.sprom + generic map + ( + init_file => "../../../../src/platform/system09/roms/kbug_rom.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + q => rdata + ); + +end SYN; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity char_rom is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end char_rom; + +architecture SYN of char_rom is + signal we : std_logic; +begin + + we <= cs and not rw; + + rom_inst : entity work.spram + generic map + ( + init_file => "../../../../src/platform/system09/roms/char_rom.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + data => wdata, + wren => we, + q => rdata + ); + +end SYN; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity ram_2k is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end ram_2k; + +architecture SYN of ram_2k is + signal we : std_logic; +begin + we <= cs and not rw; + + ram_inst : entity work.spram + generic map + ( + init_file => "../../../../src/platform/system09/roms/ram2k.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + data => wdata, + wren => we, + q => rdata + ); + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity BUFG is + port + ( + i : in std_logic; + o : out std_logic + ); +end BUFG; + +architecture SYN of BUFG is +begin + o <= i; +end SYN; Index: System09_Terasic_DE1/roms/kbug_rom.mif =================================================================== --- System09_Terasic_DE1/roms/kbug_rom.mif (nonexistent) +++ System09_Terasic_DE1/roms/kbug_rom.mif (revision 105) @@ -0,0 +1,2054 @@ +WIDTH=8; +DEPTH=2048; +ADDRESS_RADIX=UNS; +DATA_RADIX=HEX; +CONTENT BEGIN + 0 : F8; + 1 : 38; + 2 : F8; + 3 : 7C; + 4 : FC; + 5 : 80; + 6 : FC; + 7 : A9; + 8 : FC; + 9 : 65; + 10 : FC; + 11 : AB; + 12 : FC; + 13 : 5E; + 14 : FC; + 15 : 53; + 16 : FC; + 17 : 4F; + 18 : FA; + 19 : 18; + 20 : FA; + 21 : 18; + 22 : FA; + 23 : 18; + 24 : FA; + 25 : 18; + 26 : FA; + 27 : 18; + 28 : FD; + 29 : 1B; + 30 : FC; + 31 : FB; + 32 : FD; + 33 : 04; + 34 : FD; + 35 : 3A; + 36 : FC; + 37 : BF; + 38 : FC; + 39 : D2; + 40 : FC; + 41 : DC; + 42 : FC; + 43 : EB; + 44 : FC; + 45 : FA; + 46 : FC; + 47 : FB; + 48 : FD; + 49 : 04; + 50 : FD; + 51 : 0C; + 52 : 10; + 53 : CE; + 54 : F0; + 55 : C0; + 56 : 8E; + 57 : FE; + 58 : B9; + 59 : 10; + 60 : 8E; + 61 : F0; + 62 : C0; + 63 : C6; + 64 : 10; + 65 : A6; + 66 : 80; + 67 : A7; + 68 : A0; + 69 : 5A; + 70 : 26; + 71 : F9; + 72 : 8E; + 73 : E0; + 74 : 00; + 75 : BF; + 76 : F0; + 77 : D0; + 78 : 17; + 79 : 01; + 80 : 8E; + 81 : C6; + 82 : 0C; + 83 : 6F; + 84 : E2; + 85 : 5A; + 86 : 26; + 87 : FB; + 88 : 30; + 89 : 8C; + 90 : DD; + 91 : AF; + 92 : 6A; + 93 : 86; + 94 : D0; + 95 : A7; + 96 : E4; + 97 : 1F; + 98 : 43; + 99 : 86; + 100 : 03; + 101 : B7; + 102 : F0; + 103 : D7; + 104 : 86; + 105 : 0A; + 106 : B7; + 107 : F0; + 108 : D8; + 109 : 17; + 110 : 04; + 111 : 4F; + 112 : 17; + 113 : 04; + 114 : 87; + 115 : 17; + 116 : 04; + 117 : A5; + 118 : 8E; + 119 : FE; + 120 : C9; + 121 : 17; + 122 : 03; + 123 : E2; + 124 : 8E; + 125 : FE; + 126 : E5; + 127 : 17; + 128 : 03; + 129 : CD; + 130 : 17; + 131 : 03; + 132 : FB; + 133 : 84; + 134 : 7F; + 135 : 81; + 136 : 0D; + 137 : 27; + 138 : F1; + 139 : 1F; + 140 : 89; + 141 : 81; + 142 : 20; + 143 : 2C; + 144 : 09; + 145 : 86; + 146 : 5E; + 147 : 17; + 148 : 04; + 149 : 15; + 150 : 1F; + 151 : 98; + 152 : 8B; + 153 : 40; + 154 : 17; + 155 : 04; + 156 : 0E; + 157 : 17; + 158 : 02; + 159 : A3; + 160 : 8E; + 161 : FE; + 162 : 7A; + 163 : E1; + 164 : 80; + 165 : 27; + 166 : 0F; + 167 : 30; + 168 : 02; + 169 : 8C; + 170 : FE; + 171 : B9; + 172 : 26; + 173 : F5; + 174 : 8E; + 175 : FE; + 176 : E7; + 177 : 17; + 178 : 03; + 179 : AA; + 180 : 20; + 181 : C6; + 182 : AD; + 183 : 94; + 184 : 20; + 185 : C2; + 186 : 17; + 187 : 02; + 188 : 45; + 189 : 29; + 190 : 2D; + 191 : 1F; + 192 : 12; + 193 : 8E; + 194 : FE; + 195 : ED; + 196 : 17; + 197 : 03; + 198 : 88; + 199 : 1F; + 200 : 21; + 201 : 17; + 202 : 03; + 203 : 65; + 204 : 17; + 205 : 02; + 206 : 74; + 207 : A6; + 208 : A4; + 209 : 17; + 210 : 03; + 211 : 65; + 212 : 17; + 213 : 02; + 214 : 6C; + 215 : 17; + 216 : 02; + 217 : 38; + 218 : 28; + 219 : 11; + 220 : 81; + 221 : 08; + 222 : 27; + 223 : E1; + 224 : 81; + 225 : 18; + 226 : 27; + 227 : DD; + 228 : 81; + 229 : 5E; + 230 : 27; + 231 : 17; + 232 : 81; + 233 : 0D; + 234 : 26; + 235 : 0F; + 236 : 39; + 237 : A7; + 238 : A4; + 239 : A1; + 240 : A4; + 241 : 27; + 242 : 08; + 243 : 17; + 244 : 02; + 245 : 4D; + 246 : 86; + 247 : 3F; + 248 : 17; + 249 : 03; + 250 : B0; + 251 : 31; + 252 : 21; + 253 : 20; + 254 : C2; + 255 : 31; + 256 : 3F; + 257 : 20; + 258 : BE; + 259 : 17; + 260 : 02; + 261 : C0; + 262 : 1F; + 263 : 32; + 264 : 8E; + 265 : F0; + 266 : C0; + 267 : 30; + 268 : 1F; + 269 : 20; + 270 : 05; + 271 : 17; + 272 : 01; + 273 : E6; + 274 : 29; + 275 : 06; + 276 : 34; + 277 : 20; + 278 : AC; + 279 : E1; + 280 : 24; + 281 : 01; + 282 : 39; + 283 : 1F; + 284 : 10; + 285 : C3; + 286 : 00; + 287 : 10; + 288 : C4; + 289 : F0; + 290 : 34; + 291 : 06; + 292 : 1F; + 293 : 20; + 294 : C4; + 295 : F0; + 296 : 1F; + 297 : 01; + 298 : AC; + 299 : E4; + 300 : 27; + 301 : 05; + 302 : 17; + 303 : 03; + 304 : 34; + 305 : 27; + 306 : 03; + 307 : 32; + 308 : 62; + 309 : 39; + 310 : 34; + 311 : 10; + 312 : 8E; + 313 : FE; + 314 : ED; + 315 : 17; + 316 : 03; + 317 : 11; + 318 : AE; + 319 : E4; + 320 : 17; + 321 : 02; + 322 : EE; + 323 : 17; + 324 : 01; + 325 : FB; + 326 : C6; + 327 : 10; + 328 : A6; + 329 : 80; + 330 : 17; + 331 : 02; + 332 : EC; + 333 : 17; + 334 : 01; + 335 : F3; + 336 : 5A; + 337 : 26; + 338 : F5; + 339 : 17; + 340 : 01; + 341 : EB; + 342 : AE; + 343 : E1; + 344 : C6; + 345 : 10; + 346 : A6; + 347 : 80; + 348 : 81; + 349 : 20; + 350 : 25; + 351 : 04; + 352 : 81; + 353 : 7E; + 354 : 23; + 355 : 02; + 356 : 86; + 357 : 2E; + 358 : 17; + 359 : 03; + 360 : 42; + 361 : 5A; + 362 : 26; + 363 : EE; + 364 : 20; + 365 : BC; + 366 : 17; + 367 : 01; + 368 : FD; + 369 : 28; + 370 : 01; + 371 : 39; + 372 : 1F; + 373 : 34; + 374 : 3B; + 375 : 5F; + 376 : 17; + 377 : 03; + 378 : 05; + 379 : 81; + 380 : 53; + 381 : 26; + 382 : 07; + 383 : 17; + 384 : 03; + 385 : 3D; + 386 : D8; + 387 : 02; + 388 : 20; + 389 : F2; + 390 : 81; + 391 : 56; + 392 : 26; + 393 : 07; + 394 : 17; + 395 : 03; + 396 : 8E; + 397 : C8; + 398 : 01; + 399 : 20; + 400 : E7; + 401 : F7; + 402 : F0; + 403 : D7; + 404 : 39; + 405 : 5F; + 406 : 17; + 407 : 02; + 408 : E7; + 409 : 81; + 410 : 53; + 411 : 26; + 412 : 07; + 413 : 17; + 414 : 03; + 415 : 1F; + 416 : D8; + 417 : 02; + 418 : 20; + 419 : F2; + 420 : 81; + 421 : 4B; + 422 : 26; + 423 : 07; + 424 : 17; + 425 : 03; + 426 : 4F; + 427 : C8; + 428 : 08; + 429 : 20; + 430 : E7; + 431 : F7; + 432 : F0; + 433 : D8; + 434 : 39; + 435 : 17; + 436 : 01; + 437 : 4C; + 438 : 29; + 439 : 1E; + 440 : 8C; + 441 : F0; + 442 : C0; + 443 : 24; + 444 : 1A; + 445 : 34; + 446 : 10; + 447 : 8E; + 448 : FF; + 449 : FF; + 450 : 8D; + 451 : 55; + 452 : 35; + 453 : 10; + 454 : 27; + 455 : 0F; + 456 : A6; + 457 : 84; + 458 : 81; + 459 : 3F; + 460 : 27; + 461 : 09; + 462 : A7; + 463 : A0; + 464 : AF; + 465 : A4; + 466 : 86; + 467 : 3F; + 468 : A7; + 469 : 84; + 470 : 39; + 471 : 17; + 472 : 01; + 473 : 69; + 474 : 86; + 475 : 3F; + 476 : 16; + 477 : 02; + 478 : CC; + 479 : 10; + 480 : 8E; + 481 : F0; + 482 : D9; + 483 : C6; + 484 : 08; + 485 : 8D; + 486 : 18; + 487 : 5A; + 488 : 26; + 489 : FB; + 490 : 39; + 491 : 1F; + 492 : 43; + 493 : AE; + 494 : 4A; + 495 : 30; + 496 : 1F; + 497 : 8D; + 498 : 26; + 499 : 27; + 500 : 04; + 501 : AF; + 502 : 4A; + 503 : 8D; + 504 : 06; + 505 : 17; + 506 : 01; + 507 : AC; + 508 : 16; + 509 : FE; + 510 : 7D; + 511 : AE; + 512 : 21; + 513 : 8C; + 514 : F0; + 515 : C0; + 516 : 24; + 517 : 0A; + 518 : A6; + 519 : 84; + 520 : 81; + 521 : 3F; + 522 : 26; + 523 : 04; + 524 : A6; + 525 : A4; + 526 : A7; + 527 : 84; + 528 : 86; + 529 : FF; + 530 : A7; + 531 : A0; + 532 : A7; + 533 : A0; + 534 : A7; + 535 : A0; + 536 : 39; + 537 : 10; + 538 : 8E; + 539 : F0; + 540 : D9; + 541 : C6; + 542 : 08; + 543 : A6; + 544 : A0; + 545 : AC; + 546 : A1; + 547 : 27; + 548 : 04; + 549 : 5A; + 550 : 26; + 551 : F7; + 552 : 39; + 553 : 31; + 554 : 3D; + 555 : 39; + 556 : 86; + 557 : 11; + 558 : 8D; + 559 : 52; + 560 : 7F; + 561 : F0; + 562 : D2; + 563 : 17; + 564 : 02; + 565 : 6E; + 566 : 81; + 567 : 53; + 568 : 26; + 569 : F9; + 570 : 17; + 571 : 02; + 572 : 67; + 573 : 81; + 574 : 39; + 575 : 27; + 576 : 3C; + 577 : 81; + 578 : 31; + 579 : 26; + 580 : F1; + 581 : 17; + 582 : 00; + 583 : CA; + 584 : 34; + 585 : 02; + 586 : 29; + 587 : 26; + 588 : 17; + 589 : 00; + 590 : B3; + 591 : 29; + 592 : 21; + 593 : 34; + 594 : 10; + 595 : E6; + 596 : E0; + 597 : EB; + 598 : E0; + 599 : EB; + 600 : E4; + 601 : 6A; + 602 : E4; + 603 : 6A; + 604 : E4; + 605 : 34; + 606 : 04; + 607 : 17; + 608 : 00; + 609 : B0; + 610 : 35; + 611 : 04; + 612 : 29; + 613 : 0C; + 614 : 34; + 615 : 02; + 616 : EB; + 617 : E0; + 618 : 6A; + 619 : E4; + 620 : 27; + 621 : 05; + 622 : A7; + 623 : 80; + 624 : 20; + 625 : EB; + 626 : 5F; + 627 : 35; + 628 : 02; + 629 : C1; + 630 : FF; + 631 : 27; + 632 : B3; + 633 : 86; + 634 : 3F; + 635 : 8D; + 636 : 05; + 637 : 73; + 638 : F0; + 639 : D2; + 640 : 86; + 641 : 13; + 642 : 16; + 643 : 02; + 644 : 26; + 645 : 6F; + 646 : E2; + 647 : 8D; + 648 : 6F; + 649 : 34; + 650 : 30; + 651 : 29; + 652 : 4A; + 653 : AC; + 654 : 62; + 655 : 25; + 656 : 46; + 657 : 30; + 658 : 01; + 659 : AF; + 660 : E4; + 661 : 86; + 662 : 12; + 663 : 17; + 664 : 02; + 665 : 11; + 666 : EC; + 667 : E4; + 668 : A3; + 669 : 62; + 670 : 27; + 671 : 06; + 672 : 10; + 673 : 83; + 674 : 00; + 675 : 20; + 676 : 23; + 677 : 02; + 678 : C6; + 679 : 20; + 680 : E7; + 681 : 64; + 682 : 8E; + 683 : FF; + 684 : 2E; + 685 : 17; + 686 : 01; + 687 : 9F; + 688 : CB; + 689 : 03; + 690 : 1F; + 691 : 98; + 692 : 17; + 693 : 01; + 694 : 82; + 695 : AE; + 696 : 62; + 697 : 17; + 698 : 01; + 699 : 75; + 700 : EB; + 701 : 62; + 702 : EB; + 703 : 63; + 704 : EB; + 705 : 84; + 706 : A6; + 707 : 80; + 708 : 17; + 709 : 01; + 710 : 72; + 711 : 6A; + 712 : 64; + 713 : 26; + 714 : F5; + 715 : 53; + 716 : 1F; + 717 : 98; + 718 : 17; + 719 : 01; + 720 : 68; + 721 : AF; + 722 : 62; + 723 : AC; + 724 : E4; + 725 : 26; + 726 : C3; + 727 : 86; + 728 : 14; + 729 : 8D; + 730 : 6A; + 731 : 32; + 732 : 65; + 733 : 39; + 734 : 8D; + 735 : 18; + 736 : 29; + 737 : 15; + 738 : 34; + 739 : 10; + 740 : 86; + 741 : 3E; + 742 : 8D; + 743 : 5D; + 744 : 8D; + 745 : 18; + 746 : 29; + 747 : 09; + 748 : A6; + 749 : A0; + 750 : A7; + 751 : 80; + 752 : 10; + 753 : AC; + 754 : E4; + 755 : 26; + 756 : F7; + 757 : 35; + 758 : 10; + 759 : 39; + 760 : 8D; + 761 : 08; + 762 : 29; + 763 : 42; + 764 : 1F; + 765 : 12; + 766 : 86; + 767 : 2D; + 768 : 8D; + 769 : 43; + 770 : 8D; + 771 : 0E; + 772 : 29; + 773 : 38; + 774 : 1F; + 775 : 01; + 776 : 8D; + 777 : 08; + 778 : 29; + 779 : 32; + 780 : 34; + 781 : 10; + 782 : A7; + 783 : 61; + 784 : 35; + 785 : 90; + 786 : 8D; + 787 : 11; + 788 : 29; + 789 : 28; + 790 : 48; + 791 : 48; + 792 : 48; + 793 : 48; + 794 : 1F; + 795 : 89; + 796 : 8D; + 797 : 07; + 798 : 29; + 799 : 1E; + 800 : 34; + 801 : 04; + 802 : AB; + 803 : E0; + 804 : 39; + 805 : 17; + 806 : 01; + 807 : 7C; + 808 : 81; + 809 : 30; + 810 : 25; + 811 : 12; + 812 : 81; + 813 : 39; + 814 : 22; + 815 : 03; + 816 : 80; + 817 : 30; + 818 : 39; + 819 : 81; + 820 : 41; + 821 : 25; + 822 : 07; + 823 : 81; + 824 : 46; + 825 : 22; + 826 : 03; + 827 : 80; + 828 : 37; + 829 : 39; + 830 : 1A; + 831 : 02; + 832 : 39; + 833 : 8D; + 834 : 00; + 835 : 86; + 836 : 20; + 837 : 16; + 838 : 01; + 839 : 63; + 840 : 17; + 841 : 00; + 842 : 85; + 843 : 8D; + 844 : F6; + 845 : 8D; + 846 : B3; + 847 : 29; + 848 : 02; + 849 : AF; + 850 : 44; + 851 : 39; + 852 : 17; + 853 : 00; + 854 : 83; + 855 : 8D; + 856 : EA; + 857 : 8D; + 858 : B7; + 859 : 29; + 860 : 02; + 861 : A7; + 862 : 41; + 863 : 39; + 864 : 17; + 865 : 00; + 866 : 80; + 867 : 8D; + 868 : DE; + 869 : 8D; + 870 : AB; + 871 : 29; + 872 : 02; + 873 : A7; + 874 : 43; + 875 : 39; + 876 : 8D; + 877 : 7E; + 878 : 8D; + 879 : D3; + 880 : 8D; + 881 : 90; + 882 : 29; + 883 : 02; + 884 : AF; + 885 : 4A; + 886 : 39; + 887 : 8D; + 888 : 7C; + 889 : 8D; + 890 : C8; + 891 : 8D; + 892 : 85; + 893 : 29; + 894 : 02; + 895 : AF; + 896 : 48; + 897 : 39; + 898 : 8D; + 899 : 7A; + 900 : 8D; + 901 : BD; + 902 : 17; + 903 : FF; + 904 : 79; + 905 : 29; + 906 : 02; + 907 : AF; + 908 : 46; + 909 : 39; + 910 : 8D; + 911 : 77; + 912 : 8D; + 913 : B1; + 914 : 17; + 915 : FF; + 916 : 7D; + 917 : 29; + 918 : 02; + 919 : A7; + 920 : 42; + 921 : 39; + 922 : 8D; + 923 : 74; + 924 : 8D; + 925 : A5; + 926 : 17; + 927 : FF; + 928 : 71; + 929 : 29; + 930 : 04; + 931 : 8A; + 932 : 80; + 933 : A7; + 934 : C4; + 935 : 39; + 936 : 8E; + 937 : FE; + 938 : ED; + 939 : 17; + 940 : 00; + 941 : A1; + 942 : 8D; + 943 : 16; + 944 : 8D; + 945 : 1E; + 946 : 8D; + 947 : 26; + 948 : 8D; + 949 : 2D; + 950 : 8D; + 951 : 34; + 952 : 8E; + 953 : FE; + 954 : ED; + 955 : 17; + 956 : 00; + 957 : 91; + 958 : 8D; + 959 : 35; + 960 : 8D; + 961 : 3C; + 962 : 8D; + 963 : 43; + 964 : 20; + 965 : 4A; + 966 : 8E; + 967 : FE; + 968 : F1; + 969 : 17; + 970 : 00; + 971 : 92; + 972 : 1F; + 973 : 31; + 974 : 20; + 975 : 61; + 976 : 8E; + 977 : FF; + 978 : 09; + 979 : 17; + 980 : 00; + 981 : 88; + 982 : AE; + 983 : 44; + 984 : 20; + 985 : 57; + 986 : 8E; + 987 : FF; + 988 : 15; + 989 : 8D; + 990 : 7F; + 991 : A6; + 992 : 41; + 993 : 20; + 994 : 56; + 995 : 8E; + 996 : FF; + 997 : 0F; + 998 : 8D; + 999 : 76; + 1000 : A6; + 1001 : 43; + 1002 : 20; + 1003 : 4D; + 1004 : 8E; + 1005 : FE; + 1006 : F7; + 1007 : 8D; + 1008 : 6D; + 1009 : AE; + 1010 : 4A; + 1011 : 20; + 1012 : 3C; + 1013 : 8E; + 1014 : FE; + 1015 : FD; + 1016 : 8D; + 1017 : 64; + 1018 : AE; + 1019 : 48; + 1020 : 20; + 1021 : 33; + 1022 : 8E; + 1023 : FF; + 1024 : 03; + 1025 : 8D; + 1026 : 5B; + 1027 : AE; + 1028 : 46; + 1029 : 20; + 1030 : 2A; + 1031 : 8E; + 1032 : FF; + 1033 : 1A; + 1034 : 8D; + 1035 : 52; + 1036 : A6; + 1037 : 42; + 1038 : 20; + 1039 : 29; + 1040 : 8E; + 1041 : FF; + 1042 : 1F; + 1043 : 8D; + 1044 : 49; + 1045 : A6; + 1046 : C4; + 1047 : 8E; + 1048 : FF; + 1049 : 26; + 1050 : 34; + 1051 : 02; + 1052 : C6; + 1053 : 08; + 1054 : A6; + 1055 : 80; + 1056 : 68; + 1057 : E4; + 1058 : 25; + 1059 : 02; + 1060 : 86; + 1061 : 2D; + 1062 : 17; + 1063 : 00; + 1064 : 82; + 1065 : 17; + 1066 : FF; + 1067 : 17; + 1068 : 5A; + 1069 : 26; + 1070 : EF; + 1071 : 35; + 1072 : 82; + 1073 : 34; + 1074 : 10; + 1075 : 35; + 1076 : 02; + 1077 : 8D; + 1078 : 02; + 1079 : 35; + 1080 : 02; + 1081 : 34; + 1082 : 02; + 1083 : 44; + 1084 : 44; + 1085 : 44; + 1086 : 44; + 1087 : 8D; + 1088 : 04; + 1089 : 35; + 1090 : 02; + 1091 : 84; + 1092 : 0F; + 1093 : 8B; + 1094 : 30; + 1095 : 81; + 1096 : 39; + 1097 : 2F; + 1098 : 02; + 1099 : 8B; + 1100 : 07; + 1101 : 20; + 1102 : 5C; + 1103 : 8D; + 1104 : 02; + 1105 : 20; + 1106 : 0B; + 1107 : 34; + 1108 : 10; + 1109 : 8E; + 1110 : FE; + 1111 : DF; + 1112 : 8D; + 1113 : 04; + 1114 : 35; + 1115 : 90; + 1116 : 8D; + 1117 : 4D; + 1118 : A6; + 1119 : 80; + 1120 : 81; + 1121 : 04; + 1122 : 26; + 1123 : F8; + 1124 : 39; + 1125 : 34; + 1126 : 06; + 1127 : F6; + 1128 : F0; + 1129 : D8; + 1130 : 4F; + 1131 : C5; + 1132 : 02; + 1133 : 27; + 1134 : 04; + 1135 : 8D; + 1136 : 61; + 1137 : 26; + 1138 : 0B; + 1139 : 4F; + 1140 : C5; + 1141 : 08; + 1142 : 27; + 1143 : 05; + 1144 : 17; + 1145 : 00; + 1146 : 80; + 1147 : 26; + 1148 : 01; + 1149 : 4F; + 1150 : 35; + 1151 : 86; + 1152 : 34; + 1153 : 04; + 1154 : F6; + 1155 : F0; + 1156 : D8; + 1157 : C5; + 1158 : 02; + 1159 : 27; + 1160 : 09; + 1161 : 8D; + 1162 : 47; + 1163 : 27; + 1164 : 05; + 1165 : 17; + 1166 : 00; + 1167 : 4C; + 1168 : 20; + 1169 : 10; + 1170 : C5; + 1171 : 08; + 1172 : 27; + 1173 : 0A; + 1174 : 17; + 1175 : 00; + 1176 : 62; + 1177 : 27; + 1178 : 05; + 1179 : 17; + 1180 : 00; + 1181 : 66; + 1182 : 20; + 1183 : 02; + 1184 : 20; + 1185 : E0; + 1186 : 35; + 1187 : 84; + 1188 : 7D; + 1189 : F0; + 1190 : D2; + 1191 : 27; + 1192 : D7; + 1193 : 8D; + 1194 : D5; + 1195 : 34; + 1196 : 04; + 1197 : F6; + 1198 : F0; + 1199 : D7; + 1200 : C5; + 1201 : 02; + 1202 : 27; + 1203 : 02; + 1204 : 8D; + 1205 : 35; + 1206 : C5; + 1207 : 01; + 1208 : 27; + 1209 : 03; + 1210 : 17; + 1211 : 00; + 1212 : 7D; + 1213 : 35; + 1214 : 84; + 1215 : BE; + 1216 : F0; + 1217 : D0; + 1218 : 86; + 1219 : 03; + 1220 : A7; + 1221 : 84; + 1222 : 86; + 1223 : 11; + 1224 : A7; + 1225 : 84; + 1226 : 6D; + 1227 : 01; + 1228 : 86; + 1229 : FF; + 1230 : B7; + 1231 : F0; + 1232 : D2; + 1233 : 39; + 1234 : 34; + 1235 : 02; + 1236 : A6; + 1237 : 9F; + 1238 : F0; + 1239 : D0; + 1240 : 85; + 1241 : 01; + 1242 : 35; + 1243 : 82; + 1244 : 34; + 1245 : 10; + 1246 : BE; + 1247 : F0; + 1248 : D0; + 1249 : A6; + 1250 : 84; + 1251 : 85; + 1252 : 01; + 1253 : 27; + 1254 : FA; + 1255 : A6; + 1256 : 01; + 1257 : 35; + 1258 : 90; + 1259 : 34; + 1260 : 14; + 1261 : BE; + 1262 : F0; + 1263 : D0; + 1264 : E6; + 1265 : 84; + 1266 : C5; + 1267 : 02; + 1268 : 27; + 1269 : FA; + 1270 : A7; + 1271 : 01; + 1272 : 35; + 1273 : 94; + 1274 : 39; + 1275 : 34; + 1276 : 02; + 1277 : B6; + 1278 : E0; + 1279 : 10; + 1280 : 85; + 1281 : 01; + 1282 : 35; + 1283 : 82; + 1284 : 8D; + 1285 : F5; + 1286 : 27; + 1287 : FC; + 1288 : B6; + 1289 : E0; + 1290 : 11; + 1291 : 39; + 1292 : 34; + 1293 : 14; + 1294 : 8E; + 1295 : E0; + 1296 : 10; + 1297 : E6; + 1298 : 84; + 1299 : C5; + 1300 : 02; + 1301 : 27; + 1302 : FA; + 1303 : A7; + 1304 : 01; + 1305 : 35; + 1306 : 94; + 1307 : 8E; + 1308 : E0; + 1309 : 20; + 1310 : CC; + 1311 : 00; + 1312 : 00; + 1313 : FD; + 1314 : F0; + 1315 : D3; + 1316 : A7; + 1317 : 02; + 1318 : E7; + 1319 : 03; + 1320 : E7; + 1321 : 04; + 1322 : FD; + 1323 : F0; + 1324 : D5; + 1325 : C6; + 1326 : 02; + 1327 : E7; + 1328 : 01; + 1329 : 7F; + 1330 : F0; + 1331 : D6; + 1332 : 86; + 1333 : 1B; + 1334 : 8D; + 1335 : 02; + 1336 : 86; + 1337 : 59; + 1338 : 34; + 1339 : 16; + 1340 : 8E; + 1341 : E0; + 1342 : 20; + 1343 : 7D; + 1344 : F0; + 1345 : D6; + 1346 : 27; + 1347 : 04; + 1348 : 8D; + 1349 : 74; + 1350 : 20; + 1351 : 0D; + 1352 : 81; + 1353 : 20; + 1354 : 24; + 1355 : 04; + 1356 : 8D; + 1357 : 09; + 1358 : 20; + 1359 : 05; + 1360 : A7; + 1361 : 84; + 1362 : 17; + 1363 : 00; + 1364 : C5; + 1365 : 35; + 1366 : 96; + 1367 : 81; + 1368 : 08; + 1369 : 10; + 1370 : 27; + 1371 : 00; + 1372 : 41; + 1373 : 81; + 1374 : 1B; + 1375 : 10; + 1376 : 27; + 1377 : 00; + 1378 : 6C; + 1379 : 81; + 1380 : 1A; + 1381 : 10; + 1382 : 27; + 1383 : 00; + 1384 : 8E; + 1385 : 81; + 1386 : 16; + 1387 : 10; + 1388 : 27; + 1389 : 00; + 1390 : 45; + 1391 : 81; + 1392 : 0D; + 1393 : 10; + 1394 : 27; + 1395 : 00; + 1396 : 99; + 1397 : 81; + 1398 : 0C; + 1399 : 10; + 1400 : 27; + 1401 : 00; + 1402 : 2C; + 1403 : 81; + 1404 : 0B; + 1405 : 10; + 1406 : 27; + 1407 : 00; + 1408 : 11; + 1409 : 81; + 1410 : 0A; + 1411 : 26; + 1412 : 51; + 1413 : FC; + 1414 : F0; + 1415 : D3; + 1416 : 5C; + 1417 : C1; + 1418 : 19; + 1419 : 10; + 1420 : 26; + 1421 : 00; + 1422 : 83; + 1423 : 16; + 1424 : 00; + 1425 : 99; + 1426 : FC; + 1427 : F0; + 1428 : D3; + 1429 : 5D; + 1430 : 10; + 1431 : 27; + 1432 : 00; + 1433 : 3C; + 1434 : 5A; + 1435 : 16; + 1436 : 00; + 1437 : 74; + 1438 : B6; + 1439 : F0; + 1440 : D3; + 1441 : 27; + 1442 : 33; + 1443 : 4A; + 1444 : 16; + 1445 : 00; + 1446 : 68; + 1447 : B6; + 1448 : F0; + 1449 : D3; + 1450 : 4C; + 1451 : 81; + 1452 : 50; + 1453 : 10; + 1454 : 27; + 1455 : 00; + 1456 : 25; + 1457 : 16; + 1458 : 00; + 1459 : 5B; + 1460 : CC; + 1461 : 00; + 1462 : 00; + 1463 : 16; + 1464 : 00; + 1465 : 58; + 1466 : F6; + 1467 : F0; + 1468 : D6; + 1469 : C1; + 1470 : 3D; + 1471 : 27; + 1472 : 16; + 1473 : 81; + 1474 : 59; + 1475 : 10; + 1476 : 27; + 1477 : 00; + 1478 : 6E; + 1479 : 81; + 1480 : 54; + 1481 : 27; + 1482 : 31; + 1483 : 81; + 1484 : 3D; + 1485 : 26; + 1486 : 04; + 1487 : B7; + 1488 : F0; + 1489 : D6; + 1490 : 39; + 1491 : 7F; + 1492 : F0; + 1493 : D6; + 1494 : 39; + 1495 : 7D; + 1496 : F0; + 1497 : D5; + 1498 : 26; + 1499 : 04; + 1500 : B7; + 1501 : F0; + 1502 : D5; + 1503 : 39; + 1504 : 7F; + 1505 : F0; + 1506 : D6; + 1507 : 80; + 1508 : 20; + 1509 : 81; + 1510 : 4F; + 1511 : 22; + 1512 : ED; + 1513 : F6; + 1514 : F0; + 1515 : D5; + 1516 : 7F; + 1517 : F0; + 1518 : D5; + 1519 : C0; + 1520 : 20; + 1521 : C1; + 1522 : 18; + 1523 : 22; + 1524 : E1; + 1525 : 20; + 1526 : 1B; + 1527 : CC; + 1528 : 00; + 1529 : 00; + 1530 : 8D; + 1531 : 16; + 1532 : B6; + 1533 : F0; + 1534 : D3; + 1535 : C6; + 1536 : 20; + 1537 : E7; + 1538 : 84; + 1539 : 4C; + 1540 : A7; + 1541 : 02; + 1542 : 81; + 1543 : 50; + 1544 : 26; + 1545 : F7; + 1546 : 7F; + 1547 : F0; + 1548 : D6; + 1549 : 39; + 1550 : 4F; + 1551 : F6; + 1552 : F0; + 1553 : D4; + 1554 : FD; + 1555 : F0; + 1556 : D3; + 1557 : A7; + 1558 : 02; + 1559 : E7; + 1560 : 03; + 1561 : 39; + 1562 : FC; + 1563 : F0; + 1564 : D3; + 1565 : 4C; + 1566 : 81; + 1567 : 50; + 1568 : 26; + 1569 : F0; + 1570 : 4F; + 1571 : 5C; + 1572 : C1; + 1573 : 19; + 1574 : 26; + 1575 : EA; + 1576 : 5A; + 1577 : 8D; + 1578 : E7; + 1579 : E6; + 1580 : 04; + 1581 : 5C; + 1582 : C1; + 1583 : 19; + 1584 : 25; + 1585 : 01; + 1586 : 5F; + 1587 : E7; + 1588 : 04; + 1589 : F6; + 1590 : F0; + 1591 : D3; + 1592 : 86; + 1593 : 20; + 1594 : F7; + 1595 : F0; + 1596 : D3; + 1597 : E7; + 1598 : 02; + 1599 : A7; + 1600 : 84; + 1601 : 5C; + 1602 : C1; + 1603 : 50; + 1604 : 26; + 1605 : F4; + 1606 : F6; + 1607 : F0; + 1608 : D4; + 1609 : 5C; + 1610 : C1; + 1611 : 19; + 1612 : 27; + 1613 : 08; + 1614 : F7; + 1615 : F0; + 1616 : D4; + 1617 : E7; + 1618 : 03; + 1619 : 5F; + 1620 : 20; + 1621 : E4; + 1622 : 5F; + 1623 : F7; + 1624 : F0; + 1625 : D3; + 1626 : E7; + 1627 : 02; + 1628 : F7; + 1629 : F0; + 1630 : D6; + 1631 : 39; + 1632 : 17; + 1633 : FE; + 1634 : 98; + 1635 : 26; + 1636 : 0D; + 1637 : 17; + 1638 : FE; + 1639 : 6A; + 1640 : 27; + 1641 : F6; + 1642 : 17; + 1643 : FE; + 1644 : 6F; + 1645 : 17; + 1646 : FE; + 1647 : CA; + 1648 : 20; + 1649 : EE; + 1650 : 17; + 1651 : FE; + 1652 : 8F; + 1653 : 17; + 1654 : FE; + 1655 : 73; + 1656 : 20; + 1657 : E6; + 1658 : 01; + 1659 : FB; + 1660 : 54; + 1661 : 02; + 1662 : FB; + 1663 : 8E; + 1664 : 03; + 1665 : FB; + 1666 : 9A; + 1667 : 04; + 1668 : FB; + 1669 : 60; + 1670 : 10; + 1671 : FB; + 1672 : 6C; + 1673 : 15; + 1674 : FB; + 1675 : 77; + 1676 : 18; + 1677 : FB; + 1678 : 48; + 1679 : 19; + 1680 : FB; + 1681 : 82; + 1682 : 41; + 1683 : FE; + 1684 : 60; + 1685 : 42; + 1686 : F9; + 1687 : B3; + 1688 : 45; + 1689 : F9; + 1690 : 0F; + 1691 : 47; + 1692 : F9; + 1693 : 6E; + 1694 : 49; + 1695 : F9; + 1696 : 95; + 1697 : 4C; + 1698 : FA; + 1699 : 2C; + 1700 : 4D; + 1701 : F8; + 1702 : BA; + 1703 : 4F; + 1704 : F9; + 1705 : 77; + 1706 : 50; + 1707 : FA; + 1708 : 85; + 1709 : 52; + 1710 : FB; + 1711 : A8; + 1712 : 53; + 1713 : F9; + 1714 : 03; + 1715 : 58; + 1716 : F9; + 1717 : DF; + 1718 : 5A; + 1719 : FA; + 1720 : DE; + 1721 : F9; + 1722 : 76; + 1723 : F9; + 1724 : 76; + 1725 : F9; + 1726 : 76; + 1727 : F9; + 1728 : 76; + 1729 : F9; + 1730 : 76; + 1731 : F9; + 1732 : EB; + 1733 : FF; + 1734 : FF; + 1735 : FF; + 1736 : FF; + 1737 : 00; + 1738 : 00; + 1739 : 00; + 1740 : 0D; + 1741 : 0A; + 1742 : 00; + 1743 : 00; + 1744 : 00; + 1745 : 4B; + 1746 : 2D; + 1747 : 42; + 1748 : 55; + 1749 : 47; + 1750 : 39; + 1751 : 53; + 1752 : 20; + 1753 : 56; + 1754 : 31; + 1755 : 2E; + 1756 : 30; + 1757 : 20; + 1758 : 04; + 1759 : 0D; + 1760 : 0A; + 1761 : 00; + 1762 : 00; + 1763 : 00; + 1764 : 04; + 1765 : 3E; + 1766 : 04; + 1767 : 57; + 1768 : 48; + 1769 : 41; + 1770 : 54; + 1771 : 3F; + 1772 : 04; + 1773 : 20; + 1774 : 2D; + 1775 : 20; + 1776 : 04; + 1777 : 20; + 1778 : 20; + 1779 : 53; + 1780 : 50; + 1781 : 3D; + 1782 : 04; + 1783 : 20; + 1784 : 20; + 1785 : 50; + 1786 : 43; + 1787 : 3D; + 1788 : 04; + 1789 : 20; + 1790 : 20; + 1791 : 55; + 1792 : 50; + 1793 : 3D; + 1794 : 04; + 1795 : 20; + 1796 : 20; + 1797 : 49; + 1798 : 59; + 1799 : 3D; + 1800 : 04; + 1801 : 20; + 1802 : 20; + 1803 : 49; + 1804 : 58; + 1805 : 3D; + 1806 : 04; + 1807 : 20; + 1808 : 20; + 1809 : 44; + 1810 : 50; + 1811 : 3D; + 1812 : 04; + 1813 : 20; + 1814 : 20; + 1815 : 41; + 1816 : 3D; + 1817 : 04; + 1818 : 20; + 1819 : 20; + 1820 : 42; + 1821 : 3D; + 1822 : 04; + 1823 : 20; + 1824 : 20; + 1825 : 43; + 1826 : 43; + 1827 : 3A; + 1828 : 20; + 1829 : 04; + 1830 : 45; + 1831 : 46; + 1832 : 48; + 1833 : 49; + 1834 : 4E; + 1835 : 5A; + 1836 : 56; + 1837 : 43; + 1838 : 53; + 1839 : 31; + 1840 : 04; + 1841 : 00; + 1842 : 00; + 1843 : 00; + 1844 : 00; + 1845 : 00; + 1846 : 00; + 1847 : 00; + 1848 : 00; + 1849 : 00; + 1850 : 00; + 1851 : 00; + 1852 : 00; + 1853 : 00; + 1854 : 00; + 1855 : 00; + 1856 : 00; + 1857 : 00; + 1858 : 00; + 1859 : 00; + 1860 : 00; + 1861 : 00; + 1862 : 00; + 1863 : 00; + 1864 : 00; + 1865 : 00; + 1866 : 00; + 1867 : 00; + 1868 : 00; + 1869 : 00; + 1870 : 00; + 1871 : 00; + 1872 : 00; + 1873 : 00; + 1874 : 00; + 1875 : 00; + 1876 : 00; + 1877 : 00; + 1878 : 00; + 1879 : 00; + 1880 : 00; + 1881 : 00; + 1882 : 00; + 1883 : 00; + 1884 : 00; + 1885 : 00; + 1886 : 00; + 1887 : 00; + 1888 : 00; + 1889 : 00; + 1890 : 00; + 1891 : 00; + 1892 : 00; + 1893 : 00; + 1894 : 00; + 1895 : 00; + 1896 : 00; + 1897 : 00; + 1898 : 00; + 1899 : 00; + 1900 : 00; + 1901 : 00; + 1902 : 00; + 1903 : 00; + 1904 : 00; + 1905 : 00; + 1906 : 00; + 1907 : 00; + 1908 : 00; + 1909 : 00; + 1910 : 00; + 1911 : 00; + 1912 : 00; + 1913 : 00; + 1914 : 00; + 1915 : 00; + 1916 : 00; + 1917 : 00; + 1918 : 00; + 1919 : 00; + 1920 : 00; + 1921 : 00; + 1922 : 00; + 1923 : 00; + 1924 : 00; + 1925 : 00; + 1926 : 00; + 1927 : 00; + 1928 : 00; + 1929 : 00; + 1930 : 00; + 1931 : 00; + 1932 : 00; + 1933 : 00; + 1934 : 00; + 1935 : 00; + 1936 : 00; + 1937 : 00; + 1938 : 00; + 1939 : 00; + 1940 : 00; + 1941 : 00; + 1942 : 00; + 1943 : 00; + 1944 : 00; + 1945 : 00; + 1946 : 00; + 1947 : 00; + 1948 : 00; + 1949 : 00; + 1950 : 00; + 1951 : 00; + 1952 : 00; + 1953 : 00; + 1954 : 00; + 1955 : 00; + 1956 : 00; + 1957 : 00; + 1958 : 00; + 1959 : 00; + 1960 : 00; + 1961 : 00; + 1962 : 00; + 1963 : 00; + 1964 : 00; + 1965 : 00; + 1966 : 00; + 1967 : 00; + 1968 : 00; + 1969 : 00; + 1970 : 6E; + 1971 : 9F; + 1972 : F0; + 1973 : C0; + 1974 : 6E; + 1975 : 9F; + 1976 : F0; + 1977 : C4; + 1978 : 6E; + 1979 : 9F; + 1980 : F0; + 1981 : C6; + 1982 : 6E; + 1983 : 9F; + 1984 : F0; + 1985 : C8; + 1986 : 6E; + 1987 : 9F; + 1988 : F0; + 1989 : CA; + 1990 : 1F; + 1991 : 43; + 1992 : AE; + 1993 : 4A; + 1994 : E6; + 1995 : 80; + 1996 : AF; + 1997 : 4A; + 1998 : 4F; + 1999 : 58; + 2000 : 49; + 2001 : BE; + 2002 : F0; + 2003 : CC; + 2004 : 8C; + 2005 : FF; + 2006 : FF; + 2007 : 27; + 2008 : 0F; + 2009 : 30; + 2010 : 8B; + 2011 : BC; + 2012 : F0; + 2013 : CE; + 2014 : 22; + 2015 : 08; + 2016 : 34; + 2017 : 10; + 2018 : EC; + 2019 : C4; + 2020 : AE; + 2021 : 44; + 2022 : 6E; + 2023 : F1; + 2024 : 37; + 2025 : 1F; + 2026 : EE; + 2027 : 42; + 2028 : 6E; + 2029 : 9F; + 2030 : F0; + 2031 : C2; + 2032 : FF; + 2033 : B2; + 2034 : FF; + 2035 : C6; + 2036 : FF; + 2037 : B6; + 2038 : FF; + 2039 : BA; + 2040 : FF; + 2041 : BE; + 2042 : FF; + 2043 : C2; + 2044 : F8; + 2045 : 34; + 2046 : F8; + 2047 : 34; +END; Index: System09_Terasic_DE1/roms/char_rom.mif =================================================================== --- System09_Terasic_DE1/roms/char_rom.mif (nonexistent) +++ System09_Terasic_DE1/roms/char_rom.mif (revision 105) @@ -0,0 +1,2054 @@ +WIDTH=8; +DEPTH=2048; +ADDRESS_RADIX=UNS; +DATA_RADIX=HEX; +CONTENT BEGIN + 0 : 00; + 1 : 44; + 2 : 64; + 3 : 54; + 4 : 4C; + 5 : 44; + 6 : 00; + 7 : 04; + 8 : 04; + 9 : 04; + 10 : 04; + 11 : 07; + 12 : 00; + 13 : 00; + 14 : 00; + 15 : 00; + 16 : 00; + 17 : 38; + 18 : 40; + 19 : 38; + 20 : 04; + 21 : 38; + 22 : 00; + 23 : 09; + 24 : 09; + 25 : 0F; + 26 : 09; + 27 : 09; + 28 : 00; + 29 : 00; + 30 : 00; + 31 : 00; + 32 : 00; + 33 : 38; + 34 : 40; + 35 : 38; + 36 : 04; + 37 : 38; + 38 : 00; + 39 : 11; + 40 : 0A; + 41 : 04; + 42 : 0A; + 43 : 11; + 44 : 00; + 45 : 00; + 46 : 00; + 47 : 00; + 48 : 00; + 49 : 78; + 50 : 40; + 51 : 70; + 52 : 40; + 53 : 78; + 54 : 00; + 55 : 11; + 56 : 0A; + 57 : 04; + 58 : 0A; + 59 : 11; + 60 : 00; + 61 : 00; + 62 : 00; + 63 : 00; + 64 : 00; + 65 : 78; + 66 : 40; + 67 : 70; + 68 : 40; + 69 : 78; + 70 : 00; + 71 : 1F; + 72 : 04; + 73 : 04; + 74 : 04; + 75 : 04; + 76 : 00; + 77 : 00; + 78 : 00; + 79 : 00; + 80 : 00; + 81 : 78; + 82 : 40; + 83 : 70; + 84 : 40; + 85 : 78; + 86 : 00; + 87 : 0E; + 88 : 11; + 89 : 15; + 90 : 12; + 91 : 0D; + 92 : 00; + 93 : 00; + 94 : 00; + 95 : 00; + 96 : 00; + 97 : 30; + 98 : 48; + 99 : 48; + 100 : 78; + 101 : 48; + 102 : 00; + 103 : 09; + 104 : 0A; + 105 : 0C; + 106 : 0A; + 107 : 09; + 108 : 00; + 109 : 00; + 110 : 00; + 111 : 00; + 112 : 00; + 113 : 70; + 114 : 48; + 115 : 70; + 116 : 48; + 117 : 70; + 118 : 00; + 119 : 08; + 120 : 08; + 121 : 08; + 122 : 08; + 123 : 0F; + 124 : 00; + 125 : 00; + 126 : 00; + 127 : 00; + 128 : 00; + 129 : 70; + 130 : 48; + 131 : 70; + 132 : 48; + 133 : 70; + 134 : 00; + 135 : 0E; + 136 : 10; + 137 : 0E; + 138 : 01; + 139 : 0E; + 140 : 00; + 141 : 00; + 142 : 00; + 143 : 00; + 144 : 00; + 145 : 44; + 146 : 44; + 147 : 7C; + 148 : 44; + 149 : 44; + 150 : 00; + 151 : 1F; + 152 : 04; + 153 : 04; + 154 : 04; + 155 : 04; + 156 : 00; + 157 : 00; + 158 : 00; + 159 : 00; + 160 : 00; + 161 : 40; + 162 : 40; + 163 : 40; + 164 : 40; + 165 : 7C; + 166 : 00; + 167 : 1F; + 168 : 10; + 169 : 1E; + 170 : 10; + 171 : 10; + 172 : 00; + 173 : 00; + 174 : 00; + 175 : 00; + 176 : 00; + 177 : 44; + 178 : 44; + 179 : 44; + 180 : 28; + 181 : 10; + 182 : 00; + 183 : 1F; + 184 : 04; + 185 : 04; + 186 : 04; + 187 : 04; + 188 : 00; + 189 : 00; + 190 : 00; + 191 : 00; + 192 : 00; + 193 : 78; + 194 : 40; + 195 : 70; + 196 : 40; + 197 : 40; + 198 : 00; + 199 : 0F; + 200 : 08; + 201 : 0E; + 202 : 08; + 203 : 08; + 204 : 00; + 205 : 00; + 206 : 00; + 207 : 00; + 208 : 00; + 209 : 3C; + 210 : 40; + 211 : 40; + 212 : 40; + 213 : 3C; + 214 : 00; + 215 : 1E; + 216 : 11; + 217 : 1E; + 218 : 11; + 219 : 11; + 220 : 00; + 221 : 00; + 222 : 00; + 223 : 00; + 224 : 00; + 225 : 38; + 226 : 40; + 227 : 38; + 228 : 04; + 229 : 38; + 230 : 00; + 231 : 0E; + 232 : 11; + 233 : 11; + 234 : 11; + 235 : 0E; + 236 : 00; + 237 : 00; + 238 : 00; + 239 : 00; + 240 : 00; + 241 : 38; + 242 : 40; + 243 : 38; + 244 : 04; + 245 : 38; + 246 : 00; + 247 : 07; + 248 : 02; + 249 : 02; + 250 : 02; + 251 : 07; + 252 : 00; + 253 : 00; + 254 : 00; + 255 : 00; + 256 : 00; + 257 : 70; + 258 : 48; + 259 : 48; + 260 : 48; + 261 : 70; + 262 : 00; + 263 : 0F; + 264 : 08; + 265 : 0E; + 266 : 08; + 267 : 0F; + 268 : 00; + 269 : 00; + 270 : 00; + 271 : 00; + 272 : 00; + 273 : 70; + 274 : 48; + 275 : 48; + 276 : 48; + 277 : 70; + 278 : 00; + 279 : 02; + 280 : 06; + 281 : 02; + 282 : 02; + 283 : 07; + 284 : 00; + 285 : 00; + 286 : 00; + 287 : 00; + 288 : 00; + 289 : 70; + 290 : 48; + 291 : 48; + 292 : 48; + 293 : 70; + 294 : 00; + 295 : 07; + 296 : 09; + 297 : 06; + 298 : 08; + 299 : 0F; + 300 : 00; + 301 : 00; + 302 : 00; + 303 : 00; + 304 : 00; + 305 : 70; + 306 : 48; + 307 : 48; + 308 : 48; + 309 : 70; + 310 : 00; + 311 : 0F; + 312 : 02; + 313 : 07; + 314 : 01; + 315 : 0E; + 316 : 00; + 317 : 00; + 318 : 00; + 319 : 00; + 320 : 00; + 321 : 70; + 322 : 48; + 323 : 48; + 324 : 48; + 325 : 70; + 326 : 00; + 327 : 09; + 328 : 09; + 329 : 0F; + 330 : 01; + 331 : 01; + 332 : 00; + 333 : 00; + 334 : 00; + 335 : 00; + 336 : 00; + 337 : 44; + 338 : 64; + 339 : 54; + 340 : 4C; + 341 : 44; + 342 : 00; + 343 : 09; + 344 : 0A; + 345 : 0C; + 346 : 0A; + 347 : 09; + 348 : 00; + 349 : 00; + 350 : 00; + 351 : 00; + 352 : 00; + 353 : 38; + 354 : 40; + 355 : 38; + 356 : 04; + 357 : 38; + 358 : 00; + 359 : 11; + 360 : 19; + 361 : 15; + 362 : 13; + 363 : 11; + 364 : 00; + 365 : 00; + 366 : 00; + 367 : 00; + 368 : 00; + 369 : 78; + 370 : 40; + 371 : 70; + 372 : 40; + 373 : 78; + 374 : 00; + 375 : 0E; + 376 : 09; + 377 : 0E; + 378 : 09; + 379 : 0E; + 380 : 00; + 381 : 00; + 382 : 00; + 383 : 00; + 384 : 00; + 385 : 38; + 386 : 40; + 387 : 40; + 388 : 40; + 389 : 38; + 390 : 00; + 391 : 11; + 392 : 19; + 393 : 15; + 394 : 13; + 395 : 11; + 396 : 00; + 397 : 00; + 398 : 00; + 399 : 00; + 400 : 00; + 401 : 78; + 402 : 40; + 403 : 70; + 404 : 40; + 405 : 78; + 406 : 00; + 407 : 11; + 408 : 1B; + 409 : 15; + 410 : 11; + 411 : 11; + 412 : 00; + 413 : 00; + 414 : 00; + 415 : 00; + 416 : 00; + 417 : 38; + 418 : 40; + 419 : 38; + 420 : 04; + 421 : 38; + 422 : 00; + 423 : 0E; + 424 : 09; + 425 : 0E; + 426 : 09; + 427 : 0E; + 428 : 00; + 429 : 00; + 430 : 00; + 431 : 00; + 432 : 00; + 433 : 78; + 434 : 40; + 435 : 70; + 436 : 40; + 437 : 78; + 438 : 00; + 439 : 0E; + 440 : 10; + 441 : 10; + 442 : 10; + 443 : 0E; + 444 : 00; + 445 : 00; + 446 : 00; + 447 : 00; + 448 : 00; + 449 : 78; + 450 : 40; + 451 : 70; + 452 : 40; + 453 : 40; + 454 : 00; + 455 : 0E; + 456 : 10; + 457 : 0E; + 458 : 01; + 459 : 0E; + 460 : 00; + 461 : 00; + 462 : 00; + 463 : 00; + 464 : 00; + 465 : 38; + 466 : 40; + 467 : 58; + 468 : 48; + 469 : 38; + 470 : 00; + 471 : 0E; + 472 : 10; + 473 : 0E; + 474 : 01; + 475 : 0E; + 476 : 00; + 477 : 00; + 478 : 00; + 479 : 00; + 480 : 00; + 481 : 70; + 482 : 48; + 483 : 70; + 484 : 50; + 485 : 48; + 486 : 00; + 487 : 0E; + 488 : 10; + 489 : 0E; + 490 : 01; + 491 : 0E; + 492 : 00; + 493 : 00; + 494 : 00; + 495 : 00; + 496 : 00; + 497 : 48; + 498 : 48; + 499 : 48; + 500 : 48; + 501 : 30; + 502 : 00; + 503 : 0E; + 504 : 10; + 505 : 0E; + 506 : 01; + 507 : 0E; + 508 : 00; + 509 : 00; + 510 : 00; + 511 : 00; + 512 : 00; + 513 : 00; + 514 : 00; + 515 : 00; + 516 : 00; + 517 : 00; + 518 : 00; + 519 : 00; + 520 : 00; + 521 : 00; + 522 : 00; + 523 : 00; + 524 : 00; + 525 : 00; + 526 : 00; + 527 : 00; + 528 : 00; + 529 : 08; + 530 : 08; + 531 : 08; + 532 : 08; + 533 : 08; + 534 : 08; + 535 : 08; + 536 : 00; + 537 : 00; + 538 : 08; + 539 : 08; + 540 : 00; + 541 : 00; + 542 : 00; + 543 : 00; + 544 : 00; + 545 : 12; + 546 : 12; + 547 : 12; + 548 : 12; + 549 : 00; + 550 : 00; + 551 : 00; + 552 : 00; + 553 : 00; + 554 : 00; + 555 : 00; + 556 : 00; + 557 : 00; + 558 : 00; + 559 : 00; + 560 : 00; + 561 : 24; + 562 : 24; + 563 : 24; + 564 : 7E; + 565 : 24; + 566 : 24; + 567 : 24; + 568 : 7E; + 569 : 24; + 570 : 24; + 571 : 24; + 572 : 00; + 573 : 00; + 574 : 00; + 575 : 00; + 576 : 00; + 577 : 08; + 578 : 3E; + 579 : 49; + 580 : 48; + 581 : 48; + 582 : 3E; + 583 : 09; + 584 : 09; + 585 : 49; + 586 : 3E; + 587 : 08; + 588 : 00; + 589 : 00; + 590 : 00; + 591 : 00; + 592 : 00; + 593 : 61; + 594 : 61; + 595 : 01; + 596 : 02; + 597 : 04; + 598 : 08; + 599 : 10; + 600 : 20; + 601 : 40; + 602 : 43; + 603 : 43; + 604 : 00; + 605 : 00; + 606 : 00; + 607 : 00; + 608 : 00; + 609 : 38; + 610 : 44; + 611 : 44; + 612 : 44; + 613 : 44; + 614 : 38; + 615 : 44; + 616 : 44; + 617 : 44; + 618 : 42; + 619 : 3D; + 620 : 00; + 621 : 00; + 622 : 00; + 623 : 00; + 624 : 00; + 625 : 0C; + 626 : 08; + 627 : 10; + 628 : 20; + 629 : 00; + 630 : 00; + 631 : 00; + 632 : 00; + 633 : 00; + 634 : 00; + 635 : 00; + 636 : 00; + 637 : 00; + 638 : 00; + 639 : 00; + 640 : 00; + 641 : 02; + 642 : 04; + 643 : 08; + 644 : 10; + 645 : 10; + 646 : 10; + 647 : 10; + 648 : 10; + 649 : 08; + 650 : 04; + 651 : 02; + 652 : 00; + 653 : 00; + 654 : 00; + 655 : 00; + 656 : 00; + 657 : 20; + 658 : 10; + 659 : 08; + 660 : 04; + 661 : 04; + 662 : 04; + 663 : 04; + 664 : 04; + 665 : 08; + 666 : 10; + 667 : 20; + 668 : 00; + 669 : 00; + 670 : 00; + 671 : 00; + 672 : 00; + 673 : 00; + 674 : 00; + 675 : 41; + 676 : 22; + 677 : 14; + 678 : 7F; + 679 : 14; + 680 : 22; + 681 : 41; + 682 : 00; + 683 : 00; + 684 : 00; + 685 : 00; + 686 : 00; + 687 : 00; + 688 : 00; + 689 : 00; + 690 : 00; + 691 : 08; + 692 : 08; + 693 : 08; + 694 : 7F; + 695 : 08; + 696 : 08; + 697 : 08; + 698 : 00; + 699 : 00; + 700 : 00; + 701 : 00; + 702 : 00; + 703 : 00; + 704 : 00; + 705 : 00; + 706 : 00; + 707 : 00; + 708 : 00; + 709 : 00; + 710 : 00; + 711 : 00; + 712 : 00; + 713 : 00; + 714 : 18; + 715 : 18; + 716 : 10; + 717 : 20; + 718 : 40; + 719 : 00; + 720 : 00; + 721 : 00; + 722 : 00; + 723 : 00; + 724 : 00; + 725 : 00; + 726 : 7F; + 727 : 00; + 728 : 00; + 729 : 00; + 730 : 00; + 731 : 00; + 732 : 00; + 733 : 00; + 734 : 00; + 735 : 00; + 736 : 00; + 737 : 00; + 738 : 00; + 739 : 00; + 740 : 00; + 741 : 00; + 742 : 00; + 743 : 00; + 744 : 00; + 745 : 00; + 746 : 18; + 747 : 18; + 748 : 00; + 749 : 00; + 750 : 00; + 751 : 00; + 752 : 00; + 753 : 01; + 754 : 01; + 755 : 01; + 756 : 02; + 757 : 04; + 758 : 08; + 759 : 10; + 760 : 20; + 761 : 40; + 762 : 40; + 763 : 40; + 764 : 00; + 765 : 00; + 766 : 00; + 767 : 00; + 768 : 00; + 769 : 08; + 770 : 14; + 771 : 22; + 772 : 41; + 773 : 41; + 774 : 41; + 775 : 41; + 776 : 41; + 777 : 22; + 778 : 14; + 779 : 08; + 780 : 00; + 781 : 00; + 782 : 00; + 783 : 00; + 784 : 00; + 785 : 08; + 786 : 18; + 787 : 28; + 788 : 08; + 789 : 08; + 790 : 08; + 791 : 08; + 792 : 08; + 793 : 08; + 794 : 08; + 795 : 3E; + 796 : 00; + 797 : 00; + 798 : 00; + 799 : 00; + 800 : 00; + 801 : 3C; + 802 : 42; + 803 : 41; + 804 : 01; + 805 : 02; + 806 : 04; + 807 : 08; + 808 : 10; + 809 : 20; + 810 : 40; + 811 : 7F; + 812 : 00; + 813 : 00; + 814 : 00; + 815 : 00; + 816 : 00; + 817 : 3E; + 818 : 41; + 819 : 01; + 820 : 01; + 821 : 01; + 822 : 0E; + 823 : 01; + 824 : 01; + 825 : 01; + 826 : 41; + 827 : 3E; + 828 : 00; + 829 : 00; + 830 : 00; + 831 : 00; + 832 : 00; + 833 : 02; + 834 : 06; + 835 : 0A; + 836 : 12; + 837 : 22; + 838 : 7F; + 839 : 02; + 840 : 02; + 841 : 02; + 842 : 02; + 843 : 02; + 844 : 00; + 845 : 00; + 846 : 00; + 847 : 00; + 848 : 00; + 849 : 7F; + 850 : 40; + 851 : 40; + 852 : 40; + 853 : 40; + 854 : 5E; + 855 : 61; + 856 : 01; + 857 : 01; + 858 : 41; + 859 : 3E; + 860 : 00; + 861 : 00; + 862 : 00; + 863 : 00; + 864 : 00; + 865 : 1E; + 866 : 21; + 867 : 40; + 868 : 40; + 869 : 40; + 870 : 5E; + 871 : 61; + 872 : 41; + 873 : 41; + 874 : 21; + 875 : 1E; + 876 : 00; + 877 : 00; + 878 : 00; + 879 : 00; + 880 : 00; + 881 : 7F; + 882 : 01; + 883 : 01; + 884 : 01; + 885 : 02; + 886 : 04; + 887 : 08; + 888 : 10; + 889 : 20; + 890 : 40; + 891 : 40; + 892 : 00; + 893 : 00; + 894 : 00; + 895 : 00; + 896 : 00; + 897 : 3E; + 898 : 41; + 899 : 41; + 900 : 41; + 901 : 41; + 902 : 3E; + 903 : 41; + 904 : 41; + 905 : 41; + 906 : 41; + 907 : 3E; + 908 : 00; + 909 : 00; + 910 : 00; + 911 : 00; + 912 : 00; + 913 : 3C; + 914 : 42; + 915 : 41; + 916 : 41; + 917 : 43; + 918 : 3D; + 919 : 01; + 920 : 01; + 921 : 01; + 922 : 42; + 923 : 3C; + 924 : 00; + 925 : 00; + 926 : 00; + 927 : 00; + 928 : 00; + 929 : 00; + 930 : 18; + 931 : 18; + 932 : 18; + 933 : 00; + 934 : 00; + 935 : 00; + 936 : 18; + 937 : 18; + 938 : 18; + 939 : 00; + 940 : 00; + 941 : 00; + 942 : 00; + 943 : 00; + 944 : 00; + 945 : 00; + 946 : 18; + 947 : 18; + 948 : 18; + 949 : 00; + 950 : 00; + 951 : 00; + 952 : 18; + 953 : 18; + 954 : 18; + 955 : 10; + 956 : 20; + 957 : 40; + 958 : 00; + 959 : 00; + 960 : 00; + 961 : 01; + 962 : 02; + 963 : 04; + 964 : 08; + 965 : 10; + 966 : 20; + 967 : 10; + 968 : 08; + 969 : 04; + 970 : 02; + 971 : 01; + 972 : 00; + 973 : 00; + 974 : 00; + 975 : 00; + 976 : 00; + 977 : 00; + 978 : 00; + 979 : 00; + 980 : 7F; + 981 : 00; + 982 : 00; + 983 : 7F; + 984 : 00; + 985 : 00; + 986 : 00; + 987 : 00; + 988 : 00; + 989 : 00; + 990 : 00; + 991 : 00; + 992 : 00; + 993 : 40; + 994 : 20; + 995 : 10; + 996 : 08; + 997 : 04; + 998 : 02; + 999 : 04; + 1000 : 08; + 1001 : 10; + 1002 : 20; + 1003 : 40; + 1004 : 00; + 1005 : 00; + 1006 : 00; + 1007 : 00; + 1008 : 00; + 1009 : 3E; + 1010 : 41; + 1011 : 01; + 1012 : 01; + 1013 : 06; + 1014 : 08; + 1015 : 08; + 1016 : 08; + 1017 : 00; + 1018 : 08; + 1019 : 08; + 1020 : 00; + 1021 : 00; + 1022 : 00; + 1023 : 00; + 1024 : 00; + 1025 : 1C; + 1026 : 22; + 1027 : 41; + 1028 : 45; + 1029 : 49; + 1030 : 4E; + 1031 : 40; + 1032 : 40; + 1033 : 41; + 1034 : 22; + 1035 : 1C; + 1036 : 00; + 1037 : 00; + 1038 : 00; + 1039 : 00; + 1040 : 00; + 1041 : 08; + 1042 : 14; + 1043 : 22; + 1044 : 41; + 1045 : 41; + 1046 : 7F; + 1047 : 41; + 1048 : 41; + 1049 : 41; + 1050 : 41; + 1051 : 41; + 1052 : 00; + 1053 : 00; + 1054 : 00; + 1055 : 00; + 1056 : 00; + 1057 : 7E; + 1058 : 21; + 1059 : 21; + 1060 : 21; + 1061 : 21; + 1062 : 3E; + 1063 : 21; + 1064 : 21; + 1065 : 21; + 1066 : 21; + 1067 : 7E; + 1068 : 00; + 1069 : 00; + 1070 : 00; + 1071 : 00; + 1072 : 00; + 1073 : 1E; + 1074 : 21; + 1075 : 41; + 1076 : 40; + 1077 : 40; + 1078 : 40; + 1079 : 40; + 1080 : 40; + 1081 : 41; + 1082 : 21; + 1083 : 1E; + 1084 : 00; + 1085 : 00; + 1086 : 00; + 1087 : 00; + 1088 : 00; + 1089 : 7C; + 1090 : 22; + 1091 : 21; + 1092 : 21; + 1093 : 21; + 1094 : 21; + 1095 : 21; + 1096 : 21; + 1097 : 21; + 1098 : 22; + 1099 : 7C; + 1100 : 00; + 1101 : 00; + 1102 : 00; + 1103 : 00; + 1104 : 00; + 1105 : 7F; + 1106 : 40; + 1107 : 40; + 1108 : 40; + 1109 : 40; + 1110 : 7C; + 1111 : 40; + 1112 : 40; + 1113 : 40; + 1114 : 40; + 1115 : 7F; + 1116 : 00; + 1117 : 00; + 1118 : 00; + 1119 : 00; + 1120 : 00; + 1121 : 7F; + 1122 : 40; + 1123 : 40; + 1124 : 40; + 1125 : 40; + 1126 : 7C; + 1127 : 40; + 1128 : 40; + 1129 : 40; + 1130 : 40; + 1131 : 40; + 1132 : 00; + 1133 : 00; + 1134 : 00; + 1135 : 00; + 1136 : 00; + 1137 : 1E; + 1138 : 21; + 1139 : 40; + 1140 : 40; + 1141 : 40; + 1142 : 47; + 1143 : 41; + 1144 : 41; + 1145 : 41; + 1146 : 21; + 1147 : 1E; + 1148 : 00; + 1149 : 00; + 1150 : 00; + 1151 : 00; + 1152 : 00; + 1153 : 41; + 1154 : 41; + 1155 : 41; + 1156 : 41; + 1157 : 41; + 1158 : 7F; + 1159 : 41; + 1160 : 41; + 1161 : 41; + 1162 : 41; + 1163 : 41; + 1164 : 00; + 1165 : 00; + 1166 : 00; + 1167 : 00; + 1168 : 00; + 1169 : 3E; + 1170 : 08; + 1171 : 08; + 1172 : 08; + 1173 : 08; + 1174 : 08; + 1175 : 08; + 1176 : 08; + 1177 : 08; + 1178 : 08; + 1179 : 3E; + 1180 : 00; + 1181 : 00; + 1182 : 00; + 1183 : 00; + 1184 : 00; + 1185 : 07; + 1186 : 02; + 1187 : 02; + 1188 : 02; + 1189 : 02; + 1190 : 02; + 1191 : 02; + 1192 : 02; + 1193 : 02; + 1194 : 42; + 1195 : 3C; + 1196 : 00; + 1197 : 00; + 1198 : 00; + 1199 : 00; + 1200 : 00; + 1201 : 41; + 1202 : 42; + 1203 : 44; + 1204 : 48; + 1205 : 50; + 1206 : 60; + 1207 : 50; + 1208 : 48; + 1209 : 44; + 1210 : 42; + 1211 : 41; + 1212 : 00; + 1213 : 00; + 1214 : 00; + 1215 : 00; + 1216 : 00; + 1217 : 40; + 1218 : 40; + 1219 : 40; + 1220 : 40; + 1221 : 40; + 1222 : 40; + 1223 : 40; + 1224 : 40; + 1225 : 40; + 1226 : 40; + 1227 : 7F; + 1228 : 00; + 1229 : 00; + 1230 : 00; + 1231 : 00; + 1232 : 00; + 1233 : 41; + 1234 : 63; + 1235 : 55; + 1236 : 49; + 1237 : 49; + 1238 : 41; + 1239 : 41; + 1240 : 41; + 1241 : 41; + 1242 : 41; + 1243 : 41; + 1244 : 00; + 1245 : 00; + 1246 : 00; + 1247 : 00; + 1248 : 00; + 1249 : 41; + 1250 : 41; + 1251 : 61; + 1252 : 51; + 1253 : 49; + 1254 : 49; + 1255 : 45; + 1256 : 43; + 1257 : 41; + 1258 : 41; + 1259 : 41; + 1260 : 00; + 1261 : 00; + 1262 : 00; + 1263 : 00; + 1264 : 00; + 1265 : 3E; + 1266 : 41; + 1267 : 41; + 1268 : 41; + 1269 : 41; + 1270 : 41; + 1271 : 41; + 1272 : 41; + 1273 : 41; + 1274 : 41; + 1275 : 3E; + 1276 : 00; + 1277 : 00; + 1278 : 00; + 1279 : 00; + 1280 : 00; + 1281 : 7E; + 1282 : 41; + 1283 : 41; + 1284 : 41; + 1285 : 41; + 1286 : 7E; + 1287 : 40; + 1288 : 40; + 1289 : 40; + 1290 : 40; + 1291 : 40; + 1292 : 00; + 1293 : 00; + 1294 : 00; + 1295 : 00; + 1296 : 00; + 1297 : 3E; + 1298 : 41; + 1299 : 41; + 1300 : 41; + 1301 : 41; + 1302 : 41; + 1303 : 41; + 1304 : 49; + 1305 : 45; + 1306 : 42; + 1307 : 3D; + 1308 : 00; + 1309 : 00; + 1310 : 00; + 1311 : 00; + 1312 : 00; + 1313 : 7E; + 1314 : 41; + 1315 : 41; + 1316 : 41; + 1317 : 41; + 1318 : 7E; + 1319 : 50; + 1320 : 48; + 1321 : 44; + 1322 : 42; + 1323 : 41; + 1324 : 00; + 1325 : 00; + 1326 : 00; + 1327 : 00; + 1328 : 00; + 1329 : 3E; + 1330 : 41; + 1331 : 40; + 1332 : 40; + 1333 : 40; + 1334 : 3E; + 1335 : 01; + 1336 : 01; + 1337 : 01; + 1338 : 41; + 1339 : 3E; + 1340 : 00; + 1341 : 00; + 1342 : 00; + 1343 : 00; + 1344 : 00; + 1345 : 7F; + 1346 : 08; + 1347 : 08; + 1348 : 08; + 1349 : 08; + 1350 : 08; + 1351 : 08; + 1352 : 08; + 1353 : 08; + 1354 : 08; + 1355 : 08; + 1356 : 00; + 1357 : 00; + 1358 : 00; + 1359 : 00; + 1360 : 00; + 1361 : 41; + 1362 : 41; + 1363 : 41; + 1364 : 41; + 1365 : 41; + 1366 : 41; + 1367 : 41; + 1368 : 41; + 1369 : 41; + 1370 : 41; + 1371 : 3E; + 1372 : 00; + 1373 : 00; + 1374 : 00; + 1375 : 00; + 1376 : 00; + 1377 : 41; + 1378 : 41; + 1379 : 41; + 1380 : 22; + 1381 : 22; + 1382 : 22; + 1383 : 14; + 1384 : 14; + 1385 : 14; + 1386 : 08; + 1387 : 08; + 1388 : 00; + 1389 : 00; + 1390 : 00; + 1391 : 00; + 1392 : 00; + 1393 : 41; + 1394 : 41; + 1395 : 41; + 1396 : 41; + 1397 : 41; + 1398 : 49; + 1399 : 49; + 1400 : 55; + 1401 : 55; + 1402 : 22; + 1403 : 22; + 1404 : 00; + 1405 : 00; + 1406 : 00; + 1407 : 00; + 1408 : 00; + 1409 : 41; + 1410 : 41; + 1411 : 41; + 1412 : 22; + 1413 : 14; + 1414 : 08; + 1415 : 14; + 1416 : 22; + 1417 : 41; + 1418 : 41; + 1419 : 41; + 1420 : 00; + 1421 : 00; + 1422 : 00; + 1423 : 00; + 1424 : 00; + 1425 : 41; + 1426 : 41; + 1427 : 41; + 1428 : 22; + 1429 : 14; + 1430 : 08; + 1431 : 08; + 1432 : 08; + 1433 : 08; + 1434 : 08; + 1435 : 08; + 1436 : 00; + 1437 : 00; + 1438 : 00; + 1439 : 00; + 1440 : 00; + 1441 : 7F; + 1442 : 01; + 1443 : 01; + 1444 : 02; + 1445 : 04; + 1446 : 08; + 1447 : 10; + 1448 : 20; + 1449 : 40; + 1450 : 40; + 1451 : 7F; + 1452 : 00; + 1453 : 00; + 1454 : 00; + 1455 : 00; + 1456 : 00; + 1457 : 1E; + 1458 : 10; + 1459 : 10; + 1460 : 10; + 1461 : 10; + 1462 : 10; + 1463 : 10; + 1464 : 10; + 1465 : 10; + 1466 : 10; + 1467 : 1E; + 1468 : 00; + 1469 : 00; + 1470 : 00; + 1471 : 00; + 1472 : 00; + 1473 : 40; + 1474 : 40; + 1475 : 40; + 1476 : 20; + 1477 : 10; + 1478 : 08; + 1479 : 04; + 1480 : 02; + 1481 : 01; + 1482 : 01; + 1483 : 01; + 1484 : 00; + 1485 : 00; + 1486 : 00; + 1487 : 00; + 1488 : 00; + 1489 : 3C; + 1490 : 04; + 1491 : 04; + 1492 : 04; + 1493 : 04; + 1494 : 04; + 1495 : 04; + 1496 : 04; + 1497 : 04; + 1498 : 04; + 1499 : 3C; + 1500 : 00; + 1501 : 00; + 1502 : 00; + 1503 : 00; + 1504 : 00; + 1505 : 08; + 1506 : 14; + 1507 : 22; + 1508 : 41; + 1509 : 00; + 1510 : 00; + 1511 : 00; + 1512 : 00; + 1513 : 00; + 1514 : 00; + 1515 : 00; + 1516 : 00; + 1517 : 00; + 1518 : 00; + 1519 : 00; + 1520 : 00; + 1521 : 00; + 1522 : 00; + 1523 : 00; + 1524 : 00; + 1525 : 00; + 1526 : 00; + 1527 : 00; + 1528 : 00; + 1529 : 00; + 1530 : 00; + 1531 : 7F; + 1532 : 00; + 1533 : 00; + 1534 : 00; + 1535 : 00; + 1536 : 00; + 1537 : 18; + 1538 : 08; + 1539 : 04; + 1540 : 02; + 1541 : 00; + 1542 : 00; + 1543 : 00; + 1544 : 00; + 1545 : 00; + 1546 : 00; + 1547 : 00; + 1548 : 00; + 1549 : 00; + 1550 : 00; + 1551 : 00; + 1552 : 00; + 1553 : 00; + 1554 : 00; + 1555 : 00; + 1556 : 00; + 1557 : 3E; + 1558 : 01; + 1559 : 01; + 1560 : 3F; + 1561 : 41; + 1562 : 41; + 1563 : 3F; + 1564 : 00; + 1565 : 00; + 1566 : 00; + 1567 : 00; + 1568 : 00; + 1569 : 40; + 1570 : 40; + 1571 : 40; + 1572 : 40; + 1573 : 5E; + 1574 : 61; + 1575 : 41; + 1576 : 61; + 1577 : 61; + 1578 : 61; + 1579 : 5E; + 1580 : 00; + 1581 : 00; + 1582 : 00; + 1583 : 00; + 1584 : 00; + 1585 : 00; + 1586 : 00; + 1587 : 00; + 1588 : 00; + 1589 : 1E; + 1590 : 21; + 1591 : 40; + 1592 : 40; + 1593 : 40; + 1594 : 21; + 1595 : 1E; + 1596 : 00; + 1597 : 00; + 1598 : 00; + 1599 : 00; + 1600 : 00; + 1601 : 01; + 1602 : 01; + 1603 : 01; + 1604 : 01; + 1605 : 3D; + 1606 : 43; + 1607 : 41; + 1608 : 41; + 1609 : 41; + 1610 : 43; + 1611 : 3D; + 1612 : 00; + 1613 : 00; + 1614 : 00; + 1615 : 00; + 1616 : 00; + 1617 : 00; + 1618 : 00; + 1619 : 00; + 1620 : 00; + 1621 : 3E; + 1622 : 41; + 1623 : 41; + 1624 : 7F; + 1625 : 40; + 1626 : 40; + 1627 : 3E; + 1628 : 00; + 1629 : 00; + 1630 : 00; + 1631 : 00; + 1632 : 00; + 1633 : 0E; + 1634 : 11; + 1635 : 10; + 1636 : 10; + 1637 : 7C; + 1638 : 10; + 1639 : 10; + 1640 : 10; + 1641 : 10; + 1642 : 10; + 1643 : 10; + 1644 : 00; + 1645 : 00; + 1646 : 00; + 1647 : 00; + 1648 : 00; + 1649 : 00; + 1650 : 00; + 1651 : 00; + 1652 : 01; + 1653 : 3D; + 1654 : 42; + 1655 : 42; + 1656 : 42; + 1657 : 42; + 1658 : 3E; + 1659 : 02; + 1660 : 02; + 1661 : 42; + 1662 : 3C; + 1663 : 00; + 1664 : 00; + 1665 : 40; + 1666 : 40; + 1667 : 40; + 1668 : 40; + 1669 : 5E; + 1670 : 61; + 1671 : 41; + 1672 : 41; + 1673 : 41; + 1674 : 41; + 1675 : 41; + 1676 : 00; + 1677 : 00; + 1678 : 00; + 1679 : 00; + 1680 : 00; + 1681 : 08; + 1682 : 08; + 1683 : 00; + 1684 : 00; + 1685 : 18; + 1686 : 08; + 1687 : 08; + 1688 : 08; + 1689 : 08; + 1690 : 08; + 1691 : 3E; + 1692 : 00; + 1693 : 00; + 1694 : 00; + 1695 : 00; + 1696 : 00; + 1697 : 02; + 1698 : 02; + 1699 : 00; + 1700 : 00; + 1701 : 02; + 1702 : 02; + 1703 : 02; + 1704 : 02; + 1705 : 02; + 1706 : 02; + 1707 : 02; + 1708 : 02; + 1709 : 42; + 1710 : 3C; + 1711 : 00; + 1712 : 00; + 1713 : 40; + 1714 : 40; + 1715 : 40; + 1716 : 40; + 1717 : 41; + 1718 : 44; + 1719 : 48; + 1720 : 70; + 1721 : 48; + 1722 : 44; + 1723 : 41; + 1724 : 00; + 1725 : 00; + 1726 : 00; + 1727 : 00; + 1728 : 00; + 1729 : 18; + 1730 : 08; + 1731 : 08; + 1732 : 08; + 1733 : 08; + 1734 : 08; + 1735 : 08; + 1736 : 08; + 1737 : 08; + 1738 : 08; + 1739 : 1C; + 1740 : 00; + 1741 : 00; + 1742 : 00; + 1743 : 00; + 1744 : 00; + 1745 : 00; + 1746 : 00; + 1747 : 00; + 1748 : 00; + 1749 : 22; + 1750 : 55; + 1751 : 49; + 1752 : 49; + 1753 : 41; + 1754 : 41; + 1755 : 41; + 1756 : 00; + 1757 : 00; + 1758 : 00; + 1759 : 00; + 1760 : 00; + 1761 : 00; + 1762 : 00; + 1763 : 00; + 1764 : 00; + 1765 : 5E; + 1766 : 61; + 1767 : 41; + 1768 : 41; + 1769 : 41; + 1770 : 41; + 1771 : 41; + 1772 : 00; + 1773 : 00; + 1774 : 00; + 1775 : 00; + 1776 : 00; + 1777 : 00; + 1778 : 00; + 1779 : 00; + 1780 : 00; + 1781 : 3E; + 1782 : 41; + 1783 : 41; + 1784 : 41; + 1785 : 41; + 1786 : 41; + 1787 : 3E; + 1788 : 00; + 1789 : 00; + 1790 : 00; + 1791 : 00; + 1792 : 00; + 1793 : 00; + 1794 : 00; + 1795 : 00; + 1796 : 00; + 1797 : 5E; + 1798 : 61; + 1799 : 61; + 1800 : 61; + 1801 : 61; + 1802 : 5E; + 1803 : 40; + 1804 : 40; + 1805 : 40; + 1806 : 40; + 1807 : 00; + 1808 : 00; + 1809 : 00; + 1810 : 00; + 1811 : 00; + 1812 : 00; + 1813 : 3D; + 1814 : 43; + 1815 : 43; + 1816 : 43; + 1817 : 43; + 1818 : 3D; + 1819 : 01; + 1820 : 01; + 1821 : 01; + 1822 : 01; + 1823 : 00; + 1824 : 00; + 1825 : 00; + 1826 : 00; + 1827 : 00; + 1828 : 00; + 1829 : 4E; + 1830 : 31; + 1831 : 20; + 1832 : 20; + 1833 : 20; + 1834 : 20; + 1835 : 20; + 1836 : 00; + 1837 : 00; + 1838 : 00; + 1839 : 00; + 1840 : 00; + 1841 : 00; + 1842 : 00; + 1843 : 00; + 1844 : 00; + 1845 : 3E; + 1846 : 40; + 1847 : 40; + 1848 : 3E; + 1849 : 01; + 1850 : 01; + 1851 : 3E; + 1852 : 00; + 1853 : 00; + 1854 : 00; + 1855 : 00; + 1856 : 00; + 1857 : 10; + 1858 : 10; + 1859 : 10; + 1860 : 10; + 1861 : 7C; + 1862 : 10; + 1863 : 10; + 1864 : 10; + 1865 : 10; + 1866 : 12; + 1867 : 0C; + 1868 : 00; + 1869 : 00; + 1870 : 00; + 1871 : 00; + 1872 : 00; + 1873 : 00; + 1874 : 00; + 1875 : 00; + 1876 : 00; + 1877 : 42; + 1878 : 42; + 1879 : 42; + 1880 : 42; + 1881 : 42; + 1882 : 42; + 1883 : 3D; + 1884 : 00; + 1885 : 00; + 1886 : 00; + 1887 : 00; + 1888 : 00; + 1889 : 00; + 1890 : 00; + 1891 : 00; + 1892 : 00; + 1893 : 41; + 1894 : 41; + 1895 : 22; + 1896 : 22; + 1897 : 14; + 1898 : 14; + 1899 : 08; + 1900 : 00; + 1901 : 00; + 1902 : 00; + 1903 : 00; + 1904 : 00; + 1905 : 00; + 1906 : 00; + 1907 : 00; + 1908 : 00; + 1909 : 41; + 1910 : 41; + 1911 : 41; + 1912 : 49; + 1913 : 49; + 1914 : 55; + 1915 : 22; + 1916 : 00; + 1917 : 00; + 1918 : 00; + 1919 : 00; + 1920 : 00; + 1921 : 00; + 1922 : 00; + 1923 : 00; + 1924 : 00; + 1925 : 41; + 1926 : 22; + 1927 : 14; + 1928 : 08; + 1929 : 14; + 1930 : 22; + 1931 : 41; + 1932 : 00; + 1933 : 00; + 1934 : 00; + 1935 : 00; + 1936 : 00; + 1937 : 00; + 1938 : 00; + 1939 : 00; + 1940 : 00; + 1941 : 42; + 1942 : 42; + 1943 : 42; + 1944 : 42; + 1945 : 46; + 1946 : 3A; + 1947 : 02; + 1948 : 02; + 1949 : 42; + 1950 : 3C; + 1951 : 00; + 1952 : 00; + 1953 : 00; + 1954 : 00; + 1955 : 00; + 1956 : 00; + 1957 : 7F; + 1958 : 02; + 1959 : 04; + 1960 : 08; + 1961 : 10; + 1962 : 20; + 1963 : 7F; + 1964 : 00; + 1965 : 00; + 1966 : 00; + 1967 : 00; + 1968 : 00; + 1969 : 07; + 1970 : 08; + 1971 : 08; + 1972 : 08; + 1973 : 10; + 1974 : 20; + 1975 : 10; + 1976 : 08; + 1977 : 08; + 1978 : 08; + 1979 : 07; + 1980 : 00; + 1981 : 00; + 1982 : 00; + 1983 : 00; + 1984 : 00; + 1985 : 08; + 1986 : 08; + 1987 : 08; + 1988 : 08; + 1989 : 08; + 1990 : 00; + 1991 : 08; + 1992 : 08; + 1993 : 08; + 1994 : 08; + 1995 : 08; + 1996 : 00; + 1997 : 00; + 1998 : 00; + 1999 : 00; + 2000 : 00; + 2001 : 70; + 2002 : 08; + 2003 : 08; + 2004 : 08; + 2005 : 04; + 2006 : 02; + 2007 : 04; + 2008 : 08; + 2009 : 08; + 2010 : 08; + 2011 : 70; + 2012 : 00; + 2013 : 00; + 2014 : 00; + 2015 : 00; + 2016 : 00; + 2017 : 31; + 2018 : 49; + 2019 : 46; + 2020 : 00; + 2021 : 00; + 2022 : 00; + 2023 : 00; + 2024 : 00; + 2025 : 00; + 2026 : 00; + 2027 : 00; + 2028 : 00; + 2029 : 00; + 2030 : 00; + 2031 : 00; + 2032 : 00; + 2033 : 49; + 2034 : 22; + 2035 : 49; + 2036 : 22; + 2037 : 49; + 2038 : 22; + 2039 : 49; + 2040 : 22; + 2041 : 49; + 2042 : 22; + 2043 : 49; + 2044 : 00; + 2045 : 00; + 2046 : 00; + 2047 : 00; +END; Index: System09_Terasic_DE1/roms/ram2k.mif =================================================================== --- System09_Terasic_DE1/roms/ram2k.mif (nonexistent) +++ System09_Terasic_DE1/roms/ram2k.mif (revision 105) @@ -0,0 +1,2054 @@ +WIDTH=8; +DEPTH=2048; +ADDRESS_RADIX=UNS; +DATA_RADIX=HEX; +CONTENT BEGIN + 0 : 00; + 1 : 00; + 2 : 00; + 3 : 00; + 4 : 00; + 5 : FF; + 6 : 00; + 7 : 00; + 8 : 00; + 9 : 08; + 10 : 1C; + 11 : 3E; + 12 : 7F; + 13 : 7F; + 14 : 1C; + 15 : 3E; + 16 : 00; + 17 : 10; + 18 : 10; + 19 : 10; + 20 : 10; + 21 : 10; + 22 : 10; + 23 : 10; + 24 : 10; + 25 : 00; + 26 : 00; + 27 : 00; + 28 : FF; + 29 : 00; + 30 : 00; + 31 : 00; + 32 : 00; + 33 : 00; + 34 : 00; + 35 : FF; + 36 : 00; + 37 : 00; + 38 : 00; + 39 : 00; + 40 : 00; + 41 : 00; + 42 : FF; + 43 : 00; + 44 : 00; + 45 : 00; + 46 : 00; + 47 : 00; + 48 : 00; + 49 : 00; + 50 : 00; + 51 : 00; + 52 : 00; + 53 : 00; + 54 : FF; + 55 : 00; + 56 : 00; + 57 : 20; + 58 : 20; + 59 : 20; + 60 : 20; + 61 : 20; + 62 : 20; + 63 : 20; + 64 : 20; + 65 : 04; + 66 : 04; + 67 : 04; + 68 : 04; + 69 : 04; + 70 : 04; + 71 : 04; + 72 : 04; + 73 : 00; + 74 : 00; + 75 : 00; + 76 : 00; + 77 : E0; + 78 : 10; + 79 : 08; + 80 : 08; + 81 : 08; + 82 : 08; + 83 : 08; + 84 : 04; + 85 : 03; + 86 : 00; + 87 : 00; + 88 : 00; + 89 : 08; + 90 : 08; + 91 : 08; + 92 : 10; + 93 : E0; + 94 : 00; + 95 : 00; + 96 : 00; + 97 : 80; + 98 : 80; + 99 : 80; + 100 : 80; + 101 : 80; + 102 : 80; + 103 : 80; + 104 : FF; + 105 : 80; + 106 : 40; + 107 : 20; + 108 : 10; + 109 : 08; + 110 : 04; + 111 : 02; + 112 : 01; + 113 : 01; + 114 : 02; + 115 : 04; + 116 : 08; + 117 : 10; + 118 : 20; + 119 : 40; + 120 : 80; + 121 : FF; + 122 : 80; + 123 : 80; + 124 : 80; + 125 : 80; + 126 : 80; + 127 : 80; + 128 : 80; + 129 : FF; + 130 : 01; + 131 : 01; + 132 : 01; + 133 : 01; + 134 : 01; + 135 : 01; + 136 : 01; + 137 : 00; + 138 : 3C; + 139 : 7E; + 140 : 7E; + 141 : 7E; + 142 : 7E; + 143 : 3C; + 144 : 00; + 145 : 00; + 146 : 00; + 147 : 00; + 148 : 00; + 149 : 00; + 150 : 00; + 151 : FF; + 152 : 00; + 153 : 36; + 154 : 7F; + 155 : 7F; + 156 : 7F; + 157 : 3E; + 158 : 1C; + 159 : 08; + 160 : 00; + 161 : 40; + 162 : 40; + 163 : 40; + 164 : 40; + 165 : 40; + 166 : 40; + 167 : 40; + 168 : 40; + 169 : 00; + 170 : 00; + 171 : 00; + 172 : 00; + 173 : 03; + 174 : 04; + 175 : 08; + 176 : 08; + 177 : 81; + 178 : 42; + 179 : 24; + 180 : 18; + 181 : 18; + 182 : 24; + 183 : 42; + 184 : 81; + 185 : 00; + 186 : 3C; + 187 : 42; + 188 : 42; + 189 : 42; + 190 : 42; + 191 : 3C; + 192 : 00; + 193 : 08; + 194 : 1C; + 195 : 2A; + 196 : 77; + 197 : 2A; + 198 : 08; + 199 : 08; + 200 : 00; + 201 : 02; + 202 : 02; + 203 : 02; + 204 : 02; + 205 : 02; + 206 : 02; + 207 : 02; + 208 : 02; + 209 : 08; + 210 : 1C; + 211 : 3E; + 212 : 7F; + 213 : 3E; + 214 : 1C; + 215 : 08; + 216 : 00; + 217 : 08; + 218 : 08; + 219 : 08; + 220 : 08; + 221 : FF; + 222 : 08; + 223 : 08; + 224 : 08; + 225 : A0; + 226 : 50; + 227 : A0; + 228 : 50; + 229 : A0; + 230 : 50; + 231 : A0; + 232 : 50; + 233 : 08; + 234 : 08; + 235 : 08; + 236 : 08; + 237 : 08; + 238 : 08; + 239 : 08; + 240 : 08; + 241 : 00; + 242 : 00; + 243 : 01; + 244 : 3E; + 245 : 54; + 246 : 14; + 247 : 14; + 248 : 00; + 249 : FF; + 250 : 7F; + 251 : 3F; + 252 : 1F; + 253 : 0F; + 254 : 07; + 255 : 03; + 256 : 00; + 257 : 00; + 258 : 00; + 259 : 00; + 260 : 00; + 261 : 00; + 262 : 00; + 263 : 00; + 264 : 00; + 265 : 08; + 266 : 08; + 267 : 08; + 268 : 08; + 269 : 00; + 270 : 00; + 271 : 08; + 272 : 00; + 273 : 24; + 274 : 24; + 275 : 24; + 276 : 00; + 277 : 00; + 278 : 00; + 279 : 00; + 280 : 00; + 281 : 24; + 282 : 24; + 283 : 7E; + 284 : 24; + 285 : 7E; + 286 : 24; + 287 : 24; + 288 : 00; + 289 : 08; + 290 : 1E; + 291 : 28; + 292 : 1C; + 293 : 0A; + 294 : 3C; + 295 : 08; + 296 : 00; + 297 : 00; + 298 : 62; + 299 : 64; + 300 : 08; + 301 : 10; + 302 : 26; + 303 : 46; + 304 : 00; + 305 : 30; + 306 : 48; + 307 : 48; + 308 : 30; + 309 : 4A; + 310 : 44; + 311 : 3A; + 312 : 00; + 313 : 04; + 314 : 08; + 315 : 10; + 316 : 00; + 317 : 00; + 318 : 00; + 319 : 00; + 320 : 00; + 321 : 04; + 322 : 08; + 323 : 10; + 324 : 10; + 325 : 10; + 326 : 08; + 327 : 04; + 328 : 00; + 329 : 20; + 330 : 10; + 331 : 08; + 332 : 08; + 333 : 08; + 334 : 10; + 335 : 20; + 336 : 00; + 337 : 08; + 338 : 2A; + 339 : 1C; + 340 : 3E; + 341 : 1C; + 342 : 2A; + 343 : 08; + 344 : 00; + 345 : 00; + 346 : 08; + 347 : 08; + 348 : 3E; + 349 : 08; + 350 : 08; + 351 : 00; + 352 : 00; + 353 : 00; + 354 : 00; + 355 : 00; + 356 : 00; + 357 : 00; + 358 : 08; + 359 : 08; + 360 : 10; + 361 : 00; + 362 : 00; + 363 : 00; + 364 : 7E; + 365 : 00; + 366 : 00; + 367 : 00; + 368 : 00; + 369 : 00; + 370 : 00; + 371 : 00; + 372 : 00; + 373 : 00; + 374 : 18; + 375 : 18; + 376 : 00; + 377 : 00; + 378 : 02; + 379 : 04; + 380 : 08; + 381 : 10; + 382 : 20; + 383 : 40; + 384 : 00; + 385 : 3C; + 386 : 42; + 387 : 46; + 388 : 5A; + 389 : 62; + 390 : 42; + 391 : 3C; + 392 : 00; + 393 : 08; + 394 : 18; + 395 : 28; + 396 : 08; + 397 : 08; + 398 : 08; + 399 : 3E; + 400 : 00; + 401 : 3C; + 402 : 42; + 403 : 02; + 404 : 0C; + 405 : 30; + 406 : 40; + 407 : 7E; + 408 : 00; + 409 : 3C; + 410 : 42; + 411 : 02; + 412 : 1C; + 413 : 02; + 414 : 42; + 415 : 3C; + 416 : 00; + 417 : 04; + 418 : 0C; + 419 : 14; + 420 : 24; + 421 : 7E; + 422 : 04; + 423 : 04; + 424 : 00; + 425 : 7E; + 426 : 40; + 427 : 78; + 428 : 04; + 429 : 02; + 430 : 44; + 431 : 38; + 432 : 00; + 433 : 1C; + 434 : 20; + 435 : 40; + 436 : 7C; + 437 : 42; + 438 : 42; + 439 : 3C; + 440 : 00; + 441 : 7E; + 442 : 42; + 443 : 04; + 444 : 08; + 445 : 10; + 446 : 10; + 447 : 10; + 448 : 00; + 449 : 3C; + 450 : 42; + 451 : 42; + 452 : 3C; + 453 : 42; + 454 : 42; + 455 : 3C; + 456 : 00; + 457 : 3C; + 458 : 42; + 459 : 42; + 460 : 3E; + 461 : 02; + 462 : 04; + 463 : 38; + 464 : 00; + 465 : 00; + 466 : 00; + 467 : 08; + 468 : 00; + 469 : 00; + 470 : 08; + 471 : 00; + 472 : 00; + 473 : 00; + 474 : 00; + 475 : 08; + 476 : 00; + 477 : 00; + 478 : 08; + 479 : 08; + 480 : 10; + 481 : 0E; + 482 : 18; + 483 : 30; + 484 : 60; + 485 : 30; + 486 : 18; + 487 : 0E; + 488 : 00; + 489 : 00; + 490 : 00; + 491 : 7E; + 492 : 00; + 493 : 7E; + 494 : 00; + 495 : 00; + 496 : 00; + 497 : 70; + 498 : 18; + 499 : 0C; + 500 : 06; + 501 : 0C; + 502 : 18; + 503 : 70; + 504 : 00; + 505 : 3C; + 506 : 42; + 507 : 02; + 508 : 0C; + 509 : 10; + 510 : 00; + 511 : 10; + 512 : 1C; + 513 : 22; + 514 : 4A; + 515 : 56; + 516 : 4C; + 517 : 20; + 518 : 1E; + 519 : 00; + 520 : 18; + 521 : 24; + 522 : 42; + 523 : 7E; + 524 : 42; + 525 : 42; + 526 : 42; + 527 : 00; + 528 : 7C; + 529 : 22; + 530 : 22; + 531 : 3C; + 532 : 22; + 533 : 22; + 534 : 7C; + 535 : 00; + 536 : 1C; + 537 : 22; + 538 : 40; + 539 : 40; + 540 : 40; + 541 : 22; + 542 : 1C; + 543 : 00; + 544 : 78; + 545 : 24; + 546 : 22; + 547 : 22; + 548 : 22; + 549 : 24; + 550 : 78; + 551 : 00; + 552 : 7E; + 553 : 40; + 554 : 40; + 555 : 78; + 556 : 40; + 557 : 40; + 558 : 7E; + 559 : 00; + 560 : 7E; + 561 : 40; + 562 : 40; + 563 : 78; + 564 : 40; + 565 : 40; + 566 : 40; + 567 : 00; + 568 : 1C; + 569 : 22; + 570 : 40; + 571 : 4E; + 572 : 42; + 573 : 22; + 574 : 1C; + 575 : 00; + 576 : 42; + 577 : 42; + 578 : 42; + 579 : 7E; + 580 : 42; + 581 : 42; + 582 : 42; + 583 : 00; + 584 : 1C; + 585 : 08; + 586 : 08; + 587 : 08; + 588 : 08; + 589 : 08; + 590 : 1C; + 591 : 00; + 592 : 0E; + 593 : 04; + 594 : 04; + 595 : 04; + 596 : 04; + 597 : 44; + 598 : 38; + 599 : 00; + 600 : 42; + 601 : 44; + 602 : 48; + 603 : 70; + 604 : 48; + 605 : 44; + 606 : 42; + 607 : 00; + 608 : 40; + 609 : 40; + 610 : 40; + 611 : 40; + 612 : 40; + 613 : 40; + 614 : 7E; + 615 : 00; + 616 : 42; + 617 : 66; + 618 : 5A; + 619 : 5A; + 620 : 42; + 621 : 42; + 622 : 42; + 623 : 00; + 624 : 42; + 625 : 62; + 626 : 52; + 627 : 4A; + 628 : 46; + 629 : 42; + 630 : 42; + 631 : 00; + 632 : 18; + 633 : 24; + 634 : 42; + 635 : 42; + 636 : 42; + 637 : 24; + 638 : 18; + 639 : 00; + 640 : 7C; + 641 : 42; + 642 : 42; + 643 : 7C; + 644 : 40; + 645 : 40; + 646 : 40; + 647 : 00; + 648 : 18; + 649 : 24; + 650 : 42; + 651 : 42; + 652 : 4A; + 653 : 24; + 654 : 1A; + 655 : 00; + 656 : 7C; + 657 : 42; + 658 : 42; + 659 : 7C; + 660 : 48; + 661 : 44; + 662 : 42; + 663 : 00; + 664 : 3C; + 665 : 42; + 666 : 40; + 667 : 3C; + 668 : 02; + 669 : 42; + 670 : 3C; + 671 : 00; + 672 : 3E; + 673 : 08; + 674 : 08; + 675 : 08; + 676 : 08; + 677 : 08; + 678 : 08; + 679 : 00; + 680 : 42; + 681 : 42; + 682 : 42; + 683 : 42; + 684 : 42; + 685 : 42; + 686 : 3C; + 687 : 00; + 688 : 42; + 689 : 42; + 690 : 42; + 691 : 24; + 692 : 24; + 693 : 18; + 694 : 18; + 695 : 00; + 696 : 42; + 697 : 42; + 698 : 42; + 699 : 5A; + 700 : 5A; + 701 : 66; + 702 : 42; + 703 : 00; + 704 : 42; + 705 : 42; + 706 : 24; + 707 : 18; + 708 : 24; + 709 : 42; + 710 : 42; + 711 : 00; + 712 : 22; + 713 : 22; + 714 : 22; + 715 : 1C; + 716 : 08; + 717 : 08; + 718 : 08; + 719 : 00; + 720 : 7E; + 721 : 02; + 722 : 04; + 723 : 18; + 724 : 20; + 725 : 40; + 726 : 7E; + 727 : 00; + 728 : 3C; + 729 : 20; + 730 : 20; + 731 : 20; + 732 : 20; + 733 : 20; + 734 : 3C; + 735 : 00; + 736 : 0C; + 737 : 10; + 738 : 10; + 739 : 3C; + 740 : 10; + 741 : 70; + 742 : 6E; + 743 : 00; + 744 : 3C; + 745 : 04; + 746 : 04; + 747 : 04; + 748 : 04; + 749 : 04; + 750 : 3C; + 751 : 00; + 752 : 00; + 753 : 08; + 754 : 1C; + 755 : 2A; + 756 : 08; + 757 : 08; + 758 : 08; + 759 : 08; + 760 : 00; + 761 : 00; + 762 : 10; + 763 : 20; + 764 : 7F; + 765 : 20; + 766 : 10; + 767 : 00; + 768 : 1C; + 769 : 22; + 770 : 4A; + 771 : 56; + 772 : 4C; + 773 : 20; + 774 : 1E; + 775 : 00; + 776 : 00; + 777 : 00; + 778 : 38; + 779 : 04; + 780 : 3C; + 781 : 44; + 782 : 3A; + 783 : 00; + 784 : 40; + 785 : 40; + 786 : 5C; + 787 : 62; + 788 : 42; + 789 : 62; + 790 : 5C; + 791 : 00; + 792 : 00; + 793 : 00; + 794 : 3C; + 795 : 42; + 796 : 40; + 797 : 42; + 798 : 3C; + 799 : 00; + 800 : 02; + 801 : 02; + 802 : 3A; + 803 : 46; + 804 : 42; + 805 : 46; + 806 : 3A; + 807 : 00; + 808 : 00; + 809 : 00; + 810 : 3C; + 811 : 42; + 812 : 7E; + 813 : 40; + 814 : 3C; + 815 : 00; + 816 : 0C; + 817 : 12; + 818 : 10; + 819 : 7C; + 820 : 10; + 821 : 10; + 822 : 10; + 823 : 00; + 824 : 00; + 825 : 00; + 826 : 3A; + 827 : 46; + 828 : 46; + 829 : 3A; + 830 : 02; + 831 : 3C; + 832 : 40; + 833 : 40; + 834 : 5C; + 835 : 62; + 836 : 42; + 837 : 42; + 838 : 42; + 839 : 00; + 840 : 08; + 841 : 00; + 842 : 18; + 843 : 08; + 844 : 08; + 845 : 08; + 846 : 1C; + 847 : 00; + 848 : 04; + 849 : 00; + 850 : 0C; + 851 : 04; + 852 : 04; + 853 : 04; + 854 : 44; + 855 : 38; + 856 : 40; + 857 : 40; + 858 : 44; + 859 : 48; + 860 : 50; + 861 : 68; + 862 : 44; + 863 : 00; + 864 : 18; + 865 : 08; + 866 : 08; + 867 : 08; + 868 : 08; + 869 : 08; + 870 : 1C; + 871 : 00; + 872 : 00; + 873 : 00; + 874 : 76; + 875 : 49; + 876 : 49; + 877 : 49; + 878 : 49; + 879 : 00; + 880 : 00; + 881 : 00; + 882 : 5C; + 883 : 62; + 884 : 42; + 885 : 42; + 886 : 42; + 887 : 00; + 888 : 00; + 889 : 00; + 890 : 3C; + 891 : 42; + 892 : 42; + 893 : 42; + 894 : 3C; + 895 : 00; + 896 : 00; + 897 : 00; + 898 : 5C; + 899 : 62; + 900 : 62; + 901 : 5C; + 902 : 40; + 903 : 40; + 904 : 00; + 905 : 00; + 906 : 3A; + 907 : 46; + 908 : 46; + 909 : 3A; + 910 : 02; + 911 : 02; + 912 : 00; + 913 : 00; + 914 : 5C; + 915 : 62; + 916 : 40; + 917 : 40; + 918 : 40; + 919 : 00; + 920 : 00; + 921 : 00; + 922 : 3E; + 923 : 40; + 924 : 3C; + 925 : 02; + 926 : 7C; + 927 : 00; + 928 : 10; + 929 : 10; + 930 : 7C; + 931 : 10; + 932 : 10; + 933 : 12; + 934 : 0C; + 935 : 00; + 936 : 00; + 937 : 00; + 938 : 42; + 939 : 42; + 940 : 42; + 941 : 46; + 942 : 3A; + 943 : 00; + 944 : 00; + 945 : 00; + 946 : 42; + 947 : 42; + 948 : 42; + 949 : 24; + 950 : 18; + 951 : 00; + 952 : 00; + 953 : 00; + 954 : 41; + 955 : 49; + 956 : 49; + 957 : 49; + 958 : 36; + 959 : 00; + 960 : 00; + 961 : 00; + 962 : 42; + 963 : 24; + 964 : 18; + 965 : 24; + 966 : 42; + 967 : 00; + 968 : 00; + 969 : 00; + 970 : 42; + 971 : 42; + 972 : 46; + 973 : 3A; + 974 : 02; + 975 : 3C; + 976 : 00; + 977 : 00; + 978 : 7E; + 979 : 04; + 980 : 18; + 981 : 20; + 982 : 7E; + 983 : 00; + 984 : 3C; + 985 : 20; + 986 : 20; + 987 : 20; + 988 : 20; + 989 : 20; + 990 : 3C; + 991 : 00; + 992 : 0C; + 993 : 10; + 994 : 10; + 995 : 3C; + 996 : 10; + 997 : 70; + 998 : 6E; + 999 : 00; + 1000 : 3C; + 1001 : 04; + 1002 : 04; + 1003 : 04; + 1004 : 04; + 1005 : 04; + 1006 : 3C; + 1007 : 00; + 1008 : 00; + 1009 : 08; + 1010 : 1C; + 1011 : 2A; + 1012 : 08; + 1013 : 08; + 1014 : 08; + 1015 : 08; + 1016 : 00; + 1017 : 00; + 1018 : 10; + 1019 : 20; + 1020 : 7F; + 1021 : 20; + 1022 : 10; + 1023 : 00; + 1024 : 00; + 1025 : 00; + 1026 : 00; + 1027 : 00; + 1028 : 00; + 1029 : FF; + 1030 : 00; + 1031 : 00; + 1032 : 00; + 1033 : 08; + 1034 : 1C; + 1035 : 3E; + 1036 : 7F; + 1037 : 7F; + 1038 : 1C; + 1039 : 3E; + 1040 : 00; + 1041 : 10; + 1042 : 10; + 1043 : 10; + 1044 : 10; + 1045 : 10; + 1046 : 10; + 1047 : 10; + 1048 : 10; + 1049 : 00; + 1050 : 00; + 1051 : 00; + 1052 : FF; + 1053 : 00; + 1054 : 00; + 1055 : 00; + 1056 : 00; + 1057 : 00; + 1058 : 00; + 1059 : FF; + 1060 : 00; + 1061 : 00; + 1062 : 00; + 1063 : 00; + 1064 : 00; + 1065 : 00; + 1066 : FF; + 1067 : 00; + 1068 : 00; + 1069 : 00; + 1070 : 00; + 1071 : 00; + 1072 : 00; + 1073 : 00; + 1074 : 00; + 1075 : 00; + 1076 : 00; + 1077 : 00; + 1078 : FF; + 1079 : 00; + 1080 : 00; + 1081 : 20; + 1082 : 20; + 1083 : 20; + 1084 : 20; + 1085 : 20; + 1086 : 20; + 1087 : 20; + 1088 : 20; + 1089 : 04; + 1090 : 04; + 1091 : 04; + 1092 : 04; + 1093 : 04; + 1094 : 04; + 1095 : 04; + 1096 : 04; + 1097 : 00; + 1098 : 00; + 1099 : 00; + 1100 : 00; + 1101 : E0; + 1102 : 10; + 1103 : 08; + 1104 : 08; + 1105 : 08; + 1106 : 08; + 1107 : 08; + 1108 : 04; + 1109 : 03; + 1110 : 00; + 1111 : 00; + 1112 : 00; + 1113 : 08; + 1114 : 08; + 1115 : 08; + 1116 : 10; + 1117 : E0; + 1118 : 00; + 1119 : 00; + 1120 : 00; + 1121 : 80; + 1122 : 80; + 1123 : 80; + 1124 : 80; + 1125 : 80; + 1126 : 80; + 1127 : 80; + 1128 : FF; + 1129 : 80; + 1130 : 40; + 1131 : 20; + 1132 : 10; + 1133 : 08; + 1134 : 04; + 1135 : 02; + 1136 : 01; + 1137 : 01; + 1138 : 02; + 1139 : 04; + 1140 : 08; + 1141 : 10; + 1142 : 20; + 1143 : 40; + 1144 : 80; + 1145 : FF; + 1146 : 80; + 1147 : 80; + 1148 : 80; + 1149 : 80; + 1150 : 80; + 1151 : 80; + 1152 : 80; + 1153 : FF; + 1154 : 01; + 1155 : 01; + 1156 : 01; + 1157 : 01; + 1158 : 01; + 1159 : 01; + 1160 : 01; + 1161 : 00; + 1162 : 3C; + 1163 : 7E; + 1164 : 7E; + 1165 : 7E; + 1166 : 7E; + 1167 : 3C; + 1168 : 00; + 1169 : 00; + 1170 : 00; + 1171 : 00; + 1172 : 00; + 1173 : 00; + 1174 : 00; + 1175 : FF; + 1176 : 00; + 1177 : 36; + 1178 : 7F; + 1179 : 7F; + 1180 : 7F; + 1181 : 3E; + 1182 : 1C; + 1183 : 08; + 1184 : 00; + 1185 : 40; + 1186 : 40; + 1187 : 40; + 1188 : 40; + 1189 : 40; + 1190 : 40; + 1191 : 40; + 1192 : 40; + 1193 : 00; + 1194 : 00; + 1195 : 00; + 1196 : 00; + 1197 : 03; + 1198 : 04; + 1199 : 08; + 1200 : 08; + 1201 : 81; + 1202 : 42; + 1203 : 24; + 1204 : 18; + 1205 : 18; + 1206 : 24; + 1207 : 42; + 1208 : 81; + 1209 : 00; + 1210 : 3C; + 1211 : 42; + 1212 : 42; + 1213 : 42; + 1214 : 42; + 1215 : 3C; + 1216 : 00; + 1217 : 08; + 1218 : 1C; + 1219 : 2A; + 1220 : 77; + 1221 : 2A; + 1222 : 08; + 1223 : 08; + 1224 : 00; + 1225 : 02; + 1226 : 02; + 1227 : 02; + 1228 : 02; + 1229 : 02; + 1230 : 02; + 1231 : 02; + 1232 : 02; + 1233 : 08; + 1234 : 1C; + 1235 : 3E; + 1236 : 7F; + 1237 : 3E; + 1238 : 1C; + 1239 : 08; + 1240 : 00; + 1241 : 08; + 1242 : 08; + 1243 : 08; + 1244 : 08; + 1245 : FF; + 1246 : 08; + 1247 : 08; + 1248 : 08; + 1249 : A0; + 1250 : 50; + 1251 : A0; + 1252 : 50; + 1253 : A0; + 1254 : 50; + 1255 : A0; + 1256 : 50; + 1257 : 08; + 1258 : 08; + 1259 : 08; + 1260 : 08; + 1261 : 08; + 1262 : 08; + 1263 : 08; + 1264 : 08; + 1265 : 00; + 1266 : 00; + 1267 : 01; + 1268 : 3E; + 1269 : 54; + 1270 : 14; + 1271 : 14; + 1272 : 00; + 1273 : FF; + 1274 : 7F; + 1275 : 3F; + 1276 : 1F; + 1277 : 0F; + 1278 : 07; + 1279 : 03; + 1280 : 00; + 1281 : 00; + 1282 : 00; + 1283 : 00; + 1284 : 00; + 1285 : 00; + 1286 : 00; + 1287 : 00; + 1288 : 00; + 1289 : 08; + 1290 : 08; + 1291 : 08; + 1292 : 08; + 1293 : 00; + 1294 : 00; + 1295 : 08; + 1296 : 00; + 1297 : 24; + 1298 : 24; + 1299 : 24; + 1300 : 00; + 1301 : 00; + 1302 : 00; + 1303 : 00; + 1304 : 00; + 1305 : 24; + 1306 : 24; + 1307 : 7E; + 1308 : 24; + 1309 : 7E; + 1310 : 24; + 1311 : 24; + 1312 : 00; + 1313 : 08; + 1314 : 1E; + 1315 : 28; + 1316 : 1C; + 1317 : 0A; + 1318 : 3C; + 1319 : 08; + 1320 : 00; + 1321 : 00; + 1322 : 62; + 1323 : 64; + 1324 : 08; + 1325 : 10; + 1326 : 26; + 1327 : 46; + 1328 : 00; + 1329 : 30; + 1330 : 48; + 1331 : 48; + 1332 : 30; + 1333 : 4A; + 1334 : 44; + 1335 : 3A; + 1336 : 00; + 1337 : 04; + 1338 : 08; + 1339 : 10; + 1340 : 00; + 1341 : 00; + 1342 : 00; + 1343 : 00; + 1344 : 00; + 1345 : 04; + 1346 : 08; + 1347 : 10; + 1348 : 10; + 1349 : 10; + 1350 : 08; + 1351 : 04; + 1352 : 00; + 1353 : 20; + 1354 : 10; + 1355 : 08; + 1356 : 08; + 1357 : 08; + 1358 : 10; + 1359 : 20; + 1360 : 00; + 1361 : 08; + 1362 : 2A; + 1363 : 1C; + 1364 : 3E; + 1365 : 1C; + 1366 : 2A; + 1367 : 08; + 1368 : 00; + 1369 : 00; + 1370 : 08; + 1371 : 08; + 1372 : 3E; + 1373 : 08; + 1374 : 08; + 1375 : 00; + 1376 : 00; + 1377 : 00; + 1378 : 00; + 1379 : 00; + 1380 : 00; + 1381 : 00; + 1382 : 08; + 1383 : 08; + 1384 : 10; + 1385 : 00; + 1386 : 00; + 1387 : 00; + 1388 : 7E; + 1389 : 00; + 1390 : 00; + 1391 : 00; + 1392 : 00; + 1393 : 00; + 1394 : 00; + 1395 : 00; + 1396 : 00; + 1397 : 00; + 1398 : 18; + 1399 : 18; + 1400 : 00; + 1401 : 00; + 1402 : 02; + 1403 : 04; + 1404 : 08; + 1405 : 10; + 1406 : 20; + 1407 : 40; + 1408 : 00; + 1409 : 3C; + 1410 : 42; + 1411 : 46; + 1412 : 5A; + 1413 : 62; + 1414 : 42; + 1415 : 3C; + 1416 : 00; + 1417 : 08; + 1418 : 18; + 1419 : 28; + 1420 : 08; + 1421 : 08; + 1422 : 08; + 1423 : 3E; + 1424 : 00; + 1425 : 3C; + 1426 : 42; + 1427 : 02; + 1428 : 0C; + 1429 : 30; + 1430 : 40; + 1431 : 7E; + 1432 : 00; + 1433 : 3C; + 1434 : 42; + 1435 : 02; + 1436 : 1C; + 1437 : 02; + 1438 : 42; + 1439 : 3C; + 1440 : 00; + 1441 : 04; + 1442 : 0C; + 1443 : 14; + 1444 : 24; + 1445 : 7E; + 1446 : 04; + 1447 : 04; + 1448 : 00; + 1449 : 7E; + 1450 : 40; + 1451 : 78; + 1452 : 04; + 1453 : 02; + 1454 : 44; + 1455 : 38; + 1456 : 00; + 1457 : 1C; + 1458 : 20; + 1459 : 40; + 1460 : 7C; + 1461 : 42; + 1462 : 42; + 1463 : 3C; + 1464 : 00; + 1465 : 7E; + 1466 : 42; + 1467 : 04; + 1468 : 08; + 1469 : 10; + 1470 : 10; + 1471 : 10; + 1472 : 00; + 1473 : 3C; + 1474 : 42; + 1475 : 42; + 1476 : 3C; + 1477 : 42; + 1478 : 42; + 1479 : 3C; + 1480 : 00; + 1481 : 3C; + 1482 : 42; + 1483 : 42; + 1484 : 3E; + 1485 : 02; + 1486 : 04; + 1487 : 38; + 1488 : 00; + 1489 : 00; + 1490 : 00; + 1491 : 08; + 1492 : 00; + 1493 : 00; + 1494 : 08; + 1495 : 00; + 1496 : 00; + 1497 : 00; + 1498 : 00; + 1499 : 08; + 1500 : 00; + 1501 : 00; + 1502 : 08; + 1503 : 08; + 1504 : 10; + 1505 : 0E; + 1506 : 18; + 1507 : 30; + 1508 : 60; + 1509 : 30; + 1510 : 18; + 1511 : 0E; + 1512 : 00; + 1513 : 00; + 1514 : 00; + 1515 : 7E; + 1516 : 00; + 1517 : 7E; + 1518 : 00; + 1519 : 00; + 1520 : 00; + 1521 : 70; + 1522 : 18; + 1523 : 0C; + 1524 : 06; + 1525 : 0C; + 1526 : 18; + 1527 : 70; + 1528 : 00; + 1529 : 3C; + 1530 : 42; + 1531 : 02; + 1532 : 0C; + 1533 : 10; + 1534 : 00; + 1535 : 10; + 1536 : 1C; + 1537 : 22; + 1538 : 4A; + 1539 : 56; + 1540 : 4C; + 1541 : 20; + 1542 : 1E; + 1543 : 00; + 1544 : 18; + 1545 : 24; + 1546 : 42; + 1547 : 7E; + 1548 : 42; + 1549 : 42; + 1550 : 42; + 1551 : 00; + 1552 : 7C; + 1553 : 22; + 1554 : 22; + 1555 : 3C; + 1556 : 22; + 1557 : 22; + 1558 : 7C; + 1559 : 00; + 1560 : 1C; + 1561 : 22; + 1562 : 40; + 1563 : 40; + 1564 : 40; + 1565 : 22; + 1566 : 1C; + 1567 : 00; + 1568 : 78; + 1569 : 24; + 1570 : 22; + 1571 : 22; + 1572 : 22; + 1573 : 24; + 1574 : 78; + 1575 : 00; + 1576 : 7E; + 1577 : 40; + 1578 : 40; + 1579 : 78; + 1580 : 40; + 1581 : 40; + 1582 : 7E; + 1583 : 00; + 1584 : 7E; + 1585 : 40; + 1586 : 40; + 1587 : 78; + 1588 : 40; + 1589 : 40; + 1590 : 40; + 1591 : 00; + 1592 : 1C; + 1593 : 22; + 1594 : 40; + 1595 : 4E; + 1596 : 42; + 1597 : 22; + 1598 : 1C; + 1599 : 00; + 1600 : 42; + 1601 : 42; + 1602 : 42; + 1603 : 7E; + 1604 : 42; + 1605 : 42; + 1606 : 42; + 1607 : 00; + 1608 : 1C; + 1609 : 08; + 1610 : 08; + 1611 : 08; + 1612 : 08; + 1613 : 08; + 1614 : 1C; + 1615 : 00; + 1616 : 0E; + 1617 : 04; + 1618 : 04; + 1619 : 04; + 1620 : 04; + 1621 : 44; + 1622 : 38; + 1623 : 00; + 1624 : 42; + 1625 : 44; + 1626 : 48; + 1627 : 70; + 1628 : 48; + 1629 : 44; + 1630 : 42; + 1631 : 00; + 1632 : 40; + 1633 : 40; + 1634 : 40; + 1635 : 40; + 1636 : 40; + 1637 : 40; + 1638 : 7E; + 1639 : 00; + 1640 : 42; + 1641 : 66; + 1642 : 5A; + 1643 : 5A; + 1644 : 42; + 1645 : 42; + 1646 : 42; + 1647 : 00; + 1648 : 42; + 1649 : 62; + 1650 : 52; + 1651 : 4A; + 1652 : 46; + 1653 : 42; + 1654 : 42; + 1655 : 00; + 1656 : 18; + 1657 : 24; + 1658 : 42; + 1659 : 42; + 1660 : 42; + 1661 : 24; + 1662 : 18; + 1663 : 00; + 1664 : 7C; + 1665 : 42; + 1666 : 42; + 1667 : 7C; + 1668 : 40; + 1669 : 40; + 1670 : 40; + 1671 : 00; + 1672 : 18; + 1673 : 24; + 1674 : 42; + 1675 : 42; + 1676 : 4A; + 1677 : 24; + 1678 : 1A; + 1679 : 00; + 1680 : 7C; + 1681 : 42; + 1682 : 42; + 1683 : 7C; + 1684 : 48; + 1685 : 44; + 1686 : 42; + 1687 : 00; + 1688 : 3C; + 1689 : 42; + 1690 : 40; + 1691 : 3C; + 1692 : 02; + 1693 : 42; + 1694 : 3C; + 1695 : 00; + 1696 : 3E; + 1697 : 08; + 1698 : 08; + 1699 : 08; + 1700 : 08; + 1701 : 08; + 1702 : 08; + 1703 : 00; + 1704 : 42; + 1705 : 42; + 1706 : 42; + 1707 : 42; + 1708 : 42; + 1709 : 42; + 1710 : 3C; + 1711 : 00; + 1712 : 42; + 1713 : 42; + 1714 : 42; + 1715 : 24; + 1716 : 24; + 1717 : 18; + 1718 : 18; + 1719 : 00; + 1720 : 42; + 1721 : 42; + 1722 : 42; + 1723 : 5A; + 1724 : 5A; + 1725 : 66; + 1726 : 42; + 1727 : 00; + 1728 : 42; + 1729 : 42; + 1730 : 24; + 1731 : 18; + 1732 : 24; + 1733 : 42; + 1734 : 42; + 1735 : 00; + 1736 : 22; + 1737 : 22; + 1738 : 22; + 1739 : 1C; + 1740 : 08; + 1741 : 08; + 1742 : 08; + 1743 : 00; + 1744 : 7E; + 1745 : 02; + 1746 : 04; + 1747 : 18; + 1748 : 20; + 1749 : 40; + 1750 : 7E; + 1751 : 00; + 1752 : 3C; + 1753 : 20; + 1754 : 20; + 1755 : 20; + 1756 : 20; + 1757 : 20; + 1758 : 3C; + 1759 : 00; + 1760 : 0C; + 1761 : 10; + 1762 : 10; + 1763 : 3C; + 1764 : 10; + 1765 : 70; + 1766 : 6E; + 1767 : 00; + 1768 : 3C; + 1769 : 04; + 1770 : 04; + 1771 : 04; + 1772 : 04; + 1773 : 04; + 1774 : 3C; + 1775 : 00; + 1776 : 00; + 1777 : 08; + 1778 : 1C; + 1779 : 2A; + 1780 : 08; + 1781 : 08; + 1782 : 08; + 1783 : 08; + 1784 : 00; + 1785 : 00; + 1786 : 10; + 1787 : 20; + 1788 : 7F; + 1789 : 20; + 1790 : 10; + 1791 : 00; + 1792 : 1C; + 1793 : 22; + 1794 : 4A; + 1795 : 56; + 1796 : 4C; + 1797 : 20; + 1798 : 1E; + 1799 : 00; + 1800 : 00; + 1801 : 00; + 1802 : 38; + 1803 : 04; + 1804 : 3C; + 1805 : 44; + 1806 : 3A; + 1807 : 00; + 1808 : 40; + 1809 : 40; + 1810 : 5C; + 1811 : 62; + 1812 : 42; + 1813 : 62; + 1814 : 5C; + 1815 : 00; + 1816 : 00; + 1817 : 00; + 1818 : 3C; + 1819 : 42; + 1820 : 40; + 1821 : 42; + 1822 : 3C; + 1823 : 00; + 1824 : 02; + 1825 : 02; + 1826 : 3A; + 1827 : 46; + 1828 : 42; + 1829 : 46; + 1830 : 3A; + 1831 : 00; + 1832 : 00; + 1833 : 00; + 1834 : 3C; + 1835 : 42; + 1836 : 7E; + 1837 : 40; + 1838 : 3C; + 1839 : 00; + 1840 : 0C; + 1841 : 12; + 1842 : 10; + 1843 : 7C; + 1844 : 10; + 1845 : 10; + 1846 : 10; + 1847 : 00; + 1848 : 00; + 1849 : 00; + 1850 : 3A; + 1851 : 46; + 1852 : 46; + 1853 : 3A; + 1854 : 02; + 1855 : 3C; + 1856 : 40; + 1857 : 40; + 1858 : 5C; + 1859 : 62; + 1860 : 42; + 1861 : 42; + 1862 : 42; + 1863 : 00; + 1864 : 08; + 1865 : 00; + 1866 : 18; + 1867 : 08; + 1868 : 08; + 1869 : 08; + 1870 : 1C; + 1871 : 00; + 1872 : 04; + 1873 : 00; + 1874 : 0C; + 1875 : 04; + 1876 : 04; + 1877 : 04; + 1878 : 44; + 1879 : 38; + 1880 : 40; + 1881 : 40; + 1882 : 44; + 1883 : 48; + 1884 : 50; + 1885 : 68; + 1886 : 44; + 1887 : 00; + 1888 : 18; + 1889 : 08; + 1890 : 08; + 1891 : 08; + 1892 : 08; + 1893 : 08; + 1894 : 1C; + 1895 : 00; + 1896 : 00; + 1897 : 00; + 1898 : 76; + 1899 : 49; + 1900 : 49; + 1901 : 49; + 1902 : 49; + 1903 : 00; + 1904 : 00; + 1905 : 00; + 1906 : 5C; + 1907 : 62; + 1908 : 42; + 1909 : 42; + 1910 : 42; + 1911 : 00; + 1912 : 00; + 1913 : 00; + 1914 : 3C; + 1915 : 42; + 1916 : 42; + 1917 : 42; + 1918 : 3C; + 1919 : 00; + 1920 : 00; + 1921 : 00; + 1922 : 5C; + 1923 : 62; + 1924 : 62; + 1925 : 5C; + 1926 : 40; + 1927 : 40; + 1928 : 00; + 1929 : 00; + 1930 : 3A; + 1931 : 46; + 1932 : 46; + 1933 : 3A; + 1934 : 02; + 1935 : 02; + 1936 : 00; + 1937 : 00; + 1938 : 5C; + 1939 : 62; + 1940 : 40; + 1941 : 40; + 1942 : 40; + 1943 : 00; + 1944 : 00; + 1945 : 00; + 1946 : 3E; + 1947 : 40; + 1948 : 3C; + 1949 : 02; + 1950 : 7C; + 1951 : 00; + 1952 : 10; + 1953 : 10; + 1954 : 7C; + 1955 : 10; + 1956 : 10; + 1957 : 12; + 1958 : 0C; + 1959 : 00; + 1960 : 00; + 1961 : 00; + 1962 : 42; + 1963 : 42; + 1964 : 42; + 1965 : 46; + 1966 : 3A; + 1967 : 00; + 1968 : 00; + 1969 : 00; + 1970 : 42; + 1971 : 42; + 1972 : 42; + 1973 : 24; + 1974 : 18; + 1975 : 00; + 1976 : 00; + 1977 : 00; + 1978 : 41; + 1979 : 49; + 1980 : 49; + 1981 : 49; + 1982 : 36; + 1983 : 00; + 1984 : 00; + 1985 : 00; + 1986 : 42; + 1987 : 24; + 1988 : 18; + 1989 : 24; + 1990 : 42; + 1991 : 00; + 1992 : 00; + 1993 : 00; + 1994 : 42; + 1995 : 42; + 1996 : 46; + 1997 : 3A; + 1998 : 02; + 1999 : 3C; + 2000 : 00; + 2001 : 00; + 2002 : 7E; + 2003 : 04; + 2004 : 18; + 2005 : 20; + 2006 : 7E; + 2007 : 00; + 2008 : 3C; + 2009 : 20; + 2010 : 20; + 2011 : 20; + 2012 : 20; + 2013 : 20; + 2014 : 3C; + 2015 : 00; + 2016 : 0C; + 2017 : 10; + 2018 : 10; + 2019 : 3C; + 2020 : 10; + 2021 : 70; + 2022 : 6E; + 2023 : 00; + 2024 : 3C; + 2025 : 04; + 2026 : 04; + 2027 : 04; + 2028 : 04; + 2029 : 04; + 2030 : 3C; + 2031 : 00; + 2032 : 00; + 2033 : 08; + 2034 : 1C; + 2035 : 2A; + 2036 : 08; + 2037 : 08; + 2038 : 08; + 2039 : 08; + 2040 : 00; + 2041 : 00; + 2042 : 10; + 2043 : 20; + 2044 : 7F; + 2045 : 20; + 2046 : 10; + 2047 : 00; +END; Index: System09_Terasic_DE1/system09.qpf =================================================================== --- System09_Terasic_DE1/system09.qpf (nonexistent) +++ System09_Terasic_DE1/system09.qpf (revision 105) @@ -0,0 +1,23 @@ +# Copyright (C) 1991-2005 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. + + + +QUARTUS_VERSION = "5.0" +DATE = "19:21:54 August 25, 2005" + + +# Revisions + +PROJECT_REVISION = "system09" Index: System09_Terasic_DE1/wrappers.vhd =================================================================== --- System09_Terasic_DE1/wrappers.vhd (nonexistent) +++ System09_Terasic_DE1/wrappers.vhd (revision 105) @@ -0,0 +1,130 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity mon_rom is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end mon_rom; + +architecture SYN of mon_rom is +begin + + rom_inst : entity work.sprom + generic map + ( + init_file => "./roms/kbug_rom.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + q => rdata + ); + +end SYN; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity char_rom is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end char_rom; + +architecture SYN of char_rom is + signal we : std_logic; +begin + + we <= cs and not rw; + + rom_inst : entity work.spram + generic map + ( + init_file => "./roms/char_rom.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + data => wdata, + wren => we, + q => rdata + ); + +end SYN; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity ram_2k is + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end ram_2k; + +architecture SYN of ram_2k is + signal we : std_logic; +begin + we <= cs and not rw; + + ram_inst : entity work.spram + generic map + ( + init_file => "./roms/ram2k.mif", + numwords_a => 2048, + widthad_a => 11 + ) + port map + ( + clock => clk, + address => addr, + data => wdata, + wren => we, + q => rdata + ); + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity BUFG is + port + ( + i : in std_logic; + o : out std_logic + ); +end BUFG; + +architecture SYN of BUFG is +begin + o <= i; +end SYN; Index: System09_Terasic_DE1/ps2_keyboard.vhd =================================================================== --- System09_Terasic_DE1/ps2_keyboard.vhd (nonexistent) +++ System09_Terasic_DE1/ps2_keyboard.vhd (revision 105) @@ -0,0 +1,850 @@ +--------------------------------------------------------------------------------------- +-- +-- Author: John Clayton +-- Date : April 30, 2001 +-- Update: 4/30/01 copied this file from lcd_2.v (pared down). +-- Update: 5/24/01 changed the first module from "ps2_keyboard_receiver" +-- to "ps2_keyboard_interface" +-- Update: 5/29/01 Added input synchronizing flip-flops. Changed state +-- encoding (m1) for good operation after part config. +-- Update: 5/31/01 Added low drive strength and slow transitions to ps2_clk +-- and ps2_data in the constraints file. Added the signal +-- "tx_shifting_done" as distinguished from "rx_shifting_done." +-- Debugged the transmitter portion in the lab. +-- Update: 6/01/01 Added horizontal tab to the ascii output. +-- Update: 6/01/01 Added parameter TRAP_SHIFT_KEYS. +-- Update: 6/05/01 Debugged the "debounce" timer functionality. +-- Used 60usec timer as a "watchdog" timeout during +-- receive from the keyboard. This means that a keyboard +-- can now be "hot plugged" into the interface, without +-- messing up the bit_count, since the bit_count is reset +-- to zero during periods of inactivity anyway. This was +-- difficult to debug. I ended up using the logic analyzer, +-- and had to scratch my head quite a bit. +-- Update: 6/06/01 Removed extra comments before the input synchronizing +-- flip-flops. Used the correct parameter to size the +-- 5usec_timer_count. Changed the name of this file from +-- ps2.v to ps2_keyboard.v +-- Update: 6/06/01 Removed "&& q[7:0]" in output_strobe logic. Removed extra +-- commented out "else" condition in the shift register and +-- bit counter. +-- Update: 6/07/01 Changed default values for 60usec timer parameters so that +-- they correspond to 60usec for a 49.152MHz clock. +-- +-- Converted to VHDL: 10 February 2004 - John Kent +-- 11 Sept 04 added ctrl key +-- changed undefined key codes to x"ff" +-- reversed clock polarity +-- +-- 18th Oct 04 added ctrl keys to ASCII ROM +-- added CAPS Lock toggle. +-- +-- Description +--------------------------------------------------------------------------------------- +-- This is a state-machine driven serial-to-parallel and parallel-to-serial +-- interface to the ps2 style keyboard interface. The details of the operation +-- of the keyboard interface were obtained from the following website: +-- +-- http:--www.beyondlogic.org/keyboard/keybrd.htm +-- +-- Some aspects of the keyboard interface are not implemented (e.g, parity +-- checking for the receive side, and recognition of the various commands +-- which the keyboard sends out, such as "power on selt test passed," "Error" +-- and "Resend.") However, if the user wishes to recognize these reply +-- messages, the scan code output can always be used to extend functionality +-- as desired. +-- +-- Note that the "Extended" (0xE0) and "Released" (0xF0) codes are recognized. +-- The rx interface provides separate indicator flags for these two conditions +-- with every valid character scan code which it provides. The shift keys are +-- also trapped by the interface, in order to provide correct uppercase ASCII +-- characters at the ascii output, although the scan codes for the shift keys +-- are still provided at the scan code output. So, the left/right ALT keys +-- can be differentiated by the presence of the rx_entended signal, while the +-- left/right shift keys are differentiable by the different scan codes +-- received. +-- +-- The interface to the ps2 keyboard uses ps2_clk clock rates of +-- 30-40 kHz, dependent upon the keyboard itself. The rate at which the state +-- machine runs should be at least twice the rate of the ps2_clk, so that the +-- states can accurately follow the clock signal itself. Four times +-- oversampling is better. Say 200kHz at least. The upper limit for clocking +-- the state machine will undoubtedly be determined by delays in the logic +-- which decodes the scan codes into ASCII equivalents. The maximum speed +-- will be most likely many megahertz, depending upon target technology. +-- In order to run the state machine extremely fast, synchronizing flip-flops +-- have been added to the ps2_clk and ps2_data inputs of the state machine. +-- This avoids poor performance related to slow transitions of the inputs. +-- +-- Because this is a bi-directional interface, while reading from the keyboard +-- the ps2_clk and ps2_data lines are used as inputs. While writing to the +-- keyboard, however (which may be done at any time. If writing interrupts a +-- read from the keyboard, the keyboard will buffer up its data, and send +-- it later) both the ps2_clk and ps2_data lines are occasionally pulled low, +-- and pullup resistors are used to bring the lines high again, by setting +-- the drivers to high impedance state. +-- +-- The tx interface, for writing to the keyboard, does not provide any special +-- pre-processing. It simply transmits the 8-bit command value to the +-- keyboard. +-- +-- Pullups MUST BE USED on the ps2_clk and ps2_data lines for this design, +-- whether they be internal to an FPGA I/O pad, or externally placed. +-- If internal pullups are used, they may be fairly weak, causing bounces +-- due to crosstalk, etc. There is a "debounce timer" implemented in order +-- to eliminate erroneous state transitions which would occur based on bounce. +-- +-- Parameters are provided in order to configure and appropriately size the +-- counter of a 60 microsecond timer used in the transmitter, depending on +-- the clock frequency used. The 60 microsecond period is guaranteed to be +-- more than one period of the ps2_clk_s signal. +-- +-- Also, a smaller 5 microsecond timer has been included for "debounce". +-- This is used because, with internal pullups on the ps2_clk and ps2_data +-- lines, there is some bouncing around which occurs +-- +-- A parameter TRAP_SHIFT_KEYS allows the user to eliminate shift keypresses +-- from producing scan codes (along with their "undefined" ASCII equivalents) +-- at the output of the interface. If TRAP_SHIFT_KEYS is non-zero, the shift +-- key status will only be reported by rx_shift_key_on. No ascii or scan +-- codes will be reported for the shift keys. This is useful for those who +-- wish to use the ASCII data stream, and who don't want to have to "filter +-- out" the shift key codes. +-- +--------------------------------------------------------------------------------------- + +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 ps2_keyboard_interface is + port( + clk : in std_logic; + reset : in std_logic; + ps2_clk : in std_logic; + ps2_data : in std_logic; + rx_extended : out std_logic; + rx_released : out std_logic; + rx_shift_key_on : out std_logic; +-- rx_scan_code : out std_logic_vector(7 downto 0); + rx_ascii : out std_logic_vector(7 downto 0); + rx_data_ready : out std_logic; -- rx_read_o + rx_read : in std_logic; -- rx_read_ack_i + tx_data : in std_logic_vector(7 downto 0); + tx_write : in std_logic; + tx_write_ack : out std_logic; + tx_error_no_keyboard_ack : out std_logic + ); +end ps2_keyboard_interface; + +------------------------------------------------------------------------------- +-- Architecture for ps2 keyboard interface +------------------------------------------------------------------------------- +architecture my_ps2_keyboard of ps2_keyboard_interface is + ----------------------------------------------------------------------------- + + +constant TOTAL_BITS : integer := 11; +constant EXTEND_CODE : integer := 16#E0#; +constant RELEASE_CODE : integer := 16#F0#; +constant LEFT_SHIFT : integer := 16#12#; +constant RIGHT_SHIFT : integer := 16#59#; +constant CTRL_CODE : integer := 16#14#; +constant CAPS_CODE : integer := 16#58#; + + +-- constants + +-- The timer value can be up to (2^bits) inclusive. +-- Values for 49.152 MHz clock +--constant TIMER_60USEC_VALUE_PP : integer := 2950; -- Number of sys_clks for 60usec. +--constant TIMER_60USEC_BITS_PP : integer := 12; -- Number of bits needed for timer +--constant TIMER_5USEC_VALUE_PP : integer := 186; -- Number of sys_clks for debounce +--constant TIMER_5USEC_BITS_PP : integer := 8; -- Number of bits needed for timer + +-- Values for 12.5 MHz Clock +constant TIMER_60USEC_VALUE_PP : integer := 750; -- Number of sys_clks for 60usec. +constant TIMER_60USEC_BITS_PP : integer := 10; -- Number of bits needed for timer +constant TIMER_5USEC_VALUE_PP : integer := 62; -- Number of sys_clks for debounce +constant TIMER_5USEC_BITS_PP : integer := 6; -- Number of bits needed for timer + +constant TRAP_SHIFT_KEYS_PP : integer := 1; -- Default: No shift key trap. + +-- State encodings, provided as constants +-- for flexibility to the one instantiating the module. +-- In general, the default values need not be changed. + +-- State "m1_rx_clk_l" has been chosen on purpose. Since the input +-- synchronizing flip-flops initially contain zero, it takes one clk +-- for them to update to reflect the actual (idle = high) status of +-- the I/O lines from the keyboard. Therefore, choosing 0 for m1_rx_clk_l +-- allows the state machine to transition to m1_rx_clk_h when the true +-- values of the input signals become present at the outputs of the +-- synchronizing flip-flops. This initial transition is harmless, and it +-- eliminates the need for a "reset" pulse before the interface can operate. + +type m1_type is ( m1_rx_clk_h, m1_rx_clk_l, + m1_tx_wait_clk_h, m1_tx_force_clk_l, + m1_tx_clk_h, m1_tx_clk_l, + m1_tx_wait_keyboard_ack, m1_tx_done_recovery, + m1_tx_error_no_keyboard_ack, m1_tx_rising_edge_marker, + m1_tx_first_wait_clk_h, m1_tx_first_wait_clk_l, m1_tx_reset_timer, + m1_rx_falling_edge_marker, m1_rx_rising_edge_marker ); + +-- Internal signal declarations +signal timer_60usec_done : std_logic; +signal timer_5usec_done : std_logic; +signal extended : std_logic; +signal released : std_logic; +signal shift_key_on : std_logic; +signal ctrl_key_on : std_logic; +signal caps_key_on : std_logic; + + -- NOTE: These two signals used to be one. They + -- were split into two signals because of + -- shift key trapping. With shift key + -- trapping, no event is generated externally, + -- but the "hold" data must still be cleared + -- anyway regardless, in preparation for the + -- next scan codes. +signal rx_output_event : std_logic; -- Used only to clear: hold_released, hold_extended +signal rx_output_strobe : std_logic; -- Used to produce the actual output. + +signal tx_parity_bit : std_logic; +signal rx_shifting_done : std_logic; +signal tx_shifting_done : std_logic; +signal shift_key_plus_code: std_logic_vector(8 downto 0); + +signal q : std_logic_vector(TOTAL_BITS-1 downto 0); +signal m1_state : m1_type; +signal m1_next_state : m1_type; +signal bit_count : std_logic_vector(3 downto 0); +signal enable_timer_60usec: std_logic; +signal enable_timer_5usec : std_logic; +signal timer_60usec_count : std_logic_vector(TIMER_60USEC_BITS_PP-1 downto 0); +signal timer_5usec_count : std_logic_vector(TIMER_5USEC_BITS_PP-1 downto 0); +signal ascii : std_logic_vector(7 downto 0); -- "REG" type only because a case statement is used. +signal left_shift_key : std_logic; +signal right_shift_key : std_logic; +signal hold_extended : std_logic; -- Holds prior value, cleared at rx_output_strobe +signal hold_released : std_logic; -- Holds prior value, cleared at rx_output_strobe +signal ps2_clk_s : std_logic; -- Synchronous version of this input +signal ps2_data_s : std_logic; -- Synchronous version of this input +signal ps2_clk_hi_z : std_logic; -- Without keyboard, high Z equals 1 due to pullups. +signal ps2_data_hi_z : std_logic; -- Without keyboard, high Z equals 1 due to pullups. +signal tx_write_ack_o : std_logic; + +-- +-- key lookup table +-- +component key_slice + Port ( + addr : in std_logic_vector (8 downto 0); + data : out std_logic_vector (7 downto 0) + ); +end component; + +--component key_b4 +-- Port ( +-- clk : in std_logic; +-- rst : in std_logic; +-- cs : in std_logic; +-- rw : in std_logic; +-- addr : in std_logic_vector (8 downto 0); +-- rdata : out std_logic_vector (7 downto 0); +-- wdata : in std_logic_vector (7 downto 0) +-- ); +--end component; + +begin + +my_key_map : key_slice + Port map ( + addr => shift_key_plus_code, + data => ascii + ); + +--my_key_map : key_b4 +-- Port map ( +-- clk => clk, +-- rst => reset, +-- cs => '1', +-- rw => '1', +-- addr => shift_key_plus_code, +-- rdata => ascii, +-- wdata => "00000000" +-- ); + +---------------------------------------------------------------------------- +-- Module code +-- assign ps2_clk = ps2_clk_hi_z?1'bZ:1'b0; +-- assign ps2_data = ps2_data_hi_z?1'bZ:1'b0; +-- +ps2_direction : process( ps2_clk_hi_z, ps2_data_hi_z ) +begin + if( ps2_clk_hi_z = '1' ) then + --ps2_clk <= 'Z'; + else + --ps2_clk <= '0'; + end if; + if( ps2_data_hi_z = '1' ) then + --ps2_data <= 'Z'; + else + --ps2_data <= '0'; + end if; +end process; + +-- Input "synchronizing" logic -- synchronizes the inputs to the state +-- machine clock, thus avoiding errors related to +-- spurious state machine transitions. +ps2_synch : process(clk, ps2_clk, ps2_data) +begin + if clk'event and clk='0' then + ps2_clk_s <= ps2_clk; + ps2_data_s <= ps2_data; + end if; +end process; + +-- State register +m1_state_register : process( clk, reset, m1_state ) +begin + if clk'event and clk='0' then + if (reset = '1') then + m1_state <= m1_rx_clk_h; + else + m1_state <= m1_next_state; + end if; + end if; +end process; + +m1_state_logic : process( m1_state, q, + tx_shifting_done, tx_write, + ps2_clk_s, ps2_data_s, + timer_60usec_done, timer_5usec_done ) +begin + -- Output signals default to this value, unless changed in a state condition. + ps2_clk_hi_z <= '1'; + ps2_data_hi_z <= '1'; + tx_error_no_keyboard_ack <= '0'; + enable_timer_60usec <= '0'; + enable_timer_5usec <= '0'; + + case (m1_state) is + when m1_rx_clk_h => + enable_timer_60usec <= '1'; + if (tx_write = '1') then + m1_next_state <= m1_tx_reset_timer; + elsif (ps2_clk_s = '0') then + m1_next_state <= m1_rx_falling_edge_marker; + else + m1_next_state <= m1_rx_clk_h; + end if; + + when m1_rx_falling_edge_marker => + enable_timer_60usec <= '0'; + m1_next_state <= m1_rx_clk_l; + + when m1_rx_clk_l => + enable_timer_60usec <= '1'; + if (tx_write = '1') then + m1_next_state <= m1_tx_reset_timer; + elsif (ps2_clk_s = '1') then + m1_next_state <= m1_rx_rising_edge_marker; + else + m1_next_state <= m1_rx_clk_l; + end if; + + when m1_rx_rising_edge_marker => + enable_timer_60usec <= '0'; + m1_next_state <= m1_rx_clk_h; + + when m1_tx_reset_timer => + enable_timer_60usec <= '0'; + m1_next_state <= m1_tx_force_clk_l; + + when m1_tx_force_clk_l => + enable_timer_60usec <= '1'; + ps2_clk_hi_z <= '0'; -- Force the ps2_clk line low. + if (timer_60usec_done = '1') then + m1_next_state <= m1_tx_first_wait_clk_h; + else + m1_next_state <= m1_tx_force_clk_l; + end if; + + when m1_tx_first_wait_clk_h => + enable_timer_5usec <= '1'; + ps2_data_hi_z <= '0'; -- Start bit. + if (ps2_clk_s = '0') and (timer_5usec_done = '1') then + m1_next_state <= m1_tx_clk_l; + else + m1_next_state <= m1_tx_first_wait_clk_h; + end if; + + -- This state must be included because the device might possibly + -- delay for up to 10 milliseconds before beginning its clock pulses. + -- During that waiting time, we cannot drive the data (q[0]) because it + -- is possibly 1, which would cause the keyboard to abort its receive + -- and the expected clocks would then never be generated. + when m1_tx_first_wait_clk_l => + ps2_data_hi_z <= '0'; + if (ps2_clk_s = '0') then + m1_next_state <= m1_tx_clk_l; + else + m1_next_state <= m1_tx_first_wait_clk_l; + end if; + + when m1_tx_wait_clk_h => + enable_timer_5usec <= '1'; + ps2_data_hi_z <= q(0); + if (ps2_clk_s = '1') and (timer_5usec_done = '1') then + m1_next_state <= m1_tx_rising_edge_marker; + else + m1_next_state <= m1_tx_wait_clk_h; + end if; + + when m1_tx_rising_edge_marker => + ps2_data_hi_z <= q(0); + m1_next_state <= m1_tx_clk_h; + + when m1_tx_clk_h => + ps2_data_hi_z <= q(0); + if (tx_shifting_done = '1') then + m1_next_state <= m1_tx_wait_keyboard_ack; + elsif (ps2_clk_s = '0') then + m1_next_state <= m1_tx_clk_l; + else + m1_next_state <= m1_tx_clk_h; + end if; + + when m1_tx_clk_l => + ps2_data_hi_z <= q(0); + if (ps2_clk_s = '1') then + m1_next_state <= m1_tx_wait_clk_h; + else + m1_next_state <= m1_tx_clk_l; + end if; + + when m1_tx_wait_keyboard_ack => + if (ps2_clk_s = '0') and (ps2_data_s = '1') then + m1_next_state <= m1_tx_error_no_keyboard_ack; + elsif (ps2_clk_s = '0') and (ps2_data_s = '0') then + m1_next_state <= m1_tx_done_recovery; + else + m1_next_state <= m1_tx_wait_keyboard_ack; + end if; + + when m1_tx_done_recovery => + if (ps2_clk_s = '1') and (ps2_data_s = '1') then + m1_next_state <= m1_rx_clk_h; + else + m1_next_state <= m1_tx_done_recovery; + end if; + + when m1_tx_error_no_keyboard_ack => + tx_error_no_keyboard_ack <= '1'; + if (ps2_clk_s = '1') and (ps2_data_s ='1') then + m1_next_state <= m1_rx_clk_h; + else + m1_next_state <= m1_tx_error_no_keyboard_ack; + end if; + + when others => + m1_next_state <= m1_rx_clk_h; + end case; +end process; + +-- This is the bit counter +bit_counter: process(clk, reset, m1_state, bit_count ) +begin + if clk'event and clk = '0' then + if ( reset = '1' ) or + ( rx_shifting_done = '1' ) or + (m1_state = m1_tx_wait_keyboard_ack) then -- After tx is done. + bit_count <= "0000"; -- normal reset + elsif (timer_60usec_done = '1' ) and + (m1_state = m1_rx_clk_h) and + (ps2_clk_s = '1') then + bit_count <= "0000"; -- rx watchdog timer reset + elsif (m1_state = m1_rx_falling_edge_marker) or -- increment for rx + (m1_state = m1_tx_rising_edge_marker) then -- increment for tx + bit_count <= bit_count + 1; + end if; + end if; +end process; + +assign: process( bit_count, tx_write, tx_write_ack_o, m1_state ) +begin + if (bit_count = TOTAL_BITS) then + rx_shifting_done <= '1'; + else + rx_shifting_done <= '0'; + end if; + + if (bit_count = (TOTAL_BITS-1)) then + tx_shifting_done <= '1'; + else + tx_shifting_done <= '0'; + end if; + +-- This is the signal which enables loading of the shift register. +-- It also indicates "ack" to the device writing to the transmitter. + if ((tx_write = '1') and (m1_state = m1_rx_clk_h)) or + ((tx_write = '1') and (m1_state = m1_rx_clk_l)) then + tx_write_ack_o <= '1'; + else + tx_write_ack_o <= '0'; + end if; + tx_write_ack <= tx_write_ack_o; +end process; + +-- This is the ODD parity bit for the transmitted word. +-- assign tx_parity_bit = ~^tx_data; +-- +tx_parity_bit <= not( tx_data(7) xor tx_data(6) xor tx_data(5) xor tx_data(4) xor + tx_data(3) xor tx_data(2) xor tx_data(1) xor tx_data(0) ); + +-- This is the shift register +q_shift : process(clk, tx_write_ack_o, tx_parity_bit, tx_data, + m1_state, q, ps2_data_s, rx_shifting_done ) +begin + if clk'event and clk='0' then + if (reset = '1') then + q <= "00000000000"; + elsif (tx_write_ack_o = '1') then + q <= "1" & tx_parity_bit & tx_data & "0"; + elsif ( (m1_state = m1_rx_falling_edge_marker) or + (m1_state = m1_tx_rising_edge_marker) ) then + q <= ps2_data_s & q((TOTAL_BITS-1) downto 1); + end if; + end if; + +-- Create the signals which indicate special scan codes received. +-- These are the "unlatched versions." + if (q(8 downto 1) = EXTEND_CODE) and (rx_shifting_done = '1') then + extended <= '1'; + else + extended <= '0'; + end if; + if (q(8 downto 1) = RELEASE_CODE) and (rx_shifting_done = '1') then + released <= '1'; + else + released <= '0'; + end if; +end process; + +-- This is the 60usec timer counter +timer60usec: process(clk, enable_timer_60usec, timer_60usec_count) +begin + if clk'event and clk = '0' then + if (enable_timer_60usec = '0') then + timer_60usec_count <= "0000000000"; + elsif (timer_60usec_done = '0') then + timer_60usec_count <= timer_60usec_count + 1; + end if; + end if; + + if (timer_60usec_count = (TIMER_60USEC_VALUE_PP - 1)) then + timer_60usec_done <= '1'; + else + timer_60usec_done <= '0'; + end if; +end process; + +-- This is the 5usec timer counter +timer5usec : process(clk, enable_timer_5usec, timer_5usec_count ) +begin + if clk'event and clk = '0' then + if (enable_timer_5usec = '0') then + timer_5usec_count <= "000000"; + elsif (timer_5usec_done = '0') then + timer_5usec_count <= timer_5usec_count + 1; + end if; + end if; + + if( timer_5usec_count = (TIMER_5USEC_VALUE_PP - 1)) then + timer_5usec_done <= '1'; + else + timer_5usec_done <= '0'; + end if; +end process; + + +-- Store the special scan code status bits +-- Not the final output, but an intermediate storage place, +-- until the entire set of output data can be assembled. +special_scan : process(clk, reset, rx_output_event, rx_shifting_done, extended, released ) +begin + if clk'event and clk='0' then + if (reset = '1') or (rx_output_event = '1') then + hold_extended <= '0'; + hold_released <= '0'; + else + if (rx_shifting_done = '1') and (extended = '1') then + hold_extended <= '1'; + end if; + if (rx_shifting_done = '1') and (released = '1') then + hold_released <= '1'; + end if; + end if; + end if; +end process; + + +-- These bits contain the status of the two shift keys +left_shift_proc : process(clk, reset, q, rx_shifting_done, hold_released ) +begin + if clk'event and clk = '0' then + if (reset = '1') then + left_shift_key <= '0'; + elsif (q(8 downto 1) = LEFT_SHIFT) and + (rx_shifting_done = '1') and + (hold_released = '0') then + left_shift_key <= '1'; + elsif (q(8 downto 1) = LEFT_SHIFT) and + (rx_shifting_done = '1') and + (hold_released = '1') then + left_shift_key <= '0'; + end if; + end if; +end process; + +right_shift_proc : process(clk, reset, q, rx_shifting_done, hold_released ) +begin + if clk'event and clk = '0' then + if (reset = '1') then + right_shift_key <= '0'; + elsif (q(8 downto 1) = RIGHT_SHIFT) and + (rx_shifting_done = '1') and + (hold_released = '0') then + right_shift_key <= '1'; + elsif (q(8 downto 1) = RIGHT_SHIFT) and + (rx_shifting_done = '1') and + (hold_released = '1') then + right_shift_key <= '0'; + end if; + end if; +end process; + +shift_key_on <= left_shift_key or right_shift_key; +rx_shift_key_on <= shift_key_on; + +-- +-- Control keys +-- +ctrl_proc : process(clk, reset, q, rx_shifting_done, hold_released ) +begin + if clk'event and clk = '0' then + if (reset = '1') then + ctrl_key_on <= '0'; + elsif (q(8 downto 1) = CTRL_CODE) and + (rx_shifting_done = '1') and + (hold_released = '0') then + ctrl_key_on <= '1'; + elsif (q(8 downto 1) = CTRL_CODE) and + (rx_shifting_done = '1') and + (hold_released = '1') then + ctrl_key_on <= '0'; + end if; + end if; +end process; + +-- +-- Caps lock +-- +caps_proc : process(clk, reset, q, rx_shifting_done, hold_released, caps_key_on ) +begin + if clk'event and clk = '0' then + if (reset = '1') then + caps_key_on <= '0'; + elsif (q(8 downto 1) = CAPS_CODE) and + (rx_shifting_done = '1') and + (hold_released = '0') then + caps_key_on <= not caps_key_on; + end if; + end if; +end process; + +-- Output the special scan code flags, the scan code and the ascii +special_scan_proc : process(clk, reset, + hold_extended, hold_released, + q, ascii, ctrl_key_on ) +begin + if clk'event and clk = '0' then + if (reset = '1') then + rx_extended <= '0'; + rx_released <= '0'; +-- rx_scan_code <= "00000000"; + rx_ascii <= "00000000"; + elsif (rx_output_strobe = '1') then + rx_extended <= hold_extended; + rx_released <= hold_released; +-- rx_scan_code <= q(8 downto 1); + elsif ctrl_key_on = '1' then + rx_ascii <= ascii and x"1f"; + else + rx_ascii <= ascii; + end if; + end if; +end process; + +-- Store the final rx output data only when all extend and release codes +-- are received and the next (actual key) scan code is also ready. +-- (the presence of rx_extended or rx_released refers to the +-- the current latest scan code received, not the previously latched flags.) + +rx_output_proc : process( clk, reset, + rx_shifting_done, rx_output_strobe, + extended, released, + q, ascii, rx_read ) +begin + if (rx_shifting_done = '1') and (extended = '0') and (released = '0') then + rx_output_event <= '1'; + else + rx_output_event <= '0'; + end if; + + if clk'event and clk = '0' then + if reset = '1' then + rx_output_strobe <= '0'; + elsif (rx_shifting_done = '1') and + (rx_output_strobe = '0') and + (extended = '0') and + (released = '0') and + (hold_released = '0' ) and + (ascii /= x"00" ) then +-- ((TRAP_SHIFT_KEYS_PP = 0) or +-- ( (q(8 downto 1) /= RIGHT_SHIFT) and +-- (q(8 downto 1) /= LEFT_SHIFT) and +-- (q(8 downto 1) /= CTRL_CODE) ) )then + rx_output_strobe <= '1'; + elsif rx_read = '1' then + rx_output_strobe <= '0'; + end if; + end if; + rx_data_ready <= rx_output_strobe; +end process; + + +-- This part translates the scan code into an ASCII value... +-- Only the ASCII codes which I considered important have been included. +-- if you want more, just add the appropriate case statement lines... +-- (You will need to know the keyboard scan codes you wish to assign.) +-- The entries are listed in ascending order of ASCII value. +shift_key_plus_code <= shift_key_on & caps_key_on & q(7 downto 1); + +--shift_map : process( shift_key_plus_code ) +--begin +-- case shift_key_plus_code is +-- when x"066" => ascii <= x"08"; -- Backspace ("backspace" key) +-- when x"166" => ascii <= x"08"; -- Backspace ("backspace" key) +-- when x"00d" => ascii <= x"09"; -- Horizontal Tab +-- when x"10d" => ascii <= x"09"; -- Horizontal Tab +-- when x"05a" => ascii <= x"0d"; -- Carriage return ("enter" key) +-- when x"15a" => ascii <= x"0d"; -- Carriage return ("enter" key) +-- when x"076" => ascii <= x"1b"; -- Escape ("esc" key) +-- when x"176" => ascii <= x"1b"; -- Escape ("esc" key) +-- when x"029" => ascii <= x"20"; -- Space +-- when x"129" => ascii <= x"20"; -- Space +-- when x"116" => ascii <= x"21"; -- ! +-- when x"152" => ascii <= x"22"; -- " +-- when x"126" => ascii <= x"23"; -- # +-- when x"125" => ascii <= x"24"; -- $ +-- when x"12e" => ascii <= x"25"; -- +-- when x"13d" => ascii <= x"26"; -- +-- when x"052" => ascii <= x"27"; -- +-- when x"146" => ascii <= x"28"; -- +-- when x"145" => ascii <= x"29"; -- +-- when x"13e" => ascii <= x"2a"; -- * +-- when x"155" => ascii <= x"2b"; -- + +-- when x"041" => ascii <= x"2c"; -- , +-- when x"04e" => ascii <= x"2d"; -- - +-- when x"049" => ascii <= x"2e"; -- . +-- when x"04a" => ascii <= x"2f"; -- / +-- when x"045" => ascii <= x"30"; -- 0 +-- when x"016" => ascii <= x"31"; -- 1 +-- when x"01e" => ascii <= x"32"; -- 2 +-- when x"026" => ascii <= x"33"; -- 3 +-- when x"025" => ascii <= x"34"; -- 4 +-- when x"02e" => ascii <= x"35"; -- 5 +-- when x"036" => ascii <= x"36"; -- 6 +-- when x"03d" => ascii <= x"37"; -- 7 +-- when x"03e" => ascii <= x"38"; -- 8 +-- when x"046" => ascii <= x"39"; -- 9 +-- when x"14c" => ascii <= x"3a"; -- : +-- when x"04c" => ascii <= x"3b"; -- ; +-- when x"141" => ascii <= x"3c"; -- < +-- when x"055" => ascii <= x"3d"; -- = +-- when x"149" => ascii <= x"3e"; -- > +-- when x"14a" => ascii <= x"3f"; -- ? +-- when x"11e" => ascii <= x"40"; -- @ +-- when x"11c" => ascii <= x"41"; -- A +-- when x"132" => ascii <= x"42"; -- B +-- when x"121" => ascii <= x"43"; -- C +-- when x"123" => ascii <= x"44"; -- D +-- when x"124" => ascii <= x"45"; -- E +-- when x"12b" => ascii <= x"46"; -- F +-- when x"134" => ascii <= x"47"; -- G +-- when x"133" => ascii <= x"48"; -- H +-- when x"143" => ascii <= x"49"; -- I +-- when x"13b" => ascii <= x"4a"; -- J +-- when x"142" => ascii <= x"4b"; -- K +-- when x"14b" => ascii <= x"4c"; -- L +-- when x"13a" => ascii <= x"4d"; -- M +-- when x"131" => ascii <= x"4e"; -- N +-- when x"144" => ascii <= x"4f"; -- O +-- when x"14d" => ascii <= x"50"; -- P +-- when x"115" => ascii <= x"51"; -- Q +-- when x"12d" => ascii <= x"52"; -- R +-- when x"11b" => ascii <= x"53"; -- S +-- when x"12c" => ascii <= x"54"; -- T +-- when x"13c" => ascii <= x"55"; -- U +-- when x"12a" => ascii <= x"56"; -- V +-- when x"11d" => ascii <= x"57"; -- W +-- when x"122" => ascii <= x"58"; -- X +-- when x"135" => ascii <= x"59"; -- Y +-- when x"11a" => ascii <= x"5a"; -- Z +-- when x"054" => ascii <= x"5b"; -- [ +-- when x"05d" => ascii <= x"5c"; -- \ +-- when x"05b" => ascii <= x"5d"; -- ] +-- when x"136" => ascii <= x"5e"; -- ^ +-- when x"14e" => ascii <= x"5f"; -- _ +-- when x"00e" => ascii <= x"60"; -- ` +-- when x"01c" => ascii <= x"61"; -- a +-- when x"032" => ascii <= x"62"; -- b +-- when x"021" => ascii <= x"63"; -- c +-- when x"023" => ascii <= x"64"; -- d +-- when x"024" => ascii <= x"65"; -- e +-- when x"02b" => ascii <= x"66"; -- f +-- when x"034" => ascii <= x"67"; -- g +-- when x"033" => ascii <= x"68"; -- h +-- when x"043" => ascii <= x"69"; -- i +-- when x"03b" => ascii <= x"6a"; -- j +-- when x"042" => ascii <= x"6b"; -- k +-- when x"04b" => ascii <= x"6c"; -- l +-- when x"03a" => ascii <= x"6d"; -- m +-- when x"031" => ascii <= x"6e"; -- n +-- when x"044" => ascii <= x"6f"; -- o +-- when x"04d" => ascii <= x"70"; -- p +-- when x"015" => ascii <= x"71"; -- q +-- when x"02d" => ascii <= x"72"; -- r +-- when x"01b" => ascii <= x"73"; -- s +-- when x"02c" => ascii <= x"74"; -- t +-- when x"03c" => ascii <= x"75"; -- u +-- when x"02a" => ascii <= x"76"; -- v +-- when x"01d" => ascii <= x"77"; -- w +-- when x"022" => ascii <= x"78"; -- x +-- when x"035" => ascii <= x"79"; -- y +-- when x"01a" => ascii <= x"7a"; -- z +-- when x"154" => ascii <= x"7b"; -- { +-- when x"15d" => ascii <= x"7c"; -- | +-- when x"15b" => ascii <= x"7d"; -- } +-- when x"10e" => ascii <= x"7e"; -- ~ +-- when x"071" => ascii <= x"7f"; -- (Delete OR DEL on numeric keypad) +-- when x"171" => ascii <= x"7f"; -- (Delete OR DEL on numeric keypad) +-- when others => ascii <= x"ff"; -- 0xff used for unlisted characters. +-- end case; +--end process; + +end my_ps2_keyboard; Index: System09_Terasic_DE1/db/system09.sld_design_entry.sci =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: System09_Terasic_DE1/db/system09.sld_design_entry.sci =================================================================== --- System09_Terasic_DE1/db/system09.sld_design_entry.sci (nonexistent) +++ System09_Terasic_DE1/db/system09.sld_design_entry.sci (revision 105)
System09_Terasic_DE1/db/system09.sld_design_entry.sci Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: System09_Terasic_DE1/db/system09.eco.cdb =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: System09_Terasic_DE1/db/system09.eco.cdb =================================================================== --- System09_Terasic_DE1/db/system09.eco.cdb (nonexistent) +++ System09_Terasic_DE1/db/system09.eco.cdb (revision 105)
System09_Terasic_DE1/db/system09.eco.cdb Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: System09_Terasic_DE1/db/system09.db_info =================================================================== --- System09_Terasic_DE1/db/system09.db_info (nonexistent) +++ System09_Terasic_DE1/db/system09.db_info (revision 105) @@ -0,0 +1,3 @@ +Quartus_Version = Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Full Version +Version_Index = 167832322 +Creation_Time = Wed Mar 10 17:10:05 2010 Index: System09_Terasic_DE1/system09_assignment_defaults.qdf =================================================================== --- System09_Terasic_DE1/system09_assignment_defaults.qdf (nonexistent) +++ System09_Terasic_DE1/system09_assignment_defaults.qdf (revision 105) @@ -0,0 +1,642 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2009 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II +# Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Full Version +# Date created = 17:10:05 March 10, 2010 +# +# -------------------------------------------------------------------------- # +# +# Note: +# +# 1) Do not modify this file. This file was generated +# automatically by the Quartus II software and is used +# to preserve global assignments across Quartus II versions. +# +# -------------------------------------------------------------------------- # + +set_global_assignment -name PROJECT_SHOW_ENTITY_NAME On +set_global_assignment -name PROJECT_USE_SIMPLIFIED_NAMES Off +set_global_assignment -name ENABLE_REDUCED_MEMORY_MODE Off +set_global_assignment -name VER_COMPATIBLE_DB_DIR export_db +set_global_assignment -name AUTO_EXPORT_VER_COMPATIBLE_DB Off +set_global_assignment -name SMART_RECOMPILE Off +set_global_assignment -name FLOW_DISABLE_ASSEMBLER Off +set_global_assignment -name FLOW_ENABLE_HC_COMPARE Off +set_global_assignment -name HC_OUTPUT_DIR hc_output +set_global_assignment -name SAVE_MIGRATION_INFO_DURING_COMPILATION Off +set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS Off +set_global_assignment -name RUN_FULL_COMPILE_ON_DEVICE_CHANGE On +set_global_assignment -name FLOW_ENABLE_RTL_VIEWER Off +set_global_assignment -name READ_OR_WRITE_IN_BYTE_ADDRESS "Use global settings" +set_global_assignment -name FLOW_HARDCOPY_DESIGN_READINESS_CHECK On +set_global_assignment -name DEFAULT_HOLD_MULTICYCLE "Same as Multicycle" +set_global_assignment -name CUT_OFF_PATHS_BETWEEN_CLOCK_DOMAINS On +set_global_assignment -name CUT_OFF_READ_DURING_WRITE_PATHS On +set_global_assignment -name CUT_OFF_IO_PIN_FEEDBACK On +set_global_assignment -name DO_COMBINED_ANALYSIS Off +set_global_assignment -name IGNORE_CLOCK_SETTINGS Off +set_global_assignment -name ANALYZE_LATCHES_AS_SYNCHRONOUS_ELEMENTS On +set_global_assignment -name ENABLE_RECOVERY_REMOVAL_ANALYSIS Off +set_global_assignment -name ENABLE_CLOCK_LATENCY Off +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family ACEX1K +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000B +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family FLEX10KA +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "HardCopy Stratix" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family APEX20KE +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000AE +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Cyclone +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family FLEX10K +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "MAX II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family APEX20KC +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria II GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX7000S +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family FLEX6000 +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "APEX II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family FLEX10KE +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Cyclone II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "HardCopy IV" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Cyclone III LS" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Stratix III" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER On -family "Arria GX" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family MAX3000A +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family "Stratix II" +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER Off -family Stratix +set_global_assignment -name NUMBER_OF_SOURCES_PER_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_DESTINATION_TO_REPORT 10 +set_global_assignment -name NUMBER_OF_PATHS_TO_REPORT 200 +set_global_assignment -name DO_MIN_ANALYSIS Off +set_global_assignment -name DO_MIN_TIMING Off +set_global_assignment -name REPORT_IO_PATHS_SEPARATELY Off +set_global_assignment -name FLOW_ENABLE_TIMING_CONSTRAINT_CHECK Off +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family ACEX1K +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000B +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family FLEX10KA +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family APEX20KE +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Cyclone +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family FLEX10K +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "MAX II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family APEX20KC +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX7000S +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family FLEX6000 +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family "APEX II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family FLEX10KE +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix III" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Arria GX" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family MAX3000A +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS On -family "Stratix II" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS Off -family Stratix +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING Off +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family ACEX1K +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000B +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family FLEX10KA +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "HardCopy Stratix" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family APEX20KE +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000AE +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Cyclone +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family FLEX10K +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "MAX II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family APEX20KC +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Arria II GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX7000S +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family FLEX6000 +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "APEX II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family FLEX10KE +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Cyclone II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "HardCopy IV" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Cyclone III LS" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL On -family "Stratix III" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Arria GX" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family MAX3000A +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family "Stratix II" +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL Off -family Stratix +set_global_assignment -name MUX_RESTRUCTURE Auto +set_global_assignment -name ENABLE_IP_DEBUG Off +set_global_assignment -name SAVE_DISK_SPACE On +set_global_assignment -name DISABLE_OCP_HW_EVAL Off +set_global_assignment -name DEVICE_FILTER_PACKAGE Any +set_global_assignment -name DEVICE_FILTER_PIN_COUNT Any +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE Any +set_global_assignment -name EDA_DESIGN_ENTRY_SYNTHESIS_TOOL "" +set_global_assignment -name VERILOG_INPUT_VERSION Verilog_2001 +set_global_assignment -name VHDL_INPUT_VERSION VHDL93 +set_global_assignment -name FAMILY "Stratix II" +set_global_assignment -name TRUE_WYSIWYG_FLOW Off +set_global_assignment -name SMART_COMPILE_IGNORES_TDC_FOR_STRATIX_PLL_CHANGES Off +set_global_assignment -name STATE_MACHINE_PROCESSING Auto +set_global_assignment -name SAFE_STATE_MACHINE Off +set_global_assignment -name EXTRACT_VERILOG_STATE_MACHINES On +set_global_assignment -name EXTRACT_VHDL_STATE_MACHINES On +set_global_assignment -name IGNORE_VERILOG_INITIAL_CONSTRUCTS Off +set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 5000 +set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 250 +set_global_assignment -name ADD_PASS_THROUGH_LOGIC_TO_INFERRED_RAMS On +set_global_assignment -name PARALLEL_SYNTHESIS Off +set_global_assignment -name DSP_BLOCK_BALANCING Auto +set_global_assignment -name MAX_BALANCING_DSP_BLOCKS "-1 (Unlimited)" +set_global_assignment -name NOT_GATE_PUSH_BACK On +set_global_assignment -name ALLOW_POWER_UP_DONT_CARE On +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS Off +set_global_assignment -name REMOVE_DUPLICATE_REGISTERS On +set_global_assignment -name IGNORE_CARRY_BUFFERS Off +set_global_assignment -name IGNORE_CASCADE_BUFFERS Off +set_global_assignment -name IGNORE_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_ROW_GLOBAL_BUFFERS Off +set_global_assignment -name IGNORE_LCELL_BUFFERS Off +set_global_assignment -name MAX7000_IGNORE_LCELL_BUFFERS AUTO +set_global_assignment -name IGNORE_SOFT_BUFFERS On +set_global_assignment -name MAX7000_IGNORE_SOFT_BUFFERS Off +set_global_assignment -name LIMIT_AHDL_INTEGERS_TO_32_BITS Off +set_global_assignment -name AUTO_GLOBAL_CLOCK_MAX On +set_global_assignment -name AUTO_GLOBAL_OE_MAX On +set_global_assignment -name MAX_AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name AUTO_IMPLEMENT_IN_ROM Off +set_global_assignment -name APEX20K_TECHNOLOGY_MAPPER Lut +set_global_assignment -name OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONE_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name STRATIX_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAXII_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MAX7000_OPTIMIZATION_TECHNIQUE Speed +set_global_assignment -name APEX20K_OPTIMIZATION_TECHNIQUE Balanced +set_global_assignment -name MERCURY_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX6K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name FLEX10K_OPTIMIZATION_TECHNIQUE Area +set_global_assignment -name ALLOW_XOR_GATE_USAGE On +set_global_assignment -name AUTO_LCELL_INSERTION On +set_global_assignment -name CARRY_CHAIN_LENGTH 48 +set_global_assignment -name FLEX6K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name FLEX10K_CARRY_CHAIN_LENGTH 32 +set_global_assignment -name MERCURY_CARRY_CHAIN_LENGTH 48 +set_global_assignment -name STRATIX_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name STRATIXII_CARRY_CHAIN_LENGTH 70 +set_global_assignment -name CASCADE_CHAIN_LENGTH 2 +set_global_assignment -name PARALLEL_EXPANDER_CHAIN_LENGTH 16 +set_global_assignment -name MAX7000_PARALLEL_EXPANDER_CHAIN_LENGTH 4 +set_global_assignment -name AUTO_CARRY_CHAINS On +set_global_assignment -name AUTO_CASCADE_CHAINS On +set_global_assignment -name AUTO_PARALLEL_EXPANDERS On +set_global_assignment -name AUTO_OPEN_DRAIN_PINS On +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP Off +set_global_assignment -name AUTO_ROM_RECOGNITION On +set_global_assignment -name AUTO_RAM_RECOGNITION On +set_global_assignment -name AUTO_DSP_RECOGNITION On +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION Auto +set_global_assignment -name AUTO_CLOCK_ENABLE_RECOGNITION On +set_global_assignment -name STRICT_RAM_RECOGNITION Off +set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE On +set_global_assignment -name FORCE_SYNCH_CLEAR Off +set_global_assignment -name AUTO_RAM_BLOCK_BALANCING On +set_global_assignment -name AUTO_RAM_TO_LCELL_CONVERSION Off +set_global_assignment -name AUTO_RESOURCE_SHARING Off +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION Off +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION Off +set_global_assignment -name MAX7000_FANIN_PER_CELL 100 +set_global_assignment -name USE_LOGICLOCK_CONSTRAINTS_IN_BALANCING On +set_global_assignment -name MAX_RAM_BLOCKS_M512 "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_M4K "-1 (Unlimited)" +set_global_assignment -name MAX_RAM_BLOCKS_MRAM "-1 (Unlimited)" +set_global_assignment -name IGNORE_TRANSLATE_OFF_AND_SYNTHESIS_OFF Off +set_global_assignment -name STRATIXGX_BYPASS_REMAPPING_OF_FORCE_SIGNAL_DETECT_SIGNAL_THRESHOLD_SELECT Off +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS Off +set_global_assignment -name SHOW_PARAMETER_SETTINGS_TABLES_IN_SYNTHESIS_REPORT On +set_global_assignment -name IGNORE_MAX_FANOUT_ASSIGNMENTS Off +set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS "Normal compilation" +set_global_assignment -name HDL_MESSAGE_LEVEL Level2 +set_global_assignment -name USE_HIGH_SPEED_ADDER Auto +set_global_assignment -name NUMBER_OF_REMOVED_REGISTERS_REPORTED 100 +set_global_assignment -name NUMBER_OF_INVERTED_REGISTERS_REPORTED 100 +set_global_assignment -name SYNTH_CLOCK_MUX_PROTECTION On +set_global_assignment -name SYNTH_GATED_CLOCK_CONVERSION Off +set_global_assignment -name BLOCK_DESIGN_NAMING Auto +set_global_assignment -name SYNTH_PROTECT_SDC_CONSTRAINT Off +set_global_assignment -name SYNTHESIS_EFFORT Auto +set_global_assignment -name SHIFT_REGISTER_RECOGNITION_ACLR_SIGNAL On +set_global_assignment -name PRE_MAPPING_RESYNTHESIS Off +set_global_assignment -name SYNTH_MESSAGE_LEVEL Medium +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL Normal +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 1.0 +set_global_assignment -name FIT_ATTEMPTS_TO_SKIP 0.0 +set_global_assignment -name ECO_ALLOW_ROUTING_CHANGES Off +set_global_assignment -name DEVICE AUTO +set_global_assignment -name BASE_PIN_OUT_FILE_ON_SAMEFRAME_DEVICE Off +set_global_assignment -name ENABLE_JTAG_BST_SUPPORT Off +set_global_assignment -name MAX7000_ENABLE_JTAG_BST_SUPPORT On +set_global_assignment -name RESERVE_NCEO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name STRATIXIII_UPDATE_MODE Standard +set_global_assignment -name STRATIX_UPDATE_MODE Standard +set_global_assignment -name STRATIXIII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name STRATIXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONEII_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name APEX20K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name STRATIX_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name CYCLONE_CONFIGURATION_SCHEME "Active Serial" +set_global_assignment -name MERCURY_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX6K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name FLEX10K_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name APEXII_CONFIGURATION_SCHEME "Passive Serial" +set_global_assignment -name USER_START_UP_CLOCK Off +set_global_assignment -name ENABLE_VREFA_PIN Off +set_global_assignment -name ENABLE_VREFB_PIN Off +set_global_assignment -name ALWAYS_ENABLE_INPUT_BUFFERS Off +set_global_assignment -name ENABLE_ASMI_FOR_FLASH_LOADER Off +set_global_assignment -name ENABLE_DEVICE_WIDE_RESET Off +set_global_assignment -name ENABLE_DEVICE_WIDE_OE Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As output driving ground" +set_global_assignment -name FLEX10K_ENABLE_LOCK_OUTPUT Off +set_global_assignment -name ENABLE_INIT_DONE_OUTPUT Off +set_global_assignment -name RESERVE_NWS_NRS_NCS_CS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_RDYNBUSY_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA1_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_DATA7_THROUGH_DATA2_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "As input tri-stated" +set_global_assignment -name RESERVE_OTHER_AP_PINS_AFTER_CONFIGURATION "Use as regular IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "Use as programming pin" +set_global_assignment -name CRC_ERROR_CHECKING Off +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "HardCopy III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Cyclone II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Stratix IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Cyclone III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Stratix III" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "HardCopy Stratix" +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Arria GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II GX" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Cyclone +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "Stratix II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family "MAX II" +set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO Paths and Minimum TPD Paths" -family Stratix +set_global_assignment -name OPTIMIZE_HOLD_TIMING -value "ALL PATHS" -family "Arria II GX" +set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING Off +set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION On +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_POWER_UP_CONDITIONS Auto +set_global_assignment -name BLOCK_RAM_AND_MLAB_EQUIVALENT_PAUSED_READ_CAPABILITIES Care +set_global_assignment -name PROGRAMMABLE_POWER_TECHNOLOGY_SETTING "Force All Tiles with Failing Timing Paths to High Speed" +set_global_assignment -name PROGRAMMABLE_POWER_MAXIMUM_HIGH_SPEED_FRACTION_OF_USED_LAB_TILES 1.0 +set_global_assignment -name GUARANTEE_MIN_DELAY_CORNER_IO_ZERO_HOLD_TIME On +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "Normal compilation" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III LS" +set_global_assignment -name OPTIMIZE_SSN Off -family "Cyclone III" +set_global_assignment -name OPTIMIZE_SSN Off -family "Stratix III" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy III" +set_global_assignment -name OPTIMIZE_SSN Off -family "HardCopy IV" +set_global_assignment -name OPTIMIZE_TIMING "Normal compilation" +set_global_assignment -name ECO_OPTIMIZE_TIMING Off +set_global_assignment -name ECO_REGENERATE_REPORT Off +set_global_assignment -name OPTIMIZE_IOC_REGISTER_PLACEMENT_FOR_TIMING On +set_global_assignment -name FIT_ONLY_ONE_ATTEMPT Off +set_global_assignment -name FINAL_PLACEMENT_OPTIMIZATION Automatically +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION Automatically +set_global_assignment -name SEED 1 +set_global_assignment -name SLOW_SLEW_RATE Off +set_global_assignment -name PCI_IO Off +set_global_assignment -name TURBO_BIT On +set_global_assignment -name WEAK_PULL_UP_RESISTOR Off +set_global_assignment -name ENABLE_BUS_HOLD_CIRCUITRY Off +set_global_assignment -name AUTO_GLOBAL_MEMORY_CONTROLS Off +set_global_assignment -name MIGRATION_CONSTRAIN_CORE_RESOURCES On +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_MAXII AUTO +set_global_assignment -name AUTO_PACKED_REGISTERS_CYCLONE Auto +set_global_assignment -name AUTO_PACKED_REGISTERS Off +set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIX AUTO +set_global_assignment -name NORMAL_LCELL_INSERT On +set_global_assignment -name CARRY_OUT_PINS_LCELL_INSERT On +set_global_assignment -name AUTO_DELAY_CHAINS On +set_global_assignment -name XSTL_INPUT_ALLOW_SE_BUFFER Off +set_global_assignment -name TREAT_BIDIR_AS_OUTPUT Off +set_global_assignment -name AUTO_MERGE_PLLS On +set_global_assignment -name IGNORE_MODE_FOR_MERGE Off +set_global_assignment -name AUTO_TURBO_BIT ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC Off +set_global_assignment -name PHYSICAL_SYNTHESIS_LOG_FILE Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION Off +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA Off +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING Off +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING Off +set_global_assignment -name IO_PLACEMENT_OPTIMIZATION On +set_global_assignment -name ALLOW_LVTTL_LVCMOS_INPUT_LEVELS_TO_OVERDRIVE_INPUT_BUFFER Off +set_global_assignment -name OVERRIDE_DEFAULT_ELECTROMIGRATION_PARAMETERS Off +set_global_assignment -name FITTER_EFFORT "Auto Fit" +set_global_assignment -name FITTER_AUTO_EFFORT_DESIRED_SLACK_MARGIN 0ns +set_global_assignment -name PHYSICAL_SYNTHESIS_EFFORT Normal +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION AUTO +set_global_assignment -name ROUTER_REGISTER_DUPLICATION AUTO +set_global_assignment -name STRATIXGX_ALLOW_CLOCK_FANOUT_WITH_ANALOG_RESET Off +set_global_assignment -name AUTO_GLOBAL_CLOCK On +set_global_assignment -name AUTO_GLOBAL_OE On +set_global_assignment -name AUTO_GLOBAL_REGISTER_CONTROLS On +set_global_assignment -name FITTER_EARLY_TIMING_ESTIMATE_MODE Realistic +set_global_assignment -name STRATIXGX_ALLOW_GIGE_UNDER_FULL_DATARATE_RANGE Off +set_global_assignment -name STRATIXGX_ALLOW_RX_CORECLK_FROM_NON_RX_CLKOUT_SOURCE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_PARALLEL_LOOPBACK_IN_DOUBLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_IN_SINGLE_DATA_WIDTH_MODE Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_XAUI_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_CORECLK_SELECTED_AT_RATE_MATCHER Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITHOUT_8B10B Off +set_global_assignment -name STRATIXGX_ALLOW_GIGE_WITH_RX_CORECLK_FROM_NON_TXPLL_SOURCE Off +set_global_assignment -name STRATIXGX_ALLOW_POST8B10B_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_REVERSE_PARALLEL_LOOPBACK Off +set_global_assignment -name STRATIXGX_ALLOW_USE_OF_GXB_COUPLED_IOS Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF Off +set_global_assignment -name GENERATE_GXB_RECONFIG_MIF_WITH_PLL Off +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "As input tri-stated with weak pull-up" +set_global_assignment -name STOP_AFTER_CONGESTION_MAP Off +set_global_assignment -name SAVE_INTERMEDIATE_FITTING_RESULTS Off +set_global_assignment -name ENABLE_HOLD_BACK_OFF On +set_global_assignment -name CONFIGURATION_VCCIO_LEVEL Auto +set_global_assignment -name FORCE_CONFIGURATION_VCCIO Off +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION Off +set_global_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION -value OFF +set_global_assignment -name OPTIMIZE_FOR_METASTABILITY On +set_global_assignment -name CRC_ERROR_OPEN_DRAIN Off +set_global_assignment -name MAX_GLOBAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_REGIONAL_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_PERIPHERY_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name MAX_CLOCKS_ALLOWED "-1 (Unlimited)" +set_global_assignment -name ACTIVE_SERIAL_CLOCK FREQ_40MHz +set_global_assignment -name STRATIXIII_MRAM_COMPATIBILITY On +set_global_assignment -name FORCE_FITTER_TO_AVOID_PERIPHERY_PLACEMENT_WARNINGS Off +set_global_assignment -name EDA_SIMULATION_TOOL "" +set_global_assignment -name EDA_TIMING_ANALYSIS_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TIMING_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SYMBOL_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_SIGNAL_INTEGRITY_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_BOUNDARY_SCAN_TOOL "" +set_global_assignment -name EDA_BOARD_DESIGN_TOOL "" +set_global_assignment -name EDA_FORMAL_VERIFICATION_TOOL "" +set_global_assignment -name EDA_RESYNTHESIS_TOOL "" +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION On +set_global_assignment -name COMPRESSION_MODE Off +set_global_assignment -name CLOCK_SOURCE Internal +set_global_assignment -name CONFIGURATION_CLOCK_FREQUENCY "10 MHz" +set_global_assignment -name CONFIGURATION_CLOCK_DIVISOR 1 +set_global_assignment -name ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name FLEX6K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE Off +set_global_assignment -name FLEX10K_ENABLE_LOW_VOLTAGE_MODE_ON_CONFIG_DEVICE On +set_global_assignment -name MAX7000S_JTAG_USER_CODE FFFF +set_global_assignment -name STRATIX_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name APEX20K_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_JTAG_USER_CODE 7F +set_global_assignment -name MAX7000_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MAX7000_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name SECURITY_BIT Off +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family ACEX1K +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000B +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family FLEX10KA +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "HardCopy Stratix" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family APEX20KE +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000AE +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Cyclone +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family FLEX10K +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "MAX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family APEX20KC +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Arria II GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX7000S +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family FLEX6000 +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "APEX II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family FLEX10KE +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Cyclone II" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "HardCopy IV" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Cyclone III LS" +set_global_assignment -name USE_CONFIGURATION_DEVICE Off -family "Stratix III" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Arria GX" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family MAX3000A +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family "Stratix II" +set_global_assignment -name USE_CONFIGURATION_DEVICE On -family Stratix +set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIXII_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIGURATION_DEVICE Auto +set_global_assignment -name MERCURY_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX6K_CONFIGURATION_DEVICE Auto +set_global_assignment -name FLEX10K_CONFIGURATION_DEVICE Auto +set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE Auto +set_global_assignment -name STRATIX_CONFIGURATION_DEVICE Auto +set_global_assignment -name APEX20K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name STRATIX_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name MERCURY_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name FLEX10K_CONFIG_DEVICE_JTAG_USER_CODE FFFFFFFF +set_global_assignment -name EPROM_USE_CHECKSUM_AS_USERCODE Off +set_global_assignment -name AUTO_INCREMENT_CONFIG_DEVICE_JTAG_USER_CODE On +set_global_assignment -name DISABLE_NCS_AND_OE_PULLUPS_ON_CONFIG_DEVICE Off +set_global_assignment -name GENERATE_TTF_FILE Off +set_global_assignment -name GENERATE_RBF_FILE Off +set_global_assignment -name GENERATE_HEX_FILE Off +set_global_assignment -name HEXOUT_FILE_START_ADDRESS 0 +set_global_assignment -name HEXOUT_FILE_COUNT_DIRECTION Up +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "As output driving an unspecified signal" +set_global_assignment -name RELEASE_CLEARS_BEFORE_TRI_STATES Off +set_global_assignment -name AUTO_RESTART_CONFIGURATION On +set_global_assignment -name HARDCOPYII_POWER_ON_EXTRA_DELAY Off +set_global_assignment -name STRATIXII_MRAM_COMPATIBILITY Off +set_global_assignment -name CYCLONEII_M4K_COMPATIBILITY On +set_global_assignment -name ENABLE_OCT_DONE Off +set_global_assignment -name USE_CHECKERED_PATTERN_AS_UNINITIALIZED_RAM_CONTENT Off +set_global_assignment -name START_TIME 0ns +set_global_assignment -name SIMULATION_MODE TIMING +set_global_assignment -name AUTO_USE_SIMULATION_PDB_NETLIST Off +set_global_assignment -name ADD_DEFAULT_PINS_TO_SIMULATION_OUTPUT_WAVEFORMS On +set_global_assignment -name SETUP_HOLD_DETECTION Off +set_global_assignment -name SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off +set_global_assignment -name CHECK_OUTPUTS Off +set_global_assignment -name SIMULATION_COVERAGE On +set_global_assignment -name SIMULATION_COMPLETE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_1_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name SIMULATION_MISSING_0_VALUE_COVERAGE_REPORT_PANEL On +set_global_assignment -name GLITCH_DETECTION Off +set_global_assignment -name GLITCH_INTERVAL 1ns +set_global_assignment -name SIMULATOR_GENERATE_SIGNAL_ACTIVITY_FILE Off +set_global_assignment -name SIMULATION_WITH_GLITCH_FILTERING_WHEN_GENERATING_SAF On +set_global_assignment -name SIMULATION_BUS_CHANNEL_GROUPING Off +set_global_assignment -name SIMULATION_VDB_RESULT_FLUSH On +set_global_assignment -name VECTOR_COMPARE_TRIGGER_MODE INPUT_EDGE +set_global_assignment -name SIMULATION_NETLIST_VIEWER Off +set_global_assignment -name SIMULATION_INTERCONNECT_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATION_CELL_DELAY_MODEL_TYPE TRANSPORT +set_global_assignment -name SIMULATOR_GENERATE_POWERPLAY_VCD_FILE Off +set_global_assignment -name SIMULATOR_PVT_TIMING_MODEL_TYPE AUTO +set_global_assignment -name SIMULATION_WITH_AUTO_GLITCH_FILTERING AUTO +set_global_assignment -name DRC_TOP_FANOUT 50 +set_global_assignment -name DRC_FANOUT_EXCEEDING 30 +set_global_assignment -name DRC_GATED_CLOCK_FEED 30 +set_global_assignment -name HARDCOPY_FLOW_AUTOMATION MIGRATION_ONLY +set_global_assignment -name ENABLE_DRC_SETTINGS Off +set_global_assignment -name CLK_RULE_CLKNET_CLKSPINES_THRESHOLD 25 +set_global_assignment -name DRC_DETAIL_MESSAGE_LIMIT 10 +set_global_assignment -name DRC_VIOLATION_MESSAGE_LIMIT 30 +set_global_assignment -name DRC_DEADLOCK_STATE_LIMIT 2 +set_global_assignment -name MERGE_HEX_FILE Off +set_global_assignment -name GENERATE_SVF_FILE Off +set_global_assignment -name GENERATE_ISC_FILE Off +set_global_assignment -name GENERATE_JAM_FILE Off +set_global_assignment -name GENERATE_JBC_FILE Off +set_global_assignment -name GENERATE_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_SVF_FILE Off +set_global_assignment -name GENERATE_CONFIG_ISC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JAM_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE Off +set_global_assignment -name GENERATE_CONFIG_JBC_FILE_COMPRESSED On +set_global_assignment -name GENERATE_CONFIG_HEXOUT_FILE Off +set_global_assignment -name ISP_CLAMP_STATE_DEFAULT "Tri-state" +set_global_assignment -name SIGNALPROBE_ALLOW_OVERUSE Off +set_global_assignment -name SIGNALPROBE_DURING_NORMAL_COMPILATION Off +set_global_assignment -name LOGICLOCK_INCREMENTAL_COMPILE_ASSIGNMENT Off +set_global_assignment -name POWER_DEFAULT_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE 12.5% +set_global_assignment -name POWER_USE_PVA On +set_global_assignment -name POWER_USE_INPUT_FILE "No File" +set_global_assignment -name POWER_USE_INPUT_FILES Off +set_global_assignment -name POWER_VCD_FILTER_GLITCHES On +set_global_assignment -name POWER_REPORT_SIGNAL_ACTIVITY Off +set_global_assignment -name POWER_REPORT_POWER_DISSIPATION Off +set_global_assignment -name POWER_USE_DEVICE_CHARACTERISTICS TYPICAL +set_global_assignment -name POWER_AUTO_COMPUTE_TJ On +set_global_assignment -name POWER_TJ_VALUE 25 +set_global_assignment -name POWER_USE_TA_VALUE 25 +set_global_assignment -name POWER_USE_CUSTOM_COOLING_SOLUTION Off +set_global_assignment -name POWER_BOARD_TEMPERATURE 25 +set_global_assignment -name INCREMENTAL_COMPILATION FULL_INCREMENTAL_COMPILATION +set_global_assignment -name AUTO_EXPORT_INCREMENTAL_COMPILATION Off +set_global_assignment -name INCREMENTAL_COMPILATION_EXPORT_NETLIST_TYPE POST_FIT +set_global_assignment -name OUTPUT_IO_TIMING_ENDPOINT "Near End" +set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS On +set_global_assignment -name RTLV_SIMPLIFIED_LOGIC On +set_global_assignment -name RTLV_GROUP_RELATED_NODES On +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD Off +set_global_assignment -name RTLV_GROUP_COMB_LOGIC_IN_CLOUD_TMV Off +set_global_assignment -name RTLV_GROUP_RELATED_NODES_TMV On +set_global_assignment -name EQC_CONSTANT_DFF_DETECTION On +set_global_assignment -name EQC_DUPLICATE_DFF_DETECTION On +set_global_assignment -name EQC_BBOX_MERGE On +set_global_assignment -name EQC_LVDS_MERGE On +set_global_assignment -name EQC_RAM_UNMERGING On +set_global_assignment -name EQC_DFF_SS_EMULATION On +set_global_assignment -name EQC_RAM_REGISTER_UNPACK On +set_global_assignment -name EQC_MAC_REGISTER_UNPACK On +set_global_assignment -name EQC_SET_PARTITION_BB_TO_VCC_GND On +set_global_assignment -name EQC_STRUCTURE_MATCHING On +set_global_assignment -name EQC_AUTO_BREAK_CONE On +set_global_assignment -name EQC_POWER_UP_COMPARE Off +set_global_assignment -name EQC_AUTO_COMP_LOOP_CUT On +set_global_assignment -name EQC_AUTO_INVERSION On +set_global_assignment -name EQC_AUTO_TERMINATE On +set_global_assignment -name EQC_SUB_CONE_REPORT Off +set_global_assignment -name EQC_RENAMING_RULES On +set_global_assignment -name EQC_PARAMETER_CHECK On +set_global_assignment -name EQC_AUTO_PORTSWAP On +set_global_assignment -name EQC_DETECT_DONT_CARES On +set_global_assignment -name EQC_SHOW_ALL_MAPPED_POINTS Off +set_global_assignment -name DUTY_CYCLE 50 -section_id ? +set_global_assignment -name INVERT_BASE_CLOCK Off -section_id ? +set_global_assignment -name MULTIPLY_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name DIVIDE_BASE_CLOCK_PERIOD_BY 1 -section_id ? +set_global_assignment -name EDA_INPUT_GND_NAME GND -section_id ? +set_global_assignment -name EDA_INPUT_VCC_NAME VCC -section_id ? +set_global_assignment -name EDA_INPUT_DATA_FORMAT NONE -section_id ? +set_global_assignment -name EDA_SHOW_LMF_MAPPING_MESSAGES Off -section_id ? +set_global_assignment -name EDA_RUN_TOOL_AUTOMATICALLY Off -section_id ? +set_global_assignment -name RESYNTHESIS_RETIMING FULL -section_id ? +set_global_assignment -name RESYNTHESIS_OPTIMIZATION_EFFORT Normal -section_id ? +set_global_assignment -name RESYNTHESIS_PHYSICAL_SYNTHESIS Normal -section_id ? +set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS On -section_id ? +set_global_assignment -name VCCPD_VOLTAGE 3.3V -section_id ? +set_global_assignment -name EDA_USER_COMPILED_SIMULATION_LIBRARY_DIRECTORY "" -section_id ? +set_global_assignment -name EDA_LAUNCH_CMD_LINE_TOOL Off -section_id ? +set_global_assignment -name EDA_NATIVELINK_GENERATE_SCRIPT_ONLY Off -section_id ? +set_global_assignment -name EDA_WAIT_FOR_GUI_TOOL_COMPLETION Off -section_id ? +set_global_assignment -name EDA_TRUNCATE_LONG_HIERARCHY_PATHS Off -section_id ? +set_global_assignment -name EDA_FLATTEN_BUSES Off -section_id ? +set_global_assignment -name EDA_MAP_ILLEGAL_CHARACTERS Off -section_id ? +set_global_assignment -name EDA_GENERATE_TIMING_CLOSURE_DATA Off -section_id ? +set_global_assignment -name EDA_GENERATE_POWER_INPUT_FILE Off -section_id ? +set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS NOT_USED -section_id ? +set_global_assignment -name EDA_RTL_SIM_MODE NOT_USED -section_id ? +set_global_assignment -name EDA_MAINTAIN_DESIGN_HIERARCHY Off -section_id ? +set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST Off -section_id ? +set_global_assignment -name EDA_WRITE_DEVICE_CONTROL_PORTS Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_TCL_FILE Off -section_id ? +set_global_assignment -name EDA_SIMULATION_VCD_OUTPUT_SIGNALS_TO_TCL_FILE "All Except Combinational Logic Element Outputs" -section_id ? +set_global_assignment -name EDA_ENABLE_GLITCH_FILTERING Off -section_id ? +set_global_assignment -name EDA_WRITE_NODES_FOR_POWER_ESTIMATION OFF -section_id ? +set_global_assignment -name EDA_SETUP_HOLD_DETECTION_INPUT_REGISTERS_BIDIR_PINS_DISABLED Off -section_id ? +set_global_assignment -name EDA_WRITER_DONT_WRITE_TOP_ENTITY Off -section_id ? +set_global_assignment -name EDA_VHDL_ARCH_NAME structure -section_id ? +set_global_assignment -name EDA_IBIS_MODEL_SELECTOR Off -section_id ? +set_global_assignment -name EDA_IBIS_MUTUAL_COUPLING Off -section_id ? +set_global_assignment -name EDA_FORMAL_VERIFICATION_ALLOW_RETIMING Off -section_id ? +set_global_assignment -name EDA_BOARD_BOUNDARY_SCAN_OPERATION PRE_CONFIG -section_id ? +set_global_assignment -name EDA_GENERATE_RTL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name EDA_GENERATE_GATE_LEVEL_SIMULATION_COMMAND_SCRIPT Off -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_OFFSET 0ns -section_id ? +set_global_assignment -name SIM_VECTOR_COMPARED_CLOCK_DUTY_CYCLE 50 -section_id ? +set_global_assignment -name APEX20K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MAX7K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name MERCURY_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX6K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name FLEX10K_CLIQUE_TYPE LAB -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_ASSIGNMENTS On -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_ASSIGNMENTS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS REPLACE_CONFLICTING -section_id ? -entity ? +set_global_assignment -name PARTITION_IMPORT_PROMOTE_ASSIGNMENTS On -section_id ? -entity ? Index: System09_Terasic_DE1/system09.qsf =================================================================== --- System09_Terasic_DE1/system09.qsf (nonexistent) +++ System09_Terasic_DE1/system09.qsf (revision 105) @@ -0,0 +1,514 @@ +# copyright (c) 1991-2005 altera corporation +# your use of altera corporation's design tools, logic functions +# and other software and tools, and its ampp partner logic +# functions, and any output files any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the altera program license +# subscription agreement, altera megacore function license +# agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by altera and sold by +# altera or its authorized distributors. please refer to the +# applicable agreement for further details. + + +# the default values for assignments are stored in the file +# system09_assignment_defaults.qdf +# if this file doesn't exist, and for assignments not listed, see file +# assignment_defaults.qdf + +# altera recommends that you do not modify this file. this +# file is updated automatically by the quartus ii software +# and any changes you make may be lost or overwritten. + + +# project-wide assignments +# ======================== +set_global_assignment -name LAST_QUARTUS_VERSION "9.0 SP2" + +# pin & location assignments +# ========================== + +# analysis & synthesis assignments +# ================================ +set_global_assignment -name FAMILY "cyclone ii" +set_global_assignment -name TOP_LEVEL_ENTITY target_top + +# fitter assignments +# ================== +set_global_assignment -name DEVICE ep2c20f484c7 +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" +set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT TRI-STATED" + +# assembler assignments +# ===================== +set_global_assignment -name RESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND "AS OUTPUT DRIVING AN UNSPECIFIED SIGNAL" + +set_global_assignment -name SEED 1 +set_instance_assignment -name IO_STANDARD LVTTL -to aud_adcdat +set_instance_assignment -name IO_STANDARD LVTTL -to aud_adclrck +set_instance_assignment -name IO_STANDARD LVTTL -to aud_bclk +set_instance_assignment -name IO_STANDARD LVTTL -to aud_dacdat +set_instance_assignment -name IO_STANDARD LVTTL -to aud_daclrck +set_instance_assignment -name IO_STANDARD LVTTL -to aud_xck +set_instance_assignment -name IO_STANDARD LVTTL -to clock_24[0] +set_instance_assignment -name IO_STANDARD LVTTL -to clock_24[1] +# set_instance_assignment -name io_standard lvttl -to clock_27[1] +set_instance_assignment -name IO_STANDARD LVTTL -to clock_50 +set_instance_assignment -name IO_STANDARD LVTTL -to ext_clock +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[0] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[10] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[11] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[12] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[13] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[14] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[15] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[16] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[17] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[18] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[19] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[1] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[20] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[21] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[22] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[23] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[24] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[25] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[26] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[27] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[28] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[29] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[2] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[30] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[31] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[32] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[33] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[34] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[35] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[3] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[4] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[5] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[6] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[7] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[8] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_0[9] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[0] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[10] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[11] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[12] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[13] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[14] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[15] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[16] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[17] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[18] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[19] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[1] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[20] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[21] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[22] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[23] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[24] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[25] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[26] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[27] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[28] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[29] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[2] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[30] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[31] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[32] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[33] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[34] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[35] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[3] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[4] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[5] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[6] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[7] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[8] +set_instance_assignment -name IO_STANDARD LVTTL -to gpio_1[9] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[0] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[1] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[2] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[3] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[4] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[5] +set_instance_assignment -name IO_STANDARD LVTTL -to hex0[6] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[0] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[1] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[2] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[3] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[4] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[5] +set_instance_assignment -name IO_STANDARD LVTTL -to hex1[6] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[0] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[1] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[2] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[3] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[4] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[5] +set_instance_assignment -name IO_STANDARD LVTTL -to hex2[6] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[0] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[1] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[2] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[3] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[4] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[5] +set_instance_assignment -name IO_STANDARD LVTTL -to hex3[6] +set_instance_assignment -name IO_STANDARD LVTTL -to i2c_sclk +set_instance_assignment -name IO_STANDARD LVTTL -to i2c_sdat +set_instance_assignment -name IO_STANDARD LVTTL -to key[0] +set_instance_assignment -name IO_STANDARD LVTTL -to key[1] +set_instance_assignment -name IO_STANDARD LVTTL -to key[2] +set_instance_assignment -name IO_STANDARD LVTTL -to key[3] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[0] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[1] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[2] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[3] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[4] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[5] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[6] +set_instance_assignment -name IO_STANDARD LVTTL -to ledg[7] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[0] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[1] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[2] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[3] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[4] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[5] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[6] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[7] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[8] +set_instance_assignment -name IO_STANDARD LVTTL -to ledr[9] +set_instance_assignment -name IO_STANDARD LVTTL -to ps2_clk +set_instance_assignment -name IO_STANDARD LVTTL -to ps2_dat +set_instance_assignment -name IO_STANDARD LVTTL -to sw[0] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[1] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[2] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[3] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[4] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[5] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[6] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[7] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[8] +set_instance_assignment -name IO_STANDARD LVTTL -to sw[9] +set_instance_assignment -name IO_STANDARD LVTTL -to tck +set_instance_assignment -name IO_STANDARD LVTTL -to tcs +set_instance_assignment -name IO_STANDARD LVTTL -to tdi +set_instance_assignment -name IO_STANDARD LVTTL -to tdo +set_instance_assignment -name IO_STANDARD LVTTL -to uart_rxd +set_instance_assignment -name IO_STANDARD LVTTL -to uart_txd +set_instance_assignment -name IO_STANDARD LVTTL -to vga_b[0] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_b[1] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_b[2] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_b[3] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_g[0] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_g[1] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_g[2] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_g[3] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_hs +set_instance_assignment -name IO_STANDARD LVTTL -to vga_r[0] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_r[1] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_r[2] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_r[3] +set_instance_assignment -name IO_STANDARD LVTTL -to vga_vs +set_location_assignment PIN_B6 -to aud_adcdat +set_location_assignment PIN_A6 -to aud_adclrck +set_location_assignment PIN_A4 -to aud_bclk +set_location_assignment PIN_B5 -to aud_dacdat +set_location_assignment PIN_A5 -to aud_daclrck +set_location_assignment PIN_B4 -to aud_xck +set_location_assignment PIN_B12 -to clock_24[0] +set_location_assignment PIN_A12 -to clock_24[1] +set_location_assignment PIN_D12 -to clock_27 +# set_location_assignment pin_e12 -to clock_27[1] +set_location_assignment PIN_L1 -to clock_50 +set_location_assignment PIN_W4 -to dram_addr[0] +set_location_assignment PIN_W3 -to dram_addr[10] +set_location_assignment PIN_N6 -to dram_addr[11] +set_location_assignment PIN_W5 -to dram_addr[1] +set_location_assignment PIN_Y3 -to dram_addr[2] +set_location_assignment PIN_Y4 -to dram_addr[3] +set_location_assignment PIN_R6 -to dram_addr[4] +set_location_assignment PIN_R5 -to dram_addr[5] +set_location_assignment PIN_P6 -to dram_addr[6] +set_location_assignment PIN_P5 -to dram_addr[7] +set_location_assignment PIN_P3 -to dram_addr[8] +set_location_assignment PIN_N4 -to dram_addr[9] +set_location_assignment PIN_U3 -to dram_ba_0 +set_location_assignment PIN_V4 -to dram_ba_1 +set_location_assignment PIN_T3 -to dram_cas_n +set_location_assignment PIN_N3 -to dram_cke +set_location_assignment PIN_U4 -to dram_clk +set_location_assignment PIN_T6 -to dram_cs_n +set_location_assignment PIN_U1 -to dram_dq[0] +set_location_assignment PIN_P1 -to dram_dq[10] +set_location_assignment PIN_P2 -to dram_dq[11] +set_location_assignment PIN_R1 -to dram_dq[12] +set_location_assignment PIN_R2 -to dram_dq[13] +set_location_assignment PIN_T1 -to dram_dq[14] +set_location_assignment PIN_T2 -to dram_dq[15] +set_location_assignment PIN_U2 -to dram_dq[1] +set_location_assignment PIN_V1 -to dram_dq[2] +set_location_assignment PIN_V2 -to dram_dq[3] +set_location_assignment PIN_W1 -to dram_dq[4] +set_location_assignment PIN_W2 -to dram_dq[5] +set_location_assignment PIN_Y1 -to dram_dq[6] +set_location_assignment PIN_Y2 -to dram_dq[7] +set_location_assignment PIN_N1 -to dram_dq[8] +set_location_assignment PIN_N2 -to dram_dq[9] +set_location_assignment PIN_R7 -to dram_ldqm +set_location_assignment PIN_T5 -to dram_ras_n +set_location_assignment PIN_M5 -to dram_udqm +set_location_assignment PIN_R8 -to dram_we_n +set_location_assignment PIN_M21 -to ext_clock +set_location_assignment PIN_AB20 -to fl_addr[0] +set_location_assignment PIN_R12 -to fl_addr[10] +set_location_assignment PIN_T12 -to fl_addr[11] +set_location_assignment PIN_AB14 -to fl_addr[12] +set_location_assignment PIN_AA13 -to fl_addr[13] +set_location_assignment PIN_AB13 -to fl_addr[14] +set_location_assignment PIN_AA12 -to fl_addr[15] +set_location_assignment PIN_AB12 -to fl_addr[16] +set_location_assignment PIN_AA20 -to fl_addr[17] +set_location_assignment PIN_U14 -to fl_addr[18] +set_location_assignment PIN_V14 -to fl_addr[19] +set_location_assignment PIN_AA14 -to fl_addr[1] +set_location_assignment PIN_U13 -to fl_addr[20] +set_location_assignment PIN_R13 -to fl_addr[21] +set_location_assignment PIN_Y16 -to fl_addr[2] +set_location_assignment PIN_R15 -to fl_addr[3] +set_location_assignment PIN_T15 -to fl_addr[4] +set_location_assignment PIN_U15 -to fl_addr[5] +set_location_assignment PIN_V15 -to fl_addr[6] +set_location_assignment PIN_W15 -to fl_addr[7] +set_location_assignment PIN_R14 -to fl_addr[8] +set_location_assignment PIN_Y13 -to fl_addr[9] +set_location_assignment PIN_AB16 -to fl_dq[0] +set_location_assignment PIN_AA16 -to fl_dq[1] +set_location_assignment PIN_AB17 -to fl_dq[2] +set_location_assignment PIN_AA17 -to fl_dq[3] +set_location_assignment PIN_AB18 -to fl_dq[4] +set_location_assignment PIN_AA18 -to fl_dq[5] +set_location_assignment PIN_AB19 -to fl_dq[6] +set_location_assignment PIN_AA19 -to fl_dq[7] +set_location_assignment PIN_AA15 -to fl_oe_n +set_location_assignment PIN_W14 -to fl_rst_n +set_location_assignment PIN_Y14 -to fl_we_n +set_location_assignment PIN_A13 -to gpio_0[0] +set_location_assignment PIN_A18 -to gpio_0[10] +set_location_assignment PIN_B18 -to gpio_0[11] +set_location_assignment PIN_A19 -to gpio_0[12] +set_location_assignment PIN_B19 -to gpio_0[13] +set_location_assignment PIN_A20 -to gpio_0[14] +set_location_assignment PIN_B20 -to gpio_0[15] +set_location_assignment PIN_C21 -to gpio_0[16] +set_location_assignment PIN_C22 -to gpio_0[17] +set_location_assignment PIN_D21 -to gpio_0[18] +set_location_assignment PIN_D22 -to gpio_0[19] +set_location_assignment PIN_B13 -to gpio_0[1] +set_location_assignment PIN_E21 -to gpio_0[20] +set_location_assignment PIN_E22 -to gpio_0[21] +set_location_assignment PIN_F21 -to gpio_0[22] +set_location_assignment PIN_F22 -to gpio_0[23] +set_location_assignment PIN_G21 -to gpio_0[24] +set_location_assignment PIN_G22 -to gpio_0[25] +set_location_assignment PIN_J21 -to gpio_0[26] +set_location_assignment PIN_J22 -to gpio_0[27] +set_location_assignment PIN_K21 -to gpio_0[28] +set_location_assignment PIN_K22 -to gpio_0[29] +set_location_assignment PIN_A14 -to gpio_0[2] +set_location_assignment PIN_J19 -to gpio_0[30] +set_location_assignment PIN_J20 -to gpio_0[31] +set_location_assignment PIN_J18 -to gpio_0[32] +set_location_assignment PIN_K20 -to gpio_0[33] +set_location_assignment PIN_L19 -to gpio_0[34] +set_location_assignment PIN_L18 -to gpio_0[35] +set_location_assignment PIN_B14 -to gpio_0[3] +set_location_assignment PIN_A15 -to gpio_0[4] +set_location_assignment PIN_B15 -to gpio_0[5] +set_location_assignment PIN_A16 -to gpio_0[6] +set_location_assignment PIN_B16 -to gpio_0[7] +set_location_assignment PIN_A17 -to gpio_0[8] +set_location_assignment PIN_B17 -to gpio_0[9] +set_location_assignment PIN_H12 -to gpio_1[0] +set_location_assignment PIN_C14 -to gpio_1[10] +set_location_assignment PIN_D14 -to gpio_1[11] +set_location_assignment PIN_D15 -to gpio_1[12] +set_location_assignment PIN_D16 -to gpio_1[13] +set_location_assignment PIN_C17 -to gpio_1[14] +set_location_assignment PIN_C18 -to gpio_1[15] +set_location_assignment PIN_C19 -to gpio_1[16] +set_location_assignment PIN_C20 -to gpio_1[17] +set_location_assignment PIN_D19 -to gpio_1[18] +set_location_assignment PIN_D20 -to gpio_1[19] +set_location_assignment PIN_H13 -to gpio_1[1] +set_location_assignment PIN_E20 -to gpio_1[20] +set_location_assignment PIN_F20 -to gpio_1[21] +set_location_assignment PIN_E19 -to gpio_1[22] +set_location_assignment PIN_E18 -to gpio_1[23] +set_location_assignment PIN_G20 -to gpio_1[24] +set_location_assignment PIN_G18 -to gpio_1[25] +set_location_assignment PIN_G17 -to gpio_1[26] +set_location_assignment PIN_H17 -to gpio_1[27] +set_location_assignment PIN_J15 -to gpio_1[28] +set_location_assignment PIN_H18 -to gpio_1[29] +set_location_assignment PIN_H14 -to gpio_1[2] +set_location_assignment PIN_N22 -to gpio_1[30] +set_location_assignment PIN_N21 -to gpio_1[31] +set_location_assignment PIN_P15 -to gpio_1[32] +set_location_assignment PIN_N15 -to gpio_1[33] +set_location_assignment PIN_P17 -to gpio_1[34] +set_location_assignment PIN_P18 -to gpio_1[35] +set_location_assignment PIN_G15 -to gpio_1[3] +set_location_assignment PIN_E14 -to gpio_1[4] +set_location_assignment PIN_E15 -to gpio_1[5] +set_location_assignment PIN_F15 -to gpio_1[6] +set_location_assignment PIN_G16 -to gpio_1[7] +set_location_assignment PIN_F12 -to gpio_1[8] +set_location_assignment PIN_F13 -to gpio_1[9] +set_location_assignment PIN_J2 -to hex0[0] +set_location_assignment PIN_J1 -to hex0[1] +set_location_assignment PIN_H2 -to hex0[2] +set_location_assignment PIN_H1 -to hex0[3] +set_location_assignment PIN_F2 -to hex0[4] +set_location_assignment PIN_F1 -to hex0[5] +set_location_assignment PIN_E2 -to hex0[6] +set_location_assignment PIN_E1 -to hex1[0] +set_location_assignment PIN_H6 -to hex1[1] +set_location_assignment PIN_H5 -to hex1[2] +set_location_assignment PIN_H4 -to hex1[3] +set_location_assignment PIN_G3 -to hex1[4] +set_location_assignment PIN_D2 -to hex1[5] +set_location_assignment PIN_D1 -to hex1[6] +set_location_assignment PIN_G5 -to hex2[0] +set_location_assignment PIN_G6 -to hex2[1] +set_location_assignment PIN_C2 -to hex2[2] +set_location_assignment PIN_C1 -to hex2[3] +set_location_assignment PIN_E3 -to hex2[4] +set_location_assignment PIN_E4 -to hex2[5] +set_location_assignment PIN_D3 -to hex2[6] +set_location_assignment PIN_F4 -to hex3[0] +set_location_assignment PIN_D5 -to hex3[1] +set_location_assignment PIN_D6 -to hex3[2] +set_location_assignment PIN_J4 -to hex3[3] +set_location_assignment PIN_L8 -to hex3[4] +set_location_assignment PIN_F3 -to hex3[5] +set_location_assignment PIN_D4 -to hex3[6] +set_location_assignment PIN_A3 -to i2c_sclk +set_location_assignment PIN_B3 -to i2c_sdat +set_location_assignment PIN_R22 -to key[0] +set_location_assignment PIN_R21 -to key[1] +set_location_assignment PIN_T22 -to key[2] +set_location_assignment PIN_T21 -to key[3] +set_location_assignment PIN_U22 -to ledg[0] +set_location_assignment PIN_U21 -to ledg[1] +set_location_assignment PIN_V22 -to ledg[2] +set_location_assignment PIN_V21 -to ledg[3] +set_location_assignment PIN_W22 -to ledg[4] +set_location_assignment PIN_W21 -to ledg[5] +set_location_assignment PIN_Y22 -to ledg[6] +set_location_assignment PIN_Y21 -to ledg[7] +set_location_assignment PIN_R20 -to ledr[0] +set_location_assignment PIN_R19 -to ledr[1] +set_location_assignment PIN_U19 -to ledr[2] +set_location_assignment PIN_Y19 -to ledr[3] +set_location_assignment PIN_T18 -to ledr[4] +set_location_assignment PIN_V19 -to ledr[5] +set_location_assignment PIN_Y18 -to ledr[6] +set_location_assignment PIN_U18 -to ledr[7] +set_location_assignment PIN_R18 -to ledr[8] +set_location_assignment PIN_R17 -to ledr[9] +set_location_assignment PIN_H15 -to ps2_clk +set_location_assignment PIN_J14 -to ps2_dat +set_location_assignment PIN_AA3 -to sram_addr[0] +set_location_assignment PIN_R11 -to sram_addr[10] +set_location_assignment PIN_T11 -to sram_addr[11] +set_location_assignment PIN_Y10 -to sram_addr[12] +set_location_assignment PIN_U10 -to sram_addr[13] +set_location_assignment PIN_R10 -to sram_addr[14] +set_location_assignment PIN_T7 -to sram_addr[15] +set_location_assignment PIN_Y6 -to sram_addr[16] +set_location_assignment PIN_Y5 -to sram_addr[17] +set_location_assignment PIN_AB3 -to sram_addr[1] +set_location_assignment PIN_AA4 -to sram_addr[2] +set_location_assignment PIN_AB4 -to sram_addr[3] +set_location_assignment PIN_AA5 -to sram_addr[4] +set_location_assignment PIN_AB10 -to sram_addr[5] +set_location_assignment PIN_AA11 -to sram_addr[6] +set_location_assignment PIN_AB11 -to sram_addr[7] +set_location_assignment PIN_V11 -to sram_addr[8] +set_location_assignment PIN_W11 -to sram_addr[9] +set_location_assignment PIN_AB5 -to sram_ce_n +set_location_assignment PIN_AA6 -to sram_dq[0] +set_location_assignment PIN_V9 -to sram_dq[10] +set_location_assignment PIN_U9 -to sram_dq[11] +set_location_assignment PIN_R9 -to sram_dq[12] +set_location_assignment PIN_W8 -to sram_dq[13] +set_location_assignment PIN_V8 -to sram_dq[14] +set_location_assignment PIN_U8 -to sram_dq[15] +set_location_assignment PIN_AB6 -to sram_dq[1] +set_location_assignment PIN_AA7 -to sram_dq[2] +set_location_assignment PIN_AB7 -to sram_dq[3] +set_location_assignment PIN_AA8 -to sram_dq[4] +set_location_assignment PIN_AB8 -to sram_dq[5] +set_location_assignment PIN_AA9 -to sram_dq[6] +set_location_assignment PIN_AB9 -to sram_dq[7] +set_location_assignment PIN_Y9 -to sram_dq[8] +set_location_assignment PIN_W9 -to sram_dq[9] +set_location_assignment PIN_Y7 -to sram_lb_n +set_location_assignment PIN_T8 -to sram_oe_n +set_location_assignment PIN_W7 -to sram_ub_n +set_location_assignment PIN_AA10 -to sram_we_n +set_location_assignment PIN_L22 -to sw[0] +set_location_assignment PIN_L21 -to sw[1] +set_location_assignment PIN_M22 -to sw[2] +set_location_assignment PIN_V12 -to sw[3] +set_location_assignment PIN_W12 -to sw[4] +set_location_assignment PIN_U12 -to sw[5] +set_location_assignment PIN_U11 -to sw[6] +set_location_assignment PIN_M2 -to sw[7] +set_location_assignment PIN_M1 -to sw[8] +set_location_assignment PIN_L2 -to sw[9] +set_location_assignment PIN_C7 -to tck +set_location_assignment PIN_D8 -to tcs +set_location_assignment PIN_E8 -to tdi +set_location_assignment PIN_D7 -to tdo +set_location_assignment PIN_F14 -to uart_rxd +set_location_assignment PIN_G12 -to uart_txd +set_location_assignment PIN_A9 -to vga_b[0] +set_location_assignment PIN_D11 -to vga_b[1] +set_location_assignment PIN_A10 -to vga_b[2] +set_location_assignment PIN_B10 -to vga_b[3] +set_location_assignment PIN_B8 -to vga_g[0] +set_location_assignment PIN_C10 -to vga_g[1] +set_location_assignment PIN_B9 -to vga_g[2] +set_location_assignment PIN_A8 -to vga_g[3] +set_location_assignment PIN_A11 -to vga_hs +set_location_assignment PIN_D9 -to vga_r[0] +set_location_assignment PIN_C9 -to vga_r[1] +set_location_assignment PIN_A7 -to vga_r[2] +set_location_assignment PIN_B7 -to vga_r[3] +set_location_assignment PIN_B11 -to vga_vs +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_COLOR 2147039 -section_id Top +set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" +set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" + +set_global_assignment -name VHDL_FILE ../VHDL/timer.vhd +set_global_assignment -name VHDL_FILE ../VHDL/ioport.vhd +set_global_assignment -name VHDL_FILE ../VHDL/trace.vhd +set_global_assignment -name VHDL_FILE ../VHDL/vdu8.vhd +set_global_assignment -name VHDL_FILE ../VHDL/keyboard.vhd +set_global_assignment -name VHDL_FILE ../VHDL/datram.vhd +set_global_assignment -name VHDL_FILE ../VHDL/cpu09.vhd +set_global_assignment -name VHDL_FILE ../VHDL/bit_funcs.vhd +set_global_assignment -name VHDL_FILE ../VHDL/ACIA_TX.vhd +set_global_assignment -name VHDL_FILE ../VHDL/ACIA_RX.vhd +set_global_assignment -name VHDL_FILE ../VHDL/ACIA_Clock.vhd +set_global_assignment -name VHDL_FILE ../VHDL/ACIA_6850.vhd +set_global_assignment -name VHDL_FILE wrappers.vhd +set_global_assignment -name VHDL_FILE System09.vhd \ No newline at end of file Index: System09_Terasic_DE1/platform_pkg.vhd =================================================================== --- System09_Terasic_DE1/platform_pkg.vhd (nonexistent) +++ System09_Terasic_DE1/platform_pkg.vhd (revision 105) @@ -0,0 +1,25 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +library work; +use work.project_pkg.all; +use work.target_pkg.all; + +package platform_pkg is + + -- + -- PACE constants which *MUST* be defined + -- + + --constant PACE_VIDEO_NUM_BITMAPS : natural := 0; + --constant PACE_VIDEO_NUM_TILEMAPS : natural := 1; + --constant PACE_VIDEO_NUM_SPRITES : natural := 0; + --constant PACE_VIDEO_H_SIZE : integer := 512; + --constant PACE_VIDEO_V_SIZE : integer := 192; + + -- + -- Platform-specific constants (optional) + -- + +end; Index: System09_Terasic_DE1/system09.qws =================================================================== --- System09_Terasic_DE1/system09.qws (nonexistent) +++ System09_Terasic_DE1/system09.qws (revision 105) @@ -0,0 +1,49 @@ +[ProjectWorkspace] +ptn_Child1=Frames +[ProjectWorkspace.Frames] +ptn_Child1=ChildFrames +[ProjectWorkspace.Frames.ChildFrames] +ptn_Child1=Document-0 +ptn_Child2=Document-1 +ptn_Child3=Document-2 +ptn_Child4=Document-3 +[ProjectWorkspace.Frames.ChildFrames.Document-0] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-0.ViewFrame-0] +DocPathName=project_pkg.vhd +DocumentCLSID={ca385d57-a4c7-11d1-a098-0020affa43f2} +IsChildFrameDetached=False +IsActiveChildFrame=False +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-0.ViewFrame-0.StateMap] +AFC_IN_REPORT=False +[ProjectWorkspace.Frames.ChildFrames.Document-1] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-1.ViewFrame-0] +DocPathName=System09.vhd +DocumentCLSID={ca385d57-a4c7-11d1-a098-0020affa43f2} +IsChildFrameDetached=False +IsActiveChildFrame=False +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-1.ViewFrame-0.StateMap] +AFC_IN_REPORT=False +[ProjectWorkspace.Frames.ChildFrames.Document-2] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-2.ViewFrame-0] +DocPathName=wrappers.vhd +DocumentCLSID={ca385d57-a4c7-11d1-a098-0020affa43f2} +IsChildFrameDetached=False +IsActiveChildFrame=False +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-2.ViewFrame-0.StateMap] +AFC_IN_REPORT=False +[ProjectWorkspace.Frames.ChildFrames.Document-3] +ptn_Child1=ViewFrame-0 +[ProjectWorkspace.Frames.ChildFrames.Document-3.ViewFrame-0] +DocPathName=../VHDL/keyboard.vhd +DocumentCLSID={ca385d57-a4c7-11d1-a098-0020affa43f2} +IsChildFrameDetached=False +IsActiveChildFrame=True +ptn_Child1=StateMap +[ProjectWorkspace.Frames.ChildFrames.Document-3.ViewFrame-0.StateMap] +AFC_IN_REPORT=False Index: System09_Terasic_DE1/project_pkg.vhd =================================================================== --- System09_Terasic_DE1/project_pkg.vhd (nonexistent) +++ System09_Terasic_DE1/project_pkg.vhd (revision 105) @@ -0,0 +1,39 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +library work; +use work.pace_pkg.all; +use work.video_controller_pkg.all; +use work.target_pkg.all; + +package project_pkg is + + -- + -- PACE constants which *MUST* be defined + -- + + constant PACE_HAS_PLL : boolean := true; + constant PACE_HAS_FLASH : boolean := false; + constant PACE_HAS_SRAM : boolean := true; + constant PACE_HAS_SDRAM : boolean := false; + constant PACE_HAS_SERIAL : boolean := false; + + constant PACE_JAMMA : PACEJamma_t := PACE_JAMMA_NONE; + + constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_NONE; + + -- Reference clock is 50MHz + constant PACE_CLK0_DIVIDE_BY : natural := 1; + constant PACE_CLK0_MULTIPLY_BY : natural := 1; -- 50*1/1 = 50MHz + constant PACE_CLK1_DIVIDE_BY : natural := 1; + constant PACE_CLK1_MULTIPLY_BY : natural := 1; -- 24MHz (not used) + + -- System09-specific constants + + --constant SYSTEM09_CPU_CLK_ENA_DIVIDE_BY : natural := 10; + --constant SYSTEM09_1MHz_CLK0_COUNTS : natural := 30; + + --constant USE_VIDEO_VBLANK_INTERRUPT : boolean := true; + +end; Index: System09_Terasic_DE1/pace.vhd =================================================================== --- System09_Terasic_DE1/pace.vhd (nonexistent) +++ System09_Terasic_DE1/pace.vhd (revision 105) @@ -0,0 +1,172 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.pace_pkg.all; +use work.sdram_pkg.all; +use work.video_controller_pkg.all; +use work.project_pkg.all; +use work.platform_pkg.all; + +entity PACE is + port + ( + -- clocks and resets + clk_i : in std_logic_vector(0 to 3); + reset_i : in std_logic; + + -- misc I/O + buttons_i : in from_BUTTONS_t; + switches_i : in from_SWITCHES_t; + leds_o : out to_LEDS_t; + + -- controller inputs + inputs_i : in from_INPUTS_t; + + -- external ROM/RAM + flash_i : in from_FLASH_t; + flash_o : out to_flash_t; + sram_i : in from_SRAM_t; + sram_o : out to_SRAM_t; + sdram_i : in from_SDRAM_t; + sdram_o : out to_SDRAM_t; + + -- video + video_i : in from_VIDEO_t; + video_o : out to_VIDEO_t; + + -- audio + audio_i : in from_AUDIO_t; + audio_o : out to_AUDIO_t; + + -- SPI (flash) + spi_i : in from_SPI_t; + spi_o : out to_SPI_t; + + -- serial + ser_i : in from_SERIAL_t; + ser_o : out to_SERIAL_t; + + -- general purpose I/O + gp_i : in from_GP_t; + gp_o : out to_GP_t + ); +end entity PACE; + +architecture SYN of PACE is + + alias clk_50M : std_logic is clk_i(0); + + signal reset_n : std_logic; + + signal ps2_kclk : std_logic; + signal ps2_kdat : std_logic; + + signal ram_data : std_logic_vector(7 downto 0); + signal ram_csn : std_logic; + signal ram_wrln : std_logic; + +begin + + reset_n <= not reset_i; + + ps2_kclk <= inputs_i.ps2_kclk; + ps2_kdat <= inputs_i.ps2_kdat; + + -- SRAM interface + sram_o.be <= std_logic_vector(to_unsigned(1, sram_o.be'length)); + sram_o.cs <= not ram_csn; + sram_o.oe <= ram_wrln; + sram_o.we <= not ram_wrln; + sram_o.d <= std_logic_vector(resize(unsigned(ram_data), sram_o.d'length)) + when ram_wrln = '0' else (others => 'Z'); + + -- map inputs + + video_o.clk <= clk_i(1); -- by convention + + system09_inst : entity work.My_System09 + port map + ( + SysClk => clk_50M, + Reset_n => reset_n, + LED => leds_o(0), + + -- Memory Interface signals + ram_csn => ram_csn, + ram_wrln => ram_wrln, + ram_wrun => open, + ram_addr => sram_o.a(16 downto 0), + ram_data_i(15 downto 8) => (others => '0'), + ram_data_i(7 downto 0) => sram_i.d(7 downto 0), + ram_data_o(15 downto 8) => open, + ram_data_o(7 downto 0) => ram_data, + + -- Stuff on the peripheral board + + -- PS/2 Keyboard + kb_clock => ps2_kclk, + kb_data => ps2_kdat, + + -- PS/2 Mouse interface +-- mouse_clock : in Std_Logic; +-- mouse_data : in Std_Logic; + + -- Uart Interface + rxbit => ser_i.rxd, + txbit => ser_o.txd, + rts_n => open, + cts_n => '0', + + -- CRTC output signals + v_drive => video_o.vsync, + h_drive => video_o.hsync, + blue_lo => video_o.rgb.b(8), + blue_hi => video_o.rgb.b(9), + green_lo => video_o.rgb.g(8), + green_hi => video_o.rgb.g(9), + red_lo => video_o.rgb.r(8), + red_hi => video_o.rgb.r(9), +-- buzzer : out std_logic; + + -- Compact Flash + cf_rst_n => open, + cf_cs0_n => open, + cf_cs1_n => open, + cf_rd_n => open, + cf_wr_n => open, + cf_cs16_n => open, + cf_a => open, + cf_d => open, + + -- Parallel I/O port + porta => open, + portb => open, + + -- CPU bus + bus_clk => open, + bus_reset => open, + bus_rw => open, + bus_cs => open, + bus_addr => open, + bus_data => open, + + -- timer + timer_out => open + ); + + flash_o <= NULL_TO_FLASH; + sram_o.a(23 downto 17) <= (others => '0'); + audio_o <= NULL_TO_AUDIO; + spi_o <= NULL_TO_SPI; + + -- unused video colour resolution + video_o.rgb.r(video_o.rgb.r'left-2 downto 0) <= (others => '0'); + video_o.rgb.g(video_o.rgb.g'left-2 downto 0) <= (others => '0'); + video_o.rgb.b(video_o.rgb.b'left-2 downto 0) <= (others => '0'); + + leds_o(leds_o'left downto 1) <= (others => '0'); + gp_o <= NULL_TO_GP; + +end SYN; Index: System09_Terasic_DE1/xv2bin.cpp =================================================================== --- System09_Terasic_DE1/xv2bin.cpp (nonexistent) +++ System09_Terasic_DE1/xv2bin.cpp (revision 105) @@ -0,0 +1,91 @@ +#include +#include +#include +#include + +//#define VERBOSE + +typedef unsigned char byte; + +static byte rom[2*1024]; + +void usage (void) +{ + printf ("xv2bin \n"); + exit (0); +} + +int ahtoi (char *buf, int len) +{ + int val = 0; + while (*buf && len--) + { + val <<= 4; + val += (isdigit(*buf) ? *buf-'0' : *buf-'A'+10); + buf++; + } + + return (val); +} + +int main (int argc, char *argv[]) +{ + if (--argc < 1) + usage (); + + FILE *fp = fopen (argv[1], "rt"); + if (!fp) + exit (0); + + int lines = 0; + + char buf[256]; + fgets (buf, 256, fp); + while (!feof (fp)) + { + while (1) + { + char *p, *q; + + if (!(p = strstr (buf, "=>"))) + break; + if (!(p = strchr (buf, '\"'))) + break; + p++; + if (!(q = strchr (p, '\"'))) + break; + if ((q-p) != 64) + break; + + for (int i=0; i<(64/2); i++) + { + byte b = ahtoi(p, 2); + #ifdef VERBOSE + printf ("%02X ", b); + #endif + rom[lines*(64/2)+(64/2)-1-i] = b; + p += 2; + } + #ifdef VERBOSE + printf ("\n"); + #endif + + //printf (buf); + lines++; + + break; + } + + fgets (buf, 256, fp); + } + + fclose (fp); + + fp = fopen ("xv2bin.out", "wb"); + fwrite (rom, 2*1024, 1, fp); + fclose (fp); + + printf ("lines = %d\n", lines); + printf ("bytes = %d\n", lines*(64/2)); + printf ("Done!\n"); +} Index: System09_Terasic_DE1/readme.txt =================================================================== --- System09_Terasic_DE1/readme.txt (nonexistent) +++ System09_Terasic_DE1/readme.txt (revision 105) @@ -0,0 +1,3 @@ +unzip the system09 archive into a subdirectory here named "johnkent" + +system last tested with 11 July 2006 version of B5_X300 archive. Index: System09_Terasic_DE1/System09.vhd =================================================================== --- System09_Terasic_DE1/System09.vhd (nonexistent) +++ System09_Terasic_DE1/System09.vhd (revision 105) @@ -0,0 +1,939 @@ +--===========================================================================---- +-- +-- S Y N T H E Z I A B L E System09 - SOC. +-- +-- www.OpenCores.Org - September 2003 +-- This core adheres to the GNU public license +-- +-- File name : System09.vhd +-- +-- Purpose : Top level file for 6809 compatible system on a chip +-- Designed with Xilinx XC2S300e Spartan 2+ FPGA. +-- Implemented With BurchED B5-X300 FPGA board, +-- B5-SRAM module, B5-CF module and B5-FPGA-CPU-IO module +-- +-- Dependencies : ieee.Std_Logic_1164 +-- ieee.std_logic_unsigned +-- ieee.std_logic_arith +-- ieee.numeric_std +-- +-- Uses : +-- cpu09 (cpu09.vhd) CPU core +-- mon_rom (kbug_rom_b4.vhd) Monitor ROM +-- dat_ram (datram.vhd) Dynamic Address Translation +-- miniuart (minitUART3.vhd) ACIA / MiniUART +-- (rxunit3.vhd) +-- (tx_unit3.vhd) +-- keyboard (keyboard.vhd) PS/2 Keyboard Interface +-- vdu (vdu8.vhd) 80 x 25 Video Display +-- timer (timer.vhd) Timer module +-- trap (trap.vhd) Bus Trap interrupt +-- ioport (ioport.vhd) Parallel I/O port. +-- +-- Author : John E. Kent +-- dilbert57@opencores.org +-- +--===========================================================================---- +-- +-- Revision History: +--===========================================================================-- +-- Version 0.1 - 20 March 2003 +-- Version 0.2 - 30 March 2003 +-- Version 0.3 - 29 April 2003 +-- Version 0.4 - 29 June 2003 +-- +-- Version 0.5 - 19 July 2003 +-- prints out "Hello World" +-- +-- Version 0.6 - 5 September 2003 +-- Runs SBUG +-- +-- Version 1.0- 6 Sep 2003 - John Kent +-- Inverted SysClk +-- 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 1.4 - 21 Nov 2004 - John Kent +-- Changes to make compatible with Spartan3 starter kit version +-- Designed to run with a 50MHz clock input. +-- the VDU divides 50 MHz to generate a +-- 25 MHz VDU Pixel Clock and a 12.5 MHz CPU clock +-- Changed Monitor ROM signals to make it look like +-- a standard 2K memory block +-- Re-assigned I/O port assignments so it is possible to run KBUG9 +-- $E000 - ACIA +-- $E010 - Keyboard +-- $E020 - VDU +-- $E030 - Compact Flash +-- $E040 - Timer +-- $E050 - Bus trap +-- $E060 - Parallel I/O +-- +--===========================================================================-- +library ieee; + use ieee.std_logic_1164.all; + use IEEE.STD_LOGIC_UNSIGNED.ALL; + use ieee.numeric_std.all; + +entity My_System09 is + port( + SysClk : in Std_Logic; -- System Clock input + Reset_n : in Std_logic; -- Master Reset input (active low) + LED : out std_logic; -- Diagnostic LED Flasher + + -- Memory Interface signals + ram_csn : out Std_Logic; + ram_wrln : out Std_Logic; + ram_wrun : out Std_Logic; + ram_addr : out Std_Logic_Vector(16 downto 0); + ram_data_i : in std_logic_vector(15 downto 0); + ram_data_o : out std_logic_vector(15 downto 0); + + -- Stuff on the peripheral board + + -- PS/2 Keyboard + kb_clock : inout Std_logic; + kb_data : inout Std_Logic; + + -- PS/2 Mouse interface +-- mouse_clock : in Std_Logic; +-- mouse_data : in Std_Logic; + + -- Uart Interface + rxbit : in Std_Logic; + txbit : out Std_Logic; + rts_n : out Std_Logic; + cts_n : in Std_Logic; + + -- CRTC output signals + v_drive : out Std_Logic; + h_drive : out Std_Logic; + blue_lo : out std_logic; + blue_hi : out std_logic; + green_lo : out std_logic; + green_hi : out std_logic; + red_lo : out std_logic; + red_hi : out std_logic; +-- buzzer : out std_logic; + +-- Compact Flash + cf_rst_n : out std_logic; + cf_cs0_n : out std_logic; + cf_cs1_n : out std_logic; + cf_rd_n : out std_logic; + cf_wr_n : out std_logic; + cf_cs16_n : out std_logic; + cf_a : out std_logic_vector(2 downto 0); + cf_d : inout std_logic_vector(15 downto 0); + +-- Parallel I/O port + porta : inout std_logic_vector(7 downto 0); + portb : inout std_logic_vector(7 downto 0); + +-- CPU bus + bus_clk : out std_logic; + bus_reset : out std_logic; + bus_rw : out std_logic; + bus_cs : out std_logic; + bus_addr : out std_logic_vector(15 downto 0); + bus_data : inout std_logic_vector(7 downto 0); + +-- timer + timer_out : out std_logic + ); +end My_System09; + +------------------------------------------------------------------------------- +-- Architecture for System09 +------------------------------------------------------------------------------- +architecture my_computer of My_System09 is + ----------------------------------------------------------------------------- + -- Signals + ----------------------------------------------------------------------------- + -- Monitor ROM + signal rom_data_out : Std_Logic_Vector(7 downto 0); + signal rom_cs : std_logic; + + -- UART Interface signals + signal uart_data_out : Std_Logic_Vector(7 downto 0); + signal uart_cs : Std_Logic; + signal uart_irq : Std_Logic; + signal baudclk : Std_Logic; + signal DCD_n : Std_Logic; + + -- timer + signal timer_data_out : std_logic_vector(7 downto 0); + signal timer_cs : std_logic; + signal timer_irq : std_logic; + + -- trap + signal trap_cs : std_logic; + signal trap_data_out : std_logic_vector(7 downto 0); + signal trap_irq : std_logic; + + -- Parallel I/O port + signal ioport_data_out : std_logic_vector(7 downto 0); + signal ioport_cs : std_logic; + + -- compact flash port + signal cf_data_out : std_logic_vector(7 downto 0); + signal cf_cs : std_logic; + signal cf_rd : std_logic; + signal cf_wr : std_logic; + + -- keyboard port + signal keyboard_data_out : std_logic_vector(7 downto 0); + signal keyboard_cs : std_logic; + signal keyboard_irq : std_logic; + + -- RAM + signal ram_cs : std_logic; -- memory chip select + signal ram_wrl : std_logic; -- memory write lower + signal ram_wru : std_logic; -- memory write upper + signal ram_data_out : std_logic_vector(7 downto 0); + + -- CPU Interface signals + signal cpu_reset : Std_Logic; + signal cpu_clk : Std_Logic; + signal cpu_rw : std_logic; + signal cpu_vma : std_logic; + signal cpu_halt : std_logic; + signal cpu_hold : std_logic; + signal cpu_firq : std_logic; + signal cpu_irq : std_logic; + signal cpu_nmi : std_logic; + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_data_in : std_logic_vector(7 downto 0); + signal cpu_data_out : std_logic_vector(7 downto 0); + + -- Dynamic address translation + signal dat_cs : std_logic; + signal dat_addr : std_logic_vector(7 downto 0); + + -- Video Display Unit + signal vdu_cs : std_logic; + signal vdu_data_out : std_logic_vector(7 downto 0); + signal vga_red : std_logic; + signal vga_green : std_logic; + signal vga_blue : std_logic; + + -- Flashing Led test signals + signal countL : std_logic_vector(23 downto 0); + signal BaudCount : std_logic_vector(5 downto 0); + +----------------------------------------------------------------- +-- +-- CPU09 CPU core +-- +----------------------------------------------------------------- + +component cpu09 + port ( + clk: in std_logic; + rst: in std_logic; + rw: out std_logic; -- Asynchronous memory interface + vma: out std_logic; + address: out std_logic_vector(15 downto 0); + data_in: in std_logic_vector(7 downto 0); + data_out: out std_logic_vector(7 downto 0); + halt: in std_logic; + hold: in std_logic; + irq: in std_logic; + nmi: in std_logic; + firq: in std_logic + ); +end component; + + +---------------------------------------- +-- +-- SBUG Block RAM Monitor ROM +-- +---------------------------------------- +component mon_rom + port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (10 downto 0); + wdata : in std_logic_vector (7 downto 0); + rdata : out std_logic_vector (7 downto 0) + ); +end component; + + +---------------------------------------- +-- +-- Dynamic Address Translation Registers +-- +---------------------------------------- +component dat_ram + port ( + clk: in std_logic; + rst: in std_logic; + cs: in std_logic; + rw: in std_logic; + addr_lo: in std_logic_vector(3 downto 0); + addr_hi: in std_logic_vector(3 downto 0); + data_in: in std_logic_vector(7 downto 0); + data_out: out std_logic_vector(7 downto 0) + ); +end component; + +----------------------------------------------------------------- +-- +-- Open Cores Mini UART +-- +----------------------------------------------------------------- + +component miniUART + port ( + clk : in Std_Logic; -- System Clock + rst : in Std_Logic; -- Reset input (active high) + cs : in Std_Logic; -- miniUART Chip Select + rw : in Std_Logic; -- Read / Not Write + irq : out Std_Logic; -- Interrupt + Addr : in Std_Logic; -- Register Select + DataIn : in Std_Logic_Vector(7 downto 0); -- Data Bus In + DataOut : out Std_Logic_Vector(7 downto 0); -- Data Bus Out + 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; + + +---------------------------------------- +-- +-- Timer module +-- +---------------------------------------- + +component timer + port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : 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; + timer_in : in std_logic; + timer_out : out std_logic + ); +end component; + +------------------------------------------------------------ +-- +-- Bus Trap logic +-- +------------------------------------------------------------ + +component trap + port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + vma : in std_logic; + addr : in std_logic_vector(15 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + irq : out std_logic + ); +end component; + +---------------------------------------- +-- +-- Dual 8 bit Parallel I/O module +-- +---------------------------------------- +component ioport + port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector(1 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + porta_io : inout std_logic_vector(7 downto 0); + portb_io : inout std_logic_vector(7 downto 0) + ); +end component; + +---------------------------------------- +-- +-- PS/2 Keyboard +-- +---------------------------------------- + +component keyboard + port( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : 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 vdu + port( + -- control register interface + vdu_clk_in : in std_logic; + cpu_clk_out : out std_logic; + vdu_rst : in std_logic; + vdu_cs : in std_logic; + vdu_rw : in std_logic; + vdu_addr : in std_logic_vector(2 downto 0); + vdu_data_in : in std_logic_vector(7 downto 0); + vdu_data_out : out std_logic_vector(7 downto 0); + + -- vga port connections + 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; + + +-- component BUFG +-- port ( +-- i: in std_logic; +-- o: out std_logic +-- ); +-- end component; + +begin + ----------------------------------------------------------------------------- + -- Instantiation of internal components + ----------------------------------------------------------------------------- + +---------------------------------------- +-- +-- CPU09 CPU Core +-- +---------------------------------------- +my_cpu : cpu09 port map ( + clk => cpu_clk, + rst => cpu_reset, + rw => cpu_rw, + vma => cpu_vma, + address => cpu_addr(15 downto 0), + data_in => cpu_data_in, + data_out => cpu_data_out, + halt => cpu_halt, + hold => cpu_hold, + irq => cpu_irq, + nmi => cpu_nmi, + firq => cpu_firq + ); + +---------------------------------------- +-- +-- SBUG / KBUG Monitor ROM +-- +---------------------------------------- +my_rom : mon_rom port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => rom_cs, + rw => '1', + addr => cpu_addr(10 downto 0), + wdata => cpu_data_out, + rdata => rom_data_out + ); + +---------------------------------------- +-- +-- Dynamic Address Translation Registers +-- +---------------------------------------- +my_dat : dat_ram port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => dat_cs, + rw => cpu_rw, + addr_hi => cpu_addr(15 downto 12), + addr_lo => cpu_addr(3 downto 0), + data_in => cpu_data_out, + data_out => dat_addr(7 downto 0) + ); + +---------------------------------------- +-- +-- ACIA/UART Serial interface +-- +---------------------------------------- +my_uart : miniUART port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => uart_cs, + rw => cpu_rw, + irq => uart_irq, + Addr => cpu_addr(0), + Datain => cpu_data_out, + DataOut => uart_data_out, + RxC => baudclk, + TxC => baudclk, + RxD => rxbit, + TxD => txbit, + DCD_n => dcd_n, + CTS_n => cts_n, + RTS_n => rts_n + ); + +---------------------------------------- +-- +-- PS/2 Keyboard Interface +-- +---------------------------------------- +my_keyboard : keyboard port map( + clk => cpu_clk, + rst => cpu_reset, + cs => keyboard_cs, + rw => cpu_rw, + addr => cpu_addr(0), + data_in => cpu_data_out(7 downto 0), + data_out => keyboard_data_out(7 downto 0), + irq => keyboard_irq, + kbd_clk => kb_clock, + kbd_data => kb_data + ); + +---------------------------------------- +-- +-- Video Display Unit instantiation +-- +---------------------------------------- +my_vdu : vdu port map( + + -- Control Registers + vdu_clk_in => SysClk, -- 50MHz System Clock in + cpu_clk_out => cpu_clk, -- 12.5 MHz CPU clock out + vdu_rst => cpu_reset, + vdu_cs => vdu_cs, + vdu_rw => cpu_rw, + vdu_addr => cpu_addr(2 downto 0), + vdu_data_in => cpu_data_out, + vdu_data_out => vdu_data_out, + + -- vga port connections + vga_red_o => vga_red, + vga_green_o => vga_green, + vga_blue_o => vga_blue, + vga_hsync_o => h_drive, + vga_vsync_o => v_drive + ); + +---------------------------------------- +-- +-- Timer Module +-- +---------------------------------------- +my_timer : timer port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => timer_cs, + rw => cpu_rw, + addr => cpu_addr(0), + data_in => cpu_data_out, + data_out => timer_data_out, + irq => timer_irq, + timer_in => CountL(5), + timer_out => timer_out + ); + +---------------------------------------- +-- +-- Bus Trap Interrupt logic +-- +---------------------------------------- +my_trap : trap port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => trap_cs, + rw => cpu_rw, + vma => cpu_vma, + addr => cpu_addr, + data_in => cpu_data_out, + data_out => trap_data_out, + irq => trap_irq + ); + +---------------------------------------- +-- +-- Parallel I/O Port +-- +---------------------------------------- +my_ioport : ioport port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => ioport_cs, + rw => cpu_rw, + addr => cpu_addr(1 downto 0), + data_in => cpu_data_out, + data_out => ioport_data_out, + porta_io => porta, + portb_io => portb + ); + + +-- clk_buffer : BUFG port map( +-- i => e_clk, +-- o => cpu_clk +-- ); + +---------------------------------------------------------------------- +-- +-- Process to decode memory map +-- +---------------------------------------------------------------------- + +mem_decode: process( cpu_clk, Reset_n, + cpu_addr, cpu_rw, cpu_vma, + rom_data_out, + ram_data_out, + cf_data_out, + timer_data_out, + trap_data_out, + ioport_data_out, + uart_data_out, + keyboard_data_out, + vdu_data_out, + bus_data ) +begin + case cpu_addr(15 downto 11) is + -- + -- SBUG/KBUG Monitor ROM $F800 - $FFFF + -- + when "11111" => -- $F800 - $FFFF + cpu_data_in <= rom_data_out; + rom_cs <= cpu_vma; -- read ROM + dat_cs <= cpu_vma; -- write DAT + ram_cs <= '0'; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- IO Devices $E000 - $E7FF + -- + when "11100" => -- $E000 - $E7FF + rom_cs <= '0'; + dat_cs <= '0'; + ram_cs <= '0'; + case cpu_addr(7 downto 4) is + -- + -- UART / ACIA $E000 + -- + when "0000" => -- $E000 + cpu_data_in <= uart_data_out; + uart_cs <= cpu_vma; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- Keyboard port $E010 - $E01F + -- + when "0001" => -- $E010 + cpu_data_in <= keyboard_data_out; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= cpu_vma; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- VDU port $E020 - $E02F + -- + when "0010" => -- $E020 + cpu_data_in <= vdu_data_out; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= cpu_vma; + bus_cs <= '0'; + + + -- + -- Compact Flash $E030 - $E03F + -- + when "0011" => -- $E030 + cpu_data_in <= cf_data_out; + uart_cs <= '0'; + cf_cs <= cpu_vma; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- Timer $E040 - $E04F + -- + when "0100" => -- $E040 + cpu_data_in <= timer_data_out; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= cpu_vma; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- Bus Trap Logic $E050 - $E05F + -- + when "0101" => -- $E050 + cpu_data_in <= trap_data_out; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= cpu_vma; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + -- + -- I/O port $E060 - $E06F + -- + when "0110" => -- $E060 + cpu_data_in <= ioport_data_out; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= cpu_vma; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + + when others => -- $E070 to $E7FF + cpu_data_in <= bus_data; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= cpu_vma; + end case; + -- + -- Everything else is RAM + -- + when others => + cpu_data_in <= ram_data_out; + rom_cs <= '0'; + dat_cs <= '0'; + ram_cs <= cpu_vma; + uart_cs <= '0'; + cf_cs <= '0'; + timer_cs <= '0'; + trap_cs <= '0'; + ioport_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + bus_cs <= '0'; + end case; +end process; + + +-- +-- B5-SRAM Control +-- Processes to read and write memory based on bus signals +-- +ram_process: process( cpu_clk, Reset_n, + cpu_addr, cpu_rw, cpu_vma, cpu_data_out, + dat_addr, + ram_cs, ram_wrl, ram_wru, ram_data_out ) +begin + ram_csn <= not( ram_cs and Reset_n ); + -- use ram_wrl *ONLY* for 8-bit SRAM read/write + --ram_wrl <= (not cpu_addr(0)) and (not cpu_rw) and cpu_clk; + ram_wrl <= (not cpu_rw) and cpu_clk; + ram_wrln <= not (ram_wrl); + --ram_wru <= cpu_addr(0) and (not cpu_rw) and cpu_clk; + --ram_wrun <= not (ram_wru); + ram_wrun <= '1'; + --ram_addr(16 downto 11) <= dat_addr(5 downto 0); + --ram_addr(10 downto 0) <= cpu_addr(11 downto 1); + ram_addr(16 downto 12) <= dat_addr(4 downto 0); + ram_addr(11 downto 0) <= cpu_addr(11 downto 0); + + --if ram_wrl = '1' then + ram_data_o <= std_logic_vector(resize(unsigned(cpu_data_out), ram_data_o'length)); + --else + -- ram_data(7 downto 0) <= "ZZZZZZZZ"; + --end if; + + --if ram_wru = '1' then + -- ram_data(15 downto 8) <= cpu_data_out; + --else + -- ram_data(15 downto 8) <= "ZZZZZZZZ"; + -- end if; + + --if cpu_addr(0) = '1' then + -- ram_data_out <= ram_data(15 downto 8); + --else + ram_data_out <= ram_data_i(7 downto 0); + --end if; +end process; + +-- +-- Compact Flash Control +-- +compact_flash: process( cpu_clk, Reset_n, + cpu_addr, cpu_rw, cpu_vma, cpu_data_out, + cf_cs, cf_rd, cf_wr, cf_data_out ) +begin + cf_rst_n <= Reset_n; + cf_cs0_n <= not( cf_cs ) or cpu_addr(3); + cf_cs1_n <= not( cf_cs and cpu_addr(3)); + cf_cs16_n <= '1'; + cf_wr <= cf_cs and (not cpu_rw); + cf_rd <= cf_cs and cpu_rw; + cf_wr_n <= not cf_wr; + cf_rd_n <= not cf_rd; + cf_a <= cpu_addr(2 downto 0); + if cf_wr = '1' then + cf_d(7 downto 0) <= cpu_data_out; + else + cf_d(7 downto 0) <= "ZZZZZZZZ"; + end if; + cf_data_out <= cf_d(7 downto 0); + cf_d(15 downto 8) <= "ZZZZZZZZ"; +end process; + +-- +-- Interrupts and other bus control signals +-- +interrupts : process( Reset_n, uart_irq, + trap_irq, timer_irq, keyboard_irq + ) +begin + cpu_reset <= not Reset_n; -- CPU reset is active high + cpu_irq <= uart_irq or keyboard_irq; + cpu_nmi <= trap_irq; + cpu_firq <= timer_irq; + cpu_halt <= '0'; + cpu_hold <= '0'; +end process; + +-- +-- CPU bus signals +-- +my_bus : process( cpu_clk, cpu_reset, cpu_rw, cpu_addr, cpu_data_out ) +begin + bus_clk <= cpu_clk; + bus_reset <= cpu_reset; + bus_rw <= cpu_rw; + bus_addr <= cpu_addr; + if( cpu_rw = '1' ) then + bus_data <= "ZZZZZZZZ"; + else + bus_data <= cpu_data_out; + end if; +end process; + + -- + -- flash led to indicate code is working + -- +increment: process (SysClk, CountL ) +begin + if(SysClk'event and SysClk = '0') then + countL <= countL + 1; + end if; + LED <= countL(23); + dcd_n <= '0'; +end process; + +-- +-- Baud Rate Clock Divider +-- +-- 25MHz / 27 = 926,000 KHz = 57,870Bd * 16 +-- 50MHz / 54 = 926,000 KHz = 57,870Bd * 16 +-- +my_clock: process( SysClk ) +begin + if(SysClk'event and SysClk = '0') then + if( BaudCount = 53 ) then + baudclk <= '0'; + BaudCount <= "000000"; + else + if( BaudCount = 26 ) then + baudclk <='1'; + else + baudclk <=baudclk; + end if; + BaudCount <= BaudCount + 1; + end if; + end if; +end process; + +-- +-- Assign VDU VGA colour output +-- only 8 colours are handled. +-- +my_vga_out: process( vga_red, vga_green, vga_blue ) +begin + red_lo <= vga_red; + red_hi <= vga_red; + green_lo <= vga_green; + green_hi <= vga_green; + blue_lo <= vga_blue; + blue_hi <= vga_blue; +end process; + +end my_computer; --===================== End of architecture =======================-- + Index: System09_Trenz_TE0141/maisforth_rom6.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom6.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom6.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"0EC9F2C7A7C4E0C937C902BCC265CD00C896CCE6C728CDBAE699E389C65BC5B4", + INIT_01 => x"8000AFC289C6D4C3FFC0BD45564F4D455206068EEE7EC0A3EF30E637C9F1BCC2", + INIT_02 => x"52454B52414D4F4408042EF00BF06EC27BCFB0CFB4C6E6C7D4C34DE8AFC037C9", + INIT_03 => x"A2D3AEC9E0C9F2C75BC52D00CBC2E6C7B4C626CCA3EF95C6E6C7D5C0BDEEC0BD", + INIT_04 => x"C5A7C4FDCCE6C7F0C3E8CC60F066E7A7C4FFC0BD52454B52414D0602B4ED7EC0", + INIT_05 => x"D1C695C6BFC4FFC0BD57454E4104063FEF7EC0A2D3DACCE6C7AEC9E0C9F0C35B", + INIT_06 => x"C9E6C7F5F07BC2C9C737C9F2C86FE330E637C9E0BCC2ABC889C6E6C7D9D3D6C5", + INIT_07 => x"EE7EC08CF02CC6BFC4DDC670C0F5F07BC2C9C737C9D4C860F0AFC26CCC95C6AE", + INIT_08 => x"95C682C44300DCC20008AFC24300CBC200F8AFC2FFC0BD4D454D49482106045E", + INIT_09 => x"0602C1E97EC014F17BC2E2C860C92CC682C4F2C795C682C42CC682C460C9E6C7", + INIT_0a => x"1F4F444C4F43040695ED7EC0E0C9A7C4E0C920BCC282C4FFC0BD444553554E55", + INIT_0b => x"CBC200BCC247EF09F19ACB65BCC200BCC23AC5FFC0BDFE01CE06357E01CE108B", + INIT_0c => x"7279706F431F8DD559CF54E100BCC259CFE4C17FBCC24EEE12EFDBC71DD52F00", + INIT_0d => x"531D8DD559CF67672D6874726F46204343482035303032202963282074686769", + INIT_0e => x"82C459CF72656E6265754820736E61482079622074726F702039306D65747379", + INIT_0f => x"442806049BEFFAE559CF59CF4D415220426B20078DD53CD209BCC288C90ABCC2", + INIT_10 => x"D4F2C7CCC5D3CDFFC0BD3E53454F440503FDF17EC03DCDDDC6FFC0BD3E53454F", + INIT_11 => x"BCC266E7FFC0BD45444F43040215ED7EC0D5E36ADBD5C0AFC204F2E6D4BFCD95", + INIT_12 => x"CCC5D3CDFFC0BD45444F433B05033FF17EC0BFCD05BCC2BFC52EE8BEEDDACCFD", + INIT_13 => x"C016E9FFC0BD3A52454F4405062BED7EC0F4D4BEED04F2E6D4BFCD05BCC295D4", + INIT_14 => x"C0DACC03BCC239F2FFC0BD45444F4352454F44080642EE7EC06ADBD5C0AFC2EB", + INIT_15 => x"EE4DE8BFF27BC295D405BCC2D3CDFFC0BD45444F432D444E450808B2F07EC0EB", + INIT_16 => x"414E45060673EF7EC02CC6AEC9FFC0BD524F5443455621070634F27EC0F6ED25", + INIT_17 => x"3BBCC2FFC0BD454C424153494407060CEF7EC01DC600C87EBCC2FFC0BD454C42", + INIT_18 => x"EF7EC02CC6BFC437C9E2E895C6BFC4FFC0BD594E414D0406A6F27EC01DC600C8", + INIT_19 => x"43C9E2E8D4C80BC73700CBC200BCC2D1C6AEC937C4FFC0BD53454D49540506F1", + INIT_1a => x"5344524F570B0409F37EC02CC6BFC400BCC23700CBC2DDC67EC02BC748F37BC2", + INIT_1b => x"C2D4C876CD54C783F37BC2E6C795C696CC71F36EC200C8FFC0BD52455050494B", + INIT_1c => x"C7D7C924BCC25CC43CC61DD5FFC0BD5344524F5728060422F37EC042C86FF37B", + INIT_1d => x"88C370C0A1C65CC488C3C8F307C354C79ACB20BCC2F2C703BCC2E0C920BCC2E6", + INIT_1e => x"7BC295C688C304F407C375C7FFBCC2CCC5D1C600BCC259CFB6F362C3B3C52CC6", + INIT_1f => x"B3C588C3E0C93AC595C688C346C7FEF37BC20EC9E0C93AC595C688C3F2C7FEF3", + INIT_20 => x"C03CD200BCC2ECE0DDC659CF46C7DBC721F47BC243C9E2E846CE42C8DAF362C3", + INIT_21 => x"BCC2E6C7B4C6E6C795C6E6C7D1C6AEC9DDC659CF2EF47BC20EC968C43CBCC27E", + INIT_22 => x"C65CC496CC7BCFB0CF48CF7EBCC237C91FBCC255F46EC2D6C54DF47BC228C920", + INIT_23 => x"F366F3AFC289C6F0C3FFC0BD5344524F57050053F2CFF36EC22CC600C870C0A1", + INIT_24 => x"EBEB7EC091F370C0AFC295C6AFC2FFC0BD5344524F574C4C410806DCF27EC091", + INIT_25 => x"44412E0404A1F47EC01DC65CC442C873D146CEFF00AFC2FFC0BD21522E580404", + INIT_26 => x"3CD289C65CC4FFC0BD455459422E050457F07EC026D2C4C989C65CC4FFC0BD52", + INIT_27 => x"74F27EC048CF6DC8D6C537C928C97FBCC2E6C7FFC0BD4353412E0404C9EE7EC0", + INIT_28 => x"C921F57BC228C906BCC2E6C75DC810BCC295C6CCC4A6F4FFC0BD504D55440402", + INIT_29 => x"D7C988C3E6C74AF507C300BCC20BC77BCFC1F459CFE6C700C8D7C9F2C7D1C6C4", + INIT_2a => x"D557F53DC3EAF4B4C65FF507C300BCC20BC77C018DD53AF53DC37BCFD7F489C6", + INIT_2b => x"0504C8F27EC02BC746C729F57BC243C9E2E80EC90BC7E0C900C854C7207C028D", + INIT_2c => x"E6C7B9C900C837C989CDA7C43AC5F2C70EC9F2C70003AFC2FFC0BD3F3F414643", + INIT_2d => x"C789C6F2C7DDC6B9C9D1C601BCC2AFC0E6C737C937C989CD7FBCC221BCC289C6", + INIT_2e => x"C9F2C7D6C5AEC9E5F57BC289CD7FBCC221BCC27EC0F2C846C7CDF57BC2D4C854", + INIT_2f => x"AFC0E6C737C985F5E6C7FFC0BD3F414643040478ED7EC0CCC546C7B5F57BC237", + INIT_30 => x"B9C922F698C2E6C795C696CCAFC0E6C737C9ABC828C976CDF2C789C6A7C328CD", + INIT_31 => x"F2F27EC0CCC5DBC77EC085F513CD38F67BC289CD20BCC200BCC289C6E6C77EC0", + INIT_32 => x"CFB4C628CDB0CF18C7EAC620202D2D2020067DD5E6C7FFC0BD444145482E0504", + INIT_33 => x"CD2072656F64058DD5E6C785F67BC2F3F5E6C76CCC95C6AEC9E6C7B0CF18C7B0", + INIT_34 => x"2E0604BCF47EC064726F5720058DD5CEEE76CD28CDB0CFFBC6DBC7B0CFB4C628", + INIT_35 => x"B0CFB4C628CD8ECFD7C904BCC2C4C9C4C937C901BCC2F2C7FFC0BD4E454B4F54", + INIT_36 => x"F4E6C7B4C6E6C7203A028DD5C1F4E6C759CFFFC0BD4D4F43454405049EF67EC0", + INIT_37 => x"01BCC2F2C7D6C5C1F495C6E6C77BCFEAF47BCFD7F4E6C789C67BCFEAF47BCFD7", + INIT_38 => x"C77EC0AEC947F6E6C71FF77BC2F3F5E6C77BCF48CFD7C90EBCC20BF77BC237C9", + INIT_39 => x"C992C0F3F595C6E6C792C0F3F5E6C7AEC9A5F695C6E6C743F77BC2F3F595C6E6", + INIT_3a => x"7EC0DBC754F77BC2E2E8CBF6A6F4FFC0BD4545534D040686F47EC0AEC97EC0AE", + INIT_3b => x"BDEEC0BD4553414246464F4408048CF27EC04FF7C9E6FFC0BD45455303026EF4", + INIT_3c => x"30E62CC6CCC4DDC6F2D290E5AFC27EE2D6C52CC6CCC489C6D1C695C6CCC4D5C0", + INIT_3d => x"BD58480201D1F47EC06EE8FDCC7CF766E7FFC0BD455341424646060401F57EC0", + INIT_3e => x"4E4548545B06017FF5027FF7BD4E420201C6F70A7FF7BD4D4402018AF3107FF7", + INIT_3f => x"DBC700F86EC2FFC0BD5D4C414E4F495449444E4F435B0D0463F77EC0FFC0BD5D", Index: System09_Trenz_TE0141/maisforth_rom7.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom7.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom7.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"54C74AD354C7B7D201BCC2B4C6FEF77BC2D4C85BBCC289C6AEC9E6C77EE2D6C5", + INIT_01 => x"5D45534C45057DD554C7FAF76EC2AFC046C736F898C273D35D4E454854057DD5", + INIT_02 => x"46C768F898C273D35D4649037DD554C7FAF76EC2AFC0C9C746C750F898C273D3", + INIT_03 => x"F7FAF76EC2AEC9E6C77BF898C273D35D4441454841067DD5FAF76EC2AEC9E6C7", + INIT_04 => x"C0BD5D44414548415B0701EEF57EC0F7F700BCC2FFC0BD5D45534C455B0601DA", + INIT_05 => x"C2FFC0BD534D020202F17EC089F892C0FFC0BD5D46495B040185F07EC089F8FF", + INIT_06 => x"0188A8F813D17EC0C6F83DC3D0F83DC3D4F807C300BCC212BCC2D8F825C300BC", + INIT_07 => x"B4C6D9D3D6C500BCC2FFC0BD4745520309BCF77EC03300CBC200BCC2FFC0BD23", + INIT_08 => x"F8E6D4E8E342D5DBC707F93DC3DDC643C9D1C600C8FBD6B4C617F925C300BCC2", + INIT_09 => x"BD2950440308C5F67EC0E1F8FF00AFC2FFC0BD4745524C4C4106084AF77EC0E1", + INIT_0a => x"73F77EC0D0D68900AFC200C8FFC0BD2923020882F87EC03300CBC210BCC2FFC0", + INIT_0b => x"18C4FFC0BD5D5B02084EF97EC08D00AFC23300CBC220BCC2FFC0BD2943500308", + INIT_0c => x"7EC0D7C910BCC2B8D6D4C88000AFC237C99D00AFC2E6C7A0F97BC2D4C820BCC2", + INIT_0d => x"C4FDCC00BCC2FDCCFFC0BD4649028896F886EB7EC09F00AFC23300CBC220BCC2", + INIT_0e => x"F4CDEB7EC0B5F920BCC2FFC0BD44414548410588B2F9A4EB7EC0BFCD06BCC2A7", + INIT_0f => x"C8B8D6ABC886D6E6C7E0C9F2C7A7C495D406BCC2D3CDFFC0BD4E4548540488E5", + INIT_10 => x"04EC7EC0BFCD07BCC2A7C4FFC0BD4E4947454205883BF9EBEB7EC01DC6B9C900", + INIT_11 => x"D6E6C7E0C9AEC9A7C4FDCC00C895D407BCC2D3CDFFC0BD4C49544E55058878F9", + INIT_12 => x"3EEC7EC029FA20BCC2FFC0BD4E49414741058823FA23EC7EC0FDCCB8D6ABC886", + INIT_13 => x"45504552068841F654EC7EC0E7F912CE01BCC2D3F9FFC0BD45534C4504885AF3", + INIT_14 => x"12CE01BCC2B5F9FFC0BD454C49485705884EFAB8EB7EC0E7F954FAFFC0BD5441", + INIT_15 => x"2D444345530B0690FA7EC0ACDA7BF99CE044E0FFC0BD5458454E0408D0F77EC0", + INIT_16 => x"484749482D535345524444412D44434553110626F940B152C1BD535554415453", + INIT_17 => x"530A06B9F800B252C1BD455341422D4D41522D444345530D06CDF941B152C1BD", + INIT_18 => x"544154532D444345532E0C06E2F97EC002D2A7C4FFC0BD54524154532D444345", + INIT_19 => x"088DD5B5F9ABC837C901BCC2E6C789C6C6FA203A44434553068DD5FFC0BD5355", + INIT_1a => x"C903BCC288C901BCC2E7F920444550504F5453088DD568FA20474E494E4E5552", + INIT_1b => x"D5B5F9D4C801BCC2E6C7E7F9474E494E4E5552078DD5B5F9D4C800BCC2E6C737", + INIT_1c => x"F9D4C803BCC2E7F94347028DD5B5F9D4C802BCC2E6C7E7F94445544C4148068D", + INIT_1d => x"BD454741502D444345532E0A0610F27EC059CFE7F94E574F4E4B4E55078DD5B5", + INIT_1e => x"4553080659F17EC02CC6CCC406F50001AFC2F6FA77D295C6CCC41DC6E0FAFFC0", + INIT_1f => x"6E61206874726F467369614D0F000000007EC002D2A7C4FFC0BD444E452D4443", + INIT_20 => x"6B636174530F03FCFCFF776F6C667265766F206B636174530EEFFBFDFF313036", + INIT_21 => x"6E4F0E2AFCF2FF646E69662074276E61430A16FCF3FF776F6C667265646E7520", + INIT_22 => x"450C4CFCF0FF6465746365746F72500939FCF1FF676E696C69706D6F6320796C", + INIT_23 => x"FF726F727265206572757463757274530F5AFCEAFF7475706E6920666F20646E", + INIT_24 => x"6E2064696C61766E49157FFCE0FF747075727265746E6920726573550E6BFCE4", + INIT_25 => x"766F20726564726F206863726165531592FCCFFF746E656D7567726120656D61", + INIT_26 => x"6F6C667265646E7520726564726F2068637261655316ACFCCEFF776F6C667265", + INIT_27 => x"72207369204553414218E1FCC2FF3F73696874207327746168570CC6FCC3FF77", + INIT_28 => x"72646461206C6167656C6C4917F2FCC1FF6C616D69636564206F742074657365", + INIT_29 => x"00000000000000000000000000000000E2C000000065646F6D20676E69737365", + INIT_2a => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2b => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2c => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2d => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2e => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2f => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3a => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3b => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3c => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3d => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3e => x"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3f => x"5EF1640061005E005B005800550000C000000000000000000000000000000000", Index: System09_Trenz_TE0141/System09_Trenz_TE0141.ise_ISE_Backup =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: System09_Trenz_TE0141/System09_Trenz_TE0141.ise_ISE_Backup =================================================================== --- System09_Trenz_TE0141/System09_Trenz_TE0141.ise_ISE_Backup (nonexistent) +++ System09_Trenz_TE0141/System09_Trenz_TE0141.ise_ISE_Backup (revision 105)
System09_Trenz_TE0141/System09_Trenz_TE0141.ise_ISE_Backup Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: System09_Trenz_TE0141/_ngo/netlist.lst =================================================================== --- System09_Trenz_TE0141/_ngo/netlist.lst (nonexistent) +++ System09_Trenz_TE0141/_ngo/netlist.lst (revision 105) @@ -0,0 +1,2 @@ +C:\Vhdl\System09\rtl\System09_Trenz_TE0141\system09_trenz.ngc 1201883761 +OK Index: System09_Trenz_TE0141/automake.log =================================================================== Index: System09_Trenz_TE0141/System09_Trenz_TE0141.dhp =================================================================== --- System09_Trenz_TE0141/System09_Trenz_TE0141.dhp (nonexistent) +++ System09_Trenz_TE0141/System09_Trenz_TE0141.dhp (revision 105) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$01;5=6?2.Yi{g|inl9$4(6=';98#?/$0g8*+ZTxhxmc=Scicq[wij:bUi=; yhe00?+([[ykyxl`<\bjbvZthe;aTn<8!vif.5<22::1%"Q]asvbj6Zd`hxT~bc=k^`22+pol$;28;?i;/,_Wugu|hd8Pkbjx8]qeh>lWk;="{fk259-*YUwi{~jb>Rildz:[wgj0bUi=; yhe/24165<2$%P^~nrucm7Y`kmq3T~lc7k^`22+pol$;;8<Rl;.wjg)45?:=1%"Q]asvbj6Zlmpgj|R|`m431[g2)~an&=>7>9:,-XVvfz}ke?Q|nm3i\f40)~an:o6 !\Rrbvqgi;Uxja?ePb04-rmb*1?;h7# SSqcqpdh4T{kf>fQm17,ula+>?;80"#R\p`pwek5[{py;5o{h_smn0nYe9?$}di<8;/,_Wugu|hd8P~w|08`vcZthe=aTn<8!vif.57?7:>1%"Q]asvbj6Ztqz:2nxiPrno7oZd6>'|ch ?=9036?+([^ANGPLMFA^4;15(q`m;j7# SVIFOXDENIV<39= yhe/2=706i2$%P[FKL]C@MDY10<:%zej"180453=)&U\CHARNCHC\Giidc'|ch<74./^ULAJ[IJCJSNb`cj,ula+1:830"#RYHEN_EFOFWJfdof yhe/5745<&'V]DIBSABKB[W^)~an:46 !\WJGHYGDAHUYT#xgd,3:737?3'$WZEJC\@AJEZT_&bo!<7<7018*+ZQ@MFWMNGN_UZ-rmb6>2$%P[FKL]C@MDYSP'|ch ;<179-*YPOLEVJODOPTY,ula+2<8;0"#RYHEN_gus71'|ch<:4./^ULAJ[ky;5#xgd,0751=)&U\CHARlpt2:*snc%;?:>6 !\WJGHYbf|{kf"{fk169-*YPOLEVomy|nm/tk`(77;8;<7# SVIFOXagszhg%zej"111151=)&U\CHARdex`lewb)~an:46 !\WJGHYmbqkej~i yhe/2537?3'$WZEJC\jgzfjgul'|ch ?>70:8*+ZQ@MFW|~()T_BO@Qxku9,ula+?=h1:=58971347d=691<=;==?8`925=01?999:l5>19453552=h1:=58971153d=691<=;=:?8`925=01?9>94l5>194535238h1:=58794057d=691<358<84`925=0?10=:9l5>213113449h1:>=?782601d=6:9;34>88199BvfnIidoi7L|lhN`iafrt02HbbiO}cic8FlhcMg~bxt74Bmm`oQwm01HC@CFTUGG3>EUMH^NH55LolrJjvrf3LdeywFnrvb?@hsa}sEm`km;GkoaAcwmgnx46HfldLbi`d3Zsxxhc?9^Vqak|X\L::8< yhe3f?Vt|lg;5RZ}eox\P@66<8$}di#=2312a>U~{}of<4Q[rdly[QC79=;%zej"2307f>Rb{}\noya}sc9Wku@ndlFby64UokwJdkbl2_xi^zntdofjqu6l2RB@D@W-YFA$5(6(Z^^N->!1!CPGLO13QniSDj>0:ZgiZKfbfx]i}foo33?]bjWDcecXjrrklj<=fk`kT:5;?e:c`mdY10<:&=4=>a:c`mdYddfi`h6oli`]`hjel%1;<7lmfa^p{g>gdahUyt ?64358efofW}rj7lmfa^v{)0?43hfgh6o{ts]aqc`Xzhg:<6o{ts]aqc`Xzhg&59o4bdjbrliuiel0nhfnvhmqei+59>?37ogad@p`ld=eagnNbyg{yc9amkbWijajkhh4bhlgTdelinoOinb6;ckw[csikzi0ndzPftl`w(0?k2hbxRhznbq.36264cicq[wijl2icmQ}ol/2=07a3jfdofQ|yovkavot9=1h`bmd_r{mpmctaz'9=::>6:aokfmX{pddh}fs^73*snc9k1h`bmd_r{mpmctazU><#xgd,022=7e3jfdofQ|yovkavotW<:%zej"204:1>ew}9337n~z08/1=`=dx|Uh`fQmugdfv45bf|Vxja ??3618`fk23ofnt=o4fmg{4(77<1?0jakw1`9eh`~6%8:?585ildz1e>`kmq8&==;?5:doa}5f3ofnt>#>043;?cjbpVxjai5ildz\vdk*99>=96gmuge7?lcbmj1bbnbzdd/2465d3`dh`xjj-0276g=nfjf~hh#>19`8mkek}mo&=?7l;hl`hpbb%882>o5fnbnv``+6<9i0ecmcueg.5<4?k2ceoa{ke,3:7=eoikeoi <>71a8mkek}mo&>?<:a:kmgiscm$8=m6gacmwga(32i2ceoa{ke,47e>oikeoi 86a:kmgiscm$=?m6gacmwga(>1i2ceoa{ke,;;<>mbqkej~im4kd{akdtc%888m6ejylcs[wijm2anu`o_smn)423?2gdbR|`mb9nkkYugd':>488;l{\efofk2grSlmfa,0173b7:oz[fjhkbUxuczgerkp)7441?1fuRmuc9n}Zew}$89??84mx]geqdk~Wbornbo}d,01727>3dsT|~2448i|Yugdh0atQ}ol/166513dsTzi{m;l{\ras*:;93n6`zmdpjgZusl11dngGaddz22>vt:Vanuoanre]jjqcunhin=l5s3]ha|dhi{nTeczjrgc`a(7445}al`22Zu>02xjao:Ps918vjk03{ef!<>;7:pli(73>11yc`#>9417?wij801yc`>"13;;0>the830~bc>-00:=6=u|e=0~yb"111;?wrk%8:8455}tm/241103{~g!<<;8:pwh(751>=0~yb"1274?wrk%8>>46|{l,3:77>=;20~yb"23122>tsd$9;:6|{l,432>tsd$29:6|{l,;21>tll|j7vkew/2=65d3zid|hO}ciManf=tkfznJdbjOch`?vehxlFbbh@zm79pmhvkml1xxiQcofk`[4711:qzwZekcVh~jjQfnrv22>u~{ViggRlzff]jjvr*:8=u~{Viggd`PicwecZoi{}'9=:8>0:qzwZ`eWkmkRgasu36?vtWohTnxhh_hlpp(46?1o0t}{el2:[qtbfs;87~w|tdo3=Zrumgp&>?=?5:v{``pf3}roi{#>9265?phn{`g<7x}j-0233>stm$;;=55zsd/2462?3|yn!<><599vw`+68:<37x}j-0277==r{l':<9:7;tqf)463=>1~h#>1858qvc*9;:<7x}j-0023>stm$;9>55zsd/26<5?3|yn!<<6499vw`+6:0?<7x}j-0133>stm$;8=:5zsd/2771<}zo&=>=8;tqf)426?2xi ?;269vw`+6<:20y~k"180:<>stm$;2?=64urg.5<5>02xi ?641:8qvc*90>:46{|e,3:0=><}zo&=4:68:wpa(7>=920y~k"2052<>stm$8:;?64urg.641402xi <=27:8qvc*:;8<46{|e,016=><}zo&>?<66:wpa(40>2xi <76:wpa(31>2xi ;86:wpa(3?>2xi 8:6:wpa(01>2xi 886:wpa(17>2xi 9>6:wpa(15>2xi 9:6:wpa(11>2xi 986:wpa(1?>2xi 966:wpa(>7>2xi 686:wpa(>?>2xi 666:wpa(?>j2|hc`~`ndlww1=ql|2<7{jz8,;3g>pc}VicmQ}old8rasXkakySab-80f?safWjf`So{ifdp27>p`iViggRlzfggq)7438=1|cer@Ar03`=GHqo>6K4>c;3xW16=m<0:6<==40;:>757ioqe9k4>;o43>1=#=l0>h6s\3g8f1?7=9:8?=4752df50>U3j3o>6<4>3362=<<5mmk87^=i:d795?74:=;2577`7:;1X?k4j5;3956439031>k8l3:Q7f?c2280:??:>98804`123Z9m6h;51;30617>1393h=>4S5`9a0<628998<7n:30`1==T;o0n97?5120754<6;;>:5o4=80g7?V5a2l?1=7?<253:f?4d:455<83h6l>i1:Q0b?c2280:??:>9b8260>e3Z>i6h;51;30617>l3ko=:5\3g8f1?7=9:8?=4j510601>U3j3o>6<4>3362=a<6;o2m7^=i:d795?74:=;2h7<81118W1d=m<0:6<==40c;>4b2n?1X?k4j5;3956439h21=i;ie:Q7f?c2280:??8:fe82m96];b;g6>4<6;;<=8n4>b615?V5a2l?1=7?<2747g?7e?mi0_9l5e482>455>?>h6?>67d9P7c<965a965?f?2nn97>51;33V272l?1=7?<253:=?448hl0bn?58b08K0g=82E?:7>4vG3f>5<6280;w^:?:d795?74:=;257<<0gf8j1e=92h:j7>50;794~hb<3;0b>k51:M61?6<,<:1<6*;5;3g?!20291/9>4?;%71>7e1<6A;8;28K`5=9rwi5i4?:183>5}im=0mjkhifgd8j6c=:9:0C8;50:M6g?4|uF>m6=5rb03a>5<7290;wck;:868j6c=99:0C8;50:&7a??63-?:6h84$4692<=H?90;7Bk<:0y~K1?=9rwvn5<7sgo?64;4n2g955650;2xj`2=1>1e?h4=;N76>5=#<:0{|a`f<7290;6=uae58b<>h4m3>0C8;50:&0e?b73-?26=5+4284b>I393:0C9<50:M5b?651;394~U383o>6<4>3362=<<5;8n?7c:l:09a5f<7290=6=uae582?k5b281D984?;%73>5=#<<0:m6*;7;28 05=82.>>75=H<10;7Bk<:0y~ftnd69bc`anolm7c=j:323?J32291D9n4<{|M7b?650;294~hb<3827c=j:023?J32291/8h461:&65?c13-??6;74O6294>Ib;3;pqB:6:0y~yg76m3:1<7>50zlf0?4f3g9n6<>?;N76>5=#50:Mf7?7|uF>2692.>=7k7;%77>3?:1<6Aj3;3xyJ2>28qvqo87:183>5<7sgo?6>>4n2g96>I2=3:0(9=5669L7g<73Fo8650;2xj`2=<81e?h4;;N76>5=#;h0o<6*:9;28 15=>>1D8<4?;N61>5=H>o0;7Bk<:0y~K`4=9rwvqpxI1483>4<629qX8=4j5;3956439031>>?j6:l7g?751283kc3281e?h4>;N76>5=#=90;7):::068 11=82.>?7>4$4096`=H<=0;7B:7:19La6<6sth2j7>50;294~hb<3lmjkhifg9m7`<5891D984?;N7`>6}zG=l1<6sm13294?6=83:pbh:58:l0a?7782E>97>4$5g9=4=#=80n:6*:4;4:?J17291Di>4>{|M7=?7|uth:><4?:183>5}im=027c=j:023?J32291/8h461:&65?c03-??6;74O6294>Ib;3;pqB:6:0y~yg75:3:1<7>50zlf0?g4O4794>"3m33:7);>:d:8 02=>01D;=4?;Ng0>4}zG=31=vsrb6194?6=83:pbh:5c:l0a?273F?>6=5+50846>Ib;3;pqB:6:0y~ygg7290;6=4?{og7>c`anolmj6`I2=3:0C8m53zL0c<73th:>>4?:183>5}im=0:=6`I2=3:0(9k5909'142.>8786;N53>5=Hm:0:wpA;9;3xyxd6:=0;6=4?:1yma1<6:2d8i7??0:M61?6<,=o15<5+508f3>"2<3<27B9?:19La6<6stE?57?t}|`260<7290;6=uae5827>h4m3;;<6A:5;28 1c=181/9<4j8:&60?0>3F=;6=5@e282xI313;pqpl84;294?6=8rdn87?:;o1f>=64>{|M7=?7|uthj=7>50;294~hb<3lmjkhifg9m7`<5891D984?;N7`>3}zG=l1<6sm13494?6=83:pbh:5279m7`<6891D984?;%6f><7<,<;1i;5+5585=>I083:0Ch=51zL0<<6stwi=?950;294?6|fl>1>:5a3d8245=H=<0;7):j:838 07=m>1/99499:M44?650;2xj`2=:11e?h4>019L10<73->n64?4$439a==#==0=56A80;28K`5=9rwD844>{|a57?=83:1<7>tnd696<=i;l0:<=5@5483?!2b20;0(8?5c19'11<112E<<7>4Od195~{H<00:wpsm13c94?6=83:pbh:52c9m7`<6891D984?;%6f>c3<,<;1=>>4$4692<=H?90;7Bk<:0y~K1?=9rwvn<5<7sgo?6?j4n2g9556"293=97);;:7;8K26=82En?7?t}N6:>4}zukk52:M61?6<,=91:>5@3c83?Jc428qvC9751z~fac=83:1<7>tnd697a=i;l0?7B;::19'7d57>4$51926=H<80;7B:=:19L2c<73Fo86l4?:082>5}T<90n97?512075tnd695>h4m3;0C8;50:&64?6<,=?1>45+4683?!34291/9?4=f:M70?6c`anolmj6`I2=3:0C8m53zL0c<73th:>n4?:183>5}im=0::6`I2=3:0(9k5909'142.>8786;N53>5=Hm:0:wpA;9;3xyxd6:m0;6=4?:1yma1<6?2d8i7??0:M61?6<,=o15<5+508`4>"2<3<27B9?:19La6<6stE?57?t}|`26`<7290;6=uae582=>h4m3;;<6A:5;28 1c=n<1/9<4>319'11<112E<<7>4Od195~{H<00:wpsm12094?6=83:pbh:51c9m7`<53F?>6=5+428274=H;k0;7Bk<:0y~K1?=9rwvnih50;297?6|fl>1?h5a3d87?J32291/?l4k0:&6=?6<,=91=>?4O5394>I3:3:0C;h50:Mf7?7|uFo965<7290;wck;:c78j6c=02E>97>4$5c9565<,4>{|Mf6?7|uth<;7>50;294~hb<3i97c=j:99L10<73->j6:84$4`9g1=H>o0;7B8j:19La6<6stEn>7?t}|`5f?6=83:13g<,4>{|Mf6?7|utwvq{Hl:182>4<7sZ>;6h;51;30617>1388>>94n5a95>dc290;6;4?{og7>4=i;l0:7B;::19'15<73->>6o5+4683?!34291/9?4<0:M70?6c`anolmj6`I2=3:0C8m53zL0c<73th:>k4?:183>5}im=097c=j:023?J32291/8h461:&65?c13-??6;74O6294>Ib;3;pqB:6:0y~yg`1290;6=4?{og7>6=i;l0:<=5@5483?!2b20;0(8?5e69'11<112E<<7>4Od195~{H<00:wpsmf683>5<729qei94:;o1f>4673F?>6=5+4d8e1>"293;8<6*:4;4:?J17291Di>4>{|M7=?7|uthh97>50;294~hb<3=0b>k52:M61?6<,=91o95@3c83?Jc428qvC9751z~fa7=83:1=7>tnd6956=i;l0?7B;::19'7d57>4$519g1=H<80;7B:=:19L2c<73Fo86"3i3i37);m:b48K3`=82E=i7>4Od195~{Hm;0:wpsr}|tE61<7280:6=u\418f1?7=9:8?=475220;<>h3k3;0n?;50;293?6|fl>1=6`<7>4$57966=#<>0;7);<:19'17<492E?87>4O5:94>Ib;3;pqo7;:183>5<7sgo?6khifgdeb>h4m38;<6A:5;28K0e=1j6`I2=3:0(9k5909'148786;N53>5=Hm:0:wpA;9;3xyxd6890;6=4?:1yma1<682d8i7??0:M61?6<,=o15<5+508f<>"2<3<27B9?:19La6<6stE?57?t}|`244<7290;6=uae5825>h4m3;;<6A:5;28 1c=181/9<4l0:&60?0>3F=;6=5@e282xI313;pqpln5;294?6=8rdn87?;;o1f>7=H=<0;7):<:`68K6d=82En?7?t}N6:>4}zukn?6=4?:083kc32;=0b>k54:M61?6<,:k1h=5+5883?!242h>0C9?50:M76?618h5a3d8;?J32291/8l4ma:&6f?e53F7551j1e8n4>;c0;>5<72>0;wck;:09m7`<63F?>6=5+5183?!222;<0(9950:&67?6<,<81??5@4583?J2?291Di>4>{|`:1?6=83:1{e99?1<7>50;2xj`2=?01e?h4>019L10<73->n64?4$439a3=#==0=56A80;28K`5=9rwD844>{|a550=83:1<7>tnd693d=i;l0:<=5@5483?!2b20;0(8?5e69'11<112E<<7>4Od195~{H<00:wpsm11594?6=83:pbh:57c9m7`<6891D984?;%6f><7<,<;1i55+5585=>I083:0Ch=51zL0<<6stwi==650;294?6|fl>1;n5a3d8245=H=<0;7):j:838 07=k91/99499:M44?6"3;3i97B=m:19La6<6stE?57?t}|`g2?6=83;1a6<,<31<6*;3;a1?J26291D8?4?;N4e>5=Hm:0:wpAj2;3xygd0290;6=4?{og7>4723g9n655@5483?!2f2k<0(8l5a79L2c<73F5<6280;w^:?:d795?74:=;257<<2`:8j1e=92hj6=4?:783kc3281e?h4>;N76>5=#=90;7):::99'02<73-?86=5+53807>I3<3:0C9650:Mf7?7|uk3<6=4?:183kc32olmjkhif:l0a?4782E>97>4O4a97~{H0883>5<729qei94l;o1f>4673F?>6=5+4d8:5>"293o=7);;:7;8K26=82En?7?t}N6:>4}zuk;;m7>50;294~hb<3n0b>k51128K03=82.?i77>;%72>`1<,<>1:45@7183?Jc428qvC9751z~f46e290;6=4?{og7>c=i;l0:<=5@5483?!2b2o?0(8?51228 02=>01D;=4?;Ng0>4}zG=31=vsrb`594?6=83:pbh:5109m7`<53F?>6=5+428b2>I4j3:0Ch=51zL0<<6stwih:4?:182>5}im=0:h6`5=#<:0j:6A;1;28K14=82E=j7>4Od195~{Hm;0:wplla;294?6=8rdn87<:;o1f>==H=<0;7):n:b:8 0d=k>1D:k4?;N4f>5=Hm:0:wpAj2;3xyx{zuL9=7>51;394~U383o>6<4>3362=f:=0b9m51:`16?6=83<197>4$4294>"3=38;7):8:19'16<73-?96>:4O5694>I303:0Ch=51za=7<7290;6=uae58ebc`anol0b>k52128K03=82E>o7=t}N6e>5=zjo21<7>50;2xj`2=;l1e?h4>019L10<73->n64?4$439a3=#==0=56A80;28K`5=9rwD844>{|ab<<7290;6=uae580b>h4m3;;<6A:5;28 1c=181/9<4j8:&60?0>3F=;6=5@e282xI313;pqplia;294?6=8rdn87:>;o1f>4673F?>6=5+4d8e1>"293;8<6*:4;4:?J17291Di>4>{|M7=?7|uth387>50;294~hb<3>87c=j:39L10<73->865=4O2`94>Ib;3;pqB:6:0y~ygb5290;6=4?{og7>1`=54}zutw}J;4?:082>5}T<90n97?51207597c:l:09a3?6=83<197>4$4294>"3=3?0(9950:&67?6<,<81?85@4583?J2?291Di>4>{|`:7?6=83:1urO5d94>{enk0;6=4?:1yma1<03g9n6<>?;N76>5=#50:Mf7?7|uF>265<7290;wck;:99m7`<6891D984?;%6f><7<,<;1i:5+5585=>I083:0Ch=51zL0<<6stwiji4?:183>5}im=0j7c=j:023?J32291/8h4i5:&65?7482.>8786;N53>5=Hm:0:wpA;9;3xyxd?n3:1<7>50zlf0?e6A:5;28 15=0l1D?o4?;Ng0>4}zG=31=vsrbe194?6=<3:pbh:5199m7`<33F?>6=5+3`8g4>"213:0(9=58d9L04<73F>96=5@6g83?Jc428qvCh<51za<2<7290;6=uae581`>h4m320C8;50:&7e?>13-?i6n84O7d94>I1m3:0Ch=51zLa7<6stwi444?:183>5}im=0f0{|ah4m320C8;50:&7e?>f3-?i6n84O7d94>I1m3:0Ch=51zLa7<6stwi4i4?:183>5}im=0:=i5a3d8;?J32291/8l47c:&6f?e13F:1yP05<;18a9b7ee3g>h6<5m1183>5<129qei94>;o1f>4=H=<0;7);?:19'00<6=5+5283?!352:<0C9:50:M75<729qei94ifgdebc`=>4O4794>I2k39pqB:i:19~f465290;6=4?{og7><=i;l0:<=5@5483?!2b20;0(8?5e79'11<112E<<7>4Od195~{H<00:wpsm11194?6=83:pbh:5a:l0a?7782E>97>4$5g9=4=#=80n;6*:4;4:?J17291Di>4>{|M7=?7|uth:<94?:183>5}im=0h7c=j:023?J32291/8h4i5:&65?7482.>8786;N53>5=Hm:0:wpA;9;3xyxdf13:1<7>50zlf0?c6A:5;28 15=i11D?o4?;Ng0>4}zG=31=vsrbe794?6=:3:pbh:51`9m7`<33F?>6=5+3`8g4>"213:0(9=5a99L04<73F>96=5@6g83?Jc428qvCh<51zaga<7290;6=uae581<>h4m320C8;50:&7e?ed3-?i6n84O7d94>I1m3:0Ch=51zLa7<6stwiok4?:183>5}im=0<46`f0{|~yxpA9;0;6<4>:1yP05<95gf95=b3n2d?o7?4b0194?6==3:pbh:51:l0a?75=#=;08;6A;4;28K1>=82En?7?t}c;;>5<7290;wck;:gdebc`an2d8i7vs@4g83?xd68j0;6=4?:1yma1<4;2d8i7??0:M61?6<,=o15<5+508f2>"2<3<27B9?:19La6<6stE?57?t}|`24a<7290;6=uae5800>h4m3;;<6A:5;28 1c=181/9<4l0:&60?0>3F=;6=5@e282xI313;pqpl92;294?6=8rdn87=l;o1f>7=H=<0;7):<:738K6d=82En?7?t}N6:>4}zukn36=4?:383kc32<30b>k54:M61?6<,:k1h=5+5883?!242?;0C9?50:M76?61i?5a3d8;?J32291/8l4j0:&6f?023Ftnd69b7=i;l037B;::19'0dn788;N4e>5=H>l0;7Bk<:0y~K`4=9rwvqpsyF0:94?7=93:p_9>5e482>455>;N76>5=#=90;7):::058 11=82.>?7>4$40972=H<=0;7B:7:19La6<6sth257>50;294~hb<3lmjkhifg9m7`<5891D984?;N7`>6}zG=l1<6sm11g94?6=83:pbh:52d9m7`<6891D984?;%6f><7<,<;1i;5+5585=>I083:0Ch=51zL0<<6stwi==h50;294?6|fl>1>k5a3d8245=H=<0;7):j:838 07=k91/99499:M44?650;2xj`2=;91e?h4>019L10<73->n64?4$439a==#==0=56A80;28K`5=9rwD844>{|a23<7290;6=uae5803>h4m380C8;50:&77?023F9i6=5@e282xI313;pqplk9;294?6=8rdn87:l;o1f>1=H=<0;7)=n:e28 0?=82.??78:;N62>5=H<;0;7B8i:19La6<6stEn>7?t}|~rC5=83;1=7>tS529a0<62899:8hk:0:g0c=i1=6`<7>4$5796>"3?3:0(8=50:&66?503F>?6=5@4983?Jc428qvn4o50;294?6|fl>1jkhifgde?k5b2;:;7B;::19L1f<4stE?j7>4}c325?6=83:15<7sgo?6h5a3d8245=H=<0;7):j:838 07=m>1/99499:M44?650;2xj`2=991e?h4>019L10<73->n6k;4$439566<,<>1:45@7183?Jc428qvC9751z~f2?=83:1<7>tnd6957=i;l097B;::19'06<002E8n7>4Od195~{H<00:wpsmd`83>5<629qei94>e:l0a?2291/8>488:M75?6{|``f?6=83:1f><,4>{|Mf6?7|utwvq{H8d;295?7=8rY?<7k::0827701<009;njm;o6`>4=e?l0;6=49:1yma1<63g9n6<5@5483?!37291/8848c:&73?6<,<91<6*:2;1;?J23291D854?;Ng0>4}zj0h1<7>50;2xj`2=nolmjkhi;o1f>7673F?>6=5@5b80xI3n3:0qo?>4;294?6=8rdn8774n2g95566=4?:183kc32h1e?h4>019L10<73->n64?4$439g5=#==0=56A80;28K`5=9rwD844>{|a540=83:1<7>tnd69`>h4m3;;<6A:5;28 1c=n<1/9<4>319'11<112E<<7>4Od195~{H<00:wpsm7c83>5<729qei94>0:l0a?44>{|M7=?7|uth=h7>50;694~hb<3;=7c=j:59L10<73-9j6;m4$4;94>"3;3=j7B:>:19L07<73F5<7sgo?6884n2g9<>I2=3:0(9o5ee9'1g<>82E=j7>4O7g94>Ib;3;pqBk=:0y~ygcf290;6=4?{og7>0g5<7sgo?68h4n2g9<>I2=3:0(9o5eg9'1g<0=2E=j7>4O7g94>Ib;3;pqBk=:0y~ygcd290;6=4?{og7>355<6280;w^:?:d795?74:?47>50;594~hb<3;0b>k51:M61?6<,<:1<6*;5;75?!20291/9>4?;%71>6?1<6A;8;28K`5=9rwi5n4?:183>5}im=0mjkhifgd8j6c=:9:0C8;50:M6g?2|uF>m6=5rb034>5<7290;wck;:49m7`<6891D984?;%6f><7<,<;1i;5+5585=>I083:0Ch=51zL0<<6stwi=<650;294?6|fl>1:6`I2=3:0(9k5909'148786;N53>5=Hm:0:wpA;9;3xyxd6900;6=4?:1yma1<03g9n6<>?;N76>5=#50:Mf7?7|uF>264$4692<=H?90;7Bk<:0y~K1?=9rwvnk<50;294?6|fl>1n6`;N1a>5=Hm:0:wpA;9;3xyxdcj3:1<7l50zlf0?0e3g9n695@5483?!5f2m:0(8750:&77?`63F>:6=5@4383?J0a291Di>4>{|Mf6?7|ukh:6=4?:183kc328l:7c=j:028K03=82.?m7l?;%60>2`<,=n1<6*4Od195~{Hm;0:wpsmbe83>5<729qei94=079m7`6=5+4`8ag>"2j3k37B8i:19L2`<73Fo8650;2xj`2=:8<0b>k58:M61?6<,=k1n95+5c8;a>I1n3:0C;k50:Mf7?7|uFo965<7290;wck;:305?k5b211D984?;%6b>g4<,5@6g83?J0b291Di>4>{|Mf6?7|uthjn7>50;294~hb<38846`o6=5+3`83?J5c291D?n4?;Ng0>4}zGl81=vsrbc;94?6=83:pbh:52438j6c=02E>97>4$5c9f==#=k0j86A9f;28K3c=82En?7?t}Ng1>4}zukhm6=4?:183kc32;<<7c=j:99L10<73->j6ok4$4`9567{|aec<7290;6=uae58148a:&7`?6<,:k1<6A4}zuk;8:7>50;294~hb<38296`tnd6965<7sgo?6?m?;o1f>==H=<0;7):n:`a8 0d=>:1D:k4?;N4f>5=Hm:0:wpAj2;3xyx{zutwKLNu<7d8154gf<>3vLMLt0|BCT~I5?3887Bk4=3:M04?4?3F9?6?=4O2796==H;009?6A04I293>27B;::568K00=<01D9l4;4:M6f?2>3F?m69:4O7290<=H>?0?86A97;42?J0b2?k0C:?5729L34<002E<=79k;N55>3g=1:k5@7c85e>I0k3o1D4949a:M;1?0a3F2365o4O9:9b21<0C4<56`9L=62E2;78n;N;;>=0If83k97Bo?:`58Kd6=ij1Dm=4m1:Mb4?d13Fk;6ol4O`792d=Hi?02i6Ana;4b?Jge20o0Clh56`9Lf5<>m2Ei878n;N`6>Iem3h1Do946e:M`e?0f3Fii6n;4Oe09g`=Hl<0o;6Ak5;f`?Jb22l;0Cio5cd9L`ga51oh5@e48g7>Ib13in7Bkn:e18Kc6=kl1Dj<4jb:Me2?eb3Fl<6hl4Oga9g`=Hnm0nn6A>038`a>I68:0nn6A>0`8243=H99n1==h4O02g>4733F;;h7?>9:M257<68?1D=<=511`8K47028:=7B?>8;33f>I69j0:<;5@10f955d9;N316?77j2E:>54>079L57?=9;90C<378277=H9:31=>l4O01:>4273F;857?;5:M27<<6k51208K45a289<7B?;3;306>I6<=0:?:5@15:956426<=8;N37`?74:2E:8h4>369L504=9:80C<;<:014?J7213;8>6A>5`8211=H9<4O043>4333F;=;7?93:M22d<6>j1D=;o51638K40f28==7B?9a;34f>I6>o0::>5@162953>629L52g=9?20C<9j:040?J70n3;=46A>828226=H91>1=;64O0:b>4043F;3n7?75:M2=5<6>:1D=4?51978K4??283?7B?6b;3:`>I61k0:m?5@18`95d112E:m84>959L5d0=9030Cag82=1=H9k:1=474O0`5>4?33F;i;7?m1:M2ff<61=1D=oj51c38K4e328i;7B?l7;3`=>I6k>0:oh5@1b595a5c19L5a4=9j?0Cdc82g5=H9mi1=n;4O0g1>4e73F;n?7?kd:M2ad<6m?1D=hj51dd8K4cc28l?7B?jd;3e=>I6n;0:i;5@1g195`de79L5cb=9lh0C?>>:0g5?J47:3;nn6A=0982a3=H:931>==4O32f>4c13F8;j7<;52118K77f28o=7B<>b;037>I5:90:i;5@2339655o4=339L67d=::=0C?=?:307?J44938956A=348161=H::<1>?74O31b>7433F88n7<=9:M17c<5:=1D>9>523;8K7212;8?7B<;7;075>I595@25f9617:6A=62811g=H:?=1>884O34;>73e3F8=o7<:6:M12a<5=k1D>:=52448K7132;I5?h09:h5@26d96001>5=4O3;6>7>?3F8257<73:M1=d<5011D>4k52918K7?a2;237BI5i?09m=5@2`f96d?l74O3a3>7gb3F8h87nl52`;8K7ed2;i=7BI5l;09o;5@2e;96a338o96A=e681`d=H:lh1>i;4O3g`>7bf3F8m<7k952e78K7`?2;l97BI5nl09j?5@31196a3??:3d1?J56?39:?6A<1`805f=H;8k1???4O23b>6413F9:m7==b:M05c<49:1D??>530:8K6432:;87B==5;12<>I4:008=>5@33c974>?<;N11b?5602E8?>4<129L762=;820C>=n:230?J54j39896A<418056=H;=;1?>;4O265>6743F9?;7=<5:M00f<49:1D?9j53278K6352:;87B=:3;101>I4=108=>5@34;9763?<;N16b?54=2E8:94<129L733=;:?0C>8n:230?J51j39896A<718056=H;>;1?>;4O255>6743F9<;7=<5:M03f<49:1D?:j53278yEF \ No newline at end of file Index: System09_Trenz_TE0141/clock_synthesis_50.vhd =================================================================== --- System09_Trenz_TE0141/clock_synthesis_50.vhd (nonexistent) +++ System09_Trenz_TE0141/clock_synthesis_50.vhd (revision 105) @@ -0,0 +1,133 @@ +-- +-- Clock synthesis +-- +-- This module generates the 50 Mhz System Clock +-- from the Trenz 30MHz clock using a DCM. +-- The outputs are fed into BUFGs. +-- +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.ALL; +-- synopsys translate_off +library UNISIM; +use UNISIM.Vcomponents.ALL; +-- synopsys translate_on + +entity clock_synthesis is + port ( clk_30mhz : in std_logic; + sys_clk_out : out std_logic; + locked : out std_logic); +end clock_synthesis; + +architecture BEHAVIORAL of clock_synthesis is + + signal clk_30mhz_ibufg : std_logic; + + signal sys_clkfb_in : std_logic; + signal sys_clkfb_out : std_logic; + signal sys_clk_in : std_logic; + + signal gnd1 : std_logic; + + component BUFG + port ( I : in std_logic; + O : out std_logic); + end component; + + component IBUFG + port ( I : in std_logic; + O : out std_logic); + end component; + + -- Period Jitter with noise (unit interval) for block DCM_INST = 0.04 UI + -- Period Jitter with noise (Peak-to-Peak) for block DCM_INST = 0.86 ns + component DCM + generic( CLK_FEEDBACK : string := "1X"; + CLKDV_DIVIDE : real := 2.000000; + CLKFX_DIVIDE : integer := 1; + CLKFX_MULTIPLY : integer := 4; + CLKIN_DIVIDE_BY_2 : boolean := FALSE; + CLKIN_PERIOD : real := 10.000000; + CLKOUT_PHASE_SHIFT : string := "NONE"; + DESKEW_ADJUST : string := "SYSTEM_SYNCHRONOUS"; + DFS_FREQUENCY_MODE : string := "LOW"; + DLL_FREQUENCY_MODE : string := "LOW"; + DUTY_CYCLE_CORRECTION : boolean := TRUE; + FACTORY_JF : bit_vector := x"C080"; + PHASE_SHIFT : integer := 0; + STARTUP_WAIT : boolean := TRUE; + DSS_MODE : string := "NONE"); + port ( CLKIN : in std_logic; + CLKFB : in std_logic; + RST : in std_logic; + PSEN : in std_logic; + PSINCDEC : in std_logic; + PSCLK : in std_logic; + DSSEN : in std_logic; + CLK0 : out std_logic; + CLK90 : out std_logic; + CLK180 : out std_logic; + CLK270 : out std_logic; + CLKDV : out std_logic; + CLK2X : out std_logic; + CLK2X180 : out std_logic; + CLKFX : out std_logic; + CLKFX180 : out std_logic; + STATUS : out std_logic_vector (7 downto 0); + LOCKED : out std_logic; + PSDONE : out std_logic); + end component; + +begin + + GND1 <= '0'; + + sys_clkin_ibufg_inst : ibufg + port map (i => clk_30mhz, + o => clk_30mhz_ibufg); + + sys_clk_bufg_inst : bufg + port map (i => sys_clk_in, + o => sys_clk_out); + + + sys_fb_bufg_inst : bufg + port map (i => sys_clkfb_in, + o => sys_clkfb_out); + + sys_clk_dcm : dcm + generic map( clk_feedback => "1X", + clkfx_divide => 6, + clkfx_multiply => 10, + clkin_divide_by_2 => FALSE, + clkin_period => 33.333300, + clkout_phase_shift => "NONE", + deskew_adjust => "SYSTEM_SYNCHRONOUS", + dfs_frequency_mode => "LOW", + dll_frequency_mode => "LOW", + duty_cycle_correction => TRUE, + factory_jf => x"C080", + phase_shift => 0, + startup_wait => FALSE) + + port map (clkfb => sys_clkfb_out, + clkin => clk_30mhz_ibufg, + dssen => gnd1, + psclk => gnd1, + psen => gnd1, + psincdec => gnd1, + rst => gnd1, + clkdv => open, + clkfx => sys_clk_in, + clkfx180 => open, + clk2x => open, + clk2x180 => open, + clk0 => sys_clkfb_in, + clk90 => open, + clk180 => open, + clk270 => open, + locked => locked, + psdone => open, + status => open); + +end; Index: System09_Trenz_TE0141/an601.bin =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: System09_Trenz_TE0141/an601.bin =================================================================== --- System09_Trenz_TE0141/an601.bin (nonexistent) +++ System09_Trenz_TE0141/an601.bin (revision 105)
System09_Trenz_TE0141/an601.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: System09_Trenz_TE0141/System09_Trenz_TE0141.ise =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: System09_Trenz_TE0141/System09_Trenz_TE0141.ise =================================================================== --- System09_Trenz_TE0141/System09_Trenz_TE0141.ise (nonexistent) +++ System09_Trenz_TE0141/System09_Trenz_TE0141.ise (revision 105)
System09_Trenz_TE0141/System09_Trenz_TE0141.ise Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: System09_Trenz_TE0141/System09_Trenz_TE0141.vhd =================================================================== --- System09_Trenz_TE0141/System09_Trenz_TE0141.vhd (nonexistent) +++ System09_Trenz_TE0141/System09_Trenz_TE0141.vhd (revision 105) @@ -0,0 +1,1169 @@ +-- SECD Front End Processor derived from System09 written by John E. Kent +-- This core adheres to the GNU public license + +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; +--use config.all; + +entity System09_trenz is + port( + -- the following output assignments are required so that + -- the GT3200 USB phy generates a 30 MHz clock + utmi_databus16_8 : out std_logic; + utmi_reset : out std_logic; + utmi_xcvrselect : out std_logic; + utmi_termselect : out std_logic; + utmi_opmode1 : out std_logic; + utmi_txvalid : out std_logic; + + -- this is the 30 MHz clock input (clkout is the utmi name) + utmi_clkout : in std_logic; + + reset_sw : in Std_logic; -- Master Reset input (active low) + + -- PS/2 Keyboard + ps2_clk1 : inout Std_logic; + ps2_data1 : inout Std_Logic; + + -- acia Interface + fpga_rxd : in Std_Logic; + fpga_txd : out Std_Logic; + fpga_cts : in Std_Logic; + fpga_rts : out Std_Logic; + + -- CRTC output signals + vsync_b : out Std_Logic; + hsync_b : out Std_Logic; + fpga_b : out Std_Logic_Vector(2 downto 0); + fpga_g : out Std_Logic_Vector(2 downto 0); + fpga_r : out Std_Logic_Vector(2 downto 0); + + -- LEDS & Switches + mm_led : out Std_Logic; + led : out Std_Logic_Vector(3 downto 0); + + joy_down : in Std_Logic; + joy_fire : in Std_Logic; + joy_left : in Std_Logic; + joy_right : in Std_Logic; + joy_up : in Std_Logic; + + -- LCD Display + lcd_e : out Std_Logic; + lcd_rw : out Std_Logic; + lcd_rs : out Std_Logic; + lcd_d : inout Std_Logic_Vector(3 downto 0); + + -- Audio + aud_out : out std_logic_vector(4 downto 1); + + --ir remote control + ir_data : in std_logic; + + -- Memory interface + ram_a : out std_logic_vector(20 downto 0); + ram_io : inout std_logic_vector(15 downto 0); + ram_bhen : out std_logic; + ram_blen : out std_logic; + ram_cen : out std_logic; + ram_oen : out std_logic; + ram_wen : out std_logic; + + -- Flash interface + fl_resetn : out std_logic; + fl_cen : out std_logic; + fl_oen : out std_logic; + fl_byten : out std_logic; + fl_busyn : in std_logic; + + -- Compact flash + cf_we : out std_logic; -- all these signals are active low + cf_reg : out std_logic; -- for more details see the specification + cf_cs0 : out std_logic; -- of compact flash + cf_cs1 : out std_logic; + cf_reset : out std_logic; + cf_iord : out std_logic; + cf_iowr : out std_logic; + cf_irq : in std_logic; + cf_wait : in std_logic; + cf_cd1 : in std_logic; + cf_cd2 : in std_logic; + iois16 : in std_logic; + cf_oe : out std_logic; + cf_dasp : inout std_logic; + cf_pdiag : inout std_logic; + + --cf power enable (active low) + cf_pwr_en : out std_logic + ); +end System09_trenz; + +------------------------------------------------------------------------------- +-- Architecture for System09 +------------------------------------------------------------------------------- +architecture rtl of System09_trenz is + ----------------------------------------------------------------------------- + -- constants + ----------------------------------------------------------------------------- + constant SYS_Clock_Frequency : integer := 50_000_000; -- FPGA System Clock + constant VGA_Clock_Frequency : integer := 25_000_000; -- VGA Pixel Clock + constant CPU_Clock_Frequency : integer := 25_000_000; -- CPU Clock + constant BAUD_Rate : integer := 57600; -- Baud Rate + constant ACIA_Clock_Frequency : integer := BAUD_Rate * 16; + + type hold_state_type is ( hold_release_state, hold_request_state ); + + ----------------------------------------------------------------------------- + -- ChipScope Pro components and signals + ----------------------------------------------------------------------------- + +-- component icon +-- port(control0 : out std_logic_vector(35 downto 0)); +-- end component; + +-- component ila +-- port(control : in std_logic_vector(35 downto 0); +-- clk : in std_logic; +-- trig0 : in std_logic_vector(39 downto 0)); +-- end component; + +-- signal chipscope_control : std_logic_vector(35 downto 0); +-- signal ila_clock : std_logic; + + ----------------------------------------------------------------------------- + -- Signals + ----------------------------------------------------------------------------- + + -- Clocks + attribute buffer_type : string; + attribute period : string; + + signal sys_clk : std_logic; -- 50 Mhz + attribute period of sys_clk : signal is "20 ns"; + attribute buffer_type of sys_clk : signal is "BUFG"; + + signal cpu_clk : std_logic; -- 25 Mhz + attribute period of cpu_clk : signal is "40 ns"; + attribute buffer_type of cpu_clk : signal is "BUFG"; + + signal vga_clk : std_logic; -- 25 Mhz + attribute period of vga_clk : signal is "40 ns"; + attribute buffer_type of vga_clk : signal is "BUFG"; + + -- System Reset (generated by key press) + signal cpu_reset : std_logic; + + -- Dynamic Address Translation + signal dat_cs : std_logic; + signal dat_addr : std_logic_vector(7 downto 0); + + -- BOOT ROM + signal rom_cs : Std_logic; + signal rom_data_out : Std_Logic_Vector(7 downto 0); + + -- FLEX9 RAM + signal flex_cs : Std_logic; + signal flex_data_out : Std_Logic_Vector(7 downto 0); + + -- acia Interface signals + signal acia_data_out : Std_Logic_Vector(7 downto 0); + signal acia_cs : Std_Logic; + signal acia_irq : Std_Logic; + signal baudclk : Std_Logic; + signal DCD_n : Std_Logic; + signal RTS_n : Std_Logic; + signal CTS_n : Std_Logic; + + -- keyboard port + signal keyboard_data_out : std_logic_vector(7 downto 0); + signal keyboard_cs : std_logic; + signal keyboard_irq : std_logic; + + -- CPU Interface signals + signal cpu_rw : std_logic; + signal cpu_vma : std_logic; + signal cpu_halt : std_logic; + signal cpu_hold : std_logic; + signal cpu_firq : std_logic; + signal cpu_irq : std_logic; + signal cpu_nmi : std_logic; + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_data_in : std_logic_vector(7 downto 0); + signal cpu_data_out : std_logic_vector(7 downto 0); + + -- Compact Flash port + -- CF data bus shared with RAM +-- signal cf_data_out : std_logic_vector(7 downto 0); + signal cf_cs0x : std_logic; + signal cf_cs1x : std_logic; + signal cf_rd : std_logic; + signal cf_wr : std_logic; + signal cf_hold : std_logic; + signal cf_release : std_logic; + signal cf_count : std_logic_vector(3 downto 0); + signal cf_hold_state : hold_state_type; + + -- Video Display Unit + signal vdu_cs : std_logic; + signal vdu_data_out : std_logic_vector(7 downto 0); + + -- VGA output signals (distributed to VGA DAC) + signal red : std_logic; + signal green : std_logic; + signal blue : std_logic; + + -- LCD register select + signal lcd_cs : std_logic; + signal lcd_data_in : std_logic_vector(7 downto 0); + signal lcd_data_out : std_logic_vector(7 downto 0); + + -- LED register select + signal leds_cs : std_logic; + signal leds_data_in : std_logic_vector(7 downto 0) := (others => '0'); + signal leds_data_out : std_logic_vector(7 downto 0) := (others => '0'); + + -- Joystick buffer + signal joy_cs : std_logic; + signal joy_data_out : std_logic_vector(7 downto 0); + + -- External RAM interface + signal ram_cs : std_logic := '0'; + signal ram_data_out : std_logic_vector(7 downto 0); + signal ram_oe : std_logic; + signal ram_we : std_logic; + + -- Locked signal of clock synthesizer + signal clock_locked : std_logic; + signal ila_clock : std_logic; + + -- LED Flasher + signal blink_count : std_logic_vector(25 downto 0) := (others => '0'); + + -- System Clock Prescaler + signal clk_count : std_logic; + + +----------------------------------------------------------------- +-- +-- CPU09 CPU core +-- +----------------------------------------------------------------- + + component cpu09 + port ( + clk : in std_logic; + rst : in std_logic; + rw : out std_logic; -- Asynchronous memory interface + vma : out std_logic; + address : out std_logic_vector(15 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + halt : in std_logic; + hold : in std_logic; + irq : in std_logic; + nmi : in std_logic; + firq : in std_logic + ); + end component; + + +---------------------------------------- +-- +-- 4KByte Block RAM Monitor ROM +-- +---------------------------------------- +component mon_rom + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (11 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); +end component; + +---------------------------------------- +-- +-- 8KBytes Block RAM for FLEX9 +-- $C000 - $DFFF +-- +---------------------------------------- +component flex_ram + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (12 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); +end component; + +---------------------------------------- +-- +-- Dynamic Address Translation Registers +-- +---------------------------------------- +component dat_ram + port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr_lo : in std_logic_vector(3 downto 0); + addr_hi : in std_logic_vector(3 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0) + ); +end component; + + +----------------------------------------------------------------- +-- +-- 6850 ACIA / UART +-- +----------------------------------------------------------------- + + component ACIA_6850 + port ( + clk : in Std_Logic; -- System Clock + rst : in Std_Logic; -- Reset input (active high) + cs : in Std_Logic; -- ACIA Chip Select + rw : in Std_Logic; -- Read / Not Write + irq : out Std_Logic; -- Interrupt + Addr : in Std_Logic; -- Register Select + DataIn : in Std_Logic_Vector(7 downto 0); -- Data Bus In + DataOut : out Std_Logic_Vector(7 downto 0); -- Data Bus Out + 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_Clock_Frequency : integer := SYS_Clock_Frequency; + ACIA_Clock_Frequency : integer := ACIA_Clock_Frequency + ); + 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_Clock_Frequency : integer := CPU_Clock_Frequency + ); + port( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : 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( + VDU_CLOCK_FREQUENCY : integer := CPU_Clock_Frequency; -- HZ + VGA_CLOCK_FREQUENCY : integer := VGA_Clock_Frequency; -- HZ + VGA_HOR_CHARS : integer := 80; -- CHARACTERS + VGA_VER_CHARS : integer := 25; -- CHARACTERS + VGA_PIXELS_PER_CHAR : integer := 8; -- PIXELS + VGA_LINES_PER_CHAR : integer := 16; -- LINES + VGA_HOR_BACK_PORCH : integer := 40; -- PIXELS + VGA_HOR_SYNC : integer := 96; -- PIXELS + VGA_HOR_FRONT_PORCH : integer := 24; -- PIXELS + VGA_VER_BACK_PORCH : integer := 13; -- LINES + VGA_VER_SYNC : integer := 1; -- LINES + VGA_VER_FRONT_PORCH : integer := 36 -- LINES + ); + port( + -- control register interface + vdu_clk : in std_logic; -- CPU Clock - 12.5MHz + vdu_rst : in std_logic; + vdu_cs : in std_logic; + vdu_rw : in std_logic; + vdu_addr : in std_logic_vector(2 downto 0); + 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; + +-- component ram_controller +-- port( +-- reset : in std_logic; +-- clk : in std_logic; +-- cs_ram : in std_logic; +-- rw : in std_logic; +-- din : in std_logic_vector(7 downto 0); +-- dout : out std_logic_vector(7 downto 0); +-- addr : in std_logic_vector(19 downto 0); + + -- External interface +-- ram_oen : out std_logic; +-- ram_cen : out std_logic; +-- ram_wen : out std_logic; +-- ram_io : inout std_logic_vector(15 downto 0); +-- ram_a : out std_logic_vector(20 downto 1); +-- ram_bhen : out std_logic; +-- ram_blen : out std_logic +-- ); +-- end component; + +component BUFG + port ( + i : in std_logic; + o : out std_logic + ); +end component; + +begin + + ----------------------------------------------------------------- + -- + -- ChipsScope Pro cores + -- + ----------------------------------------------------------------- + +-- i_icon : icon +-- port map(control0 => chipscope_control); +-- +-- i_ila : ila +-- port map(control => chipscope_control, +-- clk => ila_clock, +-- trig0(15 downto 8) => cpu_data_in, +-- trig0(23 downto 16) => cpu_data_out, +-- trig0(39 downto 24) => cpu_addr, +-- trig0(0) => cpu_clk, +-- trig0(1) => cpu_vma, +-- trig0(2) => ram_bhenx, +-- trig0(3) => ram_blenx, +-- trig0(4) => ram_cenx, +-- trig0(5) => ram_oenx, +-- trig0(6) => ram_wenx, +-- trig0(7) => vga_clk); + + + + ----------------------------------------------------------------- + -- + -- CPU09 CPU core + -- + ----------------------------------------------------------------- + + my_cpu : entity cpu09 port map ( + clk => cpu_clk, + rst => cpu_reset, + rw => cpu_rw, + vma => cpu_vma, + address => cpu_addr, + data_in => cpu_data_in, + data_out => cpu_data_out, + halt => cpu_halt, + hold => cpu_hold, + irq => cpu_irq, + nmi => cpu_nmi, + firq => cpu_firq + ); + + ---------------------------------------- + -- + -- Sys09Bug ROM (Xilinx Block RAM, 4k) + -- + ---------------------------------------- + +my_rom : mon_rom port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => rom_cs, + rw => '1', + addr => cpu_addr(11 downto 0), + rdata => rom_data_out, + wdata => cpu_data_out + ); + + ---------------------------------------- + -- + -- Flex Operating System (Xilinx Block RAM, 8k) + -- + ---------------------------------------- + +my_flex : flex_ram port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => flex_cs, + rw => cpu_rw, + addr => cpu_addr(12 downto 0), + rdata => flex_data_out, + wdata => cpu_data_out + ); + + ---------------------------------------- + -- + -- Dynamic Address Translation + -- + ---------------------------------------- + +my_dat : dat_ram port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => dat_cs, + rw => cpu_rw, + addr_hi => cpu_addr(15 downto 12), + addr_lo => cpu_addr(3 downto 0), + data_in => cpu_data_out, + data_out => dat_addr(7 downto 0) + ); + + + ----------------------------------------------------------------- + -- + -- 6850 ACIA + -- + ----------------------------------------------------------------- + + my_acia : entity acia_6850 port map ( + clk => cpu_clk, + rst => cpu_reset, + cs => acia_cs, + rw => cpu_rw, + irq => acia_irq, + Addr => cpu_addr(0), + Datain => cpu_data_out, + DataOut => acia_data_out, + RxC => baudclk, + TxC => baudclk, + RxD => fpga_rxd, + TxD => fpga_txd, + DCD_n => dcd_n, + CTS_n => fpga_cts, + RTS_n => fpga_rts + ); + + +---------------------------------------- +-- +-- PS/2 Keyboard Interface +-- +---------------------------------------- + my_keyboard : keyboard + generic map ( + KBD_Clock_Frequency => CPU_Clock_frequency + ) + port map( + clk => cpu_clk, + rst => cpu_reset, + cs => keyboard_cs, + rw => cpu_rw, + addr => cpu_addr(0), + data_in => cpu_data_out(7 downto 0), + data_out => keyboard_data_out(7 downto 0), + irq => keyboard_irq, + kbd_clk => ps2_clk1, + kbd_data => ps2_data1 + ); + +---------------------------------------- +-- +-- Video Display Unit instantiation +-- +---------------------------------------- + my_vdu : vdu8 + generic map( + VDU_CLOCK_FREQUENCY => CPU_Clock_Frequency, -- HZ + VGA_CLOCK_FREQUENCY => VGA_Clock_Frequency, -- 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_reset, + vdu_cs => vdu_cs, + vdu_rw => cpu_rw, + vdu_addr => cpu_addr(2 downto 0), + 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 => hsync_b, + vga_vsync_o => vsync_b + ); + + ---------------------------------------- + -- + -- Clock Synthesis instantiation + -- + ---------------------------------------- + + my_clock_synthesis : entity clock_synthesis port map ( + clk_30mhz => utmi_clkout, + sys_clk_out => sys_clk, + locked => clock_locked ); + + +vga_clk_buffer : BUFG port map( + i => clk_count, + o => vga_clk + ); + +cpu_clk_buffer : BUFG port map( + i => clk_count, + o => cpu_clk + ); + + ---------------------------------------- + -- + -- RAM Controller instantiation + -- + ---------------------------------------- + +-- my_external_ram : entity ram_controller port map ( +-- reset => cpu_reset, +-- clk => cpu_clk, +-- cs_ram => ram_cs, +-- rw => cpu_rw, +-- din => cpu_data_out, +-- dout => ram_data_out, +-- addr(19 downto 12) => dat_addr( 7 downto 0), +-- addr(11 downto 0) => cpu_addr(11 downto 0), + + -- external interface +-- ram_oen => ram_oenx, +-- ram_cen => ram_cenx, +-- ram_wen => ram_wenx, +-- ram_io => ram_io, +-- ram_a => ram_a, +-- ram_bhen => ram_bhenx, +-- ram_blen => ram_blenx +-- ); + + +---------------------------------------- +-- +-- ACIA Clock +-- +---------------------------------------- + my_ACIA_Clock : ACIA_Clock + generic map( + SYS_Clock_Frequency => SYS_Clock_Frequency, + ACIA_Clock_Frequency => ACIA_Clock_Frequency + ) + port map( + clk => sys_clk, + acia_clk => baudclk + ); + + +-- +-- Generate a 25 MHz Clock from 50 MHz +-- +my_sys09_clk : 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, + dat_cs, dat_addr, + rom_data_out, + acia_data_out, + keyboard_data_out, + vdu_data_out, + joy_data_out, + lcd_data_out, + leds_data_out, + flex_data_out, + ram_data_out + ) +begin + cpu_data_in <= (others => '0'); + dat_cs <= '0'; + rom_cs <= '0'; + acia_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + cf_cs0x <= '0'; + cf_cs1x <= '0'; + joy_cs <= '0'; + lcd_cs <= '0'; + leds_cs <= '0'; + flex_cs <= '0'; + ram_cs <= '0'; + + if cpu_addr( 15 downto 8 ) = "11111111" then + cpu_data_in <= rom_data_out; + dat_cs <= cpu_vma; -- write DAT + rom_cs <= cpu_vma; -- read ROM + -- + -- Sys09Bug Monitor ROM $F000 - $FFFF + -- + elsif dat_addr(3 downto 0) = "1111" then -- $XF000 - $XFFFF + -- + -- Monitor ROM $F000 - $FFFF + -- + cpu_data_in <= rom_data_out; + rom_cs <= cpu_vma; -- read ROM + + -- + -- IO Devices $E000 - $EFFF + -- + elsif dat_addr(3 downto 0) = "1110" then -- $XE000 - $XEFFF + dat_cs <= '0'; + rom_cs <= '0'; + case cpu_addr(11 downto 8) is + when "0000" => + case cpu_addr(7 downto 4) is + -- + -- UART / ACIA ($E000 - $E00F) + -- + when "0000" => + cpu_data_in <= acia_data_out; + acia_cs <= cpu_vma; + + -- + -- Reserved - FD1771 FDC ($E010 - $E01F) (SWTPC) + -- + + -- + -- Keyboard port ($E020 - $E02F) + -- + when "0010" => + cpu_data_in <= keyboard_data_out; + keyboard_cs <= cpu_vma; + + -- + -- VDU port ($E030 - $E03F) + -- + when "0011" => + cpu_data_in <= vdu_data_out; + vdu_cs <= cpu_vma; + + -- + -- 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 LED port ($E0A0 - $E0AF) + -- Write LEDS + -- + when "1010" => + cpu_data_in <= leds_data_out; + leds_cs <= cpu_vma; + + -- + -- LCD display port ($E0B0 - $E0BF) + -- + when "1011" => + cpu_data_in <= lcd_data_out; + lcd_cs <= cpu_vma; + + -- + -- Read Joy Stick port ($E0D0 - $E0DF) + -- Write LEDS + -- + when "1101" => + cpu_data_in <= joy_data_out; + joy_cs <= cpu_vma; + + -- + -- Read LED port ($E0E0 - $E0EF) + -- Write LEDS + -- + when "1110" => + cpu_data_in <= leds_data_out; + leds_cs <= cpu_vma; + + -- + -- LCD display port ($E0F0 - $E0BF) + -- + when "1111" => + cpu_data_in <= lcd_data_out; + lcd_cs <= cpu_vma; + + 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 <= ram_data_out; + + case cpu_addr(7 downto 4) is + -- + -- CF Interface $E100 to $E1FF + -- + when "0000" => + cf_cs0x <= cpu_vma; + + when "0001" => + cf_cs1x <= cpu_vma; + -- + -- Nothing else + -- + when others => + null; + end case; + -- + -- $E200 to $EFFF reserved for future use + -- + when others => + cpu_data_in <= (others => '0'); + end case; + -- + -- FLEX RAM $0C000 - $0DFFF + -- + elsif dat_addr(7 downto 1) = "0000110" then -- $0C000 - $0DFFF + cpu_data_in <= flex_data_out; + flex_cs <= cpu_vma; + -- + -- Everything else is RAM + -- + else + cpu_data_in <= ram_data_out; + ram_cs <= cpu_vma; + end if; +end process; + +-- +-- 1M byte SRAM Control +-- Processes to read and write memory based on bus signals +-- using bhe/ble controlled read and write. +-- Can't gate the write pulse with the clock +-- because the bus is shared with the CF +-- which uses clock stretching. +-- +ram_process: process( cpu_reset, sys_clk, cpu_addr, cpu_rw, cpu_data_out, dat_addr, + ram_cs, ram_io, ram_we, ram_oe ) +begin + -- + -- ram_hold signal helps + -- + if( cpu_reset = '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_cen <= not ram_cs; + ram_bhen <= cpu_addr(0); + ram_blen <= not cpu_addr(0); + ram_wen <= not ram_we; + ram_oen <= not ram_oe; + + ram_a(20) <= '0'; + ram_a(19 downto 0) <= dat_addr(7 downto 0) & cpu_addr(11 downto 0); + + if (cpu_rw = '0') and (cpu_addr(0) = '0') then + ram_io(15 downto 8) <= cpu_data_out; + else + ram_io(15 downto 8) <= "ZZZZZZZZ"; + end if; + + if (cpu_rw = '0') and (cpu_addr(0) = '1') then + ram_io(7 downto 0) <= cpu_data_out; + else + ram_io(7 downto 0) <= "ZZZZZZZZ"; + end if; + + if cpu_addr(0) = '0' then + ram_data_out <= ram_io(15 downto 8); + else + ram_data_out <= ram_io(7 downto 0); + end if; +end process; + +-- +-- Compact Flash Control +-- Configure compact flash for TRUE IDE mode +-- + compact_flash: process( reset_sw, + cpu_addr, cpu_rw, cpu_vma, cpu_data_out, + cf_cs0x, cf_cs1x, cf_rd, cf_wr, cf_cd1, cf_cd2 ) + begin + cf_reset <= reset_sw; + cf_pwr_en <= (cf_cd1) or (cf_cd2); -- power enable when card detect + cf_oe <= '0'; -- TRUE IDE mode + cf_we <= '1'; + cf_reg <= '1'; + cf_cs0 <= not cf_cs0x; + cf_cs1 <= not cf_cs1x; + cf_wr <= (cf_cs0x or cf_cs1x) and (not cpu_rw); + cf_rd <= (cf_cs0x or cf_cs1x) and cpu_rw; + cf_iowr <= not cf_wr; + cf_iord <= not cf_rd; + end process; + + +-- +-- Hold CF access for a few cycles +-- +cf_hold_proc: process( cpu_clk, cpu_reset ) +begin + if cpu_reset = '1' then + cf_release <= '0'; + cf_count <= "0000"; + cf_hold_state <= hold_release_state; + elsif falling_edge( cpu_clk ) then + case cf_hold_state is + when hold_release_state => + cf_release <= '0'; + if (cf_cs0x = '1') or (cf_cs1x = '1') then + cf_count <= "0011"; + cf_hold_state <= hold_request_state; + end if; + + when hold_request_state => + cf_count <= cf_count - "0001"; + if cf_count = "0000" then + cf_release <= '1'; + cf_hold_state <= hold_release_state; + end if; + when others => + null; + end case; + end if; + +end process; + + +-- +-- Interrupts and other bus control signals +-- + interrupts : process( acia_irq, keyboard_irq, joy_up, cf_cs0x, cf_cs1x, cf_hold, cf_release ) + begin + cf_hold <= (cf_cs0x or cf_cs1x) and (not cf_release); + cpu_irq <= keyboard_irq; + cpu_nmi <= not joy_up; + cpu_firq <= acia_irq; + cpu_halt <= '0'; + cpu_hold <= cf_hold; + end process; + + -- + -- LCD write register + -- LCD_data_in and LCD_data_out + -- are relative to the CPU + -- Not the LCD display + -- + lcd_control : process(cpu_reset, cpu_clk, lcd_data_in, lcd_d ) + begin + if cpu_reset = '1' then + lcd_data_in <= (others => '0'); + elsif falling_edge(cpu_clk) then + if lcd_cs = '1' and cpu_rw = '0' then + lcd_data_in <= cpu_data_out; + end if; + end if; + if lcd_data_in(4) = '1' and lcd_data_in(5) = '0' then + lcd_d <= lcd_data_in(3 downto 0); + else + lcd_d <= (others => 'Z'); + end if; + lcd_e <= lcd_data_in(4); + lcd_rw <= lcd_data_in(5); + lcd_rs <= lcd_data_in(6); + -- read back control signals + lcd_data_out(7 downto 4) <= lcd_data_in(7 downto 4); + -- read back 4 bit data bus + lcd_data_out(3 downto 0) <= lcd_d(3 downto 0); + end process; + + -- + -- LED write register + -- + led_control : process(cpu_reset, cpu_clk, leds_data_in) + begin + if cpu_reset = '1' then + leds_data_in <= (others => '1'); + elsif falling_edge(cpu_clk) then + if leds_cs = '1' and cpu_rw = '0' then + leds_data_in <= cpu_data_out; + end if; + end if; + led <= leds_data_in(3 downto 0); + -- read back output state + leds_data_out <= leds_data_in; + end process; + + + -- + -- Joystick register + -- + read_joystick : process(cpu_clk, joy_up, joy_right, joy_down, joy_left, joy_fire) + begin + if rising_edge(cpu_clk) then + joy_data_out(0) <= joy_up; + joy_data_out(1) <= joy_right; + joy_data_out(2) <= joy_down; + joy_data_out(3) <= joy_left; + joy_data_out(4) <= joy_fire; + joy_data_out(7 downto 5) <= (others => '0'); + end if; + end process; + +-- +-- LED Flasher +-- + my_led_flasher: process(vga_clk, cpu_reset, blink_count) + begin + if cpu_reset = '1' then + blink_count <= (others => '0'); + elsif rising_edge(vga_clk) then + blink_count <= blink_count + 1; + end if; + + mm_led <= blink_count(25); + + end process; + + +-- Set acia DCD to always true + DCD_n <= '0'; + +-- +-- configure utmi for 30MHz clock +-- + utmi_databus16_8 <= '1'; + utmi_reset <= '0'; + utmi_xcvrselect <= '1'; + utmi_termselect <= '1'; + utmi_opmode1 <= '0'; + utmi_txvalid <= '0'; + +-- +-- Feed RGB DAC +-- + fpga_r(0) <= red; + fpga_r(1) <= red; + fpga_r(2) <= red; + fpga_g(0) <= green; + fpga_g(1) <= green; + fpga_g(2) <= green; + fpga_b(0) <= blue; + fpga_b(1) <= blue; + fpga_b(2) <= blue; + + -- Hold system in reset until the clock is locked or when the reset + -- key is pressed. + cpu_reset <= (not reset_sw ) or (not clock_locked); + + -- + -- Terminate Audio Output signals + -- + aud_out <= (others => '0'); + + -- + -- Terminate Flash memory controls + -- + fl_resetn <= '1'; + fl_cen <= '1'; + fl_oen <= '1'; + fl_byten <= '1'; + +-- debug output +-- input detected from an IR remote control is forwarded to the LED on the micromodule. +-- there it is easily accessible by a scope and you can also see some flicker when pressing a button. +-- mm_led <= ir_data; + + +end; + Index: System09_Trenz_TE0141/secd_ram_controller.vhd =================================================================== --- System09_Trenz_TE0141/secd_ram_controller.vhd (nonexistent) +++ System09_Trenz_TE0141/secd_ram_controller.vhd (revision 105) @@ -0,0 +1,408 @@ +-- secd_ram_controller.vhd +-- +-- Multiplex the external 16 bit SRAM to the 32 bit interface required +-- by the CPU and provide for an 8 bit backside port for the 6809 to +-- read and write SECD memory + +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_unsigned.all; + +entity secd_ram_controller is + port( + clk : in std_logic; + reset : in std_logic; + + secd_stopped : in std_logic; + + -- Internal interface to SECD (16k x 32) + din32 : in std_logic_vector(31 downto 0); + dout32 : out std_logic_vector(31 downto 0); + addr32 : in std_logic_vector(13 downto 0); + read32_enable : in std_logic; + write32_enable : in std_logic; + busy32 : out std_logic; + + -- Internal interface to 6809 (64k x 8) + clk8 : in std_logic; + din8 : in std_logic_vector(7 downto 0); + dout8 : out std_logic_vector(7 downto 0); + addr8 : in std_logic_vector(15 downto 0); + rw8 : in std_logic; + cs8_ram : in std_logic; + hold8 : out std_logic; + cs8_cf : in std_logic; + + -- External interface + ram_oen : out std_logic; + ram_cen : out std_logic; + ram_wen : out std_logic; + ram_io : inout std_logic_vector(15 downto 0); + ram_a : out std_logic_vector(20 downto 1); + ram_bhen : out std_logic; + ram_blen : out std_logic + ); +end; + +architecture external_ram of secd_ram_controller is + + type hold_state_type is ( hold_release_state, hold_request_state ); + + signal cf_hold_state : hold_state_type; + + signal cf_release : std_logic; + signal cf_count : std_logic_vector(3 downto 0); + + type state_type is (idle, + read32_high, read32_high_deselect, read32_low, read32_low_deselect, + write32_high, write32_high_deselect, write32_low, write32_low_deselect, + read8_ram, write8_ram, read8_cf, write8_cf ); + + signal state, next_state : state_type; + + signal read32_buff : std_logic_vector(31 downto 0); + signal read32_hen, read32_len : std_logic; + +begin + + +secd_ram_process : process( state, + read32_enable, write32_enable, addr32, din32, + cs8_ram, rw8, addr8, din8 ) +begin + case state is + when idle => + ram_a(20 downto 1) <= (others => '0'); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + dout8 <= (others => '0'); + if read32_enable = '1' then + hold8 <= '0'; + busy32 <= '1'; + next_state <= read32_high; + elsif write32_enable = '1' then + hold8 <= '0'; + busy32 <= '1'; + next_state <= write32_high; + elsif (cs8_ram = '1') and (rw8 = '1') then + hold8 <= '1'; + busy32 <= '1'; + next_state <= read8_ram; + elsif (cs8_ram = '1') and (rw8 = '0') then + hold8 <= '1'; + busy32 <= '1'; + next_state <= write8_ram; + elsif (cs8_cf = '1') and (rw8 = '1') then + hold8 <= '1'; + busy32 <= '1'; + next_state <= read8_cf; + elsif (cs8_cf = '1') and (rw8 = '0') then + hold8 <= '1'; + busy32 <= '1'; + next_state <= write8_cf; + else + hold8 <= '0'; + busy32 <= '0'; + next_state <= idle; + end if; + + when read32_high => + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= (others => 'Z'); + read32_hen <= '1'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= read32_high_deselect; + + when read32_high_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= read32_low; + + when read32_low => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '1'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= read32_low_deselect; + + when read32_low_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '0'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= idle; + + when write32_high => + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '1'; + ram_wen <= '0'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= din32(31 downto 16); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= write32_high_deselect; + + when write32_high_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= write32_low; + + when write32_low => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= din32(15 downto 0); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '0'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= write32_low_deselect; + + when write32_low_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '0'; + dout8 <= (others => '0'); + hold8 <= cs8_ram; + next_state <= idle; + + when read8_ram => + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= addr8(0); + ram_blen <= not addr8(0); + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + if addr8(0) = '0' then + dout8 <= ram_io(15 downto 8); + else + dout8 <= ram_io(7 downto 0); + end if; + hold8 <= '0'; + -- Synchronize on the CPU clock + if clk8 = '1' then + next_state <= idle; + else + next_state <= read8_ram; + end if; + + when write8_ram => + ram_a(1) <= '1'; + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= addr8(0); + ram_blen <= not addr8(0); + if addr8(0) = '0' then + ram_io(15 downto 8) <= din8; + ram_io( 7 downto 0) <= (others => 'Z'); + else + ram_io(15 downto 8) <= (others => 'Z'); + ram_io( 7 downto 0) <= din8; + end if; + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + hold8 <= '0'; + -- Synchronize on the CPU clock + if clk8 = '1' then + next_state <= idle; + else + next_state <= write8_ram; + end if; + + + when read8_cf => + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= ram_io(7 downto 0); + if cf_release = '1' then + hold8 <= '0'; + next_state <= idle; + else + hold8 <= '1'; + next_state <= read8_cf; + end if; + + when write8_cf => + ram_a(1) <= '1'; + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io(15 downto 8) <= (others => '0'); + ram_io( 7 downto 0) <= din8; + read32_hen <= '0'; + read32_len <= '0'; + busy32 <= '1'; + dout8 <= (others => '0'); + if cf_release = '1' then + hold8 <= '0'; + next_state <= idle; + else + hold8 <= '1'; + next_state <= write8_cf; + end if; + + when others => + null; + + end case; +end process; + + -- + -- RAM state machine + -- clock state transitions + -- and register 32 bit reads. + -- + -- Try experimenting with the clock edge + -- The Clock edge should be the same + -- as the transition edge of the + -- 12.5 MHz 6809 clock. + -- + ram_state_machine : process( clk, reset, read32_buff ) + begin + if reset = '1' then + state <= idle; + read32_buff <= (others => '0'); + elsif falling_edge( clk ) then + state <= next_state; + if read32_hen = '1' then + read32_buff(31 downto 16) <= ram_io; + end if; + if read32_len = '1' then + read32_buff(15 downto 0) <= ram_io; + end if; + end if; + dout32 <= read32_buff; + end process; + +-- +-- Hold CF access for a few cycles +-- synchronize with the CPU clock +-- hold release is set on the rising edge +-- of the CPU clock so that you have one +-- VGA clock cycle to return to the idle state +-- of the secd_ram_process state machine. +-- +cf_hold_proc: process( clk8, reset ) +begin + if reset = '1' then + cf_release <= '0'; + cf_count <= "0000"; + cf_hold_state <= hold_release_state; + elsif rising_edge( clk8 ) then + case cf_hold_state is + when hold_release_state => + cf_release <= '0'; + if cs8_cf = '1' then + cf_count <= "0011"; + cf_hold_state <= hold_request_state; + end if; + + when hold_request_state => + cf_count <= cf_count - "0001"; + if cf_count = "0000" then + cf_release <= '1'; + cf_hold_state <= hold_release_state; + end if; + when others => + null; + end case; + end if; + +end process; + +end; Index: System09_Trenz_TE0141/ram_controller.vhd =================================================================== --- System09_Trenz_TE0141/ram_controller.vhd (nonexistent) +++ System09_Trenz_TE0141/ram_controller.vhd (revision 105) @@ -0,0 +1,75 @@ +-- +-- ram_controller.vhd +-- + +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_unsigned.all; + +entity ram_controller is + port( + reset : in std_logic; + clk : in std_logic; + cs_ram : in std_logic; + rw : in std_logic; + din : in std_logic_vector(7 downto 0); + dout : out std_logic_vector(7 downto 0); + addr : in std_logic_vector(19 downto 0); + + -- External interface + ram_oen : out std_logic; + ram_cen : out std_logic; + ram_wen : out std_logic; + ram_io : inout std_logic_vector(15 downto 0); + ram_a : out std_logic_vector(20 downto 1); + ram_bhen : out std_logic; + ram_blen : out std_logic + ); +end; + +architecture external_ram of ram_controller is + +signal we : std_logic; + +begin + +-- +-- 1M byte SRAM Control +-- Processes to read and write memory based on bus signals +-- Uses bhe/ble controlled write +-- so that clock stretching can be performed on the CF +-- +ram_process: process( clk, addr, rw, + cs_ram, ram_io, din ) +begin + ram_wen <= rw; + ram_oen <= not rw; + ram_cen <= not cs_ram; + ram_bhen <= not( (not addr(0)) and clk ); + ram_blen <= not( addr(0) and clk ); + + ram_a(20) <= '0'; + ram_a(19 downto 1) <= addr(19 downto 1); + + if (rw = '0') and (addr(0) = '0') then + ram_io(15 downto 8) <= din; + else + ram_io(15 downto 8) <= "ZZZZZZZZ"; + end if; + + if (rw = '0') and (addr(0) = '1') then + ram_io(7 downto 0) <= din; + else + ram_io(7 downto 0) <= "ZZZZZZZZ"; + end if; + + if addr(0) = '0' then + dout <= ram_io(15 downto 8); + else + dout <= ram_io(7 downto 0); + end if; +end process; + +end; Index: System09_Trenz_TE0141/fep_toplevel.vhd =================================================================== --- System09_Trenz_TE0141/fep_toplevel.vhd (nonexistent) +++ System09_Trenz_TE0141/fep_toplevel.vhd (revision 105) @@ -0,0 +1,980 @@ +-- SECD Front End Processor derived from System09 written by John E. Kent +-- This core adheres to the GNU public license + +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; +--use config.all; + +entity secd_fep_trenz is + port( + utmi_clkout : in Std_Logic; -- UTMI Clock input + utmi_databus16_8 : out Std_Logic; -- UTMI configuration input + + reset_sw : in Std_logic; -- Master Reset input (active low) + + -- PS/2 Keyboard + ps2_clk1 : inout Std_logic; + ps2_data1 : inout Std_Logic; + + -- Uart Interface + fpga_rxd : in Std_Logic; + fpga_txd : out Std_Logic; + fpga_cts : in Std_Logic; + fpga_rts : out Std_Logic; + + -- CRTC output signals + vsync_b : out Std_Logic; + hsync_b : out Std_Logic; + fpga_b : out Std_Logic_Vector(2 downto 0); + fpga_g : out Std_Logic_Vector(2 downto 0); + fpga_r : out Std_Logic_Vector(2 downto 0); + + -- LEDS & Switches + mm_led : out Std_Logic; + led : out Std_Logic_Vector(3 downto 0); + + joy_down : in Std_Logic; + joy_fire : in Std_Logic; + joy_left : in Std_Logic; + joy_right : in Std_Logic; + joy_up : in Std_Logic; + + -- LCD Display + lcd_e : out Std_Logic; + lcd_rw : out Std_Logic; + lcd_rs : out Std_Logic; + lcd_d : out Std_Logic_Vector(3 downto 0); + + -- Audio + aud_out : out std_logic_vector(4 downto 1); + + -- Memory interface + ram_a : out std_logic_vector(20 downto 1); + ram_io : inout std_logic_vector(15 downto 0); + ram_bhen : out std_logic; + ram_blen : out std_logic; + ram_cen : out std_logic; + ram_oen : out std_logic; + ram_wen : out std_logic; + + -- Compact flash + cf_reset : out std_logic; +-- cf_irq : in std_logic; + cf_iord : out std_logic; + cf_iowr : out std_logic; +-- cf_wait : in std_logic; +-- cf_dasp : in std_logic; +-- cf_pdiag : in std_logic; +-- cf_cd1 : in std_logic; +-- cf_cd2 : in std_logic; +-- iois16 : in std_logic; +-- cf_oe : out std_logic; + cf_pwr_en : out std_logic; + cf_cs0 : out std_logic; + cf_cs1 : out std_logic +-- cf_we : out std_logic; +-- cf_rew : out std_logic + ); +end secd_fep_trenz; + +------------------------------------------------------------------------------- +-- Architecture for System09 +------------------------------------------------------------------------------- +architecture rtl of secd_fep_trenz is + ----------------------------------------------------------------------------- + -- constants + ----------------------------------------------------------------------------- + constant fep_only : integer := 1; + + constant SYS_Clock_Frequency : integer := 50000000; -- FPGA System Clock + constant VGA_Clock_Frequency : integer := 25000000; -- VGA Pixel Clock + constant CPU_Clock_Frequency : integer := 12500000; -- CPU Clock + constant BAUD_Rate : integer := 57600; -- Baud Rate + constant ACIA_Clock_Frequency : integer := BAUD_Rate * 16; + + ----------------------------------------------------------------------------- + -- ChipScope Pro components and signals + ----------------------------------------------------------------------------- + +-- component icon +-- port(control0 : out std_logic_vector(35 downto 0)); +-- end component; + +-- component ila +-- port(control : in std_logic_vector(35 downto 0); +-- clk : in std_logic; +-- trig0 : in std_logic_vector(39 downto 0)); +-- end component; + +-- signal chipscope_control : std_logic_vector(35 downto 0); +-- signal ila_clock : std_logic; + + ----------------------------------------------------------------------------- + -- Signals + ----------------------------------------------------------------------------- + + -- Clocks + attribute buffer_type : string; + attribute period : string; + + signal vdu_clk : std_logic; -- 25 Mhz + attribute period of vdu_clk : signal is "40 ns"; + attribute buffer_type of vdu_clk : signal is "BUFG"; + + signal cpu_clk : std_logic; -- 12.5 Mhz + attribute buffer_type of cpu_clk : signal is "BUFG"; + + -- BOOT ROM + signal rom_cs : Std_logic; + signal rom_data_out : Std_Logic_Vector(7 downto 0); + + -- RAM + signal user_ram0_cs : std_logic; + signal user_ram0_dout : std_logic_vector(7 downto 0); + signal user_ram1_cs : std_logic; + signal user_ram1_dout : std_logic_vector(7 downto 0); + + -- UART Interface signals + signal uart_data_out : Std_Logic_Vector(7 downto 0); + signal uart_cs : Std_Logic; + signal uart_irq : Std_Logic; + signal baudclk : Std_Logic; + signal DCD_n : Std_Logic; + signal RTS_n : Std_Logic; + signal CTS_n : Std_Logic; + + -- keyboard port + signal keyboard_data_out : std_logic_vector(7 downto 0); + signal keyboard_cs : std_logic; + signal keyboard_irq : std_logic; + + -- CPU Interface signals + signal cpu_rw : std_logic; + signal cpu_vma : std_logic; + signal cpu_halt : std_logic; + signal cpu_hold : std_logic; + signal cpu_firq : std_logic; + signal cpu_irq : std_logic; + signal cpu_nmi : std_logic; + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_data_in : std_logic_vector(7 downto 0); + signal cpu_data_out : std_logic_vector(7 downto 0); + + -- Compact Flash port + signal cf_data_out : std_logic_vector(7 downto 0); + signal cf_cs : std_logic; + signal cf_rd : std_logic; + signal cf_wr : std_logic; + + -- Video Display Unit + signal vdu_cs : std_logic; + signal vdu_data_out : std_logic_vector(7 downto 0); + + -- VGA output signals (distributed to VGA DAC) + signal red : std_logic; + signal green : std_logic; + signal blue : std_logic; + + -- System Reset (generated by key press) + signal reset : std_logic; + + -- LCD register select + signal lcd_cs : std_logic; + + -- LED register select + signal led_cs : std_logic; + signal led_reg : std_logic_vector(7 downto 0) := (others => '0'); + + -- Joystick buffer + signal joystick : std_logic_vector(7 downto 0); + + -- LED Flasher + signal blink_count : std_logic_vector(25 downto 0) := (others => '0'); + + -- SECD interface + signal secd_button : std_logic := '0'; + signal secd_stop : std_logic := '1'; + signal secd_stopped : std_logic := '1'; + signal secd_state : std_logic_vector(1 downto 0); + signal secd_ram_addr_hi : std_logic_vector(7 downto 0) := (others => '0'); + signal secd_ram_addr_high_cs : std_logic := '0'; + signal secd_ram_cs : std_logic := '0'; + signal secd_control_cs : std_logic := '0'; + + -- SECD RAM Controller interface + signal secd_ram_busy : std_logic; + + -- RAM signal taps + signal ram_bhenx : std_logic; + signal ram_blenx : std_logic; + signal ram_cenx : std_logic; + signal ram_oenx : std_logic; + signal ram_wenx : std_logic; + + -- Interface signals for SECD + signal secd_ram_din32 : std_logic_vector(31 downto 0); + signal secd_ram_dout32 : std_logic_vector(31 downto 0); + signal secd_ram_addr32 : std_logic_vector(13 downto 0); + signal secd_ram_read32 : std_logic; + signal secd_ram_write32 : std_logic; + + -- Interface signals for 6809 + signal secd_ram_dout8 : std_logic_vector(7 downto 0); + signal secd_ram_hold : std_logic; + + -- Locked signal of clock synthesizer + signal clock_locked : std_logic; + signal ila_clock :std_logic; +----------------------------------------------------------------- +-- +-- CPU09 CPU core +-- +----------------------------------------------------------------- + +component cpu09 + port ( + clk : in std_logic; + rst : in std_logic; + rw : out std_logic; -- Asynchronous memory interface + vma : out std_logic; + address : out std_logic_vector(15 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + halt : in std_logic; + hold : in std_logic; + irq : in std_logic; + nmi : in std_logic; + firq : in std_logic + ); +end component; + + +---------------------------------------- +-- +-- 16KByte Block RAM Mais Forth ROM +-- +---------------------------------------- +component maisforth_rom_16k + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (13 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); +end component; + +---------------------------------------- +-- +-- 8KBytes Block RAM for FLEX9 +-- $C000 - $DFFF +-- +---------------------------------------- +component ram_2k + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (12 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); +end component; + +----------------------------------------------------------------- +-- +-- Open Cores Mini UART +-- +----------------------------------------------------------------- + +component ACIA_6850 + port ( + clk : in Std_Logic; -- System Clock + rst : in Std_Logic; -- Reset input (active high) + cs : in Std_Logic; -- miniUART Chip Select + rw : in Std_Logic; -- Read / Not Write + irq : out Std_Logic; -- Interrupt + Addr : in Std_Logic; -- Register Select + DataIn : in Std_Logic_Vector(7 downto 0); -- Data Bus In + DataOut : out Std_Logic_Vector(7 downto 0); -- Data Bus Out + 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_Clock_Frequency : integer := VGA_Clock_Frequency; + ACIA_Clock_Frequency : integer := ACIA_Clock_Frequency + ); + 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_Clock_Frequency : integer := CPU_Clock_Frequency + ); + port( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : 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( + VDU_CLOCK_FREQUENCY : integer := CPU_Clock_Frequency; -- HZ + VGA_CLOCK_FREQUENCY : integer := VGA_Clock_Frequency; -- HZ + VGA_HOR_CHARS : integer := 80; -- CHARACTERS + VGA_VER_CHARS : integer := 25; -- CHARACTERS + VGA_PIXELS_PER_CHAR : integer := 8; -- PIXELS + VGA_LINES_PER_CHAR : integer := 16; -- LINES + VGA_HOR_BACK_PORCH : integer := 40; -- PIXELS + VGA_HOR_SYNC : integer := 96; -- PIXELS + VGA_HOR_FRONT_PORCH : integer := 24; -- PIXELS + VGA_VER_BACK_PORCH : integer := 13; -- LINES + VGA_VER_SYNC : integer := 1; -- LINES + VGA_VER_FRONT_PORCH : integer := 36 -- LINES + ); + port( + -- control register interface + vdu_clk : in std_logic; -- CPU Clock - 12.5MHz + vdu_rst : in std_logic; + vdu_cs : in std_logic; + vdu_rw : in std_logic; + vdu_addr : in std_logic_vector(2 downto 0); + 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; + +begin + + ----------------------------------------------------------------- + -- + -- ChipsScope Pro cores + -- + ----------------------------------------------------------------- + +-- i_icon : icon +-- port map(control0 => chipscope_control); +-- +-- i_ila : ila +-- port map(control => chipscope_control, +-- clk => ila_clock, +-- trig0(15 downto 8) => cpu_data_in, +-- trig0(23 downto 16) => cpu_data_out, +-- trig0(39 downto 24) => cpu_addr, +-- trig0(0) => cpu_clk, +-- trig0(1) => cpu_vma, +-- trig0(2) => ram_bhenx, +-- trig0(3) => ram_blenx, +-- trig0(4) => ram_cenx, +-- trig0(5) => ram_oenx, +-- trig0(6) => ram_wenx, +-- trig0(7) => vdu_clk); + + ----------------------------------------------------------------- + -- + -- CPU09 CPU core + -- + ----------------------------------------------------------------- + + my_cpu : entity cpu09 port map ( + clk => cpu_clk, + rst => reset, + rw => cpu_rw, + vma => cpu_vma, + address => cpu_addr, + data_in => cpu_data_in, + data_out => cpu_data_out, + halt => cpu_halt, + hold => cpu_hold, + irq => cpu_irq, + nmi => cpu_nmi, + firq => cpu_firq + ); + + ---------------------------------------- + -- + -- Maisforth ROM (Xilinx Block RAM, 16k) + -- + ---------------------------------------- + + my_maisforth_rom_16k : entity maisforth_rom_16k port map ( + clk => cpu_clk, + rst => reset, + cs => rom_cs, + rw => '1', + addr => cpu_addr(13 downto 0), + rdata => rom_data_out, + wdata => cpu_data_out + ); + + ----------------------------------------------------------------------------- + -- + -- Internal RAM (Xilinx Block RAM, 4k) + -- + ----------------------------------------------------------------------------- + + my_user_ram0_2k : entity ram_2k port map ( + clk => cpu_clk, + rst => reset, + cs => user_ram0_cs, + rw => cpu_rw, + addr => cpu_addr(10 downto 0), + rdata => user_ram0_dout, + wdata => cpu_data_out + ); + + my_user_ram1_2k : entity ram_2k port map ( + clk => cpu_clk, + rst => reset, + cs => user_ram1_cs, + rw => cpu_rw, + addr => cpu_addr(10 downto 0), + rdata => user_ram1_dout, + wdata => cpu_data_out + ); + + ----------------------------------------------------------------- + -- + -- 6850 ACIA + -- + ----------------------------------------------------------------- + + my_uart : entity acia_6850 port map ( + clk => cpu_clk, + rst => reset, + cs => uart_cs, + rw => cpu_rw, + irq => uart_irq, + Addr => cpu_addr(0), + Datain => cpu_data_out, + DataOut => uart_data_out, + RxC => baudclk, + TxC => baudclk, + RxD => fpga_rxd, + TxD => fpga_txd, + DCD_n => dcd_n, + CTS_n => fpga_cts, + RTS_n => fpga_rts + ); + + +---------------------------------------- +-- +-- PS/2 Keyboard Interface +-- +---------------------------------------- +my_keyboard : keyboard + generic map ( + KBD_Clock_Frequency => CPU_Clock_frequency + ) + port map( + clk => cpu_clk, + rst => reset, + cs => keyboard_cs, + rw => cpu_rw, + addr => cpu_addr(0), + data_in => cpu_data_out(7 downto 0), + data_out => keyboard_data_out(7 downto 0), + irq => keyboard_irq, + kbd_clk => ps2_clk1, + kbd_data => ps2_data1 + ); + +---------------------------------------- +-- +-- Video Display Unit instantiation +-- +---------------------------------------- +my_vdu : vdu8 + generic map( + VDU_CLOCK_FREQUENCY => CPU_Clock_Frequency, -- HZ + VGA_CLOCK_FREQUENCY => VGA_Clock_Frequency, -- 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 => reset, + vdu_cs => vdu_cs, + vdu_rw => cpu_rw, + vdu_addr => cpu_addr(2 downto 0), + vdu_data_in => cpu_data_out, + vdu_data_out => vdu_data_out, + + -- vga port connections + vga_clk => vdu_clk, -- 25 MHz VDU pixel clock + vga_red_o => red, + vga_green_o => green, + vga_blue_o => blue, + vga_hsync_o => hsync_b, + vga_vsync_o => vsync_b + ); + + ---------------------------------------- + -- + -- Clock Synthesis instantiation + -- + ---------------------------------------- + + my_clock_synthesis : entity clock_synthesis port map ( + clk_30mhz => utmi_clkout, + vdu_clk => vdu_clk, + cpu_clk => cpu_clk, + locked => clock_locked ); +-- clk_60mhz => ila_clock); + +--make_secd: if fep_only /= '1' generate +-- ---------------------------------------- +-- -- +-- -- SECD CPU instantiation +-- -- +-- ---------------------------------------- +-- +-- my_secd_system : entity secd_system port map ( +-- clk => cpu_clk, +-- reset => reset, +-- button => secd_button, +-- ram_read => secd_ram_read32, +-- ram_in => secd_ram_dout32, +-- ram_write => secd_ram_write32, +-- ram_out => secd_ram_din32, +-- ram_a => secd_ram_addr32, +-- ram_busy => secd_ram_busy, +-- stop_input => secd_stop, +-- stopped => secd_stopped, +-- state => secd_state +-- ); +--end generate; + + ---------------------------------------- + -- + -- SECD RAM Controller instantiation + -- + ---------------------------------------- + + my_secd_ram : entity secd_ram_controller port map ( + clk => vdu_clk, + reset => reset, + secd_stopped => secd_stopped, + + -- SECD interface + din32 => secd_ram_din32, + dout32 => secd_ram_dout32, + addr32 => secd_ram_addr32, + read32_enable => secd_ram_read32, + write32_enable => secd_ram_write32, + busy32 => secd_ram_busy, + + -- 6809 interface + clk8 => cpu_clk, + din8 => cpu_data_out, + dout8 => secd_ram_dout8, + addr8(15 downto 8) => secd_ram_addr_hi, + addr8(7 downto 0) => cpu_addr(7 downto 0), + cs8_ram => secd_ram_cs, + rw8 => cpu_rw, + hold8 => secd_ram_hold, + + -- Compact Flash interface + cs8_cf => cf_cs, + + -- external interface + ram_oen => ram_oenx, + ram_cen => ram_cenx, + ram_wen => ram_wenx, + ram_io => ram_io, + ram_a => ram_a, + ram_bhen => ram_bhenx, + ram_blen => ram_blenx + ); + + +---------------------------------------- +-- +-- ACIA Clock +-- +---------------------------------------- +my_ACIA_Clock : ACIA_Clock + generic map( + SYS_Clock_Frequency => VGA_Clock_Frequency, + ACIA_Clock_Frequency => ACIA_Clock_Frequency + ) + port map( + clk => vdu_clk, + acia_clk => baudclk + ); + + ---------------------------------------------------------------------- + -- + -- Process to decode memory map + -- + ---------------------------------------------------------------------- + + mem_decode : process( cpu_addr, cpu_rw, cpu_vma, + rom_data_out, + user_ram0_dout, + user_ram1_dout, + uart_data_out, + keyboard_data_out, + joystick, + vdu_data_out, + cf_data_out, + cpu_data_out, + secd_state, secd_stopped, secd_ram_dout8, secd_ram_addr_hi ) + + begin + user_ram0_cs <= '0'; + user_ram1_cs <= '0'; + rom_cs <= '0'; + uart_cs <= '0'; + keyboard_cs <= '0'; + vdu_cs <= '0'; + cf_cs <= '0'; + lcd_cs <= '0'; + led_cs <= '0'; + cpu_data_in <= X"00"; + + secd_control_cs <= '0'; + secd_ram_cs <= '0'; + secd_ram_addr_high_cs <= '0'; + + case cpu_addr(15 downto 14) is + + -- Maisforth ROM - $C000 - $FFFF + when "11" => + cpu_data_in <= rom_data_out; + rom_cs <= cpu_vma; -- read ROM + + -- RAM - $0000-$3FFF + when "00" => + case cpu_addr(13 downto 11) is + when "000" => + cpu_data_in <= user_ram0_dout; + user_ram0_cs <= cpu_vma; + + when "001" => + cpu_data_in <= user_ram1_dout; + user_ram1_cs <= cpu_vma; + + when others => + cpu_data_in <= (others => '0'); + + end case; + + -- Unmapped - $4000-$7FFF, read as FF + when "01" => + cpu_data_in <= X"FF"; + + -- I/O - $8000-$BFFF - Do additional decoding + when "10" => + case cpu_addr(13 downto 8) is + + -- Real I/O $B000 - $B0FF + when "110000" => + case cpu_addr(7 downto 4) is + + -- UART / ACIA $B000 + when X"0" => + cpu_data_in <= uart_data_out; + uart_cs <= cpu_vma; + + -- Keyboard port $B010 - $B01F + -- Note in latest System09 + -- I have moved the Keyboard + -- to $E020 to make way for the + -- Floppy Disk Controller at $E01X + -- JK. 10th Aug 07 + when X"1" => + cpu_data_in <= keyboard_data_out; + keyboard_cs <= cpu_vma; + + -- VDU port $B020 - $B02F + -- Note in latest System09 + -- I have moved the VDU to + -- $E030 - JK. 10th Aug 07 + when X"2" => + cpu_data_in <= vdu_data_out; + vdu_cs <= cpu_vma; + + -- CF port $B040 - $B04F + -- Note in latest System09 + -- I have moved the CF to + -- $E040 - JK. 10th Aug 07 + when X"4" => + cpu_data_in <= secd_ram_dout8; + cf_cs <= cpu_vma; + + -- Joystick $B0D0 (read only) + when X"D" => + if cpu_addr(3 downto 0) = "0000" then + cpu_data_in <= joystick; + end if; + + -- LED $B0E0 (write only) + when X"E" => + if cpu_addr(3 downto 0) = "0000" then + led_cs <= cpu_vma; + end if; + + -- LCD Display $B0F0 (write only) + when X"F" => + if cpu_addr(3 downto 0) = "0000" then + lcd_cs <= cpu_vma; + end if; + + when others => + null; + end case; + + -- SECD Control registers - $B100 + when "110001" => + + case cpu_addr(7 downto 0) is + + -- $B140 -> SECD Status + when X"40" => + secd_control_cs <= cpu_vma; + cpu_data_in(0) <= secd_stopped; + cpu_data_in(2 downto 1) <= secd_state; + + -- $B141 -> SECD Address High + when X"41" => + secd_ram_addr_high_cs <= cpu_vma; + cpu_data_in <= secd_ram_addr_hi; + + when others => + null; + + end case; + + -- SECD mapped memory page - $B200 + when "110010" => + cpu_data_in <= secd_ram_dout8; + secd_ram_cs <= cpu_vma; + + when others => + null; + + end case; + + when others => + null; + + end case; + end process; + +-- +-- Compact Flash Control +-- +compact_flash: process( reset_sw, + cpu_addr, cpu_rw, cpu_vma, cpu_data_out, + cf_cs, cf_rd, cf_wr ) +begin + cf_reset <= reset_sw; + cf_cs0 <= not( cf_cs ) or cpu_addr(3); + cf_cs1 <= not( cf_cs and cpu_addr(3)); + cf_wr <= cf_cs and (not cpu_rw); + cf_rd <= cf_cs and cpu_rw; + cf_iowr <= not cf_wr; + cf_iord <= not cf_rd; + cf_pwr_en <= '0'; +end process; + + +-- +-- Interrupts and other bus control signals +-- + interrupts : process( reset_sw, uart_irq, keyboard_irq, reset, joy_up, secd_ram_hold, secd_ram_cs ) + begin + cpu_irq <= keyboard_irq; + cpu_nmi <= not joy_up; + cpu_firq <= uart_irq; + cpu_halt <= '0'; + cpu_hold <= secd_ram_hold; + end process; + + -- + -- LCD write register + -- + lcd_control : process(lcd_cs, cpu_clk, cpu_data_out) + begin + if falling_edge(cpu_clk) then + if lcd_cs = '1' and cpu_rw = '0' then + lcd_d <= cpu_data_out(3 downto 0); + lcd_e <= cpu_data_out(4); + lcd_rw <= cpu_data_out(5); + lcd_rs <= cpu_data_out(6); + end if; + end if; + end process; + + -- + -- LED write register + -- + led_control : process(led_reg, led_cs, cpu_clk, cpu_data_out) + begin + if falling_edge(cpu_clk) then + if led_cs = '1' and cpu_rw = '0' then + led_reg(3 downto 0) <= cpu_data_out(3 downto 0); + else + led_reg <= led_reg; + end if; + end if; + + led <= led_reg(3 downto 0); + end process; + + -- SECD control register + -- + secd_control : process(secd_control_cs, cpu_clk, cpu_data_out) + begin + if falling_edge(cpu_clk) then + if secd_control_cs = '1' and cpu_rw = '0' then + secd_stop <= cpu_data_out(0); + secd_button <= cpu_data_out(1); + end if; + end if; + end process; + + -- + -- SECD RAM Adressing + -- + + secd_ram_addressing_high : process(cpu_clk, cpu_rw, cpu_data_out, secd_ram_addr_high_cs) + begin + if falling_edge(cpu_clk) then + if cpu_rw = '0' and secd_ram_addr_high_cs = '1' then + secd_ram_addr_hi <= cpu_data_out; + end if; + end if; + end process; + + -- + -- Joystick register + -- + read_joystick : process(cpu_clk, joy_up, joy_right, joy_down, joy_left, joy_fire) + begin + if rising_edge(cpu_clk) then + joystick(0) <= joy_up; + joystick(1) <= joy_right; + joystick(2) <= joy_down; + joystick(3) <= joy_left; + joystick(4) <= joy_fire; + joystick(7 downto 5) <= (others => '0'); + end if; + end process; + +-- +-- LED Flasher +-- + my_led_flasher: process(vdu_clk, reset, blink_count) + begin + if reset = '1' then + blink_count <= (others => '0'); + elsif rising_edge(vdu_clk) then + blink_count <= blink_count + 1; + end if; + + mm_led <= blink_count(25); + + end process; + +-- Set UART DCD to always true + DCD_n <= '0'; + +-- +-- Feed RGB DAC +-- + fpga_r(0) <= red; + fpga_r(1) <= red; + fpga_r(2) <= red; + fpga_g(0) <= green; + fpga_g(1) <= green; + fpga_g(2) <= green; + fpga_b(0) <= blue; + fpga_b(1) <= blue; + fpga_b(2) <= blue; + + -- set USB PHY to 16 bit mode so that it generates a 30 Mhz Clock + utmi_databus16_8 <= '1'; + + -- Hold system in reset until the clock is locked or when the reset + -- key is pressed. + reset <= not reset_sw or not clock_locked; + + aud_out <= (others => '0'); + + ram_bhen <= ram_bhenx; + ram_blen <= ram_blenx; + ram_cen <= ram_cenx; + ram_oen <= ram_oenx; + ram_wen <= ram_wenx; + + secd_ram_din32 <= (others => '0'); + secd_ram_addr32 <= (others => '0'); + secd_ram_read32 <= '0'; + secd_ram_write32 <= '0'; + +end; + Index: System09_Trenz_TE0141/maisforth_rom.aux =================================================================== --- System09_Trenz_TE0141/maisforth_rom.aux (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom.aux (revision 105) @@ -0,0 +1,13 @@ +t b +l an601.bin +t h +s maisforth_rom0.vhd 0000 07ff +s maisforth_rom1.vhd 0800 0fff +s maisforth_rom2.vhd 1000 17ff +s maisforth_rom3.vhd 1800 1fff +s maisforth_rom4.vhd 2000 27ff +s maisforth_rom5.vhd 2800 2fff +s maisforth_rom6.vhd 3000 37ff +s maisforth_rom7.vhd 3800 3fff +q + Index: System09_Trenz_TE0141/toplevel.ucf =================================================================== --- System09_Trenz_TE0141/toplevel.ucf (nonexistent) +++ System09_Trenz_TE0141/toplevel.ucf (revision 105) @@ -0,0 +1,173 @@ +#-------------------------------------------------------------------------------- +#-- Copyright (C) 2004 Trenz Electronic GmbH +#-- www.trenz-electronic.de +#-- Author: Kolja Sulimma +#-------------------------------------------------------------------------------- +#-- Project: TE-XC3S Application Note: Pong Demo +#-- File: toplevel.ucf +#-- Description: Pin assignments for the Pong Demo +#-- History: V1.0 2004-10-11 KS created +#-------------------------------------------------------------------------------- +#-- 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 2 +#-- 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, write to the Free Software +#-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#Reset +NET "reset_sw" LOC = "R16" | PULLUP; + +#led on micromodule +NET "mm_led" LOC = "N6" ; + +#mandatory umti signals to get a clock +NET "utmi_clkout" LOC = "D9" ; +NET "utmi_databus16_8" LOC = "B14" ; + +#utmi signals only used with USB function +NET "utmi_opmode1" LOC = "C6" ; +NET "utmi_reset" LOC = "B4" ; +NET "utmi_termselect" LOC = "B6" ; +NET "utmi_txvalid" LOC = "B12" ; +NET "utmi_xcvrselect" LOC = "D6" ; + +#vga output +NET "fpga_b<0>" LOC = "M16" | DRIVE = 24 ; +NET "fpga_b<1>" LOC = "M15" | DRIVE = 24 ; +NET "fpga_b<2>" LOC = "M14" | DRIVE = 24 ; +NET "fpga_g<0>" LOC = "N16" | DRIVE = 24 ; +NET "fpga_g<1>" LOC = "M13" | DRIVE = 24 ; +NET "fpga_g<2>" LOC = "L13" | DRIVE = 24 ; +NET "fpga_r<0>" LOC = "P16" | DRIVE = 24 ; +NET "fpga_r<1>" LOC = "N14" | DRIVE = 24 ; +NET "fpga_r<2>" LOC = "N15" | DRIVE = 24 ; +NET "hsync_b" LOC = "J13" ; +NET "vsync_b" LOC = "R1" ; + +#keyboard/mouse interfaces +NET "ps2_clk1" LOC = "C1" ; +#NET "ps2_clk2" LOC = "B1" ; +NET "ps2_data1" LOC = "C2" ; +#NET "ps2_data2" LOC = "C3" ; + +#joystick and buttons +NET "joy_down" LOC = "P15" ; +NET "joy_fire" LOC = "T14" ; +NET "joy_left" LOC = "K13" ; +NET "joy_right" LOC = "R13" ; +NET "joy_up" LOC = "P14" ; + +#leds on baseboard +NET "led<0>" LOC = "T13" ; +NET "led<1>" LOC = "R12" ; +NET "led<2>" LOC = "T12" ; +NET "led<3>" LOC = "R11" ; + +#audio +NET "aud_out<1>" LOC = "D10"; +NET "aud_out<2>" LOC = "E10"; +NET "aud_out<3>" LOC = "D11"; +NET "aud_out<4>" LOC = "D12"; + +#lcd +NET "lcd_d<3>" LOC = "M1"; +NET "lcd_d<2>" LOC = "L4"; +NET "lcd_d<1>" LOC = "L5"; +NET "lcd_d<0>" LOC = "N1"; +NET "lcd_e" LOC = "N2"; +NET "lcd_rw" LOC = "N3"; +NET "lcd_rs" LOC = "P1"; + +#rs232 +NET "fpga_cts" LOC = "K12" ; +NET "fpga_rts" LOC = "E11" ; +NET "fpga_rxd" LOC = "L12" ; +NET "fpga_txd" LOC = "J14" ; + +#ram, flash +NET "ram_a<0>" LOC = "D14" ; +NET "ram_a<1>" LOC = "K15" ; +NET "ram_a<2>" LOC = "M3" ; +NET "ram_a<3>" LOC = "L2" ; +NET "ram_a<4>" LOC = "L3" ; +NET "ram_a<5>" LOC = "K1" ; +NET "ram_a<6>" LOC = "K2" ; +NET "ram_a<7>" LOC = "J2" ; +NET "ram_a<8>" LOC = "J1" ; +NET "ram_a<9>" LOC = "G4" ; +NET "ram_a<10>" LOC = "F2" ; +NET "ram_a<11>" LOC = "F3" ; +NET "ram_a<12>" LOC = "E1" ; +NET "ram_a<13>" LOC = "E2" ; +NET "ram_a<14>" LOC = "E3" ; +NET "ram_a<15>" LOC = "D1" ; +NET "ram_a<16>" LOC = "D2" ; +NET "ram_a<17>" LOC = "B16" ; +NET "ram_a<18>" LOC = "H4" ; +NET "ram_a<19>" LOC = "H3"; +NET "ram_a<20>" LOC = "G3"; +NET "ram_io<0>" LOC = "H15" ; +NET "ram_io<1>" LOC = "H14" ; +NET "ram_io<2>" LOC = "G16" ; +NET "ram_io<3>" LOC = "G14" ; +NET "ram_io<4>" LOC = "F14" ; +NET "ram_io<5>" LOC = "E15" ; +NET "ram_io<6>" LOC = "D16" ; +NET "ram_io<7>" LOC = "E13" ; +NET "ram_io<8>" LOC = "H16" ; +NET "ram_io<9>" LOC = "H13" ; +NET "ram_io<10>" LOC = "G15" ; +NET "ram_io<11>" LOC = "F15" ; +NET "ram_io<12>" LOC = "E16" ; +NET "ram_io<13>" LOC = "E14" ; +NET "ram_io<14>" LOC = "D15" ; +NET "ram_io<15>" LOC = "C16" ; +NET "ram_bhen" LOC = "L14" ; +NET "ram_blen" LOC = "L15" ; +NET "ram_cen" LOC = "M2" ; +NET "ram_oen" LOC = "K16" ; +NET "ram_wen" LOC = "G1" ; + +#flash memory +NET "fl_resetn" LOC = "G2" ; +NET "fl_cen" LOC = "K14"; +NET "fl_oen" LOC = "J16"; +NET "fl_byten" LOC = "C15"; +NET "fl_busyn" LOC = "H1" ; + +#compact flash +NET "cf_we" LOC = "D8"; +NET "cf_reg" LOC = "G5"; +NET "cf_cs0" LOC = "D7"; +NET "cf_cs1" LOC = "D5"; +NET "cf_reset" LOC = "E6"; +NET "cf_irq" LOC = "E4" | PULLUP; +NET "cf_iord" LOC = "F4"; +NET "cf_iowr" LOC = "F5"; +NET "cf_wait" LOC = "E7" | PULLUP; +NET "cf_dasp" LOC = "J4" | PULLUP; +NET "cf_pdiag" LOC = "J3" | PULLUP; +NET "cf_cd1" LOC = "K5" | PULLUP; +NET "cf_cd2" LOC = "K4" | PULLUP; +NET "iois16" LOC = "K3" | PULLUP; +NET "cf_oe" LOC = "M4"; +NET "cf_pwr_en" LOC = "P2"; + +#ir_data +NET "ir_data" LOC = "D3" ; + + + +#PACE: Start of PACE Area Constraints + +#PACE: Start of PACE Prohibit Constraints + +#PACE: End of Constraints generated by PACE Index: System09_Trenz_TE0141/secd_ram_controller_hans.vhd =================================================================== --- System09_Trenz_TE0141/secd_ram_controller_hans.vhd (nonexistent) +++ System09_Trenz_TE0141/secd_ram_controller_hans.vhd (revision 105) @@ -0,0 +1,379 @@ +-- secd_ram_controller.vhd +-- +-- Multiplex the external 16 bit SRAM to the 32 bit interface required +-- by the CPU and provide for an 8 bit backside port for the 6809 to +-- read and write SECD memory + +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_unsigned.all; + +entity secd_ram_controller is + port( + clk : in std_logic; + reset : in std_logic; + + secd_stopped : in std_logic; + + -- Internal interface to SECD (16k x 32) + din32 : in std_logic_vector(31 downto 0); + dout32 : out std_logic_vector(31 downto 0); + addr32 : in std_logic_vector(13 downto 0); + read32_enable : in std_logic; + write32_enable : in std_logic; + busy32 : out std_logic; + + -- Internal interface to 6809 (64k x 8) + clk8 : in std_logic; + din8 : in std_logic_vector(7 downto 0); + dout8 : out std_logic_vector(7 downto 0); + addr8 : in std_logic_vector(15 downto 0); + rw8 : in std_logic; + cs8_ram : in std_logic; + hold8 : out std_logic; + cs8_cf : in std_logic; + + -- External interface + ram_oen : out std_logic; + ram_cen : out std_logic; + ram_wen : out std_logic; + ram_io : inout std_logic_vector(15 downto 0); + ram_a : out std_logic_vector(20 downto 1); + ram_bhen : out std_logic; + ram_blen : out std_logic + ); +end; + +architecture external_ram of secd_ram_controller is + + type hold_state_type is ( hold_release_state, hold_request_state ); + + signal cf_hold_state : hold_state_type; + + signal cf_release : std_logic; + signal cf_count : std_logic_vector(3 downto 0); + + type state_type is (idle, + read32_high, read32_high_deselect, read32_low, + write32_high, write32_high_deselect, write32_low, + read8_ram, write8_ram, read8_cf, write8_cf ); + + signal state : state_type; + signal dout8_en : std_logic; + +begin + + + secd_ram_process : process( clk, state, reset, + read32_enable, write32_enable, addr32, din32, + cs8_ram, rw8, addr8, din8 ) + begin + if reset = '1' then + ram_a(20 downto 1) <= (others => '0'); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + dout8_en <= '0'; + hold8 <= '0'; + busy32 <= '0'; + state <= idle; + elsif rising_edge(clk) then + case state is + when idle => + ram_a(20 downto 1) <= (others => '0'); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + dout8_en <= '0'; + if read32_enable = '1' then + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= '0'; + ram_blen <= '0'; + hold8 <= cs8_ram or cs8_cf; + busy32 <= '1'; + state <= read32_high; + elsif write32_enable = '1' then + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '1'; + ram_wen <= '0'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= din32(31 downto 16); + hold8 <= cs8_ram or cs8_cf; + busy32 <= '1'; + state <= write32_high; + elsif (cs8_ram = '1') and (rw8 = '1') then + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= addr8(0); + ram_blen <= not addr8(0); + dout8_en <= '1'; + hold8 <= '0'; + busy32 <= '1'; + state <= read8_ram; + elsif (cs8_ram = '1') and (rw8 = '0') then + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '0'; + ram_oen <= '1'; + ram_wen <= '0'; + ram_bhen <= addr8(0); + ram_blen <= not addr8(0); + if addr8(0) = '0' then + ram_io(15 downto 8) <= din8; + ram_io( 7 downto 0) <= (others => 'Z'); + else + ram_io(15 downto 8) <= (others => 'Z'); + ram_io( 7 downto 0) <= din8; + end if; + hold8 <= '0'; + busy32 <= '1'; + state <= write8_ram; + elsif (cs8_cf = '1') and (rw8 = '1') then + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + dout8_en <= '1'; + busy32 <= '1'; + if cf_release = '1' then + hold8 <= '0'; + state <= read8_cf; + else + hold8 <= '1'; + state <= idle; + end if; + elsif (cs8_cf = '1') and (rw8 = '0') then + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + busy32 <= '1'; + if addr8(0) = '0' then + ram_io(15 downto 8) <= din8; + ram_io( 7 downto 0) <= (others => 'Z'); + else + ram_io(15 downto 8) <= (others => 'Z'); + ram_io( 7 downto 0) <= din8; + end if; + if cf_release = '1' then + hold8 <= '0'; + state <= write8_cf; + else + hold8 <= '1'; + state <= idle; + end if; + else + hold8 <= '0'; + busy32 <= '0'; + state <= idle; + end if; + + when read32_high => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + dout32(31 downto 16) <= ram_io; + busy32 <= '1'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= read32_high_deselect; + + when read32_high_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '0'; + ram_wen <= '1'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= (others => 'Z'); + busy32 <= '1'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= read32_low; + + when read32_low => + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + dout32(15 downto 0) <= ram_io; + busy32 <= '0'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= idle; + + when write32_high => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + busy32 <= '1'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= write32_high_deselect; + + when write32_high_deselect => + ram_a(1) <= '1'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '0'; + ram_oen <= '1'; + ram_wen <= '0'; + ram_bhen <= '0'; + ram_blen <= '0'; + ram_io <= din32(15 downto 0); + busy32 <= '1'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= write32_low; + + when write32_low => + ram_a(1) <= '0'; + ram_a(20 downto 2) <= "00000" & addr32(13 downto 0); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + busy32 <= '0'; + dout8_en <= '0'; + hold8 <= cs8_ram or cs8_cf; + state <= idle; + + when read8_ram => + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_io <= (others => 'Z'); + busy32 <= '0'; + dout8_en <= '0'; + hold8 <= '0'; + state <= idle; + + when write8_ram => + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_io(15 downto 0) <= (others => 'Z'); + busy32 <= '0'; + dout8_en <= '0'; + hold8 <= '0'; + state <= idle; + + when read8_cf => + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + ram_io <= (others => 'Z'); + busy32 <= '0'; + dout8_en <= '0'; + hold8 <= '0'; + state <= idle; + + when write8_cf => + ram_a(1) <= '1'; + ram_a(20 downto 1) <= "00000" & addr8(15 downto 1); + ram_cen <= '1'; + ram_oen <= '1'; + ram_wen <= '1'; + ram_bhen <= '1'; + ram_blen <= '1'; + busy32 <= '1'; + dout8_en <= '0'; + hold8 <= '0'; + state <= idle; + + when others => + null; + + end case; + end if; + end process; + +-- +-- 8 Bit data bus output enable process +-- +-- The point of this process is that data must be +-- passed through from the ram input, +-- and not clocked, so it is ready for the CPU +-- on the trailing clock edge +-- +dout8_selector : process( dout8_en, addr8, ram_io ) +begin + if dout8_en = '0' then + dout8 <= ( others => '0' ); + else + if addr8(0) = '0' then + dout8 <= ram_io(15 downto 8); + else + dout8 <= ram_io(7 downto 0); + end if; + end if; +end process; + +-- +-- Hold CF access for a few cycles +-- synchronize with the CPU clock +-- hold release is set on the rising edge +-- of the CPU clock so that you have one +-- VGA clock cycle to return to the idle state +-- of the secd_ram_process state machine. +-- + cf_hold_proc: process( clk8, reset ) + begin + if reset = '1' then + cf_release <= '0'; + cf_count <= "0000"; + cf_hold_state <= hold_release_state; + elsif rising_edge( clk8 ) then + case cf_hold_state is + when hold_release_state => + cf_release <= '0'; + if cs8_cf = '1' then + cf_count <= "0011"; + cf_hold_state <= hold_request_state; + end if; + + when hold_request_state => + cf_count <= cf_count - "0001"; + if cf_count = "0000" then + cf_release <= '1'; + cf_hold_state <= hold_release_state; + end if; + when others => + null; + end case; + end if; + + end process; + +end; Index: System09_Trenz_TE0141/maisforth_rom0.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom0.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom0.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"F9E8FAB4FBDDFB0CFABAFA15FBCEFAA5FAE9F7A5F7FEFA7BFADFF8F0F85EF17E", + INIT_01 => x"00000200000000000000003000F3FB1F000000000003037AEA0FFDC1ED63FA61", + INIT_02 => x"003B00003B00003B00003B00000A000000000000000003000003000000000000", + INIT_03 => x"20375449584504020000846E0635011F45545543455845070200003B00003B00", + INIT_04 => x"0000B16E20370227063500008310455552542D4E4F2D544958450C040000B16E", + INIT_05 => x"4404040000B16E2037022606350000831045534C41462D4E4F2D544958450D04", + INIT_06 => x"6E101F063410352035203653454F444F4406040000B16E10362037211F455649", + INIT_07 => x"36EEC0BD3A4F44030400007EC03DCDD5C0BDEEC0BD52454F444F4406040000B1", + INIT_08 => x"05040000B16E101F06341035EEC0BD4554414552434F440804BEC0B16E203520", + INIT_09 => x"341035EEC0BD4E4F43434F4406040000B16E101F06341035EEC0BD5241564F44", + INIT_0a => x"4F440504E4C0B16E84EC06341035EEC0BD4E4F434F440504F8C0B16E1D84E606", + INIT_0b => x"EC06341035EEC0BD524156494F4406045DC1B16E84EC06341035EEC0BD4C4156", + INIT_0c => x"41564F440604CEC0B16E94EC06341035EEC0BD4C4156494F4406041FC1B16E84", + INIT_0d => x"1D5A012702845F00B0B606343F54494D45050285C0B16EE1E34958EEC0BD5352", + INIT_0e => x"552106060000B16E063501E7FA27028484A600B08E54494D4528050486C1B16E", + INIT_0f => x"2701845F00B0B606343F59454B04020000B16E063584A7558600B08E54524153", + INIT_10 => x"070468C0B16E4F01E6FA2701C484E600B08E063459454B0302F2C1B16E1D5A01", + INIT_11 => x"C4AE063424454E494C4E49070479C0B16EC4AF81ECC4AE063423454E494C4E49", + INIT_12 => x"C4AF853080E6C4AE063424454E494C4E492F08040000B16EC4AF3A10344F80E6", + INIT_13 => x"3500008310292846490404A1C0B16EA4AE1029284F544F47060434C2B16E0635", + INIT_14 => x"052706350000831029284F52455A4649080476C2B16E2231B16EA4AE10052606", + INIT_15 => x"A0E6063429432803040000B16EA1EC0634292802040000B16E2231B16EA4AE10", + INIT_16 => x"84E3A1AE29284F542B050467C2B16E063584EDA1AE29284F540404B8C2B16E1D", + INIT_17 => x"C2B16E063584ED0100C384EC0634A1AE292852434E4906041FC2B16E063584ED", + INIT_18 => x"05040000B16E063510368B300636E1A30080CC011F1036A1AE29284F440404C6", + INIT_19 => x"EC06342928504F4F4C060402C3B16EA4AE1006356232DD26E4A31029284F443F", + INIT_1a => x"504F4F4C2B070408C2B16E063546332231B16EA4AE100635C4ED09290100C3C4", + INIT_1b => x"33504F4F4C4E550602D6C2B16E20374433455641454C0502ACC2DE20C4E32928", + INIT_1c => x"0493C3B16E48A346EC06344A01029BC1B16E42A3C4EC0634490102AEC1B16E46", + INIT_1d => x"54060449C1250090C1BD47534D504F54060469C3230090C1BD434F56504F5406", + INIT_1e => x"444C480304BEC3290090C1BD41464E504F54060408C1270090C1BD584650504F", + INIT_1f => x"0090C1BD23534303041FC32D0090C1BD545845544E4F4307044DC22B0090C1BD", + INIT_20 => x"04E9C2330090C1BD45444F4D0404E8C3310090C1BD322D2347534D0604DDC12F", + INIT_21 => x"03048FC2370090C1BD53454D495423060478C3350090C1BD4E4F495443455307", + INIT_22 => x"0090C1BD45524548540504A0C33B0090C1BD424902045AC3390090C1BD424923", + INIT_23 => x"4D4948050636C3410090C1BD5245560306CDC33F0090C1BD524F48030633C13D", + INIT_24 => x"C3470090C1BD3F544F44040656C4450090C1BD4B4F020604C4430090C1BD4D45", + INIT_25 => x"BD4E493E030270C44B007BC1BD445257030420C4490090C1BD455245480402AF", + INIT_26 => x"C453007BC1BD4554415453050230C451007BC1BD45534142040271C14F007BC1", + INIT_27 => x"2705068AC458007BC1BD3249575327050613C455007BC1BD334957532705064B", + INIT_28 => x"C1BD4957532704060CC55E007BC1BD515249270406E2C45B007BC1BD51524946", + INIT_29 => x"C100C052C1BD4E494749524F06023FC464007BC1BD494D4E27040619C561007B", + INIT_2a => x"C37F3DC1BD544E45525255430704F0C4753DC1BD4B43415453444E49460904C5", + INIT_2b => x"0152C1BD3052020495C47E0152C1BD3053020433C5800052C1BD4249540304DC", + INIT_2c => x"070484C5FC0252C1BD305343030486C3000252C1BD465542594C460604A2C4FE", + INIT_2d => x"BD455552540402BBC4023DC1BD4C4C454304066EC57E3DC1BD455A4953424954", + INIT_2e => x"4C430704F8C3203DC1BD4C4202029FC5003DC1BD45534C41460502C7C4FF3DC1", + INIT_2f => x"0493C5B16EFE01CE522D5241454C430704AEC5B16E06357E01CE10532D524145", + INIT_30 => x"35011F21430202DDC5B16E301F06344050520304BAC5B16E401F063440505303", + INIT_31 => x"0635011F21320202C6C5B16E063584ED0635011F21010253C5B16E063584E706", + INIT_32 => x"0306D4C4B16E063584ED84E30635011F212B0202FEC4B16E063584ED063581ED", + INIT_33 => x"3584ED0100C384EC011F212B31030600C6B16E063584E784EB0635011F212B43", + INIT_34 => x"32020279C5B16E84EC011F40010242C5B16E4F84E6011F40430202F0C5B16E06", + INIT_35 => x"060DC6B16E10344F80E6011F544E554F43050272C6B16E103484AE81EC011F40", + INIT_36 => x"3706343E5202027CC4B16E06350636523E0202D3C5B16E103481EC011F2B4002", + INIT_37 => x"37063706343E52320302CEC6B16E0635063610361035523E3203029EC6B16E06", + INIT_38 => x"C4EC103442AE06344052320302C0C6B16EC4EC063440520202E6C6B16E103410", + INIT_39 => x"0225C7B16E4433504F52445232060608C7B16E4233504F5244520506DAC6B16E", + INIT_3a => x"04024FC7B16E10340634E4AE505544320402F7C6B16E06356232504F52443205", + INIT_3b => x"C7B16E66EC063466EC06345245564F3205025FC7B16E10346432103550494E32", + INIT_3c => x"5432050264C4B16E62AF62EC1037E4ED64AF64ECE4AE06365041575332050240", + INIT_3d => x"C088C7FBC688C7EAC6FFC0BD544F5232040232C77EC075C788C7FFC0BD4B4355", + INIT_3e => x"C6B16E0635504F5244040293C6B16E06340227000083105055443F0402AEC67E", + INIT_3f => x"504157530402AFC4B16E62EC06345245564F040286C6B16E0634505544030239", Index: System09_Trenz_TE0141/maisforth_rom1.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom1.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom1.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"AE544F52030282C7B16E1034E4EDE4AE4B43555404026FC7B16E101FE4EDE4AE", + INIT_01 => x"4E03020BC8B16EE4AFE4EC62ED62AE544F522D040226C5B16E62AF62ECE4EDE4", + INIT_02 => x"E4A3104E494D03025FC6B16E84EC3A411F584B43495004021BC8B16E62325049", + INIT_03 => x"A3104E494D5504061AC6B16E0635D02EE4A31058414D03024DC6B16E0635E02D", + INIT_04 => x"891F3C3002029DC7B16E0635AE22E4A31058414D5504062CC8B16E0635BF25E4", + INIT_05 => x"103E300202D6C7B16E5F4FB16E1D530426000083103D3002023EC8B16E891F1D", + INIT_06 => x"0202E2C7B16E5F4FD927E1A33D0102FBC7B16E891F431D891FB16E0226000083", + INIT_07 => x"3E55020269C8B16EEE26000083103E3C3003029BC8B16EFFFFCC0327E1A33E3C", + INIT_08 => x"4FC72DE1A33E010249C8B16E5F4FD422E1A33C5502028AC8B16E5F4FE225E1A3", + INIT_09 => x"02D2C8B16EE0E4E0A4444E4103020BC9B16E5F4FBA2EE1A33C0102EEC8B16E5F", + INIT_0a => x"545245564E49060279C8B16EE0E8E0A8524F58030226C9B16EE0EAE0AA524F02", + INIT_0b => x"A8C8B16EFA261F304958062784300635011F54464948534C060262C5B16E5343", + INIT_0c => x"45545942080681C9B16EFA261F305644062784300635011F5446494853520602", + INIT_0d => x"14C7B16E0100832D31020240C9B16E0100C32B310202C4C7B16E891E50415753", + INIT_0e => x"2D0102B6C9B16EE1E32B010259C9B16E56472F320202BCC8B16E49582A320202", + INIT_0f => x"19C9B16E4959101F063449580635011F2A3244030267C9B16E0100C35343E1A3", + INIT_10 => x"B16EE820442F3255440406AFC7B16E101F063456460635011F56472F32440302", + INIT_11 => x"06D5C9B16EEF2D4D5342410302EDC7B16E0100C3534345544147454E0602ECC9", + INIT_12 => x"011F1D5F063445544147454E4407029BC9B16EDD2D06354D45544147454E3F07", + INIT_13 => x"443F080633C9B16EE22D4D53424144040252CAB16EE1A31D00C2101F62ED62A3", + INIT_14 => x"8900C9101F62ED62E30635011F2B44020216CAB16ECF2D06354D45544147454E", + INIT_15 => x"C9B16E6632E4A3008200C264EC66ED62A366EC06342D44020201CAB16EE1E300", + INIT_16 => x"ED3D61E665A616342A4D55030259C8B16E008900C9063562ED62E32B4D0202DE", + INIT_17 => x"E33D64A6E4A7E4E649008661ED61E33DE4E665A661ED008962EB3D61E664A662", + INIT_18 => x"626963696469656810008E0634444F4D2F4D5506027DCAB16EE4AF643262AEE4", + INIT_19 => x"62AE534364ECE2261F306469656962ED0225E4A30620FE1C62EDE4A3082462EC", + INIT_1a => x"370635FA261F30A0E7062700008C303520364C4C49460402C1C9B16E643264AF", + INIT_1b => x"C20927A0A080A60F205FE4EDE4AE1062AF1062AE62E33E3C530306C2CAB16E20", + INIT_1c => x"AF1062AE62E345564F4D430502D4CAB16E30351DED26E4ACB16E303501CA1D00", + INIT_1d => x"3E45564F4D4306022AC6B16E06353035F826E4ACA0E780E60420E4EDE4AE1062", + INIT_1e => x"343F31B16E06353035F726E4AC10A2E782E60420AB31E4AE1062AF108B3062AE", + INIT_1f => x"F8261F30E126A0E1082700008C3035203650494B53040666CBB16E101F203720", + INIT_20 => x"02FDC8C220F8261F30C627A0E1082700008C303520364E4143530406ABC9DD20", + INIT_21 => x"4F423E0502DFC8B16E0100C32B52414843050220CCB16E0200C32B4C4C454305", + INIT_22 => x"00832D5241484305064ACCB16E0200832D4C4C4543050694CBB16E0300C35944", + INIT_23 => x"74CCB16E4958534C4C454305022ECCB16E0300833E59444F42050690CAB16E01", + INIT_24 => x"52040266CCB16E0300834B4E494C3E454D414E090423CAB16E53524148430503", + INIT_25 => x"CBC97EC0DBC7C0CB7ACCAEC9DDC626CCE6C704C64EC80BC7D1C6FFC0BD4C4C4F", + INIT_26 => x"00DCC2FFC0BD544F4C4C41050258CC7EC0D7C940BCC2A7C4FFC0BD4441500302", + INIT_27 => x"FFC0BD2C430202EACB7EC04900DCC2B3C52CC6A7C4FFC0BD2C01024CC97EC049", + INIT_28 => x"CCB16E101F85301FC480E6011F3E454D414E0506A8CA7EC04900F0C21DC6A7C4", + INIT_29 => x"FFC0BD52454F4421050481CCB16E101FFA2682E460C6011F454D414E3E0506E6", + INIT_2a => x"040DCDB16E1D5A5801C482E6011F4D4D494004049ECC7EC02CC6AEC913CDD4C3", + INIT_2b => x"CCB16E1D7EC482E6011F434F5640040460CDB16E891F1D82E6011F3F4D4F4804", + INIT_2c => x"0405CCB16E1D5A012400C6E1A3E4AFE1A362EC011FE4A34E49485449570602FA", + INIT_2d => x"BD53433E0304C1CC7EC0E0C937C97CBCC2C4C97ACCFCC397C5FFC0BD50534303", + INIT_2e => x"00DCC2FFBCC2A1C6A4CDFFC0BD3E5343030482CD7EC03CC6A4CD2F00F0C2FFC0", + INIT_2f => x"C2DDC6D3CD2F00DCC22ACAD1C6FCC3FFC0BD4B4349502D5343070240CA7EC02F", + INIT_30 => x"26CE25C300BCC20BC7D1C6FFC0BD4C4C4F522D53430702B9CB7EC0BFCD2F00CB", + INIT_31 => x"CE7EC0BFCDFBC633CE3DC3BFCD39CE25C300BCC2EAC6D3CDDDC620CE3DC3D3CD", + INIT_32 => x"38CAF2C738CAF2C7FFC0BD2A4D020237CDB16E891F1D891F0634443E5303020A", + INIT_33 => x"C775CAD1C6D1C6F2C7FFC0BD4D45522F4D53060252CE7EC086CA50C988C7D8CA", + INIT_34 => x"4F4D2F4D46060271CD7EC000C848CADDC600C848CA50C90BC7DDC613CB38CA0B", + INIT_35 => x"9EC850C90BC71FC800C848CA0BC700C813CB38CA0BC775CA10C8D1C6FFC0BD44", + INIT_36 => x"BD2A01024DCD7EC02BC700C8E0C91FC80BC7B9C9D6CE7BC2F2C72ACAD6CE7BC2", + INIT_37 => x"020CCB7EC0A1CEDDC646CED1C6FFC0BD444F4D2F040242CE7EC0DBC755CEFFC0", + INIT_38 => x"2A05029ACE7EC0DBC7F0CEFFC0BD444F4D0302E6CD7EC042C8F0CEFFC0BD2F01", + INIT_39 => x"7EC042C824CFFFC0BD2F2A02028CCC7EC0A1CEDDC655CED1C6FFC0BD444F4D2F", + INIT_3a => x"C10DBCC2FFC0BD52430202A0CD7EC03F00F0C2CBC1FFC0BD54494D450402D4CC", + INIT_3b => x"D6C5FFC0BD4543415053050243CF7EC04100F0C23F00CBC2CCC5CBC10ABCC2CB", + INIT_3c => x"48CFE6C7A4CF25C300BCC200C8D6C5FFC0BD534543415053060275CF7EC048CF", + INIT_3d => x"3DC348CFB4C6C2CF25C300BCC2FFC0BD45505954040249CB7EC0DBC79CCF3DC3", + INIT_3e => x"CBC2CCC53F00CBC2CCC548CF0CBCC2FFC0BD454741500402DDCE7EC0DBC7BACF", + INIT_3f => x"C1F2C7D6C508BCC2AFC068C4FFC0BD45434150534B434142090634CF7EC04100", Index: System09_Trenz_TE0141/maisforth_rom2.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom2.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom2.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"0CC2FFC0BD474E49545045434341090434CA7EC03F00DCC2FFBCC2CBC1CBC1CB", + INIT_01 => x"D4C808BCC27EC0DBC764C73BD07BC2D4C8F2C70DBCC254D07BC228C9D6C5E6C7", + INIT_02 => x"D07BC2D4C84EC804BCC2F2C7D6C51ED06EC2B9C9F1CF4ED07BC2E6C752D07BC2", + INIT_03 => x"504543434106026DCE1ED06EC2AEC948CF1DC6D7C975C7E6C71ED06EC2DBC767", + INIT_04 => x"CB00C8CCC510C8FFC0BD444F4D2F55440606BBCD7EC01BD0CCC500C8FFC0BD54", + INIT_05 => x"C6D8CAD1C6DBC7D8CA10C8FFC0BD2A55440306E7CF7EC0DDC613CB00C8D1C613", + INIT_06 => x"0270CA7EC01DC6E0C32B00DCC2FFBCC2FFC0BD444C4F48040222CD7EC0D7C9DD", + INIT_07 => x"09BCC2E6C7FFC0BD54494749443E0604ABCF7EC02B00CBC2C5CCFFC0BD233C02", + INIT_08 => x"1FC896D095C6CCC4FFC0BD2301027AD07EC0D7C930BCC2D7C937C907BCC21BC9", + INIT_09 => x"230202EBCE7EC02FD198C243C954C715D1FFC0BD5323020287CF7EC0CDD0F8D0", + INIT_0a => x"C2AFC09EC8FFC0BD4E474953040256CF7EC0E0C9F2C7C5CCE0C346C7FFC0BD3E", + INIT_0b => x"C9CF7EC041D12CD1E3D0FFC0BD474E495254532E55440906F1D07EC0CDD02DBC", + INIT_0c => x"06AED07EC041D158D11FC82CD1E3D075CA10C8FFC0BD474E495254532E440806", + INIT_0d => x"D1FFC0BD2E554403068FD07EC0B0CF8ECFE0C95DC854C7FFC0BD455059545205", + INIT_0e => x"0202CAD17EC0A6D1DDC673D1D1C6FFC0BD522E55440406C8D07EC07BCFB0CF73", + INIT_0f => x"021ECF7EC0BCD100BCC2FFC0BD2E55020213D17EC07BCFB0CF8AD1FFC0BD2E44", + INIT_10 => x"D17EC0A6D1DDC68AD1D1C6FFC0BD522E440302A0D17EC0E2D146CEFFC0BD2E01", + INIT_11 => x"C6FFC0BD522E0202E0D07EC0A6D1DDC673D100BCC2D1C6FFC0BD522E55030229", + INIT_12 => x"4345440702DFD17EC002D295C6FFC0BD3F010200CF7EC0A6D1DDC68AD146CED1", + INIT_13 => x"C6CCC410BCC2FFC0BD5845480302B8D17EC02CC6CCC40ABCC2FFC0BD4C414D49", + INIT_14 => x"554F530602F0D17EC02CC6CCC402BCC2FFC0BD5952414E494206063CCC7EC02C", + INIT_15 => x"AFE4EC62ED62E3011F474E495254532F070222D27EC043C44EC4FFC0BD454352", + INIT_16 => x"435441432906049CD2B16E10365E304036284843544143060411D0B16EE1A3E4", + INIT_17 => x"0469D17EC0E1D270C0CFD2FFC0BD484354414305023ED1B16E5F4F0634443348", + INIT_18 => x"524F42410502AFD2B16E2037101F4037F926C1A310301F011F574F5248542806", + INIT_19 => x"6E20C002227AC1062561C1524550505528060473D27EC007D3FFBCC2FFC0BD54", + INIT_1a => x"AEC91DC6F2C735D389C6E6C764D325C300BCC2FFC0BD524550505505064ED2B1", + INIT_1b => x"7EC8D1C6E0C954C71FC8FFC0BD455241504D4F43070244D37EC0DBC754D33DC3", + INIT_1c => x"4F4D0402ECD27EC0AEC9C4C9BFC8AFC0E6C7DDC67EC02BC78CD37BC2C9C76ACB", + INIT_1d => x"414C50050600D37EC0C0CB7EC09ACBB5D37BC289CD75C7D7C954C7FFC0BD4556", + INIT_1e => x"A3D2D1C6FFC0BD44524F57040253D17EC0A2D300C834CC1DC654C7FFC0BD4543", + INIT_1f => x"3CC6B3C454C7E0C9F2C7D1C60ACCDDC600C8F2C7EFCB0BC710C8B7D295C6BFC4", + INIT_20 => x"BD45535241500502BCD37EC0A7C450C6BFC4E0C9D7C9F2C8E6C7DDC6C2D3A7C4", + INIT_21 => x"BFC4E0C9D7C9F2C8E6C7DDC6EAC60ACCDDC654C7B7D295C6BFC4A3D2D1C6FFC0", + INIT_22 => x"C6B16E0635042B5D401F06344B434154533F0606DAD27EC0E0C9F2C7DDC650C6", + INIT_23 => x"CD49BCC202BCC295C6CCC4FFC0BD455341423F05064DD407D37E1D5C01264DFC", + INIT_24 => x"D3EABCC292C0D4C8FFC0BD524941503F0506D4D37EC007D3C2BCC264D292C089", + INIT_25 => x"0802A6D47EC007D3F2BCC292C095C6DAC4FFC0BD504D4F433F0506C8D27EC007", + INIT_26 => x"4D4F4309046BD37EC04900DCC2B3C52CC6A7C4ACD4FFC0BD2C454C49504D4F43", + INIT_27 => x"CD7EC02CC6DAC4CCC5FFC0BD5B01030ECF7EC0C8D427C2FFC0BD2928454C4950", + INIT_28 => x"FFC0BD45524548542D454641530A046CD47EC02CC6DAC4BFC5FFC0BD5D0102CF", + INIT_29 => x"594C46050400D27EC05CC43D00CBC28BC535D57BC20EC9E0C98BC55CC440BCC2", + INIT_2a => x"C004D5EAC6DDC64900CBC2E6C73D00CBC2A7C41DD592C095C6DAC4FFC0BD5245", + INIT_2b => x"FFC0BD2953282204045CD27EC03D00CBC24900CBC25CC4A7C4F4D47EC0E6D4C3", + INIT_2c => x"C2FFC0BD282E02033CD57EC0B0CF3CC2FFC0BD295328222E050486D27EC03CC2", + INIT_2d => x"78D57EC0DACCAEC989C6D9D3FFC0BD2C44524F570506BFD47EC0B0CF1FD429BC", + INIT_2e => x"4F424109049DD37EC0C2D3DACCAEC9F2C7A7C41FD4FFC0BD2C45535241500606", + INIT_2f => x"06031BD37EC056C207D3FEBCC23100CBC20BC7F8D57BC2FFC0BD295328225452", + INIT_30 => x"42D5FFC0BD22010739D27EC0C8D522BCC2E6D5E6D442D5FFC0BD2254524F4241", + INIT_31 => x"42D5FFC0BD222E020319D61ED66EC2FFC0BD225302038FD40FD66EC27DD5E6D4", + INIT_32 => x"00CBC2E8CCB6C3E8CC00C8A7C4FFC0BD2247534D0406F2D40FD66EC28DD5E6D4", + INIT_33 => x"0438D67EC0CEC9E0C900C871C504C6FFC0BD48545045440502C1D50FD66EC225", + INIT_34 => x"45444F4D54494E49080402D57EC089CD8000AFC280BCC2FFC0BD3F5449423805", + INIT_35 => x"C1BCC2AFC0FFC0BD4C4147454C4C493F0804DCD57EC03300CBC230BCC2FFC0BD", + INIT_36 => x"BCC2B9C900C83300CBC220BCC2FFC0BD4745525845444E490804AFD67EC007D3", + INIT_37 => x"BCC2FFC0BD45444F4347455207042ED37EC043C96EC905BCC2B8D60EC9F2C703", + INIT_38 => x"4040201006040200535559584442412C107DD5D1C6E0C937C9D6C528C9F2C75A", + INIT_39 => x"45444F4D2B0504DCD407D3C1BCC27EC089C6D7C932D77BC20ACCDDC610C8CEC9", + INIT_3a => x"040ED27EC037C90FBCC292C0E2C850BCC237C9F000AFC2E6C7D7C918C4FFC0BD", + INIT_3b => x"AFC200C88AD77BC286D6E6C7E0C9D7C902BCC2A7C400C8FFC0BD4C4552435005", + INIT_3c => x"C0BD544553464F43060497D67EC0E8CCFDCC00C8B9C97EC0FDCCFDCC37C9FE00", + INIT_3d => x"10BCC2F0BCC2F2C77EC0DBC7FDCC43C904BCC237C9F000AFC2B8D798C2F2C7FF", + INIT_3e => x"CC43C937C91FBCC200C837C960BCC2E3D77BC237C9ABC837C910BCC2F2C789CD", + INIT_3f => x"04FFD57EC0E8CCFDCC7EC0FDCCFDCC37C9FE00AFC2F7D77BC286D6F2C77EC0FD", Index: System09_Trenz_TE0141/maisforth_rom3.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom3.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom3.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"C725D87BC2D4C88900AFC2E6C737C98F00AFC2E6C7FFC0BD44455845444E4907", + INIT_01 => x"C2D4C88F00AFC2E6C77EC066D7DBC737D87BC2D4C88D00AFC2E6C77EC09ED7DB", + INIT_02 => x"C989C6FFC0BD44454D4D4905043AD77EC0FDCCDBC77EC0E8CCFDCCDBC74BD87B", + INIT_03 => x"D5C0BDEEC0BD5845534F44050468D67EC0FDCC7EC0E8CC6DD87BC2B8D646CEB9", + INIT_04 => x"7EC0A0D6E8CC95C6D5C0BDEEC0BD324957534F44060487D57EC0A0D6FDCC89C6", + INIT_05 => x"ABD57EC0A0D6FDCCFDCC89C6B8D618C4D5C0BDEEC0BD494157434F44060419D4", + INIT_06 => x"7EC05AD8DBC7E0D87BC2D4C800BCC2E6C7A0D618C4FFC0BD5244414E45470604", + INIT_07 => x"DBC706D97BC2D4C820BCC2E6C77EC0FDCCDBC7DBC7F3D87BC2D4C810BCC2E6C7", + INIT_08 => x"04A3D87EC0B8D67EC0E8CCDBC7DBC719D97BC2D4C830BCC2E6C77EC008D8DBC7", + INIT_09 => x"BD59444C4F44050480D67EC0C8D8FDCC40D7B4C6D5C0BDEEC0BD47454E4F4405", + INIT_0a => x"89C6D5C0BDEEC0BD4758454F44050420D97EC0C8D8E8CC40D7C3C6D5C0BDEEC0", + INIT_0b => x"D5C0BDEEC0BD41454C4F44050439D97EC0A0D6FDCCD7C96EC904BCC200C8FDCC", + INIT_0c => x"BDEEC0BD5145424F44050474D97EC0A0D608D8FDCC89C6B8D6E0C920BCC218C4", + INIT_0d => x"C0FDCCFDCC00C8C1D97BC286D6E6C7A0D6E0C9D7C902BCC2A7C400C889C6D5C0", + INIT_0e => x"BDEEC0BD4152424F44050496D97EC0E8CCE0C902BCC2FDCC00C8FDCC10BCC27E", + INIT_0f => x"CCFDCCA4C900C803DA7BC286D6E6C7A0D6E0C9D7C902BCC2A7C400C895C6D5C0", + INIT_10 => x"C0D0D689C6D5C0BDEEC0BD292D4F44040499D57EC0E8CCB9C9FDCC00C87EC0FD", + INIT_11 => x"52534C0308F3D6004329D9BD4D4F43030854D8004029D9BD47454E030860D77E", + INIT_12 => x"0830DA004729D9BD52534103084BD6004629D9BD524F52030881D1004429D9BD", + INIT_13 => x"4929D9BD4C4F52030810DA004829D9BD4C534C03088BD8004829D9BD4C534103", + INIT_14 => x"545354030874D8004C29D9BD434E49030897D7004A29D9BD434544030852D900", + INIT_15 => x"0812D5004F29D9BD524C430308C1D8004E29D9BD504D4A030878DA004D29D9BD", + INIT_16 => x"BD414342530408CDDA018129D9BD41504D430408C0DA018029D9BD4142555304", + INIT_17 => x"9CDA018429D9BD41444E41040890DA028329D9BD444255530408B4DA018229D9", + INIT_18 => x"D9BD415453030800D8018629D9BD41444C0308D6D9018529D9BD415449420408", + INIT_19 => x"08DADA018929D9BD414344410408F4DA018829D9BD41524F450408C7D6008729", + INIT_1a => x"D9BD58504D4304084CDB018B29D9BD41444441040833DB018A29D9BD41524F03", + INIT_1b => x"5303082BD6028E29D9BD58444C030801DB008D29D9BD52534A03080EDB028C29", + INIT_1c => x"C129D9BD42504D4304088ADB01C029D9BD42425553040826DB008F29D9BD5854", + INIT_1d => x"41040860DA02C329D9BD44444441040854DA01C229D9BD42434253040897DB01", + INIT_1e => x"C629D9BD42444C03083CDA01C529D9BD425449420408A8DA01C429D9BD42444E", + INIT_1f => x"44410408BEDB01C829D9BD42524F45040840DB00C729D9BD4254530308E7DA01", + INIT_20 => x"01CB29D9BD424444410408FDDB01CA29D9BD42524F0308A4DB01C929D9BD4243", + INIT_21 => x"BD55444C030848DA00CD29D9BD44545303080ADC02CC29D9BD44444C03086CDA", + INIT_22 => x"F0DB02831042D9BD44504D430408E4DB00CF29D9BD555453030816DC02CE29D9", + INIT_23 => x"59545303081ADB028E1042D9BD59444C030866DB028C1042D9BD59504D430408", + INIT_24 => x"00CF1042D9BD5354530308B1DB02CE1042D9BD53444C0308CBDB008F1042D9BD", + INIT_25 => x"040824DA028C1142D9BD53504D43040847DC02831142D9BD55504D43040896DC", + INIT_26 => x"327DD9BD5341454C04083BDC317DD9BD5941454C040884DA307DD9BD5841454C", + INIT_27 => x"D9BD5246540308BFDC1E5BD9BD47584503082FDC337DD9BD5541454C040889DC", + INIT_28 => x"4141440308D7DC137DD8BD434E59530408B1DC127DD8BD504F4E03086FDC1F5B", + INIT_29 => x"424103087CDC397DD8BD535452030823DC1D7DD8BD58455303087EDB197DD8BD", + INIT_2a => x"5303083DDD3D7DD8BD4C554D0308A3DC3B7DD8BD4954520308FADC3A7DD8BD58", + INIT_2b => x"CBDC437DD8BD414D4F43040861DC407DD8BD4147454E040848DD3F7DD8BD4957", + INIT_2c => x"D8BD41525341040859DB467DD8BD41524F52040872DB447DD8BD4152534C0408", + INIT_2d => x"4F5204088DDD487DD8BD414C534C040881DD487DD8BD414C5341040899DD477D", + INIT_2e => x"C9DD4C7DD8BD41434E49040853DC4A7DD8BD414345440408E3DC497DD8BD414C", + INIT_2f => x"D8BD4247454E04081CDD4F7DD8BD41524C43040875DD4D7DD8BD415453540408", + INIT_30 => x"4F520408E1DD547DD8BD4252534C040832DD537DD8BD424D4F430408EFDC507D", + INIT_31 => x"11DE587DD8BD424C5341040829DE577DD8BD42525341040810DD567DD8BD4252", + INIT_32 => x"D8BD424345440408BDDD597DD8BD424C4F5204081DDE587DD8BD424C534C0408", + INIT_33 => x"4C43040805DE5D7DD8BD42545354040859DE5C7DD8BD42434E4904085EDD5A7D", + INIT_34 => x"3F1195D8BD33495753040835DE3F1095D8BD3249575304087DDE5F7DD8BD4252", + INIT_35 => x"48535004084DDE1CADD8BD4343444E410508A5DD1AADD8BD4343524F040853DD", + INIT_36 => x"08D4DE36ADD8BD554853500408F9DD35ADD8BD534C55500408BCDE34ADD8BD53", + INIT_37 => x"20DFD9BD415242030869DD3CADD8BD494157430408EDDD37ADD8BD554C555004", + INIT_38 => x"BD4948420308F8DE219FD9BD4E5242030805DD178DDFD9BD5253420308E0DE16", + INIT_39 => x"4F4C42030871DE249FD9BD534842030826DF239FD9BD534C42030841DE229FD9", + INIT_3a => x"4E420308D8DB259FD9BD534342030847DF249FD9BD434342030831DF259FD9BD", + INIT_3b => x"42030873DF289FD9BD435642030852DF279FD9BD51454203081BDF269FD9BD45", + INIT_3c => x"03085DDF2B9FD9BD494D42030868DF2A9FD9BD4C50420308C8DE299FD9BD5356", + INIT_3d => x"089FDF2E9FD9BD5447420308AADF2D9FD9BD544C42030889DF2C9FD9BD454742", + INIT_3e => x"ECDE243DC1BD3F3C550308CBDF233DC1BD3F3E55030889DE2F9FD9BD454C4203", + INIT_3f => x"10DF283DC1BD3F53560308C0DF263DC1BD3F3D0208D5DD243DC1BD3F53430308", Index: System09_Trenz_TE0141/maisforth_rom4.vhd =================================================================== --- System09_Trenz_TE0141/maisforth_rom4.vhd (nonexistent) +++ System09_Trenz_TE0141/maisforth_rom4.vhd (revision 105) @@ -0,0 +1,64 @@ + INIT_00 => x"0816E02F3DC1BD3F3E02087EDF2C3DC1BD3F3C020804DF2A3DC1BD3F3C300308", + INIT_01 => x"DD013DC1BD58010894DF003DC1BD44010820E07EC050C901BCC2FFC0BD4F4E02", + INIT_02 => x"43500208B1DD043DC1BD530108E1DF033DC1BD550108ECDF023DC1BD59010827", + INIT_03 => x"3DC1BD52434303084BE0093DC1BD42010801E0083DC1BD410108D6DF053DC1BD", + INIT_04 => x"8118DABD2B2B290308AFDE8018DABD2B29020867E00B3DC1BD5044020839E00A", + INIT_05 => x"30E08418DABD29010842E08318DABD292D2D030898E08218DABD292D02088EE0", + INIT_06 => x"0C040CE08B18DABD294402085DE08618DABD2941020879E08518DABD29420208", + INIT_07 => x"023CDF7EC02029028DD5C3C02820028DD5FFC0BD455A49534548544E45524150", + INIT_08 => x"12E198C2E6C7B9C902D24EC8E6C76ED6AFC06ED67BCFECE054D4FFC0BD532E02", + INIT_09 => x"F3D14EC8E6C76ED6AFC06ED67BCFECE054D4FFC0BD532E550306B8E07EC0DBC7", + INIT_0a => x"7BC20EC9F2C7FDBCC2FFC0BD47534D2E040600E17EC0DBC73AE198C2E6C7B9C9", + INIT_0b => x"7BC295C6E6C795C626CC7AE16EC2B6C37EC0B0CFB4C60BC47BCFAFC0AEC970E1", + INIT_0c => x"73654D0A8DD5ECE0AFC0C9C7B0CFB4C626CC26CC76E17BC2D4C895C654C78CE1", + INIT_0d => x"BCC28DC454D472D4FFC0BD4B4F2E0304F6DF7EC03CD200BCC220232065676173", + INIT_0e => x"CF4B4F20038DD5DFE16EC26B6F20038DD5D9E17BC295C6DAC4DFE17BC237C901", + INIT_0f => x"C42BE1FFE17BC237C904BCC28DC4FFE16EC203E1F2E17BC237C902BCC28DC459", + INIT_10 => x"3CD200BCC264D2E6C795C6CCC492C0D4C895C6CCC40ABCC2AFC037C908BCC28D", + INIT_11 => x"C53B00CBC2E6C766C5FFC0BD59524555510502A3E07EC02029028DD52CC6CCC4", + INIT_12 => x"C5FFC0BD4C4C49464552060270E07EC07BCF2CC6BFC400BCC23900CBC281D0A7", + INIT_13 => x"C0BD3E44524F57050627E17EC0CCC57EC0BFC534E2B5E171E27BC2D4C84EC466", + INIT_14 => x"07D3F0BCC2A0E298C25CE2D1C6DBC77EC042C891E27BC289C6E6C7D9D3E6C7FF", + INIT_15 => x"CB580FC401E85886E858891F84A6011F4441455248540604B1E181E26EC2DDC6", + INIT_16 => x"54C75DC820BCC2AEC989C6E6C7FFC0BD454D414E444E4946080484E0B16E1D03", + INIT_17 => x"42C8EAE298C26ACB75C7E6C7FEE27BC2E6C795C696CCECE26EC2B0E2F2C74AD3", + INIT_18 => x"C200C8CCC563E37BC2E6C7EAC6FFC0BD44524F57444E49460804D5E07EC042C8", + INIT_19 => x"E37BC2D1C6E0C9F2C7DDC642C80ACC76CD42C875C718C795C650CC96CC29E36E", + INIT_1a => x"C813CDE6C742C863E37BC2E6C7DBC723E398C237C90BC765CDE6C7E6C742C845", + INIT_1b => x"F2C75BC5F0C3AFC0E6C7D0E2E6C7FFC0BD444E4946040207E37EC039C752CD00", + INIT_1c => x"A7C4D1C6FFC0BD5453494C44524F572D4843524145530F022EE27EC010E3E0C9", + INIT_1d => x"C0E6C710E301BCC21DC610C813CDA7C4C3E37BC2F2C7DDC6D0E2E6C7A7C4C2D3", + INIT_1e => x"7EC03500CBC2A7C4FFC0BD4E4F495443455321080465DE7EC042C8DBC7CCC592", + INIT_1f => x"E8CCAFC2E6D404E47BC289CD80BCC28000AFC2E6C7FFC0BD2C54494C0404A9E2", + INIT_20 => x"95C6DAC4FFC0BD4C41524554494C0703C1E07EC0D5E3FDCCBCC2E6D47EC0D5E3", + INIT_21 => x"E3E8E300C8AFC095C6DAC4FFC0BD4C41524554494C320803DFE07EC0E8E3AFC0", + INIT_22 => x"FFC0BD3E544947494406064FE17EC04500CBC2FFC0BD4B4F3E0306E3E37EC0E8", + INIT_23 => x"C296E47BC20EC9F2C710BCC284E47BC20EC9F2C709BCC2E0C930BCC20BC7D1C6", + INIT_24 => x"B5DF7EC0CCC5DDC6DBC77EC02BC7BFC596E47BC20EC995C6CCC4E6C7E0C907BC", + INIT_25 => x"CCC488C7D1C6D3E47BC25DE489C6F2C7AFC0E6C7FFC0BD5245424D554E3E0702", + INIT_26 => x"53554E494D0B0478E27EC0DBC7ACE46EC2B7D201BCC288C7C5CADDC6B2D095C6", + INIT_27 => x"D201BCC205E57BC2D4C82DBCC289C6F2C705E57BC2E6C7FFC0BD3F4E4749532D", + INIT_28 => x"88C7E6C7CCC5FFC0BD5245424D554E544F443E0A0455E27EC0CCC57EC0BFC5B7", + INIT_29 => x"00CBC2E6C7A9E4AEC992C046CE43C9D4C82EBCC289C6F2C733E598C2E6C7B9C9", + INIT_2a => x"E47EC0A9E4B7D201BCC24700CBC2E6C792C0E2C82EBCC289C6F2C7AFC0E6C747", + INIT_2b => x"7EC02BC7CCC580E57BC242C817E5D1C6E6E4FFC0BD3F5245424D554E44080629", + INIT_2c => x"C995C6DAC4AFE57BC2C9C76FE3FFC0BD4C4156450404CCE37EC0BFC586CADDC6", + INIT_2d => x"E57BC29AC4CBE57BC26BE5A1C6B3C4DBC77EC070C07EC0E8CCABE57BC29EC837", + INIT_2e => x"71C5FFC0BD504F4F4C2D4B4F0704ADE007D3C3BCC27EC019E4DBC77EC032E4C5", + INIT_2f => x"D4F8C5FFC0BD544955510402A3DEE8E56EC290E57EE2D6C52CC650CC50CC7CC5", + INIT_30 => x"CF54E17BCFB0CFA1C6B3C41DE698C260C9E6C7A0D659CFF2D2DBE5AFC234E2F4", + INIT_31 => x"0526C8FF8310B16E0635042600008310574F52485405026AE3FFE56EC2E5C57B", + INIT_32 => x"3B00CBC23900CBC2FFC0BD544552505245544E49090496DE07D37EFAE57E0635", + INIT_33 => x"02DAE47EC0DBC76BE698C289C6E6C7D9D3D6C590E56DE66EC22CC6BFC400BCC2", + INIT_34 => x"BFC4DDC6F2D255E6AFC2D1C695C6BFC4EAC6A3D2FFC0BD455441554C41564508", + INIT_35 => x"C292C0FFC0BD444E554F463F060480E67EC030E63B00CBC23900CBC2FBC62CC6", + INIT_36 => x"C0BD52414843040289E37EC0BAE66FE37EE2D6C5FFC0BD2701028BE507D3F3BC", + INIT_37 => x"CBE07EC019E4DEE6FFC0BD5D524148435B0603F5E57EC089C6AEC97EE2D6C5FF", + INIT_38 => x"D429BCC2FFC0BD280103C7E27EC019E437C91FBCC2DEE6FFC0BD4C5254430407", + INIT_39 => x"29BCC289C6B9C9D7C9A3D244E77BC295C6BFC492C00EC943C495C6BFC446C71F", + INIT_3a => x"060254E07EC02CC6BFC443C4FFC0BD5C010356E47EC01CE798C25CE292C0D4C8", + INIT_3b => x"26CC80E77BC20BC703BCC2A7C4D1C6E6C7D0E27EE2D6C5FFC0BD455441455243", + INIT_3c => x"65520B8DD559CFB7E77BC2DDC600BCC22CC6C0CBAEC989C6F2C7A7C4E6C7DACC", + INIT_3d => x"C7A7C41DC6B9C9A7C443C98000AFC27BCFB0CFB4C6A7C420676E696E69666564", + INIT_3e => x"C989C6F2C789C65BC5B9C9A7C42CC600C8A7C42CC696CCA7C495C6E6C7B0E2E6", + INIT_3f => x"4304045FE77EC0D5E311C16ADBCCC5DACCAEC989C62900CBC2A7C41DC600C843", Index: System09_Trenz_TE0141/fep_toplevel_hans.vhd =================================================================== --- System09_Trenz_TE0141/fep_toplevel_hans.vhd (nonexistent) +++ System09_Trenz_TE0141/fep_toplevel_hans.vhd (revision 105) @@ -0,0 +1,986 @@ +-- SECD Front End Processor derived from System09 written by John E. Kent +-- This core adheres to the GNU public license + +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; +--use config.all; + +entity secd_fep_trenz is + port( + utmi_clkout : in Std_Logic; -- UTMI Clock input + utmi_databus16_8 : out Std_Logic; -- UTMI configuration input + + reset_sw : in Std_logic; -- Master Reset input (active low) + + -- PS/2 Keyboard + ps2_clk1 : inout Std_logic; + ps2_data1 : inout Std_Logic; + + -- Uart Interface + fpga_rxd : in Std_Logic; + fpga_txd : out Std_Logic; + fpga_cts : in Std_Logic; + fpga_rts : out Std_Logic; + + -- CRTC output signals + vsync_b : out Std_Logic; + hsync_b : out Std_Logic; + fpga_b : out Std_Logic_Vector(2 downto 0); + fpga_g : out Std_Logic_Vector(2 downto 0); + fpga_r : out Std_Logic_Vector(2 downto 0); + + -- LEDS & Switches + mm_led : out Std_Logic; + led : out Std_Logic_Vector(3 downto 0); + + joy_down : in Std_Logic; + joy_fire : in Std_Logic; + joy_left : in Std_Logic; + joy_right : in Std_Logic; + joy_up : in Std_Logic; + + -- LCD Display + lcd_e : out Std_Logic; + lcd_rw : out Std_Logic; + lcd_rs : out Std_Logic; + lcd_d : out Std_Logic_Vector(3 downto 0); + + -- Audio + aud_out : out std_logic_vector(4 downto 1); + + -- Memory interface + ram_a : out std_logic_vector(20 downto 1); + ram_io : inout std_logic_vector(15 downto 0); + ram_bhen : out std_logic; + ram_blen : out std_logic; + ram_cen : out std_logic; + ram_oen : out std_logic; + ram_wen : out std_logic; + + -- Compact flash + cf_reset : out std_logic; +-- cf_irq : in std_logic; + cf_iord : out std_logic; + cf_iowr : out std_logic; +-- cf_wait : in std_logic; +-- cf_dasp : in std_logic; +-- cf_pdiag : in std_logic; +-- cf_cd1 : in std_logic; +-- cf_cd2 : in std_logic; +-- iois16 : in std_logic; +-- cf_oe : out std_logic; + cf_pwr_en : out std_logic; + cf_cs0 : out std_logic; + cf_cs1 : out std_logic +-- cf_we : out std_logic; +-- cf_rew : out std_logic + ); +end secd_fep_trenz; + +------------------------------------------------------------------------------- +-- Architecture for System09 +------------------------------------------------------------------------------- +architecture rtl of secd_fep_trenz is + ----------------------------------------------------------------------------- + -- constants + ----------------------------------------------------------------------------- + constant fep_only : integer := 1; + + constant SYS_Clock_Frequency : integer := 50000000; -- FPGA System Clock + constant VGA_Clock_Frequency : integer := 25000000; -- VGA Pixel Clock + constant CPU_Clock_Frequency : integer := 12500000; -- CPU Clock + constant BAUD_Rate : integer := 57600; -- Baud Rate + constant ACIA_Clock_Frequency : integer := BAUD_Rate * 16; + + ----------------------------------------------------------------------------- + -- ChipScope Pro components and signals + ----------------------------------------------------------------------------- + +-- component icon +-- port(control0 : out std_logic_vector(35 downto 0)); +-- end component; + +-- component ila +-- port(control : in std_logic_vector(35 downto 0); +-- clk : in std_logic; +-- trig0 : in std_logic_vector(39 downto 0)); +-- end component; + +-- signal chipscope_control : std_logic_vector(35 downto 0); +-- signal ila_clock : std_logic; + + ----------------------------------------------------------------------------- + -- Signals + ----------------------------------------------------------------------------- + + -- Clocks + attribute buffer_type : string; + attribute period : string; + + signal vdu_clk : std_logic; -- 25 Mhz + attribute period of vdu_clk : signal is "40 ns"; + attribute buffer_type of vdu_clk : signal is "BUFG"; + + signal cpu_clk : std_logic; -- 12.5 Mhz + attribute buffer_type of cpu_clk : signal is "BUFG"; + + -- BOOT ROM + signal rom_cs : Std_logic; + signal rom_data_out : Std_Logic_Vector(7 downto 0); + + -- RAM + signal user_ram0_cs : std_logic; + signal user_ram0_dout : std_logic_vector(7 downto 0); + signal user_ram1_cs : std_logic; + signal user_ram1_dout : std_logic_vector(7 downto 0); + + -- UART Interface signals + signal uart_data_out : Std_Logic_Vector(7 downto 0); + signal uart_cs : Std_Logic; + signal uart_irq : Std_Logic; + signal baudclk : Std_Logic; + signal DCD_n : Std_Logic; + signal RTS_n : Std_Logic; + signal CTS_n : Std_Logic; + + -- keyboard port + signal keyboard_data_out : std_logic_vector(7 downto 0); + signal keyboard_cs : std_logic; + signal keyboard_irq : std_logic; + + -- CPU Interface signals + signal cpu_rw : std_logic; + signal cpu_vma : std_logic; + signal cpu_halt : std_logic; + signal cpu_hold : std_logic; + signal cpu_firq : std_logic; + signal cpu_irq : std_logic; + signal cpu_nmi : std_logic; + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_data_in : std_logic_vector(7 downto 0); + signal cpu_data_out : std_logic_vector(7 downto 0); + + -- Compact Flash port + signal cf_data_out : std_logic_vector(7 downto 0); + signal cf_cs : std_logic; + signal cf_rd : std_logic; + signal cf_wr : std_logic; + + -- Video Display Unit + signal vdu_cs : std_logic; + signal vdu_data_out : std_logic_vector(7 downto 0); + + -- VGA output signals (distributed to VGA DAC) + signal red : std_logic; + signal green : std_logic; + signal blue : std_logic; + + -- System Reset (generated by key press) + signal reset : std_logic; + + -- LCD register select + signal lcd_cs : std_logic; + + -- LED register select + signal led_cs : std_logic; + signal led_reg : std_logic_vector(7 downto 0) := (others => '0'); + + -- Joystick buffer + signal joystick : std_logic_vector(7 downto 0); + + -- LED Flasher + signal blink_count : std_logic_vector(25 downto 0) := (others => '0'); + + -- SECD interface + signal secd_button : std_logic := '0'; + signal secd_stop : std_logic := '1'; + signal secd_stopped : std_logic := '1'; + signal secd_state : std_logic_vector(1 downto 0); + signal secd_ram_addr_hi : std_logic_vector(7 downto 0) := (others => '0'); + signal secd_ram_addr_high_cs : std_logic := '0'; + signal secd_ram_cs : std_logic := '0'; + signal secd_control_cs : std_logic := '0'; + + -- SECD RAM Controller interface + signal secd_ram_busy : std_logic; + + -- RAM signal taps + signal ram_bhenx : std_logic; + signal ram_blenx : std_logic; + signal ram_cenx : std_logic; + signal ram_oenx : std_logic; + signal ram_wenx : std_logic; + + -- Interface signals for SECD + signal secd_ram_din32 : std_logic_vector(31 downto 0); + signal secd_ram_dout32 : std_logic_vector(31 downto 0); + signal secd_ram_addr32 : std_logic_vector(13 downto 0); + signal secd_ram_read32 : std_logic; + signal secd_ram_write32 : std_logic; + + -- Interface signals for 6809 + signal secd_ram_dout8 : std_logic_vector(7 downto 0); + signal secd_ram_hold : std_logic; + + -- Locked signal of clock synthesizer + signal clock_locked : std_logic; + signal ila_clock :std_logic; +----------------------------------------------------------------- +-- +-- CPU09 CPU core +-- +----------------------------------------------------------------- + + component cpu09 + port ( + clk : in std_logic; + rst : in std_logic; + rw : out std_logic; -- Asynchronous memory interface + vma : out std_logic; + address : out std_logic_vector(15 downto 0); + data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + halt : in std_logic; + hold : in std_logic; + irq : in std_logic; + nmi : in std_logic; + firq : in std_logic + ); + end component; + + +---------------------------------------- +-- +-- 16KByte Block RAM Mais Forth ROM +-- +---------------------------------------- + component maisforth_rom_16k + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (13 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); + end component; + +---------------------------------------- +-- +-- 8KBytes Block RAM for FLEX9 +-- $C000 - $DFFF +-- +---------------------------------------- + component ram_2k + Port ( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : in std_logic_vector (12 downto 0); + rdata : out std_logic_vector (7 downto 0); + wdata : in std_logic_vector (7 downto 0) + ); + end component; + +----------------------------------------------------------------- +-- +-- Open Cores Mini UART +-- +----------------------------------------------------------------- + + component ACIA_6850 + port ( + clk : in Std_Logic; -- System Clock + rst : in Std_Logic; -- Reset input (active high) + cs : in Std_Logic; -- miniUART Chip Select + rw : in Std_Logic; -- Read / Not Write + irq : out Std_Logic; -- Interrupt + Addr : in Std_Logic; -- Register Select + DataIn : in Std_Logic_Vector(7 downto 0); -- Data Bus In + DataOut : out Std_Logic_Vector(7 downto 0); -- Data Bus Out + 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_Clock_Frequency : integer := VGA_Clock_Frequency; + ACIA_Clock_Frequency : integer := ACIA_Clock_Frequency + ); + 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_Clock_Frequency : integer := CPU_Clock_Frequency + ); + port( + clk : in std_logic; + rst : in std_logic; + cs : in std_logic; + rw : in std_logic; + addr : 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( + VDU_CLOCK_FREQUENCY : integer := CPU_Clock_Frequency; -- HZ + VGA_CLOCK_FREQUENCY : integer := VGA_Clock_Frequency; -- HZ + VGA_HOR_CHARS : integer := 80; -- CHARACTERS + VGA_VER_CHARS : integer := 25; -- CHARACTERS + VGA_PIXELS_PER_CHAR : integer := 8; -- PIXELS + VGA_LINES_PER_CHAR : integer := 16; -- LINES + VGA_HOR_BACK_PORCH : integer := 40; -- PIXELS + VGA_HOR_SYNC : integer := 96; -- PIXELS + VGA_HOR_FRONT_PORCH : integer := 24; -- PIXELS + VGA_VER_BACK_PORCH : integer := 13; -- LINES + VGA_VER_SYNC : integer := 1; -- LINES + VGA_VER_FRONT_PORCH : integer := 36 -- LINES + ); + port( + -- control register interface + vdu_clk : in std_logic; -- CPU Clock - 12.5MHz + vdu_rst : in std_logic; + vdu_cs : in std_logic; + vdu_rw : in std_logic; + vdu_addr : in std_logic_vector(2 downto 0); + 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; + +begin + + ----------------------------------------------------------------- + -- + -- ChipsScope Pro cores + -- + ----------------------------------------------------------------- + +-- i_icon : icon +-- port map(control0 => chipscope_control); +-- +-- i_ila : ila +-- port map(control => chipscope_control, +-- clk => ila_clock, +-- trig0(15 downto 8) => cpu_data_in, +-- trig0(23 downto 16) => cpu_data_out, +-- trig0(39 downto 24) => cpu_addr, +-- trig0(0) => cpu_clk, +-- trig0(1) => cpu_vma, +-- trig0(2) => ram_bhenx, +-- trig0(3) => ram_blenx, +-- trig0(4) => ram_cenx, +-- trig0(5) => ram_oenx, +-- trig0(6) => ram_wenx, +-- trig0(7) => vdu_clk); + + ----------------------------------------------------------------- + -- + -- CPU09 CPU core + -- + ----------------------------------------------------------------- + + my_cpu : entity cpu09 port map ( + clk => cpu_clk, + rst => reset, + rw => cpu_rw, + vma => cpu_vma, + address => cpu_addr, + data_in => cpu_data_in, + data_out => cpu_data_out, + halt => cpu_halt, + hold => cpu_hold, + irq => cpu_irq, + nmi => cpu_nmi, + firq => cpu_firq + ); + + ---------------------------------------- + -- + -- Maisforth ROM (Xilinx Block RAM, 16k) + -- + ---------------------------------------- + + my_maisforth_rom_16k : entity maisforth_rom_16k port map ( + clk => cpu_clk, + rst => reset, + cs => rom_cs, + rw => '1', + addr => cpu_addr(13 downto 0), + rdata => rom_data_out, + wdata => cpu_data_out + ); + + ----------------------------------------------------------------------------- + -- + -- Internal RAM (Xilinx Block RAM, 4k) + -- + ----------------------------------------------------------------------------- + + my_user_ram0_2k : entity ram_2k port map ( + clk => cpu_clk, + rst => reset, + cs => user_ram0_cs, + rw => cpu_rw, + addr => cpu_addr(10 downto 0), + rdata => user_ram0_dout, + wdata => cpu_data_out + ); + + my_user_ram1_2k : entity ram_2k port map ( + clk => cpu_clk, + rst => reset, + cs => user_ram1_cs, + rw => cpu_rw, + addr => cpu_addr(10 downto 0), + rdata => user_ram1_dout, + wdata => cpu_data_out + ); + + ----------------------------------------------------------------- + -- + -- 6850 ACIA + -- + ----------------------------------------------------------------- + + my_uart : entity acia_6850 port map ( + clk => cpu_clk, + rst => reset, + cs => uart_cs, + rw => cpu_rw, + irq => uart_irq, + Addr => cpu_addr(0), + Datain => cpu_data_out, + DataOut => uart_data_out, + RxC => baudclk, + TxC => baudclk, + RxD => fpga_rxd, + TxD => fpga_txd, + DCD_n => dcd_n, + CTS_n => fpga_cts, + RTS_n => fpga_rts + ); + + +---------------------------------------- +-- +-- PS/2 Keyboard Interface +-- +---------------------------------------- + my_keyboard : keyboard + generic map ( + KBD_Clock_Frequency => CPU_Clock_frequency + ) + port map( + clk => cpu_clk, + rst => reset, + cs => keyboard_cs, + rw => cpu_rw, + addr => cpu_addr(0), + data_in => cpu_data_out(7 downto 0), + data_out => keyboard_data_out(7 downto 0), + irq => keyboard_irq, + kbd_clk => ps2_clk1, + kbd_data => ps2_data1 + ); + +---------------------------------------- +-- +-- Video Display Unit instantiation +-- +---------------------------------------- + my_vdu : vdu8 + generic map( + VDU_CLOCK_FREQUENCY => CPU_Clock_Frequency, -- HZ + VGA_CLOCK_FREQUENCY => VGA_Clock_Frequency, -- 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 => reset, + vdu_cs => vdu_cs,