LED intensity

OP (Company: None) #3957650
Rate this post
useful
not useful
Hello, I got an assignment to make LED lights change intensity, by 
switching 4 switches on pegasus board. I got some code but I don't think 
it's good. Can you check it or improve it? Thanks


1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
 
5
entity PWM is
6
  generic
7
  (
8
    sd        : unsigned(11 downto 0) := X"C35" -- 3125 in hex
9
  );
10
  port
11
  (
12
    clock     : in   std_logic;
13
    switches  : in   unsigned(3 downto 0);
14
    pwm       : out  std_logic
15
  );
16
end PWM;
17
 
18
architecture behave_PWM of PWM is
19
  signal counter : unsigned(15 downto 0);
20
 
21
begin -- architecture
22
  pwm_proc: process (clock)
23
  begin
24
    if (counter <= switches*sd) then
25
      pwm <= '1';
26
    else
27
      pwm <= '0';
28
    end if;
29
 
30
    if (counter >= 50000) then
31
      counter <= (others => '0');
32
    else
33
      counter <= counter + 1;
34
    end if;
35
  end process;
36
 
37
end behave_PWM;
OP (Company: None) #3961978
Rate this post
useful
not useful
Is it good now?


1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
 
5
entity PWM is
6
  generic
7
  (
8
    sd        : unsigned(7 downto 0) := X"C3" -- 195 in hex
9
  );
10
  port
11
  (
12
    clock     : in   std_logic;
13
    switches  : in   unsigned(7 downto 0);
14
    pwm       : out  std_logic
15
  );
16
end PWM;
17
 
18
architecture behave_PWM of PWM is
19
  signal counter : unsigned(15 downto 0);
20
 
21
begin -- architecture
22
  pwm_proc: process (clock)
23
  begin
24
if(clock'event and clock='0'") then
25
    if (counter <= switches*sd) then
26
      pwm <= '1';
27
    else
28
      pwm <= '0';
29
    end if;
30
 
31
    if (counter >= 50000) then
32
      counter <= (others => '0');
33
    else
34
      counter <= counter + 1;
35
end if;
36
    end if;
37
  end process;
38
 
39
end behave_PWM;

Reply

Please log in before posting.

or

Log in with Google account

Registration is free and takes only a minute.

Register now