summaryrefslogtreecommitdiff
path: root/2004
diff options
context:
space:
mode:
authorgalmes2004-04-05 06:21:46 +0000
committergalmes2004-04-05 06:21:46 +0000
commitd7022d2d559d5145b89c0eccd51223d36e33c8f2 (patch)
tree219c975ee92f492c774ef1b7b8ba530cf1dea09d /2004
parent2a8c2d3c2521de1599f6dc0d5a6b116d9c28bea3 (diff)
GPIO : Passage de gpio au fonctionnement des interruptions avec 2 registres.
Ce fichier a été testé sur carte et fonctionne correctement.
Diffstat (limited to '2004')
-rw-r--r--2004/n/fpga/src/gpio/gpio.vhd80
-rw-r--r--2004/n/fpga/src/gpio/gpio2.vhd193
2 files changed, 60 insertions, 213 deletions
diff --git a/2004/n/fpga/src/gpio/gpio.vhd b/2004/n/fpga/src/gpio/gpio.vhd
index 7ada162..32a9227 100644
--- a/2004/n/fpga/src/gpio/gpio.vhd
+++ b/2004/n/fpga/src/gpio/gpio.vhd
@@ -1,7 +1,12 @@
-- gpio.vhd
-- Eurobot 2004 : APB Team
-- Auteur : Pierre-André Galmes
--- Fichier modèle pour la déclaration de module.
+-- General Purpose Public Output.
+
+-- Caractéristiques :
+-- paramétrage de chaque pin en entrée ou sortie.
+-- paramétrage de la détection des interruptions (front montant et/ou
+-- descendant).
library ieee;
use ieee.std_logic_1164.all;
@@ -13,7 +18,7 @@ use work.nono_const.all;
entity gpio is
port(
rst : in std_logic;
- clk_i : in std_logic; -- clock du bus isa
+ clk_b : in std_logic; -- clock de bus
clk_m : in std_logic; -- master clock
rw : in std_logic; -- read (0) / write (1) TODO ??
interrupt : out std_logic;
@@ -22,7 +27,8 @@ entity gpio is
-- chip select
cs_reg_data : in std_logic;
cs_reg_direction : in std_logic;
- cs_reg_it_mask : in std_logic;
+ cs_reg_it_up_mask : in std_logic;
+ cs_reg_it_down_mask : in std_logic;
cs_read_output : in std_logic
);
end entity;
@@ -31,6 +37,8 @@ architecture RTL of gpio is
-- Définition des composants utilisés.
+-- TODO : CONtinuer à partir d'ICICICICCICIC
+
-- Registre.
component reg_rw is
port (
@@ -43,7 +51,7 @@ component reg_rw is
);
end component;
--- ET bit à bit à sortie trhee state.
+-- ET bit à bit à sortie three state.
component gpio_direction is
port (
direction_mask : in T_DATA;
@@ -52,8 +60,19 @@ component gpio_direction is
);
end component;
--- détecteur d'interruption 8 bits.
-component gpio_it_detect is
+-- détecteur de changement d'état sur front descendant 8 bits.
+component gpio_it_detect_down 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;
+
+-- détecteur de changement d'état sur front montant 8 bits.
+component gpio_it_detect_up is
port (
clk : in std_logic;
rst : in std_logic;
@@ -66,8 +85,6 @@ end component;
-- Composant three-state.
component tristate is
port (
- rst : std_logic;
- clk : std_logic;
enable : in std_logic;
data_in : in T_DATA;
data_out : out T_DATA
@@ -78,9 +95,12 @@ end component;
-- clk, rst... sont définis dans l'entity du GPIO.
--
signal bus_direction_mask : T_DATA;
-signal bus_it_mask : T_DATA;
+signal bus_it_up_mask : T_DATA;
+signal bus_it_down_mask : T_DATA;
signal bus_reg_data : T_DATA;
signal rst_it : std_logic;
+signal it_up : std_logic;
+signal it_down : std_logic;
begin
@@ -89,7 +109,7 @@ begin
--
Reg_direction_mask : reg_rw
port map (
- clk_i,
+ clk_b,
rst,
rw,
cs_reg_direction,
@@ -100,7 +120,7 @@ port map (
--
Reg_data : reg_rw
port map (
- clk_i,
+ clk_b,
rst,
rw,
cs_reg_data,
@@ -109,21 +129,30 @@ port map (
);
--
-Reg_it_mask : reg_rw
+Reg_it_up_mask : reg_rw
+port map (
+ clk_b,
+ rst,
+ rw,
+ cs_reg_it_up_mask,
+ bus_data,
+ bus_it_up_mask
+);
+
+--
+Reg_it_down_mask : reg_rw
port map (
- clk_i,
+ clk_b,
rst,
rw,
- cs_reg_it_mask,
+ cs_reg_it_down_mask,
bus_data,
- bus_it_mask
+ bus_it_down_mask
);
--
read_output : tristate
port map (
- rst,
- clk_i,
cs_read_output,
io_output,
bus_data
@@ -141,13 +170,24 @@ port map (
rst_it <= rst or cs_read_output;
--
-it_detector : gpio_it_detect
+it_up_detector : gpio_it_detect_up
+port map (
+ clk_m,
+ rst_it,
+ io_output,
+ bus_it_up_mask,
+ it_up
+);
+
+it_down_detector : gpio_it_detect_down
port map (
clk_m,
rst_it,
io_output,
- bus_it_mask,
- interrupt
+ bus_it_down_mask,
+ it_down
);
+
+interrupt <= it_up or it_down;
end RTL;
diff --git a/2004/n/fpga/src/gpio/gpio2.vhd b/2004/n/fpga/src/gpio/gpio2.vhd
deleted file mode 100644
index d8ba9b6..0000000
--- a/2004/n/fpga/src/gpio/gpio2.vhd
+++ /dev/null
@@ -1,193 +0,0 @@
--- gpio.vhd
--- Eurobot 2004 : APB Team
--- Auteur : Pierre-André Galmes
--- General Purpose Public Output.
-
--- Caractéristiques :
--- paramétrage de chaque pin en entrée ou sortie.
--- paramétrage de la détection des interruptions (front montant et/ou
--- descendant).
-
-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_b : in std_logic; -- clock de bus
- 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 : in std_logic;
- cs_reg_direction : in std_logic;
- cs_reg_it_up_mask : in std_logic;
- cs_reg_it_down_mask : in std_logic;
- cs_read_output : in std_logic
- );
-end entity;
-
-architecture RTL of gpio is
-
--- Définition des composants utilisés.
-
--- TODO : CONtinuer à partir d'ICICICICCICIC
-
--- 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 three 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 de changement d'état sur front descendant 8 bits.
-component gpio_it_detect_down 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;
-
--- détecteur de changement d'état sur front montant 8 bits.
-component gpio_it_detect_up 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 (
- rst : std_logic;
- clk : std_logic;
- 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_up_mask : T_DATA;
-signal bus_it_down_mask : T_DATA;
-signal bus_reg_data : T_DATA;
-signal rst_it : std_logic;
-
-begin
-
--- Mapping des composants.
-
---
-Reg_direction_mask : reg_rw
-port map (
- clk_b,
- rst,
- rw,
- cs_reg_direction,
- bus_data,
- bus_direction_mask
-);
-
---
-Reg_data : reg_rw
-port map (
- clk_b,
- rst,
- rw,
- cs_reg_data,
- bus_data,
- bus_reg_data
-);
-
---
-Reg_it_up_mask : reg_rw
-port map (
- clk_b,
- rst,
- rw,
- cs_reg_it_up_mask,
- bus_data,
- bus_it_up_mask
-);
-
---
-Reg_it_down_mask : reg_rw
-port map (
- clk_b,
- rst,
- rw,
- cs_reg_it_down_mask,
- bus_data,
- bus_it_down_mask
-);
-
---
-read_output : tristate
-port map (
- rst,
- clk_b,
- cs_read_output,
- io_output,
- bus_data
-);
-
---
-gest_direction : gpio_direction
-port map (
- bus_direction_mask,
- bus_reg_data,
- io_output
-);
-
--- signal intermédiaire.
-rst_it <= rst or cs_read_output;
-
---
-it_up_detector : gpio_it_detect
-port map (
- clk_m,
- rst_it,
- io_output,
- bus_it_up_mask,
- interrupt
-);
-
-it_down_detector : gpio_it_detect
-port map (
- clk_m,
- rst_it,
- io_output,
- bus_it_down_mask,
- interrupt
-);
-
-end RTL;