Gast
|
Erstellt: 13.12.05, 03:32 Betreff: Simulation mit der Quartus II Umgebung von Altera
drucken
weiterempfehlen
|
|
|
Hallo zusammen
Ich arbeite seit kurzem mit der Quartus II Software Version 5 von Altera. Habe noch keine grosse Erfahrung mit VHDL. Ich habe nun einen kleinen Counter geschrieben fuer eine Anwendung, sprich ich benoetige einen 16Bit Vector, welchen ich dann spaeter ausgeben moechte, und je nachdem moechte ich diesen erhoehen um einen gewissen Betrag.
Nun habe ich in der Simulation folgendes festgestellt, wenn ich meinen Vector um z.B. plus 8 erhoehe, was in Binaer (1000) ist, dann erhalte ich folgende Warnung in der Simualtion:Warning: Ignored node in vector source file. Can't find corresponding node name "\Process_PCM:DataPCM16_int[2]" in design. Somit wird natuerlich ein falscher Wert angezeigt. Das heisst, immer wenn ein Bit eine Null ist, dann hat der Simulator ein Problem. z.B. bei plus 3, kein Problem, denn die beiden letzen Bits sind ja eine 1. Bei plus 4, werden die beiden letzten Bits weggelassen in der Simulation. Kennt jemand dieses Problem? Wie kann ich das umgehen?
Ein weiteres Problem habe ich festgestellt, wenn ich meinen Counter von 1 bis 48000 haben moechte, dann ist der Startwert nicht immer 1, sprich auch hier kommt es darauf an, welchen Betrag ich dazuzaehlen. Wenn mein LSB eine 0 ist, dann kann ich in der Simulation als Startwert eine 1 sehen, wenn es eine 1, ist dann startet mein Counter bei 0. Kenn jemand dieses Problem? Wie kann ich das umgehen?
Eine weitere Frage zur Simualtion: wenn ich jeweils die Nodes aussuche, dann kann ich nicht immer alle internen Variablen eines Processes auswaehlen. Ich verwende jeweils den Filter Pins all, Register post fitted. Konnte aber nicht fesstellen, wann es geht und wann nicht. Zum Teil habe ich halt einfach ein Signal in der Entity deklariert, und die Variable zugewiesen. Gibt es da eine einfachere Methode?
Hier nun mein Code:
------------------------------------------------------------------------------------ --Library ------------------------------------------------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all; USE ieee.std_logic_signed.all;
LIBRARY std; USE std.standard.all;
LIBRARY work; USE work.all; ------------------------------------------------------------------------------------- --ENTITY -------------------------------------------------------------------------------------
ENTITY Counter_Test IS PORT( LRCLK: IN STD_LOGIC; --Clock TestOut: OUT STD_ULOGIC_VECTOR (15 DOWNTO 0)); END Counter_Test;
------------------------------------------------------------------------------------- --ARCHITECTURE -------------------------------------------------------------------------------------
ARCHITECTURE ADC OF Counter_Test IS
BEGIN
---------------------------------------------------------------------------------- --PROCESS (PCM) -------------------------------------------------------------------------------------
Process_PCM: PROCESS (LRCLK)
VARIABLE DataPCM16_int: INTEGER RANGE 1 TO 132000:= 1; BEGIN IF DataPCM16_int >= 48000 THEN DataPCM16_int:= 1; ELSIF(LRCLK'event AND LRCLK = '1') THEN DataPCM16_int:= DataPCM16_int + 8; END IF;
TestOut <= to_stdulogicvector(conv_std_logic_vector(DataPCM16_int, 16)); END PROCESS;
END ADC;
Gruss und Dank
|
|