summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2004/n/fpga/src/clkdiv/clk1us.vhd47
-rw-r--r--2004/n/fpga/src/clkdiv/clk200ns.vhd47
-rw-r--r--2004/n/fpga/src/packages/nono_const.vhd1
-rw-r--r--2004/n/fpga/src/packages/servo_const.vhd1
4 files changed, 95 insertions, 1 deletions
diff --git a/2004/n/fpga/src/clkdiv/clk1us.vhd b/2004/n/fpga/src/clkdiv/clk1us.vhd
new file mode 100644
index 0000000..74fc345
--- /dev/null
+++ b/2004/n/fpga/src/clkdiv/clk1us.vhd
@@ -0,0 +1,47 @@
+-- clk1us.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Module générateur d'horloge 1us-périodique
+--
+-- On fera attention que cette horloge repose sur la fq d'horloge du FPGA.
+-- Pour changer cette fréquence, aller voir nono_const : FREQ_CLK.
+
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+use ieee.std_logic_arith.all;
+
+use work.nono_const.all;
+
+--ENTITY
+entity clk1us is
+ port (
+ RST : in std_logic;
+ CLK : in std_logic; --40MHz
+ CLK1USOUT : out std_logic
+ );
+end entity;
+
+--ARCHITECTURE
+architecture RTL of clk1us is
+ signal compt: T_OCTET;
+begin
+ process(RST,CLK)
+ begin
+ if (RST = '1') then
+ CLK1USOUT <= '0';
+ compt <= x"00";
+ elsif (CLK'event and CLK = '1') then
+ compt <= compt + x"01";
+ if (compt = x"00") then -- 30
+ CLK1USOUT <= '1';
+ else
+ CLK1USOUT <= '0';
+ if (compt = (FREQ_CLK - x"01")) then
+ compt <= x"00"; -- 30
+ end if;
+ end if;
+ end if;
+ end process;
+end RTL;
diff --git a/2004/n/fpga/src/clkdiv/clk200ns.vhd b/2004/n/fpga/src/clkdiv/clk200ns.vhd
new file mode 100644
index 0000000..1b23cbb
--- /dev/null
+++ b/2004/n/fpga/src/clkdiv/clk200ns.vhd
@@ -0,0 +1,47 @@
+-- clk200ns.vhd :
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+-- Module générateur d'horloge 1us-périodique
+--
+-- On fera attention que cette horloge repose sur la fq d'horloge du FPGA.
+-- Pour changer cette fréquence, aller voir nono_const : FREQ_CLK.
+
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_unsigned.all;
+use ieee.std_logic_arith.all;
+
+use work.nono_const.all;
+
+--ENTITY
+entity clk200ns is
+ port (
+ RST : in std_logic;
+ CLK : in std_logic; -- 40MHz
+ CLK1USOUT : out std_logic --
+ );
+end entity;
+
+--ARCHITECTURE
+architecture RTL of clk200ns is
+ signal compt: T_OCTET;
+begin
+ process(RST,CLK)
+ begin
+ if (RST = '1') then
+ CLK1USOUT <= '0';
+ compt <= x"00";
+ elsif (CLK'event and CLK = '1') then
+ compt <= compt + x"01";
+ if (compt = x"00") then -- 30
+ CLK1USOUT <= '1';
+ else
+ CLK1USOUT <= '0';
+ if (compt = (CYCLE_CLK200NS - x"01")) then
+ compt <= x"00"; -- 30
+ end if;
+ end if;
+ end if;
+ end process;
+end RTL;
diff --git a/2004/n/fpga/src/packages/nono_const.vhd b/2004/n/fpga/src/packages/nono_const.vhd
index fae3762..495705f 100644
--- a/2004/n/fpga/src/packages/nono_const.vhd
+++ b/2004/n/fpga/src/packages/nono_const.vhd
@@ -46,7 +46,6 @@ package nono_const is
-- Fréquence de fonctionnement de la PWM : 40MHz.
-- Nb de période d'horloge à 40MHz pour avoir 1us : 40 : x"28".
-- constant FREQ_CLK : T_OCTET := x"28"; -- 40M
- -- constant FREQ_CLK : T_OCTET := x"02"; -- ise
constant FREQ_CLK : T_OCTET := x"64"; -- 100M
diff --git a/2004/n/fpga/src/packages/servo_const.vhd b/2004/n/fpga/src/packages/servo_const.vhd
index b6b5714..3a653bf 100644
--- a/2004/n/fpga/src/packages/servo_const.vhd
+++ b/2004/n/fpga/src/packages/servo_const.vhd
@@ -22,6 +22,7 @@ package servo_const is
constant SERVO_VALUE_MIN : T_DOUBLE_OCTET := x"03E8";
-- Nb de périodes de l'horloge à 1us pour avoir 2ms : 2000 : x"07D0".
+ -- Constante inutilisée mais utile pour la compréhension.
constant SERVO_VALUE_MAX : T_DOUBLE_OCTET := x"07D0";
-- Nb de périodes de l'horloge à 1us pour avoir 20ms : 20000 : x"4E20".