summaryrefslogtreecommitdiff
path: root/pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd')
-rw-r--r--pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd71
1 files changed, 71 insertions, 0 deletions
diff --git a/pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd b/pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd
new file mode 100644
index 0000000..d0c765d
--- /dev/null
+++ b/pb_logique_seq.srcs/sources_1/imports/new/attenateur_pwm.vhd
@@ -0,0 +1,71 @@
+---------------------------------------------------------------------------------------------
+-- attenuateur_pwm.vhd
+---------------------------------------------------------------------------------------------
+-- Generation d'horloge et de signaux de synchronisation
+---------------------------------------------------------------------------------------------
+-- Université de Sherbrooke - Département de GEGI
+--
+-- Version : 1.0
+-- Nomenclature : ref GRAMS
+-- Date : 17 sept. 2018
+-- Auteur(s) : Daniel Dalle
+-- Technologies : FPGA Zynq (carte ZYBO Z7-10 ZYBO Z7-20)
+-- Outils : vivado 2018.2 64 bits
+--
+--------------------------------
+-- Description
+--------------------------------
+-- Attenuateur par modulation pwm pour sorties leds
+--
+--
+---------------------------------------------------------------------------------------------
+-- À FAIRE:
+--
+--
+---------------------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.std_logic_arith.all; -- requis pour les constantes etc.
+use IEEE.STD_LOGIC_UNSIGNED.ALL; -- pour les additions dans les compteurs
+
+Library UNISIM;
+use UNISIM.vcomponents.all;
+
+entity attenuateur_pwm is
+generic (c_val_seuil: std_logic_vector(7 downto 0) := "00000111");
+ Port (
+ CLK : in STD_LOGIC; -- Entrée horloge
+ i_signal : in STD_LOGIC; -- entree
+ o_signal : out STD_LOGIC -- sortie
+ );
+end attenuateur_pwm;
+
+architecture Behavioral of attenuateur_pwm is
+
+ -- constantes pour les diviseurs
+
+ constant c_seuil : std_logic_vector(7 downto 0) := c_val_seuil;
+ signal d_val_compteur : std_logic_vector(7 downto 0) := "00000000";
+ signal d_signal_on : std_logic := '1';
+
+
+begin
+
+o_signal <= d_signal_on AND i_signal;
+
+process(CLK)
+begin
+ if(CLK'event and CLK = '1') then
+ d_val_compteur <= d_val_compteur + 1;
+ if (d_val_compteur = "00000000") then
+ d_signal_on <= '1'; -- on
+ else if (d_val_compteur = c_seuil) then
+ d_signal_on <= '0'; -- off
+ end if;
+ end if;
+ end if;
+end process;
+
+end Behavioral;
+