ZYNQ飞控的设计-bitstream文件的设计

6 篇文章 1 订阅

一、需要的开发工具

Xilinx Vivado‡用于建立FPGA及ARM核心
Xilinx SDK‡
Linux-Xlnx‡
U-Boot-Xlnx‡
Device-Tree-Xlnx‡

二、操作步骤

1.创建一个基础的RTL工程

1、打开Vivado;
2、Create a new Project in Vivado, 选择RTL Project;
3、不要导入任何源文件,只创建一个pin_constr文件;
4、zynq-7000系列,clg400,速度等级-2,选择xc7z020;
5、点击完成,这样就有了一个工作环境;
6、选择Create Block Design,命名为armps;
7、在新的界面中点击添加IP按键,添加一个ZYNQ7 Processing System;
8、双击ZYNQ7 Processing System 打开配置窗口;

2.配置ARMPS

1、选择PS-PL配置,打开下拉窗口;
2、Create a new Project in Vivado, 选择RTL Project;
3、不要导入任何源文件,只创建一个pin_constr文件;
4、zynq-7000系列,clg400,速度等级-2,选择xc7z020;
5、点击完成,这样就有了一个工作环境;
6、选择Create Block Design,命名为armps;
7、在新的界面中点击添加IP按键,添加一个ZYNQ7 Processing System;
8、双击ZYNQ7 Processing System 打开配置窗口;
9、选 PS-PL 配置, 打开 AXI non-secure 使能下拉菜单, 打开 GP Master AXI interface, 选择 M AXI GPO Interface(默认配置);
10、选择Peripheral I/O Pins, 进行如下配置:

SectionSubsectionPeripheral IO Pins
Quad Spi Flash1-6
Ethernet 016-27
USB 028-39
SD 040-45
SPI 0EMIO
SPI 1EMIO
UART 0EMIO
UART 148,49
I2C 0EMIO
I2C 1EMIO
CAN 0EMIO
GPIO MIO0, 7-15, 47, 50, 51
GPIO MIOUSB PHY Reset46
GPIO EMIOEMIO

10、选择 Clock Configuration , 打开 Processor Memory Clocks, 按照如下配置(7020默认配置):

ComponentClock SourceRequested Frequency(MHz)
CPUARM PLL667
DDRDDR PLL534

11、打开 IO Peripheral Clocks, 按照如下配置:

ComponentClock SourceRequested Frequency(MHz)
SMCIO PLL100
QSPIIO PLL200
ENET 0IO PLL1000 Mbps
ENET 1IO PLL1000 Mbps
SDIOIO PLL100
SPIIO PLL166.667
CANIO PLL100

12、打开PL Fabric Clocks, 配置如下:

ComponentClock SourceRequested Frequency(MHz)
FC_CLK0IO PLL100
FC_CLK0IO PLL50

13、打开 DDR配置

NameSelect
Memory TypeDDR3
Memory PartMT41J128M16 HA-15E
Effective DRAM Bus Width8
Burst LengthDDR3

14、打开 Interrupts, 打开 Fabric Interrupts 子菜单, 打开 PL-PS Interrupt Ports, 选择 box for IRQ_F2P,返回 block diagram, 添加如下接口 :

DDR
FIXED_IO
UART_PS_0
IIC_PS_0
IIC_PS_1
SPI_PS_0
SPI _PS_1
CAN_PS_0

2.添加其它的IP

在主配置界面添加如下IP核,添加IP核时选择connection Automation,添加AXI_OCPOC_PWM和RC_RECEIVER_INPUT时必须选择50MHz的时钟输入。

添加下面下面的IP核,选择connection Automation,选择100MHz 时钟输入,双击确认。

8 AXI_UART16550
    ·16550
    ·▢ Use External CLK for BAUD rate
    ·▢ Enable External Receiver CLK
4 AXI_I2C
    ·SCL Clock Frequency - 100
    ·Address Mode - 7 bits
    ·SCL Inertial Delay - 30
    ·SDA Inertial Delay - 5
    ·Active State of SDA - 1
    ·General Purpose Output Width - 1
    ·Default GPO Port Output Value - 0x00
1 XADC_WIZ
1 xlconcat
2 xlconstant (set the value in one to 0 and one set to 1)

连接所有的 UART and I2C interrupts to the xlconcat - xlconcat IP 可以管理16个中断信号 ,但是我们需要在 IP core settings里手动修改它.
The default project requires 12 interrupts, however it’s recommended that you use only as many as necessary.
Expand all the UART output, Connect all the CTSN and RIN to the xlconstant with the value of 0 in it. Repeat with DCDN & DSRN, and set to 1 Create interface ports for all the I2C, UART, PWM, and RC_RECEIVER

