2016-12-22 4 views
0

Was ist "Top-Level-HDL-Wrapper" und warum müssen wir es im SoC-Projekt tun?Was bedeutet "Top-Level-HDL-Wrapper" in Vivado SoC?

+1

[Vivado Design Suite-Lernprogramm Entwerfen von IP-Subsystemen mithilfe der IP-Integration UG995 (v2016.2) 8. Juni 2016] (https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug995-vivado-ip- subsystems-tutorial.pdf) – user1155120

+0

Sie können die Antwort akzeptieren, wenn es hilfreich war !! – Leos313

Antwort

3

Sie haben recht, normalerweise wird in Vivado-Dokumentation erklärt, wie man es erzeugt, aber nicht was es ist. Nun, ich denke, Sie verwenden HLD-Sprachen (wie zum Beispiel VHDL). Sie wissen, dass Sie unterschiedliche erstellen können und Sie können map sie in Ihrem HLD-Element des obersten Moduls.

Hier ist es das gleiche: Sie erstellen ein RTL-Projekt mit Ihrer Design-Hardware, die mit Ihrer Zielplatine verbunden werden muss. Der WRAPPER ist die Datei, die den Ausgangs-/Eingangsport Ihres Designs mit dem in der Constraint-Datei beschriebenen physischen Pin verbindet.

Wenn Sie beispielsweise ein einfaches Design mit einem zynq-Prozessor erstellen, muss dieser mit den DDR-, Clock-, IO_mio-Pins und so weiter verbunden werden. In diesem Fall sollte die Umhüllung so etwas wie diese:

---------------------------------------------------------------------------------- 
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
library UNISIM; 
use UNISIM.VCOMPONENTS.ALL; 
entity design_1_wrapper is 
    port (
    DDR_addr : inout STD_LOGIC_VECTOR (14 downto 0); 
    DDR_ba : inout STD_LOGIC_VECTOR (2 downto 0); 
    DDR_cas_n : inout STD_LOGIC; 
    DDR_ck_n : inout STD_LOGIC; 
    DDR_ck_p : inout STD_LOGIC; 
    DDR_cke : inout STD_LOGIC; 
    DDR_cs_n : inout STD_LOGIC; 
    DDR_dm : inout STD_LOGIC_VECTOR (3 downto 0); 
    DDR_dq : inout STD_LOGIC_VECTOR (31 downto 0); 
    DDR_dqs_n : inout STD_LOGIC_VECTOR (3 downto 0); 
    DDR_dqs_p : inout STD_LOGIC_VECTOR (3 downto 0); 
    DDR_odt : inout STD_LOGIC; 
    DDR_ras_n : inout STD_LOGIC; 
    DDR_reset_n : inout STD_LOGIC; 
    DDR_we_n : inout STD_LOGIC; 
    FIXED_IO_ddr_vrn : inout STD_LOGIC; 
    FIXED_IO_ddr_vrp : inout STD_LOGIC; 
    FIXED_IO_mio : inout STD_LOGIC_VECTOR (53 downto 0); 
    FIXED_IO_ps_clk : inout STD_LOGIC; 
    FIXED_IO_ps_porb : inout STD_LOGIC; 
    FIXED_IO_ps_srstb : inout STD_LOGIC 
); 
end design_1_wrapper; 

architecture STRUCTURE of design_1_wrapper is 
    component design_1 is 
    port (
    DDR_cas_n : inout STD_LOGIC; 
    DDR_cke : inout STD_LOGIC; 
    DDR_ck_n : inout STD_LOGIC; 
    DDR_ck_p : inout STD_LOGIC; 
    DDR_cs_n : inout STD_LOGIC; 
    DDR_reset_n : inout STD_LOGIC; 
    DDR_odt : inout STD_LOGIC; 
    DDR_ras_n : inout STD_LOGIC; 
    DDR_we_n : inout STD_LOGIC; 
    DDR_ba : inout STD_LOGIC_VECTOR (2 downto 0); 
    DDR_addr : inout STD_LOGIC_VECTOR (14 downto 0); 
    DDR_dm : inout STD_LOGIC_VECTOR (3 downto 0); 
    DDR_dq : inout STD_LOGIC_VECTOR (31 downto 0); 
    DDR_dqs_n : inout STD_LOGIC_VECTOR (3 downto 0); 
    DDR_dqs_p : inout STD_LOGIC_VECTOR (3 downto 0); 
    FIXED_IO_mio : inout STD_LOGIC_VECTOR (53 downto 0); 
    FIXED_IO_ddr_vrn : inout STD_LOGIC; 
    FIXED_IO_ddr_vrp : inout STD_LOGIC; 
    FIXED_IO_ps_srstb : inout STD_LOGIC; 
    FIXED_IO_ps_clk : inout STD_LOGIC; 
    FIXED_IO_ps_porb : inout STD_LOGIC 
); 
    end component design_1; 
begin 
design_1_i: component design_1 
    port map (
     DDR_addr(14 downto 0) => DDR_addr(14 downto 0), 
     DDR_ba(2 downto 0) => DDR_ba(2 downto 0), 
     DDR_cas_n => DDR_cas_n, 
     DDR_ck_n => DDR_ck_n, 
     DDR_ck_p => DDR_ck_p, 
     DDR_cke => DDR_cke, 
     DDR_cs_n => DDR_cs_n, 
     DDR_dm(3 downto 0) => DDR_dm(3 downto 0), 
     DDR_dq(31 downto 0) => DDR_dq(31 downto 0), 
     DDR_dqs_n(3 downto 0) => DDR_dqs_n(3 downto 0), 
     DDR_dqs_p(3 downto 0) => DDR_dqs_p(3 downto 0), 
     DDR_odt => DDR_odt, 
     DDR_ras_n => DDR_ras_n, 
     DDR_reset_n => DDR_reset_n, 
     DDR_we_n => DDR_we_n, 
     FIXED_IO_ddr_vrn => FIXED_IO_ddr_vrn, 
     FIXED_IO_ddr_vrp => FIXED_IO_ddr_vrp, 
     FIXED_IO_mio(53 downto 0) => FIXED_IO_mio(53 downto 0), 
     FIXED_IO_ps_clk => FIXED_IO_ps_clk, 
     FIXED_IO_ps_porb => FIXED_IO_ps_porb, 
     FIXED_IO_ps_srstb => FIXED_IO_ps_srstb 
    ); 
end STRUCTURE; 

Natürlich, wenn Sie die Datei von Ihren Board-Einschränkungen geöffnet werden Sie auf magische Weise feststellen, dass die Signal-Ports alle auf die physikalische Pins der verbunden sind FPGA-Chip.