-- gpio.vhd -- Eurobot 2004 : APB Team -- Auteur : Pierre-André Galmes -- Fichier modèle pour la déclaration de module. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use work.nono_const.all; entity gpio is port( rst : in std_logic; clk_i : in std_logic; -- clock du bus isa clk_m : in std_logic; -- master clock rw : in std_logic; -- read (0) / write (1) TODO ?? interrupt : out std_logic; bus_data : inout T_DATA; io_output : inout T_DATA; -- chip select cs_reg_data_write : in std_logic; cs_reg_direction : in std_logic; cs_reg_it_mask : in std_logic; cs_reg_read_output : in std_logic ); end entity; architecture RTL of gpio is -- Définition des composants utilisés. -- Registre. component reg_rw is port ( clk : in std_logic; rst : in std_logic; rw : in std_logic; -- read (ISA_READ) / write (ISA_WRITE) enable : in std_logic; data : inout T_DATA; data_out : out T_DATA -- data courant ); end component; -- ET bit à bit à sortie trhee state. component gpio_direction is port ( direction_mask : in T_DATA; data_in : in T_DATA; data_out : out T_DATA ); end component; -- détecteur d'interruption 8 bits. component gpio_it_detect is port ( clk : in std_logic; rst : in std_logic; data_in : in T_DATA; it_mask : in T_DATA; it_detected : out std_logic ); end component; -- Composant three-state. component tristate is port ( enable : in std_logic; data_in : in T_DATA; data_out : out T_DATA ); end component; -- définition des signaux. -- clk, rst... sont définis dans l'entity du GPIO. -- signal bus_direction_mask : T_DATA; signal bus_it_mask : T_DATA; signal bus_reg_data : T_DATA; begin -- Mapping des composants. -- Reg_direction_mask : reg_rw port map ( clk_i, rst, rw, cs_reg_direction, bus_data, bus_direction_mask ); -- Reg_data : reg_rw port map ( clk_i, rst, rw, cs_reg_data_write, bus_data, bus_reg_data ); -- Reg_it_mask : reg_rw port map ( clk_i, rst, rw, cs_reg_it_mask, bus_data, bus_it_mask ); -- read_output : tristate port map ( cs_reg_read_output, io_output, bus_data ); -- gest_direction : gpio_direction port map ( bus_direction_mask, bus_reg_data, io_output ); -- it_detector : gpio_it_detect port map ( clk_m, rst, io_output, bus_it_mask, interrupt ); end RTL;