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;
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.