微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 玩转赛灵思Zedboard开发板(5):基于AXI Lite总线的从设备IP设计

玩转赛灵思Zedboard开发板(5):基于AXI Lite总线的从设备IP设计

时间:11-23 来源:cnblog 点击:

-------------

  10

  11 -- DO NOT EDIT BELOW THIS LINE ---------------------

  12 -- Bus protocol parameters, do not add to or delete

  13 C_NUM_REG : integer := 1;

  14 C_SLV_DWIDTH : integer := 32

  15 -- DO NOT EDIT ABOVE THIS LINE ---------------------

  16 );

  17 port

  18 (

  19 -- ADD USER PORTS BELOW THIS LINE ------------------

  20 LED : out std_logic_vector(7 downto 0);

  21 -- ADD USER PORTS ABOVE THIS LINE ------------------

  22

  23 -- DO NOT EDIT BELOW THIS LINE ---------------------

  24 -- Bus protocol ports, do not add to or delete

  25 Bus2IP_Clk : in std_logic;

  26 Bus2IP_Resetn : in std_logic;

  27 Bus2IP_Data : in std_logic_vector(C_SLV_DWIDTH-1 downto 0);

  28 Bus2IP_BE : in std_logic_vector(C_SLV_DWIDTH/8-1 downto 0);

  29 Bus2IP_RdCE : in std_logic_vector(C_NUM_REG-1 downto 0);

  30 Bus2IP_WrCE : in std_logic_vector(C_NUM_REG-1 downto 0);

  31 IP2Bus_Data : out std_logic_vector(C_SLV_DWIDTH-1 downto 0);

  32 IP2Bus_RdAck : out std_logic;

  33 IP2Bus_WrAck : out std_logic;

  34 IP2Bus_Error : out std_logic

  35 -- DO NOT EDIT ABOVE THIS LINE ---------------------

  36 );

  37 end component user_logic;

  323-352行为user_logic元件例化。VHDL是不区分大小写的。

  1 ------------------------------------------

  2 -- instantiate User Logic

  3 ------------------------------------------

  4 USER_LOGIC_I : component user_logic

  5 generic map

  6 (

  7 -- MAP USER GENERICS BELOW THIS LINE ---------------

  8 --USER generics mapped here

  9 -- MAP USER GENERICS ABOVE THIS LINE ---------------

  10

  11 C_NUM_REG => USER_NUM_REG,

  12 C_SLV_DWIDTH => USER_SLV_DWIDTH

  13 )

  14 port map

  15 (

  16 -- MAP USER PORTS BELOW THIS LINE ------------------

  17 LED => LED,

  18 -- MAP USER PORTS ABOVE THIS LINE ------------------

  19

  20 Bus2IP_Clk => ipif_Bus2IP_Clk,

  21 Bus2IP_Resetn => ipif_Bus2IP_Resetn,

  22 Bus2IP_Data => ipif_Bus2IP_Data,

  23 Bus2IP_BE => ipif_Bus2IP_BE,

  24 Bus2IP_RdCE => user_Bus2IP_RdCE,

  25 Bus2IP_WrCE => user_Bus2IP_WrCE,

  26 IP2Bus_Data => user_IP2Bus_Data,

  27 IP2Bus_RdAck => user_IP2Bus_RdAck,

  28 IP2Bus_WrAck => user_IP2Bus_WrAck,

  29 IP2Bus_Error => user_IP2Bus_Error

  30 );

  这几个文件修改后保存。

  Project->Rescan User Repositories(更新用户仓库?),让XPS识别到对IP所做的修改

  三、将自定义IP核添加到PS系统

  同第三篇一样,需要将IP添加到PS系统中。

  在Ports标签中,需要将我们定义的LED端口设置为外部端口,外部引脚名按照Zedboard的习惯,定义为LD

  在Address标签中,设定IP的地址。XPS支持自定义定制范围、空间大小等。可以使用默认设置,也可以手动设置。这里我设置基地址为 0x40000000,其实也就是我们设定的数据寄存器的地址为0x40000000。如果有更多的寄存器,会以4字节offset 地址的方式访问即可。

  最后一样修改ucf文件,完成约束。

  1 NET LD[0] LOC = T22 | IOSTANDARD=LVCMOS33; # "LD0"

  2 NET LD[1] LOC = T21 | IOSTANDARD=LVCMOS33; # "LD1"

  3 NET LD[2] LOC = U22 | IOSTANDARD=LVCMOS33; # "LD2"

  4 NET LD[3] LOC = U21 | IOSTANDARD=LVCMOS33; # "LD3"

  5 NET LD[4] LOC = V22 | IOSTANDARD=LVCMOS33; # "LD4"

  6 NET LD[5] LOC = W22 | IOSTANDARD=LVCMOS33; # "LD5"

  7 NET LD[6] LOC = U19 | IOSTANDARD=LVCMOS33; # "LD6"

  8 NET LD[7] LOC = U14 | IOSTANDARD=LVCMOS33; # "LD7"

  最后对这个系统编译,生成bitstream文件,并将硬件配置导入到SDK,并启动SDK。

  四、使用SDK编写IP核驱动程序和应用程序

  打开SDK,可以从系统信息system.xml中看到我们的系统信息。可以看到我们实例化连接到系统的ip是my_axi_ip_0,基地址是0x4000000。

  建立软件工程后,修改main代码,如下

//@超群天晴 http://www.cnblo

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top