verilog wandlung vector zu array

Gast #5275819
Lesenswert?
• ▲
▼
Hallo,

Ich versuche gerade einen Vector [31:0] zu einem Array vom Typ 
[7:0][3:0] via generate zu wandeln ...
1
    reg [31:0] Vector;
2
    wire [7:0] Array [3:0];
3
 
4
    generate
5
    genvar g_index;
6
    for(g_index=0; g_index < 4; g_index = g_index + 1) begin
7
      assign Array[g_index] = Vector[(g_index+1)*8] : g_index*8];
8
      //assign Array[g_index*N +: N ] = Vector[g_index]; // +: also works
9
    end
10
    endgenerate

iverilog sagt:
test.v:12: syntax error
test.v:12: error: syntax error in continuous assignment
test.v:22: warning: extra digits given for sized hex constant.
test.v:22: warning: Numeric constant truncated to 32 bits.
Gast #5276048
Lesenswert?
• ▲
▼
Verzeigung, ich hatte noch einen andren Fehler. Hier mal das ganze 
Modul:
1
module jdoodle;
2
    reg [31:0] Vector;
3
    wire [7:0] Array [3:0];
4

5
    generate
6
    genvar g_index;
7
    for(g_index=0; g_index < 4; g_index = g_index + 1) begin
8
      assign Array[g_index] = Vector[(g_index+1)*8] : g_index*8];
9
      //assign Array[g_index*N +: N ] = Vector[g_index]; // +: also works
10
    end
11
    endgenerate 
12

13
    
14
    initial begin
15
        #1 Vector = 32'hC5B2B856;
16
        
17
        $monitor("%t,%h,%h,%h,%h",Array [0],Array [1],Array [2],Array [3]);
18
        #10 $finish;
19
    end
20
endmodule

Fehlermdelung (ausgeführt auf 
https://www.jdoodle.com/execute-verilog-online):
1
jdoodle.v:8: syntax error
2
jdoodle.v:8: error: syntax error in continuous assignment
Gast #5276057
Lesenswert?
• ▲
▼
Ah .. ich hab den Fehler gefunden, .. wenn man die Indexes richtig macht 
und sonst alle Schreibfehler rausnimmt, dann gehts auch :)
1
module jdoodle;
2
    reg [31:0] Vector;
3
    wire [7:0] Array [3:0];
4

5
    generate
6
    genvar g_index;
7
    for(g_index=0; g_index < 4; g_index = g_index + 1) begin
8
      assign Array[g_index] = Vector[(g_index+1)*8-1 : g_index*8];
9
      //assign Array[g_index*N +: N ] = Vector[g_index]; // +: also works
10
    end
11
    endgenerate 
12
  
13
    /*
14
      assign Array[0] = Vector[7 : 0];
15
      assign Array[1] = Vector[15 : 8];
16
      assign Array[2] = Vector[23 : 16];
17
      assign Array[3] = Vector[31 : 24];
18
*/
19
    
20
    initial begin
21
        #1 Vector = 32'hC5B2B856;
22
        
23
        $monitor("%t,%h,%h,%h,%h",$time,Array [0],Array [1],Array [2],Array [3]);
24
        #10 $finish;
25
    end
26
endmodule

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.