acorn-cle-215: Implement SMP and enable FPU and BTC

The four LEDs on the Acorn-CLE-215 (Nitefury) board become run lights
for the first four CPUs.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
pull/445/head
Paul Mackerras 2 months ago
parent ce5a967ac2
commit 0bf1dcedbd

@ -10,6 +10,7 @@ use work.wishbone_types.all;


entity toplevel is entity toplevel is
generic ( generic (
CPUS : natural := 1;
MEMORY_SIZE : integer := 16384; MEMORY_SIZE : integer := 16384;
RAM_INIT_FILE : string := "firmware.hex"; RAM_INIT_FILE : string := "firmware.hex";
CLK_FREQUENCY : positive := 100000000; CLK_FREQUENCY : positive := 100000000;
@ -66,6 +67,9 @@ architecture behaviour of toplevel is
-- Internal clock -- Internal clock
signal ext_clk : std_ulogic; signal ext_clk : std_ulogic;


-- Status
signal run_outs : std_ulogic_vector(CPUS-1 downto 0);

-- Reset signals: -- Reset signals:
signal soc_rst : std_ulogic; signal soc_rst : std_ulogic;
signal pll_rst : std_ulogic; signal pll_rst : std_ulogic;
@ -124,6 +128,7 @@ begin
MEMORY_SIZE => BRAM_SIZE, MEMORY_SIZE => BRAM_SIZE,
RAM_INIT_FILE => RAM_INIT_FILE, RAM_INIT_FILE => RAM_INIT_FILE,
SIM => false, SIM => false,
NCPUS => CPUS,
CLK_FREQ => CLK_FREQUENCY, CLK_FREQ => CLK_FREQUENCY,
HAS_DRAM => USE_LITEDRAM, HAS_DRAM => USE_LITEDRAM,
DRAM_SIZE => 1024 * 1024 * 1024, DRAM_SIZE => 1024 * 1024 * 1024,
@ -141,6 +146,7 @@ begin
-- System signals -- System signals
system_clk => system_clk, system_clk => system_clk,
rst => soc_rst, rst => soc_rst,
run_outs => run_outs,


-- UART signals -- UART signals
uart0_txd => uart_tx, uart0_txd => uart_tx,
@ -223,10 +229,10 @@ begin
pll_locked_out => system_clk_locked pll_locked_out => system_clk_locked
); );


led0 <= soc_rst; led0 <= run_outs(0);
led1 <= pll_rst; led1 <= run_outs(1) when CPUS > 1 else pll_rst;
led2 <= not system_clk_locked; led2 <= run_outs(2) when CPUS > 2 else not system_clk_locked;
led3 <= '0'; led3 <= run_outs(3) when CPUS > 3 else '0';


-- Vivado barfs on those differential signals if left -- Vivado barfs on those differential signals if left
-- unconnected. So instanciate a diff. buffer and feed -- unconnected. So instanciate a diff. buffer and feed

@ -197,6 +197,7 @@ targets:
default_tool: vivado default_tool: vivado
filesets: [core, acorn_cle_215, soc, fpga, debug_xilinx, litedram, uart16550, xilinx_specific] filesets: [core, acorn_cle_215, soc, fpga, debug_xilinx, litedram, uart16550, xilinx_specific]
parameters : parameters :
- cpus
- memory_size - memory_size
- ram_init_file - ram_init_file
- use_litedram=true - use_litedram=true
@ -205,6 +206,8 @@ targets:
- spi_flash_offset=10485760 - spi_flash_offset=10485760
- log_length=2048 - log_length=2048
- uart_is_16550 - uart_is_16550
- has_fpu
- has_btc
generate: [litedram_acorn_cle_215, git_hash] generate: [litedram_acorn_cle_215, git_hash]
tools: tools:
vivado: {part : xc7a200tsbg484-2} vivado: {part : xc7a200tsbg484-2}

Loading…
Cancel
Save