Hi, ich hab hier ein kleines "Programm" geschrieben, was auch laeuft,
nur habe ich mal ein paar Fragen dazu.
Wenn ich in 2 prozessen einene wert(Signal) schreiben will, geht das
nicht, weil das Signal dann durch 2 Treiber getrieben wird
(fehlermeldung :( ). Wie wird sowas am besten gelöst? Ich habe hierzu
eine Variable genommen, weil mir nix bessres einfiel (Variable "res"
Zeile 70 & 75).
2tens. Wie kann ich ein generic an Submodule weiterleiten? Auch via port
map?
3tens. gibt es sowas wie "#define"? Generic ist ja schon sowas, aber
wenn ich
generic( number_led: positive := 9;
width : positive :=number_led*3);
eingebe, gibt es wiederum eine Fehlermeldung.
Danke.
Gast
#1567626
Generics werden analog zu Ports mit "generic map" zugewiesen.
Jens B. schrieb: > Wenn ich in 2 prozessen einene wert(Signal) schreiben will, geht das > nicht, weil das Signal dann durch 2 Treiber getrieben wird > (fehlermeldung :( ). Wie wird sowas am besten gelöst? Ich habe hierzu > eine Variable genommen, weil mir nix bessres einfiel (Variable "res" > Zeile 70 & 75). In deinem Code sind nicht zwei Treiber das Problem, res wird doch nur in einem Prozess zugewiesen - welche Fehlermeldung bekommst du eigentlich? > 3tens. gibt es sowas wie "#define"? Generic ist ja schon sowas, aber > wenn ich > > generic( number_led: positive := 9; > width : positive :=number_led*3); > > eingebe, gibt es wiederum eine Fehlermeldung. Richtig, generics dürfen sich nicht auf andere generics der selben Entity beziehen. Du kannst entweder eine externe Library verwenden (hier eindeutig übertrieben), oder du definierst width einfach um zu channels_per_led := 3 oder etwas ähnlichem. Btw: Du solltest die Regel "Nur ein Takt pro Design" beherzigen. Wenn du sowohl EN als auch SCK als Takt benutzt handelst du dir Probleme ein wenn z.B. beide Signale sehr kurz nacheinander ihren Wert wechseln. EN ist schon dem Namen nach ein enable-Signal. Besser, du benutzt es auch wie ein clock enable.
Hi, > In deinem Code sind nicht zwei Treiber das Problem, res wird doch nur in > einem Prozess zugewiesen - welche Fehlermeldung bekommst du eigentlich? Habs grade nochmal versucht nachzuvollziehen, aber keine Fehlermeldung. Der obige Code ist schon korrigiert :( . > > Btw: Du solltest die Regel "Nur ein Takt pro Design" beherzigen. Wenn du > sowohl EN als auch SCK als Takt benutzt handelst du dir Probleme ein > wenn z.B. beide Signale sehr kurz nacheinander ihren Wert wechseln. > EN ist schon dem Namen nach ein enable-Signal. Besser, du benutzt es > auch wie ein clock enable. Ist mir eigentlich klar, aber ich brauchte die Flanke, mir ist nix bessres eingefallen :(. Aber danke für die Hinweise.
1 | |
2 | |
Wenn du schon die Wortbreite generisch beschreibst, dann solltest du schon auch die Defaultzuweisung generisch beschreiben. 16*9*3-1 = 431 d.h. dein Defaultvektor ist garantiert zu kurz :-o Schreib das besser so:
1 | |
2 | |
3 | |
Und das hier:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
ist ein synchroner Zähler mit asynchronem kombinatorischen Reset. Das ist schlechte Designpraxis. Sieh dir mal meinen SPI-SLave an: http://www.lothar-miller.de/s9y/categories/26-SPI-Slave
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.