We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
i'm writing a code of a 4 bit pulse width modulator with the following code
llibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity PWM is port(CLK : in std_logic; D : in std_logic_vector (3 downto 0); PWM : out std_logic); end PWM; architecture Behavioral of PWM is signal tmp : std_logic_vector(3 downto 0); signal up_down : std_logic; signal Oup : std_logic; signal TC : std_logic; begin process (CLK, TC, tmp) begin if (CLK'event and CLK = '1' and TC = '0') then if (up_down = '1') then tmp <= tmp + 1; elsif (up_down = '0') then tmp <= tmp - 1; end if; elsif (TC'event and TC = '1') then tmp <= D; Oup <= not Oup; PWM <= Oup; up_down <= Oup; elsif (tmp'event and tmp = "1111") then TC <= '1'; elsif (tmp'event and tmp = "0000") then TC <= '1'; end if; end process; end Behavioral;
but i keep getting the following error when viewing the RTL schematic
ERROR:Xst:2358 - "C:/Users/Mazen/Documents/VHDL Projects/First/PWM/PWM.vhd" line 45: Operands of <AND> are not of the same size.
any ideas ??
Again its late on a Sunday evening, but I wanted to know if my answer helped. (I'm too busy to actually vet it properly at the moment).
--Cpt. Vince Foster 2nd Cannon Place Fort Marcy Park, VA