hello: simplify interconnect
This commit is contained in:
parent
50dedf1dd8
commit
3b56750a73
@ -4,7 +4,8 @@ use ieee.numeric_std.all;
|
|||||||
use std.textio.all;
|
use std.textio.all;
|
||||||
|
|
||||||
entity hello is
|
entity hello is
|
||||||
port(
|
port
|
||||||
|
(
|
||||||
clk: in std_logic;
|
clk: in std_logic;
|
||||||
rst: in std_logic;
|
rst: in std_logic;
|
||||||
|
|
||||||
@ -17,7 +18,8 @@ end hello;
|
|||||||
|
|
||||||
architecture rtl of hello is
|
architecture rtl of hello is
|
||||||
|
|
||||||
component cpu is port(
|
component cpu is port
|
||||||
|
(
|
||||||
clk: in std_logic;
|
clk: in std_logic;
|
||||||
rst: in std_logic;
|
rst: in std_logic;
|
||||||
|
|
||||||
@ -55,12 +57,14 @@ architecture rtl of hello is
|
|||||||
--END COMPONENT;
|
--END COMPONENT;
|
||||||
|
|
||||||
component ram is
|
component ram is
|
||||||
generic (
|
generic
|
||||||
|
(
|
||||||
addressWidth : in positive := 16;
|
addressWidth : in positive := 16;
|
||||||
busWidth : in positive := 16;
|
busWidth : in positive := 16;
|
||||||
size : in positive := 1024
|
size : in positive := 1024
|
||||||
);
|
);
|
||||||
port (
|
port
|
||||||
|
(
|
||||||
clk : in std_logic;
|
clk : in std_logic;
|
||||||
address : in std_logic_vector(addressWidth - 1 downto 0);
|
address : in std_logic_vector(addressWidth - 1 downto 0);
|
||||||
writeEnable : in std_logic;
|
writeEnable : in std_logic;
|
||||||
@ -69,7 +73,8 @@ architecture rtl of hello is
|
|||||||
);
|
);
|
||||||
end component;
|
end component;
|
||||||
|
|
||||||
component boot_rom is port (
|
component boot_rom is port
|
||||||
|
(
|
||||||
clk: in std_logic;
|
clk: in std_logic;
|
||||||
|
|
||||||
code_addr : in std_logic_vector(15 downto 0);
|
code_addr : in std_logic_vector(15 downto 0);
|
||||||
@ -128,7 +133,8 @@ begin
|
|||||||
-- system map
|
-- system map
|
||||||
-- 0x0000 - 0x0fff ROM
|
-- 0x0000 - 0x0fff ROM
|
||||||
-- 0x1000 - 0x1fff RAM
|
-- 0x1000 - 0x1fff RAM
|
||||||
-- 0xc000 - 0xc000 GPIO?
|
-- 0xc000 - 0xc00f LED
|
||||||
|
-- 0xc010 - 0xc01f UART
|
||||||
|
|
||||||
led <= led_r;
|
led <= led_r;
|
||||||
|
|
||||||
@ -148,27 +154,24 @@ begin
|
|||||||
|
|
||||||
bus_miso <= x"0000";
|
bus_miso <= x"0000";
|
||||||
|
|
||||||
rom_data_addr <= x"0000";
|
rom_data_addr <= bus_addr and x"0fff";
|
||||||
|
|
||||||
mem_addr <= x"0000";
|
mem_addr <= bus_addr and x"0fff";
|
||||||
mem_in <= x"0000";
|
mem_in <= bus_mosi;
|
||||||
mem_write <= '0';
|
mem_write <= '0';
|
||||||
|
|
||||||
led_next <= led_r;
|
led_next <= led_r;
|
||||||
|
|
||||||
uart_din <= x"0000";
|
uart_din <= bus_mosi;
|
||||||
uart_addr <= x"0000";
|
uart_addr <= bus_addr and x"000f";
|
||||||
uart_we <= '0';
|
uart_we <= '0';
|
||||||
uart_re <= '0';
|
uart_re <= '0';
|
||||||
|
|
||||||
case bus_addr(15 downto 12) is
|
case bus_addr(15 downto 12) is
|
||||||
when x"0" =>
|
when x"0" =>
|
||||||
bus_miso <= rom_data_out;
|
bus_miso <= rom_data_out;
|
||||||
rom_data_addr <= bus_addr and x"0fff";
|
|
||||||
when x"1" =>
|
when x"1" =>
|
||||||
mem_in <= bus_mosi;
|
|
||||||
bus_miso <= mem_out;
|
bus_miso <= mem_out;
|
||||||
mem_addr <= bus_addr and x"0fff";
|
|
||||||
mem_write <= bus_write;
|
mem_write <= bus_write;
|
||||||
when x"c" =>
|
when x"c" =>
|
||||||
case bus_addr(7 downto 4) is
|
case bus_addr(7 downto 4) is
|
||||||
@ -177,9 +180,7 @@ begin
|
|||||||
led_next <= bus_mosi(7 downto 0);
|
led_next <= bus_mosi(7 downto 0);
|
||||||
end if;
|
end if;
|
||||||
when x"1" => -- UART
|
when x"1" => -- UART
|
||||||
uart_din <= bus_mosi;
|
|
||||||
bus_miso <= uart_dout;
|
bus_miso <= uart_dout;
|
||||||
uart_addr <= bus_addr and x"000f";
|
|
||||||
uart_we <= bus_write;
|
uart_we <= bus_write;
|
||||||
uart_re <= bus_read;
|
uart_re <= bus_read;
|
||||||
when others =>
|
when others =>
|
||||||
|
Loading…
Reference in New Issue
Block a user