Hallo zusammen Ich hab ein kleines problem: Ich möchte mit jeder steigenden Flanke von clk1 data_in input in einer bestimmten speicherregister speichern (insgesamt 7 * 4 Bit zu enpfangen). Das Problem wenn ich 7 in den 2 if Anweisungen schreibe bekomme ich gar nichts in data_out. Aber wenn ich 6 in den 2 if Anweisungen schreibe, kann ich am Ausgang alle reg_X finden ausser reg_7 der mit mem[6] verbunden ist. Hängt das vielleicht von der deklaration vom Speicherregister? ich brauche eure Hilfe. MfG Jimmy reg [3:0] mem [6:0]; reg [2:0]counter = 3'b000; always @(posedge clk1) begin if(counter < 3'd7) begin mem[counter] <= data_in; counter <= counter + 3'd1; end if(counter == 3'd7) begin sl_comm_rdy <= 1'b1; reg_1 <= mem[0];// reg_2 <= mem[1];// reg_3 <= mem[2];// reg_4 <= mem[3]; reg_5 <= mem[4];// reg_6 <= mem[5];// reg_7 <= mem[6]; end always @(posedge clk2) begin data_out <= reg_7; end
Jimmy wrote: > Hallo zusammen > Ich hab ein kleines problem: > Ich möchte mit jeder steigenden Flanke von clk1 data_in input in einer > bestimmten speicherregister speichern (insgesamt 7 * 4 Bit zu > enpfangen). Es würde helfen, wenn du noch beschreibst was du an data_out erwartest. > Das Problem wenn ich 7 in den 2 if Anweisungen schreibe bekomme ich gar > nichts in data_out. Aber wenn ich 6 in den 2 if Anweisungen schreibe, > kann ich am Ausgang alle reg_X finden ausser reg_7 der mit mem[6] > verbunden ist. > > Hängt das vielleicht von der deklaration vom Speicherregister? > ich brauche eure Hilfe. [...] Wie ist data_out definiert? Was soll an data_out ausgeben werden?
1 | > reg [3:0] mem [6:0]; |
2 | > reg [2:0]counter = 3'b000; |
3 | > |
4 | > always @(posedge clk1) begin |
5 | > if(counter < 3'd7) begin |
6 | > mem[counter] <= data_in; |
7 | > counter <= counter + 3'd1; |
8 | > end |
9 | > if(counter == 3'd7) begin |
10 | > sl_comm_rdy <= 1'b1; |
11 | > reg_1 <= mem[0];// |
12 | > reg_2 <= mem[1];// |
13 | > reg_3 <= mem[2];// |
14 | > reg_4 <= mem[3]; |
15 | > reg_5 <= mem[4];// |
16 | > reg_6 <= mem[5];// |
17 | > reg_7 <= mem[6]; |
18 | > |
19 | > end |
20 | |
21 | --- Hier fehlte ein "end" für den always Block |
22 | |
23 | > |
24 | > always @(posedge clk2) begin |
25 | > data_out <= reg_7; |
26 | > |
27 | > end |
Dein jetziger Code gibt mit jedem clk2 Signal mem[6] aus. Ist das der Sinn?
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.