summaryrefslogtreecommitdiff
path: root/2004/n/fpga/src/servo/servo_generator.vhd
diff options
context:
space:
mode:
Diffstat (limited to '2004/n/fpga/src/servo/servo_generator.vhd')
-rw-r--r--2004/n/fpga/src/servo/servo_generator.vhd52
1 files changed, 52 insertions, 0 deletions
diff --git a/2004/n/fpga/src/servo/servo_generator.vhd b/2004/n/fpga/src/servo/servo_generator.vhd
new file mode 100644
index 0000000..278cbff
--- /dev/null
+++ b/2004/n/fpga/src/servo/servo_generator.vhd
@@ -0,0 +1,52 @@
+-------------------------------------------------------------------------------
+-- servo_generator.vhd
+-- Eurobot 2004 : APB Team
+-- Auteur : Fidèle GAFAN et Pierre-André Galmes
+
+-- TODO : reprendre les commentaires déjà faits !
+
+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;
+use work.servo_const.all;
+
+--ENTITE
+entity servo_generator is
+ port (
+ rst : in std_logic;
+ clk : in std_logic;
+ servo_in : in T_DOUBLE_OCTET;
+ servo_out : out std_logic
+ );
+end entity;
+
+--ARCHITECTURE
+architecture RTL of servo_generator is
+ signal compt : T_DOUBLE_OCTET;
+ signal reg : T_DOUBLE_OCTET;
+begin
+
+ process(rst, clk)
+ begin
+ if (rst = '1') then
+ compt <= x"0000";
+ reg <= x"0000";
+ servo_out <= '0';
+ elsif (clk'event and clk = '1') then
+ compt <= compt + x"0001";
+ if (compt < reg) then
+ servo_out <= '1';
+ else
+ servo_out <= '0';
+ if (compt = SERVO_NB_CYCLE_20MS) then
+ compt <= x"0000";
+ reg <= servo_in;
+ end if;
+ end if;
+ end if;
+ end process;
+
+end RTL;