From 76098ead389c3803b9d5b47c8f6e915e1123b03a Mon Sep 17 00:00:00 2001 From: galmes Date: Mon, 1 Mar 2004 15:57:50 +0000 Subject: Suppression du decodeur dans le gpio. --- 2004/n/fpga/src/gpio/bch_gpio.vhd | 93 ++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 46 deletions(-) (limited to '2004/n/fpga/src/gpio/bch_gpio.vhd') diff --git a/2004/n/fpga/src/gpio/bch_gpio.vhd b/2004/n/fpga/src/gpio/bch_gpio.vhd index 9f0e47a..16e5ca3 100644 --- a/2004/n/fpga/src/gpio/bch_gpio.vhd +++ b/2004/n/fpga/src/gpio/bch_gpio.vhd @@ -20,22 +20,20 @@ end bch_gpio; architecture sim1 of bch_gpio is component gpio - generic ( - A_REG_DATA_WRITE : T_ADDRESS; - A_REG_DIRECTION : T_ADDRESS; - A_REG_INTERRUPT_MASK : T_ADDRESS; - A_DATA_READ_OUTPUT : T_ADDRESS - ); - 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_address : in T_ADDRESS; - bus_data : inout T_DATA; - io_output : inout T_DATA - ); + 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 component; -- définiton des signaux @@ -44,31 +42,31 @@ architecture sim1 of bch_gpio is signal clk_m : std_logic := '0'; signal rw : std_logic := '0'; signal interrupt : std_logic; - signal bus_address : T_ADDRESS; signal bus_data : T_DATA; signal io_output : T_DATA; + -- chip select + signal cs_reg_data_write : std_logic := '0'; + signal cs_reg_direction : std_logic := '0'; + signal cs_reg_it_mask : std_logic := '0'; + signal cs_reg_read_output : std_logic := '0'; begin -- ----------------------------------------------------- -- mapping du gpio. A reprendre pour le mapping final !! -- ----------------------------------------------------- U1 : gpio - generic map ( - -- Définition des addresses. - A_REG_DATA_WRITE => A_IO1_REG_DATA, - A_REG_DIRECTION => A_IO1_REG_DIRECTION, - A_REG_INTERRUPT_MASK => A_IO1_REG_INTERRUPT_MASK, - A_DATA_READ_OUTPUT => A_IO1_READ_OUTPUT - ) port map ( rst => rst, clk_i => clk_i, clk_m => clk_m, rw => rw, interrupt => interrupt, - bus_address => bus_address, bus_data => bus_data, - io_output => io_output + io_output => io_output, + cs_reg_read_output => cs_reg_read_output, + cs_reg_it_mask => cs_reg_it_mask, + cs_reg_direction => cs_reg_direction, + cs_reg_data_write => cs_reg_data_write ); -- --------------------------------- @@ -80,18 +78,17 @@ begin -- déclaration de procédures de test. -- ---------------------------------- -- Lire dans un registre ou la sortie ! - procedure do_read (address : in T_ADDRESS) is - begin - rw <= ISA_READ; - bus_address <= address; - bus_data <= "ZZZZZZZZ"; --est en sortie. - end do_read; + --procedure do_read (address : in T_ADDRESS) is + --begin +-- rw <= ISA_READ; +-- bus_address <= address; +-- bus_data <= "ZZZZZZZZ"; --est en sortie. +-- end do_read; -- Ecrire dans un registre ! - procedure do_write (address : in T_ADDRESS; data : in T_DATA) is + procedure do_write (data : in T_DATA) is begin rw <= ISA_WRITE; - bus_address <= address; bus_data <= data; end do_write; @@ -107,24 +104,27 @@ begin -- Ecriture dans les trois registres. wait for (3*CK_PERIOD); - do_write (A_IO1_REG_DIRECTION, "00000111"); -- 3 bits poid faible : in. + cs_reg_direction <= '1'; + do_write ("00000111"); -- 3 bits poid faible : in. wait for (3*CK_PERIOD); - do_write (A_IO1_REG_DATA, x"01"); + cs_reg_direction <= '0'; + cs_reg_data_write <= '1'; + do_write (x"01"); -- 3 bits poid faible : in. -- interruption sur les 5 bits de poid faible. - wait for (3*CK_PERIOD); - do_write (A_IO1_REG_INTERRUPT_MASK, "11111000"); +-- wait for (3*CK_PERIOD); +-- do_write (A_IO1_REG_INTERRUPT_MASK, "11111000"); -- Lecture dans les trois registres. - wait for (3*CK_PERIOD); - do_read (A_IO1_REG_INTERRUPT_MASK); - wait for (3*CK_PERIOD); - do_read (A_IO1_REG_DIRECTION); - wait for (3*CK_PERIOD); - do_read (A_IO1_REG_DATA); +-- wait for (3*CK_PERIOD); +-- do_read (A_IO1_REG_INTERRUPT_MASK); +-- wait for (3*CK_PERIOD); +-- do_read (A_IO1_REG_DIRECTION); +-- wait for (3*CK_PERIOD); +-- do_read (A_IO1_REG_DATA); -- Lecture de la donnée sur io_output. - wait for (3*CK_PERIOD); - do_read (A_IO1_READ_OUTPUT); +-- wait for (3*CK_PERIOD); +-- do_read (A_IO1_READ_OUTPUT); end process; @@ -137,6 +137,7 @@ begin "00001ZZZ" after 10*CK_PERIOD, "00010ZZZ" after 15*CK_PERIOD; + end sim1; -- Configuration -- cgit v1.2.3