> 技术文档 > FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?


1 硬件部分(Vivado)

1.1 新建工程

略,正常操作。

1.2 添加IP INTEGRATOR

1、点击Create Block Desgin:
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

2、在Diagram界面点击加号,搜索ZYNQ并选择:

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

1.3 配置模块

3、双击ZNYQ模块进入配置界面:

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

查看拓展板和核心板的原理图,可以看到PS部分的时钟连接的晶振振荡频率为33.3333MHz,部分处于BANK500(SPI、UART等),部分处于BANK501(Ethernet、USB/OTG、SD、MMC等)。BANK500的供电为3.3V,BANK501的供电为1.8V。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

以下核心板原理图可以看到,USB/OTG引脚分配从MIO28到MIO39。
USB数据和控制的信号从FPGA出来后到USB3320芯片上,然后转USB差分信号传输到电脑。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

配置DDR3:MT41J256M16 RE-125,32 Bit

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?
配置时钟:33.333333 MHz
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

MIO引脚配置:这里有两个USB,USB 0为MIO 28..39,USB 1为MIO 40..51(可以选择看看),但根据上面的原理图,USB1的引脚分配给了其他接口,因此这里只选USB 0,不选USB 1。
Bank 1 I/O Voltage由上面原理图,选择LVCMOS 1.8V

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?
由于这个USB接口无复位需求,因此不进行GPIO设置。
然后可以根据官方文档内对PS-PL的处理,取消一些连接设置,这里没有用到PL部分,因此操不操作无所谓。

点击Run Block Automation

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

在弹出的窗口点击OK。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

点击Validate Design。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

验证成功,点击OK就行。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

1.4 生成HDL和Bitstream

在Sources -> Design Sources -> ZYNQ_CORE_i右键点击Create HDL Wrapper。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

选择自动更新(auto-update),点击OK。
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

然后直接点击Generate Bitstream,前面综合、实现会自动生成。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

比特流文件生成完成后,点击File→Export→Export hardware…,在弹出的对话框中勾选“include bitstream”,点击OK。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

2. 软件部分(SDK)

2.1 进入SDK

点击File→Lauch SDK
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

2.2 创建工程

点击File->New-> Application Project

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

输入Project name,点击Next。
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

选择Empty Applicaiton,点击Finish。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

2.3 导入示例工程

双击bsp(板级支持包)下的.mss文件,能够选择外设驱动导入。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

找到ps7_usb_0,点击右侧Import Examples。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

选中example,点击OK。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

2.4 烧写调试

连接FPGA的JTAG调试口和电源线。

右键点击刚刚生成的示例项目,Build Project构建项目。
然后Run As -> 1 Launch on Hardware (System Debugger)将代码烧写到FPGA。
FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?

使用手机充电线(需要能够通信)连接FPGA的USB_SLAVE口和电脑的USB口,电脑会显示U盘,可以写入和读取,也会显示格式化。因为使用DDR3映射成的U盘,所以一旦断电,U盘内数据会清空。

FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘_zynq7020 ps侧phy1 rgmii管脚分配?


参考文章:
启明星ZYNQ之嵌入式SDK开发指南
http://www.hellofpga.com/index.php/2024/10/07/lemon_zynq_usb_slave/