3.打包设计Wrapping the Block Diagram

在源码管理窗口(Source),右键单击设计表, 选择armps. 右键选择 Create HDL Wrapper.
Double wrapping the Block Diagram

This section is currently required for users using SBUS communication, if not sure, then do this part as well.

For the default build, create a new verilog source based on APPENDIX A

That block of code effectively creates a module of the previous wrapper block design, and inverts the RX line of the SBUS serial line. At the time of writing, it wasn’t possible to isolate the RX line of a serial IP without a wrapper.

If you’re already familiar with verilog, then it should be fairly straight forward. The parts of interest are:

4.修改SBUS的配置

因为Sbus的输入反逻辑的UART协议,所以需要在生成的HDL文件中,添加如下verilog逻辑代码:

input sbus_in
⋮
wire sbus_rx;
wire sbus_tx;
assign sbus_rx = ~sbus_in;

实际上就是在SBUS的串口输入端加上了反向器。

which invert the SBUS line on a given (UART_PL_0 IP in our case) IP interface port.
Assigning Pins

4.IO约束文件的配置

在我们创建工程时创建了 pin_constr 约束文件,我们需要使用 TCL 命令去约束IO引脚,例如:

set_property PACKAGE_PIN H18 [get_ports CAN_PS_0_rx]
set_property IOSTANDARD LVCMOS33 [get_ports CAN_PS_0_rx]
on the I2C lines also be sure to include something like:
//在I2C的引脚约束中还需要添加如下约束:
set_property PULLUP true [get_ports IIC_PL_1_scl_io]

6.外设的地址映射

打开工程设计图 block diagram,在工作空间选择Address Editor ,配置成如下地址映射:

CellOffset Address
Offset Address
axi_iic_00x416_00000
xadc_wiz_00x43C5_00000
axi_iic_10x4161_0000
axi_iic_20x4162_0000
axi_iic_30x4163_0000
AXI_OcPoC_PWM_Controller_00x43C0_0000
RC_Receiver_Input_00x43CA_0000
axi_uart_16550_00x43C1_0000
axi_uart_16550_10x43C2_0000
axi_uart_16550_20x43C3_0000
axi_uart_16550_30x43C4_0000
axi_uart_16550_40x43C6_0000
axi_uart_16550_50x43C7_0000
axi_uart_16550_60x43C8_0000
axi_uart_16550_70x43C9_0000

7.综合生成工程文件

保存所有设计后,左侧导航栏选择Start Implementation,根据提示完成相关操作,在综合完成后,选择导出硬件文件,并加载SDK。
generate bitstream->launch Xilinx SDK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UG585-Zynq-7000-TRM是一份关于Xilinx Zynq-7000 SoC处理器的技术参考手册。Zynq-7000 SoC处理器是一款配备ARM Cortex-A9双核处理器和Xilinx可编程逻辑部分(PL)的可扩展平台,旨在为嵌入式系统开发者提供卓越的灵活性和可编程性。 TRM代表Technical Reference Manual(技术参考手册),其中包含了该处理器的体系结构和功能特性的详细描述,包括处理器内部的各种模块、外设、总线结构等等。该手册的主要目的是为开发者提供全面的指导和支持,从而加速其系统设计和开发应用,减少错误和风险。 UG585-Zynq-7000-TRM手册的内容包括Zynq-7000的基本特征、处理器硬件和软件架构、可编程逻辑PL和PS之间的通信、外设接口和寄存器映射、中断制等内容。开发者可以根据手册中的详细说明,了解Zynq-7000的构成和功能,从而基于此设计和实现自己的应用。 总之,UG585-Zynq-7000-TRM手册是一份非常重要的技术参考资料,为开发者提供全面的指导和支持,促进了Zynq-7000处理器的应用和拓展,也为未来的嵌入式系统设计提供了参考和借鉴。 ### 回答2: UG585是Xilinx公司发布的Zynq-7000系列技术手册,全称为“Zynq-7000 All Programmable SoC Technical Reference Manual”。Zynq-7000系列是Xilinx公司推出的一款功能强大的FPGA芯片,集成了双核ARM Cortex-A9处理器和可编程逻辑资源,支持高性能中间件、操作系统和外围设备的支持。该手册详细介绍了Zynq-7000系列SoC的架构、功能、性能、测试和验证、软件和硬件开发等方面的知识。他对于学习、使用和开发Zynq-7000 SoC具有非常重要的意义,使得开发人员能够深入了解这个芯片的细节,掌握它的特性和功能,以便更加高效地使用它进行开发。如果你想要学习和使用Zynq-7000 SoC,UG585是一个非常重要的参考文献,值得认真阅读和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值