10BIt.vhd


1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
entity counter is 
5
  generic (  sys_clk       :INTEGER := 50_000_000;
6
    periode       : time   := 40.0 ns;
7
    resolution     : natural:= 5;
8
    n_Bit              : natural:= 10);
9
           
10
  port( clk_in, n_reset       : in std_logic;
11
          Upwm0             : in std_logic_vector(n_Bit-6 downto 0);      -- 5 Bit for parallel load
12
    Upwm1             : in std_logic_vector(n_Bit-1 downto 5);     -- 5 Bit for parallel load
13
    Upwm0_out         : out std_logic_vector(n_Bit-6 downto 0);      -- 5 Bit for parallel load
14
    Upwm1_out         : out std_logic_vector(n_Bit-1 downto 5));     -- 5 Bit for parallel load
15
        
16
end entity counter;
17
18
architecture counter_a of counter is
19
 signal  pwm0    :unsigned(n_Bit-6 downto 0):=(others=> '0');
20
 signal  pwm1    :unsigned(n_Bit-1 downto 5):=(others=> '0');
21
22
23
begin
24
  count: process(clk_in,n_reset)--sensitivity list
25
  begin
26
     if(n_reset = '0') then
27
          pwm0 <= unsigned(Upwm0);
28
    pwm1 <= unsigned(Upwm1);
29
30
    else
31
        if(rising_edge(clk_in)) then
32
                if(pwm0 < to_unsigned(31,n_Bit))then-- pwm1 < to_unsigned(31,n_Bit))then
33
      pwm0<= (pwm0 + 1);
34
      --pwm1<= (pwm1 + 1);
35
    else
36
      pwm0 <= unsigned(Upwm0);
37
      --pwm1 <= unsigned(Upwm1);
38
    end if; -- pwm0&1
39
          end if;   -- rising_edge              
40
      end if;       -- reset      
41
    end process count;
42
43
output:
44
Upwm0_out <=  std_logic_vector(pwm0);
45
Upwm1_out <=  std_logic_vector(pwm1);
46
47
end architecture counter_a;