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?
Antwort
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.
- 1. Vivado Fehler: aktiv Netzlisten
- 2. Was bedeutet [&] bedeutet in C++
- 3. Was bedeutet „.csstransforms &“ bedeutet
- 4. Daten abbrechen auf A20 SoC
- 5. Öffne das Projekt in vivado
- 6. Was bedeutet "*" in Python?
- 7. Was bedeutet @ in PHP?
- 8. Was bedeutet $$ in Ruby?
- 9. Was bedeutet "~" in Haskell?
- 10. Was bedeutet ".. ::." in C#?
- 11. Was bedeutet # in Mathematica?
- 12. Was bedeutet @@ in Ruby?
- 13. Was bedeutet :: * in C++?
- 14. Was bedeutet [...] in Python?
- 15. Was bedeutet * in SQL?
- 16. Was bedeutet "% &" in Clojure?
- 17. Was bedeutet [*] + in Regex?
- 18. Was bedeutet &.! = In Ruby?
- 19. Was bedeutet | = in PHP?
- 20. Was bedeutet "**" in ANT?
- 21. Was bedeutet + in CSS?
- 22. Was bedeutet ... in Zahlencode?
- 23. Was bedeutet @() in Powershell?
- 24. Was bedeutet in Isabelle?
- 25. Was bedeutet/*! */In C#?
- 26. Was bedeutet = in PHP?
- 27. Was bedeutet '\' in Perl?
- 28. Was bedeutet $() in Scala?
- 29. Was bedeutet # = in Prolog?
- 30. Was bedeutet() in Haskell
[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
Sie können die Antwort akzeptieren, wenn es hilfreich war !! – Leos313