Hy, ich bin gerade dabei eine PWM in VHDL zu "beschreiben" und ich scheitere ständig an einem Fehler, welchen ich nicht weg bekomme. Ich hoffe jemand kann mir da weiterhelfen ;) Vielen Dank entity PWM is Generic (CounterWidth : integer := 8); Port ( Reset_n_i : in STD_LOGIC; Clk_i : in STD_LOGIC; Threshold_i : in STD_LOGIC_vector(CounterWidth-1 downto 0); ClkEnable_i : in STD_LOGIC; LED_o : out STD_LOGIC); end PWM; architecture rtl of PWM is subtype CounterType is unsigned(CounterWidth-1 downto 0); signal Counter : CounterType; signal Threshold : std_logic_vector(CounterWidth-1 downto 0); begin Threshold <= Threshold_i; PWM : process(Reset_n_i, Clk_i) begin if Reset_n_i = '0' then Counter <= (others => '0'); LED_o <= '0'; elsif rising_edge(Clk_i) then if ClkEnable_i='1' then Counter <= Counter +1; hier in der if-Abfrage ist der Fehler--> ("< can not have such operands in this context.") *********"if(Counter < Threshold) then"******************* LED_o <= '1'; else LED_o <= '0'; end if; end if; end if; end process PWM; end rtl;
Gast
#3105383
Deklariere das signal Threshold auch als unsigend. und dann : Threshold <= Threshold_i; ändern in Threshold <= unsigned(Threshold_i);
unglaublich aber so gehts :) Danke habe selbst herumgespielt mit umdeklarieren aber es zeigte mir immer andere Fehlermeldungen an.
Eine jede VHDL Beschreibung beginnt mit den Zeilen vor dem Keyboard entity mit den verwendeten Libraries. Welche Libs verwendest du? In VHDL dürfen nur gleiche Typen zugewiesen und/oder verglichen werden. Deshalb muss der std_logic für den Vergleich erst zum unsigned Vektor umgewandelt/gecastet werden. Siehe http://www.lothar-miller.de/s9y/categories/16-Numeric_Std
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.