summaryrefslogtreecommitdiff
path: root/2004/n
diff options
context:
space:
mode:
Diffstat (limited to '2004/n')
-rw-r--r--2004/n/fpga/src/pwm/convert_pwm.vhd25
-rw-r--r--2004/n/fpga/src/pwm/pwm_generator.vhd35
-rw-r--r--2004/n/fpga/src/pwm/pwm_nono.vhd114
3 files changed, 127 insertions, 47 deletions
diff --git a/2004/n/fpga/src/pwm/convert_pwm.vhd b/2004/n/fpga/src/pwm/convert_pwm.vhd
index a3ab92e..974b520 100644
--- a/2004/n/fpga/src/pwm/convert_pwm.vhd
+++ b/2004/n/fpga/src/pwm/convert_pwm.vhd
@@ -1,21 +1,10 @@
--------------------------------------------------------------------------------
---convert_pwm.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Module générateur des PWM
---
---REMARQUE(S):changer tccompt,q et data_out
--- si CLK#32MHz et/ou qu'on modifie les valeurs de référence de T1
--- et T2
--- Tcmax=20ms/1us=20161cycles.
---*Si DATACOMPT=0,on veut que T2 vale 0,5ms donc on initialise Q à la valeur
---Q=0,5ms/1us=PWM_VALUE_MIN.
---*Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on initialise Q à la valeur
---Q=1,5ms/1us=PWM_VALUE_MAX.
---*Pour toute autre valeur de DATACOMPT comprise entre les deux précédentes et
---différentes de ces dernières,on initialise Q avec
---Q=(0,5ms/1us)+(DATACOMPT*min[((1,5ms-0,5ms)/1us)/(255-0)]
--------------------------------------------------------------------------------
+-- convert_pwm.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Module générateur de signaux PWM.
+-- Module convertisseur [0-255] vers [PWM_MIN_VALUE - PWM_MAX_VALUE].
+
+
--LIBRARY
library ieee;
use ieee.std_logic_1164.all;
diff --git a/2004/n/fpga/src/pwm/pwm_generator.vhd b/2004/n/fpga/src/pwm/pwm_generator.vhd
index af73f00..f14c1e3 100644
--- a/2004/n/fpga/src/pwm/pwm_generator.vhd
+++ b/2004/n/fpga/src/pwm/pwm_generator.vhd
@@ -1,31 +1,8 @@
--------------------------------------------------------------------------------
---pwm_generator.vhd
---Eurobot 2004 : APB Team
---Auteur : Fidèle GAFAN
---Registre à décalage affichantles signaux PWM
---
-
--- Les commentaires ci-dessous ne sont plus trop valables.
--- Maintenant, clock = 40MHz
-
-
---REMARQUE(S):changer tccompt,q et valuecompt
--- si CLK#32MHz et/ou qu'on modifie les valeurs de référence de T1
--- et T2
--- Tcmax = 20ms / 1us
--- = 20161 cycles.
-
--- Si DATACOMPT = 0, on veut que T2 vale 0,5ms donc on initialise Q à la
--- valeur Q=0,5ms/1us=505.
-
--- Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on initialise Q à la
--- valeur Q=1,5ms/1us=1515.
-
--- Pour toute autre valeur de DATACOMPT comprise entre les deux
--- précédentes et différentes de ces dernières,on initialise Q avec
--- Q=(0,5ms/1us)+(DATACOMPT*min[((1,5ms-0,5ms)/1us)/(255-1)]
-
-------------------------------------------------rtl de la sortie pwm en fonction de tc
+-- pwm_generator.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Bloc générant le signal pwm lorsqu'il recoit la valeur
+-- provenant de convert_pwm.
library ieee;
use ieee.std_logic_1164.all;
@@ -33,7 +10,7 @@ use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use work.nono_const.all;
-use work.pwm_const.all;
+use work.pwm_const.all;
--ENTITE
entity pwm_generator is
diff --git a/2004/n/fpga/src/pwm/pwm_nono.vhd b/2004/n/fpga/src/pwm/pwm_nono.vhd
new file mode 100644
index 0000000..992588c
--- /dev/null
+++ b/2004/n/fpga/src/pwm/pwm_nono.vhd
@@ -0,0 +1,114 @@
+-- pwm_nono.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-andré Galmes
+-- Bloc de génération de pwm.
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+
+use work.nono_const.all;
+use work.isa_const.all;
+use work.pwm_const.all;
+
+-- ENTITY
+entity pwm_nono is
+port(
+ rst : in std_logic;
+ clk : in std_logic;
+ rw : in std_logic;
+ cs : in std_logic;
+ bus_data : inout T_DATA;
+ outpwm : out std_logic
+);
+end pwm_nono;
+
+
+-- ARCHITECTURE
+architecture RTL of pwm_nono is
+
+-- 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;
+
+-- Générateur d'horloge à 1us.
+component clk1us is
+port(
+ RST : in std_logic;
+ CLK : in std_logic; --40MHz
+ CLK1USOUT : out std_logic
+);
+end component;
+
+-- Convertisseur [0-255] vers un temps.
+component convert_pwm is
+port(
+ data_in : in T_OCTET;
+ data_out : out T_DOUBLE_OCTET --duree pdt laql la sortie
+);
+end component;
+
+-- Générateur de pwm.
+component pwm_generator is
+port (
+ rst : in std_logic;
+ clk : in std_logic;
+ pwm_in : in T_DOUBLE_OCTET;
+ pwm_out : out std_logic
+);
+end component;
+
+
+-- Declaration des signaux locaux
+signal clkdiv : std_logic;
+signal reg_out : T_OCTET;
+signal convert_out : T_DOUBLE_OCTET;
+
+
+begin
+-- Mapping DES SIGNAUX.
+
+--
+registre : reg_rw
+port map(
+ clk,
+ rst,
+ rw,
+ cs,
+ bus_data,
+ reg_out
+);
+
+--
+Clock_div : clk1us
+port map(
+ rst,
+ clk,
+ clkdiv
+);
+
+--
+convert_nono : convert_pwm
+port map(
+ reg_out,
+ convert_out
+);
+
+--
+pwm_gene : pwm_generator
+port map(
+ rst,
+ clkdiv,
+ convert_out,
+ outpwm
+);
+
+
+end RTL;