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;
|