Hallo, ich bin Anfänger in Sachen Verilog: Ich habe ein reg [20:0) x und ein reg [10:0] y . Ich will, dass Bit 11, 12, ...,21 in das reg y gepeichert werden. Wie geht das am einfachsten? Danke, Jonas
> Ich will, dass Bit 11, 12, ...,21 in das reg y gepeichert werden.
Du hast x so deklariert, dass dessen Bits nur von 0 bis 20 gehen. Was
soll Bit 21 sein?
Ich geh daher mal davon aus, dass du eigentlich die elf bits 10 bis 20
meintest. Das geht so:
assign y = x[10:20];
oder auch:
always @(posedge bla)
y <= x[10:20];
always@posedge clock y[10:0] <= {x[11],x[12],undsoweiter} mit geschweiften Klammern wenn die Reihenfolge wirklich umgekehrt werden soll, sonst einfach y[10:0] <= x[21:11] oder kann man auch zum Umdrehen x[11:21] schreiben, das weiß ich nicht ?
Ja, stimmt. Danke. Ich habe noch eine Frage: Angenommen ich habe ein MOdul, das zwei andere Module instanziert und ich möchte die Ausgabe des einen Moduls als EIngabe des anderen Moduls verwenden. Als was muss ich dann die Variable deklarieren? Als reg oder als wire? Jonas
Mit Variable meinst du die Verbindung der beiden Instanzen? Das soll ein wire sein, da ja die Signaltreiber irgendwo in den Modulen sind.
Ich habe den folgenden Code geschrieben. Mein Compiler gibt den Fehler "Bounds of part-select into 'x' are reversed." aus. Es wäre sehr nett, wenn ihr mir sagen könntet wo der Fehler liegen könnte. Danke, Jonas input [10:0] x; reg [5:0] y; @always(posedge clock) begin y<=x[6:10]; end
Beim definieren ist msb > lsb (10 > 0): input [10:0] x; Dann aber beim Zugriff msb < lsb (6 < 10): y<=x[6:10]; Ich glaube das geht nicht. Wenn es dir zu viel Arbeit ist die einzelnen bits in einen Verkettung zu schreiben, kannst du auch eine for-Schleife dazu nehmen. Also so etwa: integer i; for(i=6; i<=10; i=i+1) y[10-i] <= x[i]; Beim sythesieren wir das dann aufgerollt und es stehen die einzelnen Zuweisungen da.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.