使用Xilinx Vivado 创建自己板卡文件-以 EBAZ4205(旷板ZYNQ7010) 为例
使用Xilinx Vivado 创建自己板卡文件-以 EBAZ4205(旷板ZYNQ7010) 为例
我们在使用Vivado创建工程时,每次都需要选择相关的板卡器件,比较麻烦,这篇文章就教你怎么创建属于自己的板卡文件,在创建工程时就可以像官方板卡一样在板卡列表里选择。
板子
这次的板卡很多人应该不陌生,EBAZ4205-传说中的旷板,之前20元就能买到,使用非常广泛。
参考
UG895 文档描述了电路板文件的结构和内容。
板文件的结构
Xilinx Vivado 板文件存放在 Vivado 安装目录中:
/<version>/data/boards/board_files/
在这个目录中,我们可以创建新文件夹并以我们的板子命名(例如 ebaz4205)。在这个目录中,我们将创建另一个以板版本命名的文件夹(例如 1.0)。
该文件夹将包含我们的电路板图片和三个重要的 XML 文件:
board.xml - 定义关于板的所有信息。它包括基本信息(例如电路板名称、描述、供应商)、有关板上组件的信息(例如 FPGA 部件、LED、按钮)、有关板上组件所需接口的信息以及实现这些接口的首选 IP 内核。
preset.xml - 预设 board.xml 文件中指定的 IP 内核定义。
part0_pins.xml - 为board.xml 文件中指定的物理引脚接口定义和 I/O 标准。
创建所有必需的文件夹和文件后,我们的板文件文件夹结构应如下所示:
ebaz4205/
└── 1.0├── board.xml├── ebaz4205.jpg├── part0_pins.xml└── preset.xml
下面针对每个文件简单介绍一下内容。
board.xml
该文件以名为的 XML 标记开头,我们将在其中提供有关该板的基本信息:
<board schema_version="2.1" vendor="miner.ebang.com.cn" name="ebaz4205" display_name="EBAZ4205 Development Board" url="http://miner.ebang.com.cn" preset_file="preset.xml">
首先,我们定义板文件架构版本 - 告诉 Vivado 软件如何解释文件中提供的数据的属性(在 Vivado 2020.1 中,我目前使用的架构的最新版本是 2.1)。接下来,我们为电路板供应商定义供应商名称、电路板名称和网页。在标签中,我们还指定了稍后将使用的预设文件的名称。在此之后,我们必须通过在新行中写入来关闭标记。所有其他板信息必须在这两个标签之间定义。
为了确保板文件的正常工作,我们必须添加 <file_version> 和 <compatible_board_revisions> 标签:
<!-- Board file revision -->
<file_version>1.0</file_version><!-- Board PCB revision -->
<compatible_board_revisions><revision id="1">1.0</revision>
</compatible_board_revisions>
<file_version> 标签用于跟踪电路板文件的版本,而 <compatible_board_revisions> 标签用于指定这些文件可以与哪些电路板 PCB 修订版一起使用。
我们可以通过在 中指定图像和在标签中指定描述来添加板的图片和描述:
<!-- Image of the board -->
<images><image name="ebaz4205.jpg" display_name="EBAZ4205 Development Board" sub_type="board"><description>EBAZ4205 Development Board</description></image>
</images><!-- Board description -->
<description>EBAZ4205 is mining board used in Ebang Ebit E9+ bitcoin miner machine. This board features 256MB DDR3 memory, 128MB NAND Flash memory, 10/100MBit Ethernet and speed grade -1 Zynq 7010.</description>
创建新项目时,大部分信息将显示在板选择窗口中:
或在 Vivado 项目摘要窗口中:
提供基本信息后,现在我们可以通过在标签之间添加信息来指定板上的组件:
<!-- Information about board components: fpga part, interfaces, etc. -->
<components><!-- FPGA part --><component name="part0" display_name="EBAZ4205" type="fpga" part_name="xc7z010clg400-1" pin_map_file="part0_pins.xml" vendor="xilinx" spec_url="www.xilinx.com"><description>FPGA part on the board</description><!-- Associated FPGA interfaces and IP cores --><interfaces><!-- Zynq 7000 processing system --><interface mode="master" name="ps7_fixedio" type="xilinx.com:display_processing_system7:fixedio_rtl:1.0" of_component="ps7_fixedio" preset_proc="ps7_preset"> <preferred_ips><preferred_ip vendor="xilinx.com" library="ip" name="processing_system7" order="0"/></preferred_ips></interface><!-- User LEDs: Red and Green (LED6) --><interface mode="master" name="leds_2bits" type="xilinx.com:interface:gpio_rtl:1.0" of_component="leds_2bits" preset_proc="leds_2bits_preset"><preferred_ips><preferred_ip vendor="xilinx.com" library="ip" name="axi_gpio" order="0"/></preferred_ips><port_maps><port_map logical_port="TRI_O" physical_port="leds_2bits_tri_o" dir="out" left="1" right="0"> <pin_maps><pin_map port_index="0" component_pin="leds_2bits_tri_o_0"/> <pin_map port_index="1" component_pin="leds_2bits_tri_o_1"/> </pin_maps></port_map></port_maps></interface></interfaces></component><!-- Zynq 7000 processing system --><component name="ps7_fixedio" display_name="PS7 fixed IO" type="chip" sub_type="fixed_io" major_group=""/> <!-- User LEDs: Red and Green (LED6) --><component name="leds_2bits" display_name="LEDs" type="chip" sub_type="led" major_group="General Purpose Input or Output"><description>LEDs, Active Low</description></component></components>首先我们必须定义板上使用的 FPGA 型号, EBAZ4205 的情况下它是 xc7z010clg400-1。我们还定义了这个组件的供应商和引脚映射文件。所有用于实现 FPGA 和电路板组件之间接口的 IP 内核都必须在 FPGA <component> 标签之间定义。第一个定义的接口将是 Zynq 处理系统的固定 I/O。我们必须指定接口模式、名称、首选 IP 核来实现此接口和预设名称 (preset_proc),它将 IP 核与 preset.xml 文件中的预定义配置进行链接:```
第二个定义的接口用于 LED。为了实现这个接口,我们将使用 AXI GPIO IP 内核。对于此接口,我们还必须定义端口引脚映射,因为 AXI GPIO IP 内核端口引脚必须连接到物理 FPGA 引脚:
<!-- User LEDs: Red and Green (LED6) -->
<interface mode="master" name="leds_2bits" type="xilinx.com:interface:gpio_rtl:1.0" of_component="leds_2bits" preset_proc="leds_2bits_preset"><preferred_ips><preferred_ip vendor="xilinx.com" library="ip" name="axi_gpio" order="0"/></preferred_ips><port_maps><port_map logical_port="TRI_O" physical_port="leds_2bits_tri_o" dir="out" left="1" right="0"> <pin_maps><pin_map port_index="0" component_pin="leds_2bits_tri_o_0"/> <pin_map port_index="1" component_pin="leds_2bits_tri_o_1"/> </pin_maps></port_map></port_maps>
</interface>
在定义 FPGA 部分及其接口之后,我们必须定义其他组件。默认情况下一个是 Zynq 7000 处理系统,另一个是 LED。之前创建的接口将通过称为组件名称的属性链接到这些组件:
<!-- Zynq 7000 processing system -->
<component name="ps7_fixedio" display_name="PS7 fixed IO" type="chip" sub_type="fixed_io" major_group=""/><!-- User LEDs: Red and Green (LED6) -->
<component name="leds_2bits" display_name="LEDs" type="chip" sub_type="led" major_group="General Purpose Input or Output"><description>LEDs, Active Low</description>
</component>
该声明还让我们可以在 Vivado 模块设计窗口的 Board 选项卡中找到我们的组件:
在 board.xml 文件中,如果方便,我们还必须为板上的所有组件定义 JTAG 链。在这种情况下,我们只有一个用于 FPGA 部分的 JTAG 链:
<!-- Board jtag chains for all fpga parts -->
<jtag_chains><!-- Board jtag chains for part0 --><jtag_chain name="chain1"><position name="0" component="part0"/></jtag_chain></jtag_chains>
当然,我们必须指定将我们的组件接口链接到在 part0_pins.xml 文件中声明的物理 FPGA 引脚的连接:
<!-- Connections between component interfaces and physical pins described in part0_pins.xml -->
<connections><!-- User LEDs: Red and Green (LED6) -->
<connection name="part0_leds_2bits" component1="part0" component2="leds_2bits"><connection_map name="part0_leds_2bits_1" c1_st_index="0" c1_end_index="1" c2_st_index="0" c2_end_index="1"/>
</connection></connections>
这里 c1_st_index 和 c1_end_index 对应 part0_pins.xml 文件中的 pin 索引,而 c2_st_index 和 c2_end_index 对应 IP 核端口 pin 索引。
preset.xml
preset.xml 文件以名为 <ip_presets> 的 XML 标记开头,我们必须在其中提供此文件架构版本。预设文件的当前架构版本是 1.0:
<ip_presets schema = "1.0">
我们必须通过在新行中写入 </ip_presets> 来关闭 <ip_presets> 标记。IP 核的预设将列在这两个标签之间。
首先我们为 Zynq 处理系统 IP 核添加配置。这些配置通过名为 preset_proc_name 的属性链接到 board.xml 文件:
<!-- Zynq 7000 processing system configuration -->
<ip_preset preset_proc_name="ps7_preset"><ip vendor="xilinx.com" library="ip" name="processing_system7" version="*"><user_parameters><user_parameter name="CONFIG.PCW_UART1_PERIPHERAL_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_UART1_UART1_IO" value="MIO 24 .. 25"/><user_parameter name="CONFIG.PCW_SD0_PERIPHERAL_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_SD0_SD0_IO" value="MIO 40 .. 45"/><user_parameter name="CONFIG.PCW_NAND_PERIPHERAL_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_NAND_GRP_D8_ENABLE" value="0"/><user_parameter name="CONFIG.PCW_ENET0_PERIPHERAL_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_ENET0_ENET0_IO" value="EMIO"/><user_parameter name="CONFIG.PCW_ENET0_GRP_MDIO_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ" value="100 Mbps"/><user_parameter name="CONFIG.PCW_GPIO_MIO_GPIO_ENABLE" value="1"/><user_parameter name="CONFIG.PCW_GPIO_MIO_GPIO_IO" value="MIO"/><user_parameter name="CONFIG.PCW_ENET_RESET_ENABLE" value="0"/><user_parameter name="CONFIG.PCW_USB_RESET_ENABLE" value="0"/><user_parameter name="CONFIG.PCW_I2C_RESET_ENABLE" value="0"/><user_parameter name="CONFIG.PCW_UIPARAM_DDR_BUS_WIDTH" value="16 Bit"/><user_parameter name="CONFIG.PCW_UIPARAM_DDR_PARTNO" value="MT41K128M16 JT-125"/></user_parameters></ip>
</ip_preset>
在 Zynq 7000 处理系统中,我们启用 UART1、SD0、NAND、ETHERNET0 和其他外设,为这些外设选择 MIO 引脚并配置 DDR 内存。
接下来,我们为 AXI GPIO IP 内核添加配置,该内核将用于在板上实现 FPGA 和用户 LED 之间的接口:
<!-- User LEDs: Red and Green (LED6) AXI GPIO configuration -->
<ip_preset preset_proc_name="leds_2bits_preset"><ip vendor="xilinx.com" library="ip" name="axi_gpio" ip_interface="GPIO"><user_parameters><user_parameter name="CONFIG.C_GPIO_WIDTH" value="2"/><user_parameter name="CONFIG.C_ALL_OUTPUTS" value="1"/><user_parameter name="CONFIG.C_ALL_INPUTS" value="0"/><user_parameter name="CONFIG.C_DOUT_DEFAULT" value="0x00000003"/></user_parameters></ip>
</ip_preset>
在这里,我们将 AXI GPIO IP 内核配置为只有 2 个引脚将用作默认逻辑值为 1 的输出,因为该板上的 LED 处于低电平有效(通过提供逻辑 0 开启)。
part0_pins.xml
part0_pins.xml 文件在 <part_info> </part_info> 标签之间键入信息,我们必须在其中指定板上使用的 FPGA 部件。在这两个标签之间,我们将提供所有引脚映射信息:
<!-- Physical pin location and I/O standards for component interfaces described in board.xml -->
<part_info part_name="xc7z010clg400-1"><pins><pin index="0" name ="leds_2bits_tri_o_0" iostandard="LVCMOS33" loc="W14"/><pin index="1" name ="leds_2bits_tri_o_1" iostandard="LVCMOS33" loc="W13"/></pins>
</part_info>
此处列出的引脚通过引脚名称属性链接到 board.xml 文件中指定的 IP 核端口引脚。我们将 I/O 标准设置为 LVCMOS33,因为这些引脚所在的 FPGA bank 的电压在 EBAZ4205 板上设置为 3.3V。最后,我们通过提供位置属性 loc 将 IP 核端口引脚链接到物理 FPGA 封装引脚。
我希望本教程能帮助各位更好地了解 Xilinx Vivado 电路板文件结构以及如何为你的开发板定制电路板创建这些文件。
完整的 EBAZ4205 板文件可以在下面的链接中找到,只需要放到文章开头的路径下即可:
https://github.com/suisuisi/EBAZ4205/tree/main/Documents/Board%20files
路径下还有Spartan Edge Accelerator开发板的文件。
谈谈Verilog和SystemVerilog简史,FPGA设计是否需要学习SystemVerilog
陪你度过深夜的2048小游戏,我们用FPGA实现它
数字硬件建模综述
AMBA_AXI总线详解
使用Xilinx Vivado 创建自己板卡文件-以 EBAZ4205(旷板ZYNQ7010) 为例相关推荐
- xilinx vivado 生成flash下载文件
生成fsbl工程. SDK里新建Apllication Project,模板里选择选择Zynq FSBL,finish. 右击,刚新建的工程选择Create Boot Image. 按下图少文件的自行 ...
- xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证
xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接 ...
- Xilinx VIVADO 中 DDR3(AXI4)的使用(1)创建 IP 核
1.前言 DDR3 SDRAM 简称 DDR3,是当今较为常见的一种储存器,在计算机及嵌入式产品中得到广泛应用, 特别是应用在涉及到大量数据交互的场合,比如电脑的内存条.DDR3的时序相当复杂,对DD ...
- vivado创建项目时找不到boards(ZCU102)的两种解决方案
问题:vivado创建项目时找不到boards(ZCU102) 如下图所示,vivado检测不到板卡(这里我用的是xilinx的Zynq_UltraScale+_MPSoC_ZCU102_Evalua ...
- Vivado创建项目和仿真
一.创建项目 Create Project: Next: 填写项目名,选择项目位置,Next: 选择RTL项目,勾选Do not specify sources at the time,即不添加源文件 ...
- Vivado中IP核生成文件
正像我之前所说的,较XPS的IP核而言,Vivado IP核在创建.打包.使用等各方面都更加简单便捷,同样的Vivado IP核抛弃了以往复杂的IP核文件组织模式,仅使用一个component.xml ...
- 打开vivado的.xpr工程文件报错Cannot locate target loader
打开vivado的.xpr工程文件报错Cannot locate target loader 在打开vivado工程时总是报错Cannot locate target loader(重新安装vivad ...
- Xilinx vivado 常用IP核使用
目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...
- linux系统安装vivado软件,vivado 2017下载 Xilinx Vivado HLx 2017.2 在线安装包 官方安装版(附许可证) 64位 Linux版 下载-脚本之家...
vivado 2017.1是一款Xilinx开发的功能强大的产品加工分析软件,在专业化的产品加工方面,提高产品上市的时间决定于加工的流程设计以及优化的设计方案,定制一套专业的加工流程是每一个厂家以及设 ...
最新文章
- 2022-2028年现代农业背景下中国家庭农场深度调研及投资前景预测报告
- android检测内存使用工具--procrank
- C#笔记(五):文件和流
- atom上网本 安装linux,拆东墙补西墙?多数Atom上网本或将无法安装Windows 7
- k8s的job和CronJob
- NYOJ--106--背包问题
- Ext JS 6应用程序Build后出现“c is not a constructor return new c(a[0])”的处理
- 以mysql为例有几种隔离级别_mysql隔离级别有几种
- 查询一个表插入数据的时间,按BLOCK时间
- 论文笔记_S2D.53_2013-ICCV_单目相机半稠密视觉里程计(VO)
- 从雷声谈云层中的电能
- C# Winform 实现屏蔽键盘的win和alt+F4的实现代码
- 《Axure RP 9实战指南》Axure RP 9.0最新版汉化问题
- windows配置端口映射
- [译] 为什么你要学习 Go?
- 多种模块拔号上网驱动开发调试
- 本地搭建我的世界服务器(可联机)
- 激光雷达相机外参标定
- uebs游戏_UEBS Ultimate Epic Battle电脑版
- 洛谷刷题C语言:Bold、饱食、公平の意、DOM、