Hallo Miteinander! Ich habe folgendes Problem: Ich möchte an 4 Ports eine aufsteigende Adresse ausgeben. Dafür hab ich folgendes Programm mit einem Zähler, der Zählerstand soll an dann an den Ports ausgegeben werden. Bei der Simulation wird folgende Fehlermeldung ausgegeben: WARNING:Simulator:29 - at 0 ns: Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es). Code: ENTITY MAIN IS PORT (CLK: IN std_logic; Output: OUT STD_LOGIC_VECTOR(3 downto 0) := "0000"); END; ARCHITECTURE BEHAVIOR OF M200_MASTER IS signal Count : std_logic_vector (3 downto 0); BEGIN PROCESS (CLK) BEGIN IF CLK='1' AND CLK'event THEN Output <= Count; END IF; END PROCESS; PROCESS BEGIN Count <= Count + 1; END PROCESS; END BEHAVIOR; Entwicklungsumgebung: Xilinx ISE 9.1i Bin für Hilfe wirklich dankbar!
Mach mal
1 | signal Count : std_logic_vector (3 downto 0) := "0000"; |
Und übersetze mal die Fehlermeldung. Rick
Das Count <= Count + 1 gehört in den getakteten Prozess, Count darf sich nur an jeder Flanke ändern! PROCESS (CLK) BEGIN IF CLK='1' AND CLK'event THEN Output <= Count; Count <= Count + 1; END IF; END PROCESS;
Also, ich würde es so machen:
1 | library ieee; |
2 | use ieee.std_logic_1164.all; |
3 | use ieee.numeric_std.all; |
4 | |
5 | ENTITY MAIN IS |
6 | PORT ( |
7 | clk : in std_logic; |
8 | Output: out std_logic_vector(3 downto 0) |
9 | );
|
10 | END; |
11 | |
12 | |
13 | ARCHITECTURE BEHAVIOR OF M200_MASTER IS |
14 | |
15 | signal Count : unsigned(3 downto 0) := "0000"; |
16 | |
17 | begin
|
18 | process (clk) |
19 | begin
|
20 | if rising_edge(clk) then |
21 | Count <= Count + 1; |
22 | end if; |
23 | |
24 | Output <= std_logic_vector(Count); |
25 | end process; |
26 | end behavior; |
Die Syntax habe ich nicht überprüft. Hoffe trotzdem dass es richtig ist. Zähler sind bei mir immer unsigned. Gruß Ralf
Ausserdem würd ich nen Reset durchführen, wo beim anlegen eines Reset- Signals Count auf Null gesetzt wird.
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.