www.mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA Programmierungsfehler


Autor: Jimmy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Günter -.. (guenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

>   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

--- Hier fehlte ein "end" für den always Block

> 
> always @(posedge clk2) begin
>   data_out <= reg_7;
> 
>   end

Dein jetziger Code gibt mit jedem clk2 Signal mem[6] aus. Ist das der 
Sinn?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.