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
    from Rev 165 to Rev 164
    Reverse comparison

Rev 165 → Rev 164

/rtl/System09_Digilent_ZyboZ20/system09.ise Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
rtl/System09_Digilent_ZyboZ20/system09.ise Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: rtl/System09_Digilent_ZyboZ20/system09.vhd =================================================================== --- rtl/System09_Digilent_ZyboZ20/system09.vhd (revision 165) +++ rtl/System09_Digilent_ZyboZ20/system09.vhd (nonexistent) @@ -1,849 +0,0 @@ ---===========================================================================---- --- --- S Y N T H E Z I A B L E System09 - SOC. --- --- www.OpenCores.Org - February 2007 --- This core adheres to the GNU public license --- --- File name : System09_Xess_XSA-3S1000.vhd --- --- Purpose : Top level file for 6809 compatible system on a chip --- Designed with Xilinx XC3S1000 Spartan 3 FPGA. --- Implemented With XESS XSA-3S1000 FPGA board. --- *** Note *** --- This configuration can run Flex9 however it only has --- 32k bytes of user memory and the VDU is monochrome --- The design needs to be updated to use the SDRAM on --- the XSA-3S1000 board. --- This configuration also lacks a DAT so cannot use --- the RAM Disk features of SYS09BUG. --- --- Dependencies : ieee.Std_Logic_1164 --- ieee.std_logic_unsigned --- ieee.std_logic_arith --- ieee.numeric_std --- unisim.vcomponents --- --- Uses : mon_rom (sys09bug_rom4k_b16.vhd) Sys09Bug Monitor ROM --- cpu09 (cpu09.vhd) CPU core --- ACIA_6850 (acia6850.vhd) ACIA / UART --- ACIA_Clock (ACIA_Clock.vhd) ACIA clock. --- timer (timer.vhd) Interrupt timer --- trap (trap.vhd) Bus condition trap logic --- flex_ram (flex9_ram8k_b16.vhd) Flex operating system --- ram_32K (ram32k_b16.vhd) 32 KBytes of Block RAM --- --- --- Author : John E. Kent --- dilbert57@opencores.org --- --- Memory Map : --- --- $0000 - User program RAM (32K Bytes) --- $C000 - Flex Operating System memory (8K Bytes) --- $E000 - ACIA (SWTPc) --- $E010 - Reserved for FD1771 FDC (SWTPc) --- $E050 - Timer --- $E060 - Bus trap --- $E070 - Reserced for Parallel I/O (B5-X300) --- $E080 - Reserved for 6821 PIA (?) (SWTPc) --- $E090 - Reserved for 6840 PTM (?) (SWTPc) --- $F000 - Sys09Bug monitor Program (4K Bytes) --- ---===========================================================================---- --- --- 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 2.0 - 2 September 2004 - John Kent --- ported to Digilent Xilinx Spartan3 starter board --- removed Compact Flash and Trap Logic. --- Replaced SBUG with KBug9s --- --- Version 3.0 - 29th August 2006 - John Kent --- Adapted to XSA-3S1000 board. --- Removed DAT and miniUART. --- Used 32KBytes of Block RAM. --- --- Version 3.1 - 15th January 2007 - John Kent --- Modified vdu8 interface --- Added a clock divider --- --- Version 3.2 - 25th February 2007 - John Kent --- reinstated ACIA_6850 and ACIA_Clock --- Updated VDU8 & Keyboard with generic parameters --- Defined Constants for clock speed calculations --- --- Version 3.3 - 1st July 2007 - John Kent --- Made VDU mono to save on one RAMB16 --- Used distributed memory for Key Map ROM to save one RAMB16 --- Added Flex RAM at $C000 to $DFFF using 4 spare RAMB16s --- Added timer and trap logic --- Added IDE Interface for Compact Flash --- Replaced KBug9s and stack with Sys09Bug. --- --- Version 4.0 - 1st February 2008 - John kent --- Replaced Block RAM with SDRAM Interface --- Modified Hold timing for SDRAM --- Added CF and Ethernet interface --- via the 16 bit peripheral bus at $E100 --- ---===========================================================================-- -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; -library work; - use work.common.all; -library unisim; - use unisim.vcomponents.all; - -entity system09 is - port( - CLKA : in Std_Logic; -- 100MHz Clock input - SW2_N : in Std_logic; -- Master Reset input (active low) - SW3_N : in Std_logic; -- Non Maskable Interrupt input (active low) - - -- RS232 Port - RS232_RXD : in Std_Logic; - RS232_TXD : out Std_Logic; - - -- Status 7 segment LED - S : out std_logic_vector(7 downto 0) - --- CPU Debug Interface signals --- cpu_reset_o : out Std_Logic; --- cpu_clk_o : out Std_Logic; --- cpu_rw_o : out std_logic; --- cpu_vma_o : out std_logic; --- cpu_halt_o : out std_logic; --- cpu_hold_o : out std_logic; --- cpu_firq_o : out std_logic; --- cpu_irq_o : out std_logic; --- cpu_nmi_o : out std_logic; --- cpu_addr_o : out std_logic_vector(15 downto 0); --- cpu_data_in_o : out std_logic_vector(7 downto 0); --- cpu_data_out_o : out std_logic_vector(7 downto 0); - - ); -end system09; - -------------------------------------------------------------------------------- --- Architecture for System09 -------------------------------------------------------------------------------- -architecture rtl of system09 is - - ----------------------------------------------------------------------------- - -- constants - ----------------------------------------------------------------------------- - - -- SDRAM - constant MEM_CLK_FREQ : natural := 100_000; -- operating frequency of Memory in KHz - constant SYS_CLK_DIV : real := 2.0; -- divisor for FREQ (can only be 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 8.0 or 16.0) - constant PIPE_EN : boolean := false; -- if true, enable pipelined read operations - constant MAX_NOP : natural := 10000; -- number of NOPs before entering self-refresh - constant MULTIPLE_ACTIVE_ROWS : boolean := false; -- if true, allow an active row in each bank - constant DATA_WIDTH : natural := 16; -- host & SDRAM data width - constant NROWS : natural := 8192; -- number of rows in SDRAM array - constant NCOLS : natural := 512; -- number of columns in SDRAM array - constant HADDR_WIDTH : natural := 24; -- host-side address width - constant SADDR_WIDTH : natural := 13; -- SDRAM-side address width - - constant SYS_CLK_FREQ : natural := ((MEM_CLK_FREQ*2)/integer(SYS_CLK_DIV*2.0))*1000; -- FPGA System Clock - constant CPU_CLK_FREQ : natural := 25_000_000; -- CPU Clock (Hz) - constant CPU_CLK_DIV : natural := (SYS_CLK_FREQ/CPU_CLK_FREQ); - constant BAUD_RATE : integer := 57600; -- Baud Rate - constant ACIA_CLK_FREQ : integer := BAUD_RATE * 16; - - constant TRESET : natural := 300; -- min initialization interval (us) - constant RST_CYCLES : natural := 1+(TRESET*(MEM_CLK_FREQ/1_000)); -- SDRAM power-on initialization interval - - type hold_state_type is ( hold_release_state, hold_request_state ); - - ----------------------------------------------------------------------------- - -- Signals - ----------------------------------------------------------------------------- - -- BOOT ROM - signal rom_cs : Std_logic; - signal rom_data_out : Std_Logic_Vector(7 downto 0); - - -- Flex Memory & Monitor Stack - signal flex_cs : Std_logic; - signal flex_data_out : Std_Logic_Vector(7 downto 0); - - -- ACIA/UART Interface signals - signal acia_data_out : Std_Logic_Vector(7 downto 0); - signal acia_cs : Std_Logic; - signal acia_irq : Std_Logic; - signal acia_clk : Std_Logic; - signal rxd : Std_Logic; - signal txd : Std_Logic; - signal DCD_n : Std_Logic; - signal RTS_n : Std_Logic; - signal CTS_n : Std_Logic; - - -- RAM - signal ram_cs : std_logic; -- memory chip select - signal ram_data_out : std_logic_vector(7 downto 0); - signal ram_rd_req : std_logic; -- ram read request (asynch set on ram read, cleared falling CPU clock edge) - signal ram_wr_req : std_logic; -- ram write request (set on rising CPU clock edge, asynch clear on acknowledge) - signal ram_hold : std_logic; -- hold off slow accesses - signal ram_release : std_logic; -- Release ram hold - - -- 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); - - -- 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; - - -- Peripheral Bus port - signal pb_data_out : std_logic_vector(7 downto 0); - signal pb_cs : std_logic; -- peripheral bus chip select - signal pb_wru : std_logic; -- upper byte write strobe - signal pb_wrl : std_logic; -- lower byte write strobe - signal pb_rdu : std_logic; -- upper byte read strobe - signal pb_rdl : std_logic; -- lower byte read strobe - signal pb_hold : std_logic; -- hold peripheral bus access - signal pb_release : std_logic; -- release hold of peripheral bus - signal pb_count : std_logic_vector(3 downto 0); -- hold counter - signal pb_hold_state : hold_state_type; - signal pb_wreg : std_logic_vector(7 downto 0); -- lower byte write register - signal pb_rreg : std_logic_vector(7 downto 0); -- lower byte read register - - signal rst_i : std_logic; -- internal reset signal - signal clk_i : std_logic; -- internal master clock signal - - -- signals that go through the SDRAM host-side interface - signal opBegun : std_logic; -- SDRAM operation started indicator - signal earlyBegun : std_logic; -- SDRAM operation started indicator - signal ramDone : std_logic; -- SDRAM operation complete indicator - signal rdDone : std_logic; -- SDRAM read operation complete indicator - signal wrDone : std_logic; -- SDRAM write operation complete indicator - signal hAddr : std_logic_vector(HADDR_WIDTH-1 downto 0); -- host address bus - signal hDIn : std_logic_vector(DATA_WIDTH-1 downto 0); -- host-side data to SDRAM - signal hDOut : std_logic_vector(DATA_WIDTH-1 downto 0); -- host-side data from SDRAM - signal hRd : std_logic; -- host-side read control signal - signal hWr : std_logic; -- host-side write control signal - signal hUds : std_logic; -- host-side upper data strobe - signal hLds : std_logic; -- host-side lower data strobe - signal rdPending : std_logic; -- read operation pending in SDRAM pipeline - type ram_type is (ram_state_0, - ram_state_rd1, ram_state_rd2, - ram_state_wr1, - ram_state_3 ); - signal ram_state : ram_type; - - signal flash_ce_n : std_logic; - signal rs232_cts : Std_Logic; - signal rs232_rts : Std_Logic; - --- signal BaudCount : std_logic_vector(5 downto 0); - - signal CountL : std_logic_vector(23 downto 0); - signal clk_count : natural range 0 to CPU_CLK_DIV; - signal Clk25 : std_logic; - ------------------------------------------------------------------ --- --- CPU09 CPU core --- ------------------------------------------------------------------ - -component cpu09 - port ( - clk: in std_logic; - rst: in std_logic; - vma: out std_logic; - addr: out std_logic_vector(15 downto 0); - rw: out std_logic; -- Asynchronous memory interface - data_out: out std_logic_vector(7 downto 0); - data_in: in std_logic_vector(7 downto 0); - irq: in std_logic; - firq: in std_logic; - nmi: in std_logic; - halt: in std_logic; - hold: in std_logic - ); -end component; - ----------------------------------------- --- --- 4K Block RAM Monitor ROM --- $F000 - $FFFF --- ----------------------------------------- - -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); - data_out : out std_logic_vector (7 downto 0); - data_in : 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); - data_out : out std_logic_vector (7 downto 0); - data_in : in std_logic_vector (7 downto 0) - ); -end component; - ------------------------------------------------------------------ --- --- 6850 Compatible ACIA / UART --- ------------------------------------------------------------------ - -component acia6850 - 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 - addr : in Std_Logic; -- Register Select - 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; - ----------------------------------------- --- --- 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 - ); -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; - ----------------------------------------- --- --- 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; - - --- --- Clock buffer --- - -component BUFG - Port ( - i: in std_logic; - o: out std_logic - ); -end component; - -begin - - ----------------------------------------------------------------------------- - -- Instantiation of internal components - ----------------------------------------------------------------------------- - - my_cpu : cpu09 - port map ( - clk => cpu_clk, - rst => cpu_reset, - vma => cpu_vma, - addr => cpu_addr(15 downto 0), - rw => cpu_rw, - data_out => cpu_data_out, - data_in => cpu_data_in, - irq => cpu_irq, - firq => cpu_firq, - nmi => cpu_nmi, - halt => cpu_halt, - hold => cpu_hold - ); - - my_rom : mon_rom - port map ( - clk => cpu_clk, - rst => cpu_reset, - cs => rom_cs, - rw => '1', - addr => cpu_addr(11 downto 0), - data_in => cpu_data_out, - data_out => rom_data_out - ); - - my_flex : flex_ram - port map ( - clk => cpu_clk, - rst => cpu_reset, - cs => flex_cs, - rw => cpu_rw, - addr => cpu_addr(12 downto 0), - data_out => flex_data_out, - data_in => cpu_data_out - ); - - my_acia : acia6850 - port map ( - clk => cpu_clk, - rst => cpu_reset, - cs => acia_cs, - rw => cpu_rw, - addr => cpu_addr(0), - data_in => cpu_data_out, - data_out => acia_data_out, - irq => acia_irq, - RxC => acia_clk, - TxC => acia_clk, - RxD => rxd, - TxD => txd, - DCD_n => dcd_n, - CTS_n => cts_n, - RTS_n => rts_n - ); - - my_ACIA_Clock : ACIA_Clock - generic map( - SYS_CLK_FREQ => SYS_CLK_FREQ, - ACIA_CLK_FREQ => ACIA_CLK_FREQ - ) - port map( - clk => Clk_i, - acia_clk => acia_clk - ); - - ---------------------------------------- - -- - -- 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 - ); - - ---------------------------------------- - -- - -- 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 - ); - - 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) - ); - - cpu_clk_buffer : BUFG - port map( - i => Clk25, - o => cpu_clk - ); - - ---------------------------------------------------------------------- - -- - -- Process to decode memory map - -- - ---------------------------------------------------------------------- - - mem_decode: process( cpu_addr, cpu_rw, cpu_vma, - dat_addr, - rom_data_out, - flex_data_out, - acia_data_out, - pb_data_out, - timer_data_out, - trap_data_out, - ram_data_out - ) - begin - cpu_data_in <= (others=>'0'); - dat_cs <= '0'; - rom_cs <= '0'; - flex_cs <= '0'; - acia_cs <= '0'; - timer_cs <= '0'; - trap_cs <= '0'; - pb_cs <= '0'; - ram_cs <= '0'; - - if cpu_addr( 15 downto 8 ) = "11111111" then -- $FFxx - 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 - cpu_data_in <= rom_data_out; - rom_cs <= cpu_vma; - - -- - -- IO Devices $E000 - $E7FF - -- - elsif dat_addr(3 downto 0) = "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 - -- - -- Console Port ACIA $E000 - $E00F - -- - when "0000" => -- $E000 - cpu_data_in <= acia_data_out; - acia_cs <= cpu_vma; - - -- - -- Reserved - -- Floppy Disk Controller port $E010 - $E01F - -- - - -- - -- Reserved SWTPc MP-T Timer $E040 - $E04F - -- - when "0100" => -- $E040 - cpu_data_in <= (others=> '0'); - - -- - -- Timer $E050 - $E05F - -- - when "0101" => -- $E050 - cpu_data_in <= timer_data_out; - timer_cs <= cpu_vma; - - -- - -- Bus Trap Logic $E060 - $E06F - -- - when "0110" => -- $E060 - cpu_data_in <= trap_data_out; - trap_cs <= cpu_vma; - - -- - -- Reserved SWTPc MP-ID PIA Timer/Printer Port $E080 - $E08F - -- - - -- - -- Reserved SWTPc MP-ID PTM 6840 Timer Port $E090 - $E09F - -- - - -- - -- Remaining 6 slots reserved for non SWTPc Peripherals - -- - when others => -- $E0A0 to $E0FF - null; - end case; - - -- - -- $E200 to $EFFF reserved for future use - -- - when others => - null; - 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; - - -- - -- Interrupts and other bus control signals - -- - interrupts : process( SW3_N, - pb_cs, pb_hold, pb_release, ram_hold, - acia_irq, - trap_irq, - timer_irq - ) - begin - pb_hold <= pb_cs and (not pb_release); - cpu_irq <= acia_irq; - cpu_nmi <= trap_irq or not( SW3_N ); - cpu_firq <= timer_irq; - cpu_halt <= '0'; - cpu_hold <= pb_hold or ram_hold; - FLASH_CE_N <= '1'; - end process; - - -- - -- Flash 7 segment LEDS - -- - my_led_flasher: process( clk_i, rst_i, CountL ) - begin - if rst_i = '1' then - CountL <= "000000000000000000000000"; - elsif rising_edge(clk_i) then - CountL <= CountL + 1; - end if; - --S(7 downto 0) <= CountL(23 downto 16); - end process; - - -- - -- Generate CPU & Pixel Clock from Memory Clock - -- - my_prescaler : process( clk_i, clk_count ) - begin - if rising_edge( clk_i ) then - if clk_count = 0 then - clk_count <= CPU_CLK_DIV-1; - else - clk_count <= clk_count - 1; - end if; - if clk_count = 0 then - clk25 <= '0'; - elsif clk_count = (CPU_CLK_DIV/2) then - clk25 <= '1'; - end if; - end if; - end process; - - -- - -- Reset button and reset timer - -- - my_switch_assignments : process( rst_i, SW2_N) - begin - rst_i <= not SW2_N; - cpu_reset <= rst_i; - end process; - - -- - -- RS232 signals: - -- - my_acia_assignments : process( RS232_RXD, RS232_CTS, txd, rts_n ) - begin - rxd <= RS232_RXD; - cts_n <= RS232_CTS; - dcd_n <= '0'; - RS232_TXD <= txd; - RS232_RTS <= rts_n; - end process; - - -- - -- CPU read data request on rising CPU clock edge - -- - ram_read_request: process( hRd, cpu_clk, ram_cs, cpu_rw, ram_release ) - begin - if hRd = '1' then - ram_rd_req <= '0'; - elsif rising_edge(cpu_clk) then - if (ram_cs = '1') and (cpu_rw = '1') and (ram_release = '1') then - ram_rd_req <= '1'; - end if; - end if; - end process; - - -- - -- CPU write data to RAM valid on rising CPU clock edge - -- - ram_write_request: process( hWr, cpu_clk, ram_cs, cpu_rw, ram_release ) - begin - if hWr = '1' then - ram_wr_req <= '0'; - elsif rising_edge(cpu_clk) then - if (ram_cs = '1') and (cpu_rw = '0') and (ram_release = '1') then - ram_wr_req <= '1'; - end if; - end if; - end process; - - status_leds : process( rst_i, cpu_reset) - begin - S(7) <= rst_i; - S(6) <= cpu_reset; - S(2) <= countL(23); - S(3) <= countL(22); - S(4) <= countL(21); - S(5) <= countL(20); - S(1) <= '1'; -- countL(19); - S(0) <= '0'; -- countL(18); - --S(7 downto 4) <= "0000"; - end process; - --- debug_proc : process( cpu_reset, cpu_clk, cpu_rw, cpu_vma, --- cpu_halt, cpu_hold, --- cpu_firq, cpu_irq, cpu_nmi, --- cpu_addr, cpu_data_out, cpu_data_in ) --- begin --- cpu_reset_o <= cpu_reset; --- cpu_clk_o <= cpu_clk; --- cpu_rw_o <= cpu_rw; --- cpu_vma_o <= cpu_vma; --- cpu_halt_o <= cpu_halt; --- cpu_hold_o <= cpu_hold; --- cpu_firq_o <= cpu_firq; --- cpu_irq_o <= cpu_irq; --- cpu_nmi_o <= cpu_nmi; --- cpu_addr_o <= cpu_addr; --- cpu_data_out_o <= cpu_data_out; --- cpu_data_in_o <= cpu_data_in; --- end process; - -end rtl; --===================== End of architecture =======================-- - Index: rtl/System09_Digilent_ZyboZ20/Makefile =================================================================== --- rtl/System09_Digilent_ZyboZ20/Makefile (revision 165) +++ rtl/System09_Digilent_ZyboZ20/Makefile (nonexistent) @@ -1,137 +0,0 @@ -#=================================================================== -# File: Makefile -# Author: David Burnette -# Created: July 5, 2007 -# -# Description: -# Makefile to build the System09 by John Kent -# -# This makefile will build John Kent's entire System09 project -# (RTL synthesis and monitor ROMs) and even download the final -# bitstream to the prototype board. -# -# You can use Xilinx ISE interactively to add new RTL source files -# to this project. -# -# Usage: -# Use 'make help' to get a list of options. -# -# Dependencies: -# Depends on makefile fragments in the 'MKFRAGS' directory. -# -# Revision History: -# dgb 2007-07-05 Original version -# -# dgb 2008-04-07 Split out files into fragments. Modified -# ROM source generation to be per src directory. -# -#=================================================================== - -MKFRAGS := ../../mkfiles -export MKFRAGS - -BRAM_TYPE := b16 -export BRAM_TYPE - -#=================================================================== -# User-modifiable variables -# -# This name must match the name of the design in Xilinx ISE (case -# sensitive). -DESIGN_NAME := system09 -# -# Constraint file (unfortunately it cannot be extracted from ISE) -UCF_FILE := system09.ucf -# -# Technology family (unfortunately it cannot be extracted from ISE) -FAMILY := zynq - - - - -# List of ROM VHDL files -.PHONY: roms -roms: - @$(MAKE) -C ../../Tools/as09 - @$(MAKE) -C ../../Tools/s19tovhd - @$(MAKE) -C ../../src/sys09bug sys09swt.vhd - @$(MAKE) -C ../../src/Flex9 flex9ram.vhd - -#=================================================================== -# You should not need to edit anything below this line - -# XESS Tools -ifeq "$(findstring CYGWIN_NT,$(shell uname -s))" "CYGWIN_NT" -XESSPATH := $(shell cygpath "$(XSTOOLS_BIN_DIR)") -else -XESSPATH := $(XSTOOLS_BIN_DIR) -endif -XSLOAD := "$(XESSPATH)/xsload.exe" - -include ../../mkfiles/xilinx_rules.mk - -#=================================================================== -# TARGETS - -.PHONY: all -all: bit - -.PHONY: bit -bit: roms $(DESIGN_NAME).bit - -.PHONY: impact -impact: roms bit do_impact - -prom: roms $(DESIGN_NAME).mcs - -.PHONY: impact -impact: $(DESIGN_NAME).bit $(DESIGN_NAME)_impact.cmd - @$(ECHO) - @$(ECHO) "======= Downloading bitstream using Impact ============" - $(IMPACT) -batch $(DESIGN_NAME)_impact.cmd - -.PHONY: help -help: - @$(ECHO) "Use this Makefile to regenerate the entire System09 bitstream" - @$(ECHO) "after modifying any of the source RTL or 6809 assembler code." - @$(ECHO) "" - @$(ECHO) "This makefile uses the following project files from the Xilinx ISE" - @$(ECHO) " $(XST_FILE)" - @$(ECHO) "" - @$(ECHO) "You use Xilinx ISE interactively to add new RTL source files." - @$(ECHO) "" - @$(ECHO) " Availiable targets" - @$(ECHO) - @$(ECHO) " For building all or part of the system:" - @$(ECHO) " roms - Run asm09 and then generate the VHDL RTL rom files" - @$(ECHO) " bit - Rebuild the entire system and generate the bitstream file" - @$(ECHO) " all - Rebuild everything" - @$(ECHO) " prom - Rebuild the entire system and generate an MCS prom file" - @$(ECHO) " exo - Rebuild the entire system and generate an EXO prom file" - @$(ECHO) - @$(ECHO) " For downloading the bitstream to the board:" - @$(ECHO) " impact - Download the bitstream to the FPGA via iMPACT" - @$(ECHO) - @$(ECHO) " For project maintenance:" - @$(ECHO) " help - Print this help text" - @$(ECHO) " clean - Clean up the ISE files" - @$(ECHO) " cleanall - Clean up the ISE files and the Tools directories" - @$(ECHO) "" - -.PHONY: clean -clean: - -$(MAKE) -C ../../src/sys09bug clean - -$(MAKE) -C ../../src/Flex9 clean - -$(RM) *.cfi *_bitgen.xwbt *.ncd *.ngc *.ngd *.twr *.bit *.mcs *.stx *.ucf.untf *.mrp *.ptwx *_map.map - -$(RM) *.ncl *.ngm *.prm *_pad.txt *.twx *.log *.syr *.par *.exo *.xpi *.xrpt *.xml - -$(RM) *.cmd_log *.ngr *.bld *_summary.html *.nc1 *.pcf *.bgn tmp.ut - -$(RM) *.pad *.placed_ncd_tracker *.routed_ncd_tracker *_pad.csv *.drc - -$(RM) *.pad_txt $(DESIGN_NAME)_impact.cmd *.unroutes $(DESIGN_NAME)_vhdl.prj - -$(RM) par_usage_statistics.html $(DESIGN_NAME)_envsettings.html usage_statistics_webtalk.html impact.xsl impact_impact.xwbt - -$(RMDIR) _ngo _xmsgs xst xlnx_auto_0_xdb xst_tmp_dirs iseconfig system09_xdb - -.PHONY: cleanall -cleanall: clean - -$(MAKE) -C ../../Tools/as09 clean - -$(MAKE) -C ../../Tools/s19tovhd clean - Index: rtl/System09_Digilent_ZyboZ20/system09.gise =================================================================== --- rtl/System09_Digilent_ZyboZ20/system09.gise (revision 165) +++ rtl/System09_Digilent_ZyboZ20/system09.gise (nonexistent) @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - 11.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index: rtl/System09_Digilent_ZyboZ20/system09.ut =================================================================== --- rtl/System09_Digilent_ZyboZ20/system09.ut (revision 165) +++ rtl/System09_Digilent_ZyboZ20/system09.ut (nonexistent) @@ -1,30 +0,0 @@ --w --g DebugBitstream:No --g Binary:no --g CRC:Enable --g Reset_on_err:No --g ConfigRate:2 --g ProgPin:PullNone --g TckPin:PullNone --g TdiPin:PullNone --g TdoPin:PullNone --g TmsPin:PullNone --g UnusedPin:PullNone --g UserID:0xFFFFFFFF --g ExtMasterCclk_en:No --g SPI_buswidth:1 --g TIMER_CFG:0xFFFF --g multipin_wakeup:No --g StartUpClk:CClk --g DONE_cycle:4 --g GTS_cycle:5 --g GWE_cycle:6 --g LCK_cycle:NoWait --g Security:None --g DonePipe:No --g DriveDone:No --g en_sw_gsr:No --g drive_awake:No --g sw_clk:Startupclk --g sw_gwe_cycle:5 --g sw_gts_cycle:4 Index: rtl/System09_Digilent_ZyboZ20/system09.xise =================================================================== --- rtl/System09_Digilent_ZyboZ20/system09.xise (revision 165) +++ rtl/System09_Digilent_ZyboZ20/system09.xise (nonexistent) @@ -1,474 +0,0 @@ - - - -
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index: rtl/System09_Digilent_ZyboZ20/system09.prj =================================================================== --- rtl/System09_Digilent_ZyboZ20/system09.prj (revision 165) +++ rtl/System09_Digilent_ZyboZ20/system09.prj (nonexistent) @@ -1,11 +0,0 @@ -vhdl work "../VHDL/bit_funcs.vhd" -vhdl work "../../src/sys09bug/sys09swt.vhd" -vhdl work "../../src/Flex9/flex9ram.vhd" -vhdl work "../VHDL/trap.vhd" -vhdl work "../VHDL/timer.vhd" -vhdl work "../VHDL/datram.vhd" -vhdl work "../VHDL/cpu09.vhd" -vhdl work "../VHDL/ACIA_Clock.vhd" -vhdl work "../VHDL/acia6850.vhd" -vhdl work "common.vhd" -vhdl work "system09.vhd" Index: rtl/System09_Digilent_ZyboZ20/common.vhd =================================================================== --- rtl/System09_Digilent_ZyboZ20/common.vhd (revision 165) +++ rtl/System09_Digilent_ZyboZ20/common.vhd (nonexistent) @@ -1,107 +0,0 @@ --------------------------------------------------------------------- --- Company : XESS Corp. --- Engineer : Dave Vanden Bout --- Creation Date : 05/17/2005 --- Copyright : 2005, XESS Corp --- Tool Versions : WebPACK 6.3.03i --- --- Description: --- Miscellaneous VHDL constants and functions --- --- Revision: --- 1.0.0 --- --- Additional Comments: --- 1.1.0: --- Added int_select() and real_select functions. --- 1.0.0: --- Initial release. --- --- License: --- This code can be freely distributed and modified as long as --- this header is not removed. --------------------------------------------------------------------- - - - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; - -package common is - - constant YES : std_logic := '1'; - constant NO : std_logic := '0'; - constant HI : std_logic := '1'; - constant LO : std_logic := '0'; - constant ONE : std_logic := '1'; - constant ZERO : std_logic := '0'; - -- convert a Boolean to a std_logic - function boolean2stdlogic(b : in boolean) return std_logic; - -- find the base-2 logarithm of a number - function log2(v : in natural) return natural; - -- select one of two integers based on a Boolean - function int_select(s : in boolean; a : in integer; b : in integer) return integer; - -- select one of two reals based on a Boolean - function real_select(s : in boolean; a : in real; b : in real) return real; - -end package common; - - - -library IEEE; -use IEEE.std_logic_1164.all; -use IEEE.numeric_std.all; - - -package body common is - - -- convert a Boolean to a std_logic - function boolean2stdlogic(b : in boolean) return std_logic is - variable s : std_logic; - begin - if b then - s := '1'; - else - s := '0'; - end if; - return s; - end function boolean2stdlogic; - - -- find the base 2 logarithm of a number - function log2(v : in natural) return natural is - variable n : natural; - variable logn : natural; - begin - n := 1; - for i in 0 to 128 loop - logn := i; - exit when (n >= v); - n := n * 2; - end loop; - return logn; - end function log2; - - -- select one of two integers based on a Boolean - function int_select(s : in boolean; a : in integer; b : in integer) return integer is - begin - if s then - return a; - else - return b; - end if; - return a; - end function int_select; - - -- select one of two reals based on a Boolean - function real_select(s : in boolean; a : in real; b : in real) return real is - begin - if s then - return a; - else - return b; - end if; - return a; - end function real_select; - -end package body common;

powered by: WebSVN 2.1.0

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