Forum: FPGA, VHDL & Co. Webpack Clock verunden


von Binnesmann (Gast)


Lesenswert?

Hallo,

habe als erstes Projekt mit Xilinx Webpack einen 18 Bit Up Counter mit
3 verschiedenen Clocks gebastelt, der in der Simulation auch gut läuft.
Da ich hiermit ein SRAM ansteuern will und 2 der Clocks zum Schreiben
sind und die 3. Clock zum lesen, muß ich auch das RD/WR des Rams
bedienen. Leider klappt das nicht mit

assign RD_WR = Clock & <Interner Merker>

Da bekomme ich entweder Fehler oder in der Simulation bekomme ich erst
einen Flankenwechsel nach Ablauf des zählens. Zum zählen arbeite ich
mit posedge. Ich habe es dann auch schon mit

allways @(negedge Clock)

probiert. Das klappt leider auch nicht.

Kann mir jemand bitte sagen warum?? Vielleicht auch in NewBy
verständlicher Sprache.

Gute Nacht

Binnesmann

von Hagen (Gast)


Lesenswert?

Es ist immer gut wenn du deinen VHDL postest, hier wurde noch niemand
ausgelacht falls der Source nicht so perfekt ist.

Denn deine Aussage "Vielleicht auch in NewBy verständlicher Sprache"
trifft auch im Umgekehrten zu. Ich kann nämlich deinen Ausführung nicht
so recht folgen.

Gruß Hagen

von Sven Johannes (Gast)


Lesenswert?

Moin...

Warum drei Takte? Asynchrone Designs sind mit Vorsicht zu geniessen.
Außerdem solten Takte niemals kombinatorisch aud Logik erzeugt werden,
das provoziert ernsthaften Ärger.

Mit dem Source oder der Aufgabenstellung könte man mehr sagen.

--
 Sven Johannes

von Binnesmann (Gast)


Angehängte Dateien:

Lesenswert?

Mahlzeit,

sorry, war wohl etwas spät gestern und das hätte ich mir auch denken
können. Im Anhang ist jetzt mein Verilog File.

Zur Anwandung: Ich baue mir gerade einen einfachen Logik Analyser. Dazu
habe ich 15 ns SRAM mit jeweils 128k. 4 Stück werden von dem Zähler
durchgezählt, jeweils mit den eigenen CS Leitungen. Das scheint auch zu
laufen, bis jetzt nur mit den ersten 16 Speicherzellen, das die
Simualtion nicht zu groß wird.

3 Clocks brauche ich, um eine eigene 50 MHz Clock zu haben, eine ext.
Clock aus der Schaltung und eine Leseclock. Zwischen den Clocks kann
ich wählen, was passieren soll und eine Veriegelung gegen die anderen
läuft auch. Jetzt muß nur noch während des Schreibens das /WR Signal
erzeugt werden. Dazu stehen noch meine Versuche teilweise ausgemarkt im
Source.

Ich hoffe das war jetzt so halbwegs verständlich. Hier geht es nur um
den Zähler, der von der Triggerung einen Impuls bekommt, und dann den
Speicher bis zum Ende durchzählt. Während des Durchlaufs gibt es nach
extern ein Busy Signal und der Zähler ist bis zum Speicherende
gesperrt.

Gruß Binnesmann

von Binnesmann (Gast)


Lesenswert?

Hallo nochmal,


ich habe jetzt ein wenig über das Design nachgedacht. Ich habe nur noch
eine Lese- und eine Schreibclock. Trotz allem möchte ich aber die WR und
die OE Leitung des RAMs bedienen. Das heißt, mit jeder Positiven Flanke
der Clock wird hochgezählt und an den Adressleitungen ausgegeben. Jetzt
brauche ich aber noch eine Verknüpfung von Write_Clock oder Read_Clock
um WR und OE zu erzeugen. Aber es muss doch zu machen sein, das ein
Teil des Codes den Zähler erzeugt und ein anderer Teil einfach nur ein
Logisches UND erzeugt. Oder bin ich auf dem Holzweg?? Ich habe in den
Code Examples bei Xilinx geschaut, da gibt es ein

always
begin
   <ausgang> = <eingang1> & <eingang2>
end

Warum kann ich das nicht mit einbinden?? Oder denke ich da zu umwegig?

Gruß Binnesmann

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
Noch kein Account? Hier anmelden.