Datum: 08.05.2008 10:50
Hallo, ich weiß nicht mehr weiter... Ich wollte in VHDL einen Counter schreiben aber beim syntehtisieren (ISE) bekomme ich nur immer '+ can not have such operands in this context'
library IEEE; use IEEE.std_logic_1164.all; entity COUNTER is Port ( CLK : In STD_LOGIC; ENABLE : In STD_LOGIC; MODE : In STD_LOGIC; REG_IN : In std_logic_vector (3 downto 0); RES : In STD_LOGIC; PC_OUT : Out std_logic_vector (3 downto 0) ); end COUNTER; architecture BEHAVIORAL of COUNTER is signal pc_state: std_logic_vector (3 downto 0); begin PC_OUT <= pc_state; process (clk, RES) begin if (RES = '1') then pc_state <= "0000"; -- Reset asynchron end if; if (ENABLE = '1') then if (clk='1' and clk'event) then if (MODE = '1') then pc_state <= REG_IN; end if; if (MODE = '0') then if (pc_state="1111") then pc_state <= "0000"; -- Overflow else pc_state <= pc_state + 1; end if; end if; end if; end if; end process; end BEHAVIORAL; |
Weiß jemand warum VHDL den '+' Operator stört? Wolif
Datum: 08.05.2008 10:58
Weil Du nicht alle notwendigen Libraries eingebunden hast, damit die ISE eine Addition von std_logic_vector synthetisieren kann. Versuch mal
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; |
edit: Ach ja, dein Prozess wird wohl nicht synthetisierbar sein. Wenn du schon reset und clk benutzt, dann muss das folgendermaßen heißen:
process(reset,clk) begin if resest = '1' then -- mach was; elsif clk='1' AND clk'event then -- und noch was; end if; end process; |
Datum: 08.05.2008 11:23
Schöner wäre es allerdings noch, die standardisierte ieee.numeric_std statt der nicht überall gleich implementierten std_logic_arith und std_logic_unsigned zu verwenden und den Counter als unsigned zu deklarieren, denn das ist er ja schließlich auch.
Datum: 08.05.2008 14:40
Numeric LIB nutzen ! Sieh Dir im ModelSIM, "LIBS" die numeric an und schaue, was sie an Rechungen und Conversionen anbietet.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [vhdl]VHDL-Code[/vhdl]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel