2016-12-22 1 views
0

Что такое «обложка HDL верхнего уровня» и почему нам нужно это делать в проекте SoC?Что такое «обложка HDL верхнего уровня» в Vivado SoC?

+1

[Vivado Design Suite Учебник Проектирование IP-подсистем с использованием IP-интеграции UG995 (v2016.2) 8 июня 2016 года] (https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug995-vivado-ip- subsystems-tutorial.pdf) – user1155120

+0

Вы можете принять ответ, если это было полезно! – Leos313

ответ

3

Вы правы, как правило, в документации Vivado объясняется, как его генерировать, но не то, что это такое. Ну, я думаю, вы используете языки HLD (например, VHDL). Вы знаете, что вы можете создавать разные component, и вы можете map их в своем верхнем модуле HLD.

Здесь же: вы создаете проект RTL с вашим конструктивным оборудованием, которое необходимо подключить к вашей целевой плате. WRAPPER - это файл, который соединяет выходной/входной порт вашего дизайна с физическим выводом, описанным в файле ограничений.

Например, если вы создаете простой дизайн с процессором zynq, его необходимо подключить к DDR, часам, выводам IO_mio и т. Д. В этом случае, оболочка должна быть что-то вроде этого:

---------------------------------------------------------------------------------- 
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; 

Конечно, если вы откроете файл вашей доски-ограничений вы волшебно обнаружить, что сигнальные порты все связаны с физическими штифтов FPGA чип.

Смежные вопросы