Artikel-ID: 000080166 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 15.11.2011

Falsche Breite der Mehrere-Port-Adresse

Umgebung

  • Intel® Quartus® II Anmeldungs-Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Kritisches Problem

    Beschreibung

    Für DDR2- und DDR3-Schnittstellen, die auf Arria V oder Cyclone abzielen V-Geräte mit dem Parameter Enable Hard External Memory Interface (Hard External Memory Interface aktivieren ) Eingeschaltet und mehrere Port-Front-End-Breiten wie in den folgenden gezeigt Tabelle, ein Korrekturfaktor erforderlich ist.

    Dieses Problem kann dazu führen, dass Ihr Design in der Simulation fehlschlägt. Das Das Problem betrifft DDR2- und DDR3-Schnittstellen, die auf den harten Speicher ausgerichtet sind Schnittstellenressourcen auf Arria V oder Cyclone V-Geräte. Dieses Problem wird in einer zukünftigen Version behoben des DDR2- und DDR3-SDRAM-Controllers mit UniPHY.

    Adressbreiten, die korrigiert werden müssen

    Gesamtbreite der Speicherschnittstelle

    Breite der Front-End-Schnittstelle mit mehreren PortsKorrektur erforderlich

    8

    32

    -1

    8

    64

    -2

    8

    128

    -3

    8

    256

    -4

    16

    64

    -1

    16

    128

    -2

    16

    256

    -3

    32

    32

    1

    32

    128

    -1

    32

    256

    -2

    40

    160

    -1

    40

    320

    -2

    Lösung

    Die Problemumgehung für dieses Problem lautet:

    1. Öffnen Sie die Datei altera_mem_if_hard_memory_controller_top(arriav/cyclonev).svin einem Texteditor.
    2. In altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, Fügen Sie die folgenden Zeilen hinzu nach // New parameters for HMC:
    parameter AVL_ADDR_WIDTH_PORT_0 = AVL_ADDR_WIDTH ; parameter AVL_ADDR_WIDTH_PORT_1 = AVL_ADDR_WIDTH ; parameter AVL_ADDR_WIDTH_PORT_2 = AVL_ADDR_WIDTH ; parameter AVL_ADDR_WIDTH_PORT_3 = AVL_ADDR_WIDTH ; parameter AVL_ADDR_WIDTH_PORT_4 = AVL_ADDR_WIDTH ; parameter AVL_ADDR_WIDTH_PORT_5 = AVL_ADDR_WIDTH ;
    • In altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, ersetzen AVL_ADDR_WIDTH durch das jeweilige AVL_ADDR_WIDTH_PORT_#, Zum Beispiel:
    • Ersetzen input [AVL_ADDR_WIDTH - 1 : 0] avl_addr_0;

      Mit

    input [AVL_ADDR_WIDTH_PORT_0 - 1 : 0] avl_addr_0;
    • In altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, Kommentieren Sie die Zeilen von assign i_avst_cmd_data_0 = i_avst_cmd_data_g[0];
    • Bis

    assign avl_size_g[5] = avl_size_5;
    • In altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, Fügen Sie die folgenden Zeilen unmittelbar nach dem oben genannten Abschnitt hinzu:
    assign i_avst_cmd_data_0 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_0,{34-AVL_ADDR_WIDTH_PORT_0-2{1\'b0}},avl_addr_0,avl_write_req_0,avl_read_req_0}; assign i_avst_cmd_data_1 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_1,{34-AVL_ADDR_WIDTH_PORT_1-2{1\'b0}},avl_addr_1,avl_write_req_1,avl_read_req_1}; assign i_avst_cmd_data_2 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_2,{34-AVL_ADDR_WIDTH_PORT_2-2{1\'b0}},avl_addr_2,avl_write_req_2,avl_read_req_2}; assign i_avst_cmd_data_3 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_3,{34-AVL_ADDR_WIDTH_PORT_3-2{1\'b0}},avl_addr_3,avl_write_req_3,avl_read_req_3}; assign i_avst_cmd_data_4 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_4,{34-AVL_ADDR_WIDTH_PORT_4-2{1\'b0}},avl_addr_4,avl_write_req_4,avl_read_req_4}; assign i_avst_cmd_data_5 = {{42-AVL_SIZE_WIDTH-34{1\'b0}},avl_size_5,{34-AVL_ADDR_WIDTH_PORT_5-2{1\'b0}},avl_addr_5,avl_write_req_5,avl_read_req_5};
    • In altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, kommentieren Sie die folgende Zeile:
    i_avst_cmd_data_g[port_i] = {avl_size_g[port_i],{34-AVL_ADDR_WIDTH-2{1\'b0}},avl_addr_g[port_i],avl_write_req_g[port_i],avl_read_req_g[port_i]};
    • In allen Wrappern, die die altera_mem_if_hard_memory_controller_top(arriav/cyclonev).sv, Aktualisieren Sie die Busbreite für jeden avl_addr_als Folgt:
    Replace input wire [21:0] avl_addr_0, // .address

    Mit

    input wire [21:0] avl_addr_0, // .address

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.