|
Betreff |
Autor |
Datum |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: # ** Error: (vsim-3601) Iteration limit reached at time 0 ns.
Hallo LukeS,
poste doch mal Deinen Code - aber keie 35 MB we das
Projektfile - nur das VHDL.
Hast Du irgendwo ne loop, die immer wieder durchlaufen
wird, ohne dass Zeit vergeht (ausser delta delays). Sowas
in der Art:
2 concurrent assingments:
a <= b+1;
b <= a+1;
Gruss,
Alex
|
Alex |
16.07.06, 23:43 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Zähler
Hi Oliver,
hier fehlt die Initialisierung. Std_Logic ist per default immer 'x'.
Für die Simulation wäre das ok:
signal STIM_OUT_SIG: std_logic_vector (5 downto 1) := (OTHERS => '0');
Besser ist aber, nen Reset zu verwenden (und nen clock, der
dann den Prozess mit dem Zähler triggert ...
Gruss,
Alex
|
Alex |
05.07.06, 16:06 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Mehrere Entities miteinander verknüpfen
Hallo LukeS,
Du musst dazu ne Component erstellen von dem Modul, das du
instanziieren willst und dieses dann in der darüberliegenden Entity
instanziieren ...
Am besten mal in ein Buch oder Tutorial reinschauen, wie man
strukturelle Beschreibungen macht - dont sind i.d.R. auch
entsprechende Beispiele.
Siehe z.B. www.vhdl-online.de -> Tutorial, Kapitel 2.2, VHDL
Structural Elements. Kapitel 2.2.7 und 2.2.8 beschreibt das
ganze ganz gut als Beispiel.
Oder sicher auch in dem VHDL-Kompakt-Dokument, dass
von A. Maeder im Web kursiert ...
BTW, ich würde hier immer mit Named Signal Association
arbeiten ... (das Beispiel in 2.2.8 tut's leider nicht - sehe ich
gerade).
> Ich nehme an, dass ich einen Ausgang an mehrere
> Eingänge leiten kann.
Ja.
Nur umgekehrt, also mehrere Ausgänge "kurzschliessen"
ist nicht ganz so einfach. Geht auch und nennt sich dann
resolgved, würde ich aber versuchen zu vermeiden (braucht
man z.B. für Tristate-Signale).
Gruss,
Alex
|
Alex |
28.06.06, 18:02 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Simulation
Hallo LukeS,
hab auf die Schnelle 2 Links zu nem DCF77 gefunden:
http://tams-www.informatik.uni-hamburg.de/ lehre/icPrak/prak7.pdf
beschreibt ne DCF77 als Praktikum (mit Blockschaltbilder usw).
http://www.i-tip.de/projectDCF/dcfDoku.html
Ist aber leider in Verilog.
Siehe auch:
http://www.mikrocontroller.net/forum/read-9-288765.html
Google sei Dank ... ;-)
Ansonsten hab ich keine Ahnung, was ein DCF77 genau macht.
Bzgl. Taktteiler:
Ist im Grunde ein Zähler (kommt darauf an, durch welchen Wert Du
teilen möchtest).
Das einfachste Beispiel ist :2, also in etwa
process (Clock, Reset)
begin
if Reset then
ClockHalbe <= '0';
elsif Rising_edge(Clock) then
ClockHalbe <= not ClockHalbe;
end if;
end process;
Für andere Werte zählst Du einfach die Clock-Zyklen, nach der
Hälfte setzt Du dann Clock = not Clock ...
Bzgl. Beispielen:
Hier gibt es viele auf dem Netz, u.a. auch in diversen
Online-verfügbaren VHDL Totorien usw ...
Siehe u.a.:
http://tams-www.informatik.uni-hamburg.de/vhdl/
Dort ist eine VHDL-Anleitung auf Deutsch von A. Maeder und ein
deutsches Buch z.Th. VHDL-Schaltungsdesign zum runterladen.
Oder www.vhdl-online.de mit nem VHDL-Tutorial.
Die meisten Unis/FHs haben hier auch irgendwelche Online-Dokus
und Links ...
Unter dem Hamburg VHDL/Archiv und www.opencores.org finden
sich auch jede Menge fertiger Blöcke.
Ich würde allerdings mit einem der obigen Dokumenten
anfangen bzw. nem guten VHDL-Buch (und nicht gleich mit nem komplexen Block von OpenCores, VHDL Archive oder RASSP ...)
Mir persoenlich gefaellt "The Designers Guide to VHDL" von
Peter Ahenden sehr gut. Ist sehr umfassend und enthaelt jede
Menge Code, der auch erklaert ist. Leider gibt's das Buch nur
auf Englisch.
Vielleicht habt Ihr ja auch von Eurem Lehrer/Prof ne gute
Buchempfehlung.
Gruss,
Alex
PS: Wuerde Deinen Thread nicht unbedingt unter ModelSim
posten sondern eher in den oberen beiden Gruppen ...
|
Alex |
17.06.06, 18:55 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Unterschied zwischen Prozee
Hallo Tim,
bei der Variante mit den 2 Prozessen schreibst Du aus beiden
Prozessen auf das selbe Signal. Das macht für Dein Beispiel keinen
Sinn. Du treibst damit 2 Signale gegeneinander, und das Ergebnis
ist X.
Die Variante mit einem Prozess ist ok, so sollte man ein D-FF
beschreiben.
---
Ich vermute mal, dass Du Q als std_logic definiert hast. Ist vom
Prinzip her aus Sicht von VHDL zulässig und wird meist verwendet,
wenn man Tridtate-Busse beschreiben möchte. std_logic ist resolved.
Verwende einfach mal std_ulogic oder bit, dann würde Dir der
VHDL-Compiler auch eine entsprechende Fehlermeldung bringen.
Gruss,
Alex
|
Alex |
24.05.06, 01:41 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Simulation: Variable "now" in Datei ausgeben
Hallo Julian,
Du kannst Werte vom Typ "Time" direkt in ein File schreiben,
musst Du nicht nach String oder sonstwas konvertieren.
Im Package textio ist eine Funktion WRITE, die für die
unterschiedlichsten Datentypen definiert ist: Bit,
Boolean, Bit_vector, Integer, String und eben auch Time.
Delay_lenght ist als subtype von Time definiert, d.h.
geht ohne Probleme.
Codebeispiel:
> file ReportFile: text open write_mode is "Report.txt";
> variable Message : line;
>
> variable Time1, Time2: delay_length;
>
> ...
>
> write(Message, NOW, right, 10); -- NOW geht auch direkt in WRITE.
> write(Message, Time2 - Time1, right, 10);
> write(Message, Data1, right, 10);
> write(Message, Data2, right, 10);
> ... usw
> writeline(ReportFile, Message);
Für das rausschieben von "Time" hab ich übrigens txt_util
nicht benötigt.
Falls das bei Dir nicht funktioniert, schicke am besten
Deinen Beispielcode, dann kann man nochmals draufschauen.
Gruss,
Alex
|
Alex |
19.05.06, 01:15 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: Multiplikationsschleife
Hallo Student,
mit einer 4-bit breiten positiven Zahl lassen sich die Werte 0 bis 15
darstellen, d.h. mit einer Multiplikation liegt das Ergebnis irgendwo
zwischen 0 und 225 -> d.h. Du brauchts 8 bit für die Darstellung des
Ergebnisses (n-Bit mal n-Bit benötigt immer 2n-Bit).
> Wie oft wird die Multiplikationsschleife durchlaufen ...
???
Hängt davon ab, wie Du die Multiplikation implementierst.
Bei 4 Bit kann man eine Multiplikation durchaus direkt in einem Taktzyklus
ausführen, also "keine" Schleife - nur ein Durchlauf.
Will man beispielsweise zwei 16-Bit-Vektoren multiplizieren, kann
man das z.B. durch 4 Multiplikationen machen, die unteren beiden Bytes,
die oberen beiden Bytes und die Paare jeweils über Kreuz. Das ganze noch
entsprechent an die richtige Stelle geschoben und addiert.
Man kann allerdings auch die eine Zahl immer um eine Stelle nach links
schieben (entspricht einer Multiplikation mit 2) und auf das Ergebnis
aufaddieren, abhängig davon, ob das zugehörige Bit in der anderen
Zahl =1 ist oder nicht.
Dann würde man bei 4*4 vier Multiplikationen (und 3 Shift und 3 Add)
benötigen, bei 8*8 entsprechend 8 Multiplikationen usw.
(Genaugenommen sind's nur 3 (bzw. 7) Multiplikationen, da der erste
Wert nur eine Multiplikation mit 1 (oder 0) ist, also nicht als
Multiplikation ausgeführt werden muss.)
Gruss,
Alex
|
Alex |
16.05.06, 22:35 |
![No new posts No new posts](/skin/5/img/folder.gif) |
Re: DatenBus Konflikt
Hallo Bmkassel,
ich denke Du beziehst Dich auf das "00X0" auf den Wert des Databus
bei 1 us.
Sowie's aussieht benutzt Du das Signal Databus als inout sowohl aus der
Testbench als auch aus deinem Akku. Im Akku ist zwar ein Tristate-Signal eingebaut, in der Testbench wird das Singal aber immer getrieben.
Das Signal ist als "resolved" definiert, somit in VHDL also zulässig.
Bei 1 us treibt dein Akku den Wert aus dem internen Register
(LoadDaBus=1, AccuIntern="0000") und Deine Testbench immer noch
den Stimuliwert (0010). Die Resolution Funktion macht daraus eben
das X (00X0).
Ob die Testbench so Sinn macht, kann ich nicht sagen, dazu kenne ich
Deine Schaltung zu wenig (ich würde z.B. das Signal nicht als Tristate
definieren sondern in ein DataBusIn und in ein DataBusOut aufteilen).
Dazu musst Du aber schon etwas mehr infos geben als "geht nicht" ... :-)
Gruss,
Alex
PS: Ich hätte das Thema nicht unter ModelSim plaziert, hat mit dem
Tool m.E. nichts zu tun.
|
Alex |
16.05.06, 22:09 |
|
|
|