From d957c76ea69df920b4a7a62d37ddeb937b608ae9 Mon Sep 17 00:00:00 2001 From: galmes Date: Wed, 28 Apr 2004 22:28:22 +0000 Subject: pwm : La pwm marche, calibrée sur du 20kHz, pour une horloge de 40M. --- 2004/n/fpga/src/clkdiv/clk1us.vhd | 47 ++++++++++++++++++++++++++++++++ 2004/n/fpga/src/clkdiv/clk200ns.vhd | 47 ++++++++++++++++++++++++++++++++ 2004/n/fpga/src/packages/nono_const.vhd | 1 - 2004/n/fpga/src/packages/servo_const.vhd | 1 + 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 2004/n/fpga/src/clkdiv/clk1us.vhd create mode 100644 2004/n/fpga/src/clkdiv/clk200ns.vhd (limited to '2004') 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". -- cgit v1.2.3