MPSoC设计中USB Phy的复位信号

在xilinx的zcu102和zcu106单板设计中,使用了管脚ps_mode1作为外部usb phy的复位信号。在mpsoc的文档ug1085和ug1087中,关于ps_mode1的信息比较少。下面是更详细的描述。
1. ug1085文档
按ug1085,ps_mode1本来作为mpsoc的启动模式管脚。
ug1085也提到,ps_mode1/ps_mode2也可以作为外部usb phy的复位信号。
pg201也提到了外部usb phy的复位信号的相关设置。
2. vivado工具
在vivado里,可以指定外部usb phy的复位信号的来源和极性。
3. usb phy的复位信号
usb phy是否需要复位信号,由外部的phy决定。一般来说,单板复位后,建议把外部usb phy复位一次,保证usb phy处于干净的状态。
mpsoc既可以使用mio管脚、也可以使用ps_mode(boot_pin)管脚来作为usb phy的复位信号。
3.1. 使用mio管脚作为usb phy复位信号
mpsoc有两个usb控制器。如果都使用,外部有两个usb phy。使用mio管脚作为usb phy复位信号时,可以两个usb phy共用一个mio(shared mio pin);也可以每个usb phy使用一个mio(separate mio pin)。
在vivado里,配置对应的mio作为对应的usb phy复位信号。vivado导出hdf/xsa文件时,会导出这些信息。
同时,在device tree里,添加下列字段。
xlnx,phy-reset-gpio = ; usb驱动程序里,会查找参数“xlnx,phy-reset-gpio”。如果找到,会调用linux的gpio框架来复位外部usb phy。
3.2. 使用ps_mode管脚作为usb phy复位信号
如果使用ps_mode管脚(boot_pin),则可以节约mio管脚;在device tree里,也不用添加参数。
fsbl里,会使用ps_mode的对应寄存器,复位外部usb phy。文件psu_init.c里,可能有下列代码。
/*##################################################################### */ /* * boot pin low */ /* * register : boot_pin_ctrl @ 0xff5e0250 * value driven onto the mode pins, when out_en = 1 * psu_crl_apb_boot_pin_ctrl_out_val 0x0 * when 0, the pins will be inputs from the board to the ps. when 1, the ps * will drive these pins * psu_crl_apb_boot_pin_ctrl_out_en 0x2 * used to control the mode pins after boot. * (offset, mask, value) (0xff5e0250, 0x00000f0fu ,0x00000002u) */ psu_mask_write(crl_apb_boot_pin_ctrl_offset, 0x00000f0fu, 0x00000002u);/*##################################################################### */ /* * add 5us delay */ mask_delay(5); /*##################################################################### */ /* * boot pin high */ /* * register : boot_pin_ctrl @ 0xff5e0250 * value driven onto the mode pins, when out_en = 1 * psu_crl_apb_boot_pin_ctrl_out_val 0x2 * when 0, the pins will be inputs from the board to the ps. when 1, the ps * will drive these pins * psu_crl_apb_boot_pin_ctrl_out_en 0x2 * used to control the mode pins after boot. * (offset, mask, value) (0xff5e0250, 0x00000f0fu ,0x00000202u) */ psu_mask_write(crl_apb_boot_pin_ctrl_offset, 0x00000f0fu, 0x00000202u);/*##################################################################### */ 4. 单板定制
虽然zcu102和zcu106单板都使用了管脚ps_mode1作为外部usb phy的复位信号。客户的单板,可以自由选择ps_mode和mio作为外部usb phy的复位信号。
5. 输出模式
ps_mode1是totem-pole驱动,不是open-collector驱动。
6. 参考文档
sr #10480757 zynqus+ usb phy reset feature


基于ARM7的LCD显示电压示波系统的设计
电机的旋转速度为什么能够自由地改变(电机与变频器的关系)?
大功率白光死灯不良分析报告分析
售价2199元起 iQOO Neo5 SE全渠道热销中
如何制作可跟踪200Hz脉冲红外光源的摄像机支架
MPSoC设计中USB Phy的复位信号
锂电池内阻多大就报废_18650内阻简单测试方法
推荐这十个用于机器学习的优秀软件,可用于运行ML代码
Socionext最新开发时间敏感网络IP,助力推进智慧工厂
诺基亚将牵头欧盟6G研究项目
单板计算机为什么对于嵌入式计算设计很重要?
什么是甲醛检测仪?-欧森杰
剖析汽车塑料零配件水分测试仪实验
创新电子产品层出不穷 连接器厂家会做出什么改进
如何使用LM3492MH设计LED驱动电源?
如何选择从直流到18 GHz氮化镓的产品?
电动车锂电池保养方法 对比铅酸电池有什么差异?
小米6plus什么时候上市?小米6plus最新消息:小米6plus发布为什么推迟两个月?小米835新机,原来有秘密!
手把手教你分析Linux内核
张江高科携手芯华章达成战略合作 赋能科技企业数字化自主创新