VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
Simulation mit der Quartus II Umgebung von Altera

Anfang   zurück   weiter   Ende
Autor Beitrag
Gast
New PostErstellt: 13.12.05, 03:32  Betreff: Simulation mit der Quartus II Umgebung von Altera  drucken  weiterempfehlen Antwort mit Zitat  

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
nach oben
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj