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.