summaryrefslogtreecommitdiff
path: root/2004/n/fpga
diff options
context:
space:
mode:
authorgalmes2004-04-28 19:04:02 +0000
committergalmes2004-04-28 19:04:02 +0000
commit7bd9395bfaaa844fcab0f45988eb95b9eec9c817 (patch)
tree5798af0ffaf42b3d2aab1d90a1aad610e15d81d5 /2004/n/fpga
parent2cc572c158db009811d9de1d5174d9b7043f4217 (diff)
pwm : Ajout du dernier fichier pour que le pwm marche trop bien de la balle
qui tue et tout... bon, je refait pas tout le speach, il est déjà dans le commentaire pour les servo version 1.2 ou 1.3 :)
Diffstat (limited to '2004/n/fpga')
-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;