bonjours a tous
J'ai une problème pour programmer un FPGA.
je programme un PWM avec rapport cyclique et fréquence variable mais jai un petit problème.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use ieee.std_logic_unsigned.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity PWM_fixe_top is
Port ( clk_in : in STD_LOGIC;
clk_out : out STD_LOGIC
);
end PWM_fixe_top;
architecture Behavioral of PWM_fixe_top is
signal cmpt : std_logic_vector (23 downto 0) := X"000000";
signal sortie : std_logic;
signal freq : std_logic_vector (23 downto 0) :=X"0000FF"; --on peut faire varier la fréquence de 10Mhz a 3hz
signal duty_cycle : std_logic_vector (23 downto 0) :=X"000040";
begin
process(clk_in)
begin
if(clk_in'event and clk_in ='1') then
if (cmpt < duty_cycle) then
sortie <= '1';
else
sortie <= '0';
end if;
if (cmpt < freq) then
cmpt <= cmpt + 1;
else
cmpt <= X"000000";
sortie <= not (sortie);
end if;
end if;
clk_out <= sortie;
end process;
end Behavioral;
mon but est d'éviter a l’utilisateur de calculer la valeur (en hexa) de duty_cycle lorsqu'il va changer la fréquence
j'ai donc penser a sa
duty_cycle_utilisateur : variable contennent la valeur du rapport cyclique de 0 à 100
duty_cycle_utilisateur= duty_cycle*freq/100
le problème c'est que je n'arriver pas a diviser se calculer par 100
pouvez vous m'aider svp.
-----