From 895b0242a38d2bc2ae8143602fa2c9d8c4d5eea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20=C3=96rtenberg?= Date: Mon, 17 Feb 2025 17:01:30 +0100 Subject: [PATCH] began working on ganimede template. Unconstrained types are no longer needed --- src/ganimede.vhd | 32 ++++++++++++++++++++++++++ src/io_type_pkg.vhd | 55 +++++++++++++++++++-------------------------- 2 files changed, 55 insertions(+), 32 deletions(-) create mode 100644 src/ganimede.vhd diff --git a/src/ganimede.vhd b/src/ganimede.vhd new file mode 100644 index 0000000..33eb20d --- /dev/null +++ b/src/ganimede.vhd @@ -0,0 +1,32 @@ +library IEEE; +use IEEE.std_logic_1164.all; +library work; +use work.io_types.all; + +entity ganimede is + port ( + ext_interface_in : in ext_interface_in_t; + ext_interface_out : out ext_interface_out_t + ); +end entity ganimede; +architecture rtl of ganimede is + --- SIGNALS INTERFACING THE IP CORE + signal int_interface_in : int_interface_in_t; + signal int_interface_out : int_interface_out_t; + + --- COMPONENT DECLERATIONS --- + component socbridge_driver is + port( + ext_in : in ext_socbridge_in_t; + ext_out : out ext_socbridge_out_t; + int_in : in int_socbridge_in_t; + int_out : out int_socbridge_out_t + ); + end component; + +begin + + + + +end architecture rtl; diff --git a/src/io_type_pkg.vhd b/src/io_type_pkg.vhd index 7f025df..48fda5e 100644 --- a/src/io_type_pkg.vhd +++ b/src/io_type_pkg.vhd @@ -5,15 +5,6 @@ use IEEE.MATH_REAL.all; package io_types is --- STANDARD TYPES --- - type ext_protocol_impl_t is record - payload, control: STD_LOGIC_VECTOR; - end record ext_protocol_impl_t; - - type int_protocol_impl_t is record - payload : STD_LOGIC_VECTOR; - -- ADD MORE STUFF WHEN WE HAVE DECIDED UPON DRIVER INTERFACE - end record int_protocol_impl_t; - type ext_protocol_def_t is record name: string (1 to 20); payload_width: natural; @@ -22,46 +13,46 @@ package io_types is type interface_inst_t is record socbridge: ext_protocol_def_t; - spi: ext_protocol_def_t; end record interface_inst_t; --- PROTOCOL INFORMATION --- constant interface_inst : interface_inst_t := ( - ("SoCBridge ", 8, 2, 2), - ("SPI ", 1, 3, 3) + socbridge => ("SoCBridge ", 8, 2, 2) ); --- AUTOGENERATED TYPES --- + type ext_socbridge_in_t is record + payload : STD_LOGIC_VECTOR(interface_inst.socbridge.payload_width - 1 downto 0); + control : STD_LOGIC_VECTOR(interface_inst.socbridge.control_width_in - 1 downto 0); + end record ext_socbridge_in_t; + + type ext_socbridge_out_t is record + payload : STD_LOGIC_VECTOR(interface_inst.socbridge.payload_width - 1 downto 0); + control : STD_LOGIC_VECTOR(interface_inst.socbridge.control_width_in - 1 downto 0); + end record ext_socbridge_out_t; + + type int_socbridge_in_t is record + payload : STD_LOGIC_VECTOR(interface_inst.socbridge.payload_width - 1 downto 0); + end record int_socbridge_in_t; + + type int_socbridge_out_t is record + payload : STD_LOGIC_VECTOR(interface_inst.socbridge.payload_width - 1 downto 0); + end record int_socbridge_out_t; + type ext_interface_in_t is record - socbridge : ext_protocol_impl_t( - payload(interface_inst.socbridge.payload_width - 1 downto 0), - control(interface_inst.socbridge.control_width_in - 1 downto 0)); - spi : ext_protocol_impl_t( - payload(interface_inst.spi.payload_width - 1 downto 0), - control(interface_inst.spi.control_width_in - 1 downto 0)); + socbridge : ext_socbridge_in_t; end record ext_interface_in_t; type ext_interface_out_t is record - socbridge : ext_protocol_impl_t( - payload(interface_inst.socbridge.payload_width - 1 downto 0), - control(interface_inst.socbridge.control_width_out - 1 downto 0)); - spi : ext_protocol_impl_t( - payload(interface_inst.spi.payload_width - 1 downto 0), - control(interface_inst.spi.control_width_out - 1 downto 0)); + socbridge : ext_socbridge_out_t; end record ext_interface_out_t; type int_interface_in_t is record - socbridge : int_protocol_impl_t( - payload(interface_inst.socbridge.payload_width - 1 downto 0)); - spi : int_protocol_impl_t( - payload(interface_inst.spi.payload_width - 1 downto 0)); + socbridge : int_socbridge_in_t; end record int_interface_in_t; type int_interface_out_t is record - socbridge : int_protocol_impl_t( - payload(interface_inst.socbridge.payload_width - 1 downto 0)); - spi : int_protocol_impl_t( - payload(interface_inst.spi.payload_width - 1 downto 0)); + socbridge : int_socbridge_out_t; end record int_interface_out_t; end package io_types;