| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> FPGA和USB3.0通信-FX3硬件设计简谈 -> 正文阅读 |
|
[嵌入式]FPGA和USB3.0通信-FX3硬件设计简谈 |
FPGA和USB3.0通信-FX3硬件设计简谈本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计,主需要使用状态机进行FIFO的读写控制即可,同时该芯片还具有ARM核+I2S、I2C、SPI、UART等接口,大大增加了该芯片的使用范围。 芯片介绍下面是整个芯片的框图: 主要包括以下几个部分: 1、通用可编程接口 (GPIF II)可编程的 100-MHz GPIF II 接口能连接多种类型外部器件 8/16/32 位数据总线 多达 16 种可配置的控制信号 2、32 位 CPU运行频率为 200 MHz 的 ARM926EJ 内核 512 KB 嵌入式 SRAM 3、外设频率为 1 MHz 的 I2C 主控制器 采样频率为 32 kHz、44.1 kHz、48 kHz 的 I2S 主控(仅发射器) 支持高达 4 Mbps 的 UART 33 MHz 的 SPI 主控 UART 和 SPI 的工作电压为 1.8 至 3.3 V I2C 工作电压为 1.2 V 4、多种时钟输入频率可供选择19.2、26、38.4 和 52 MHz,支持 19.2 MHz 晶振输入 5、应用FX3主要应用场景和他的内部结构有关,因为内置ARM核,应用范围十分广泛,在数字视频摄录机、数字照相机、打印机、扫描仪、视频采集卡、测试和测量设备、监控摄像机、个人导航设备、医疗成像设备、视频 IP 电话、便携式媒体播放器等多个场景都有应用。 正是因为内嵌ARM核,所以可以作为主处理器或者协处理器使用。 1、 作为协处理器-主要这个主要是利用USB PHY的特点,通过GPIF接口向内部写入数据,通过USB接口输出。 2、作为主处理器这种就是利用ARM内核功能+USB,功能类似STM32F103,但是USB功能升级了。 硬件设计讲硬件设计主要是为了方便FPGA工程师排故使用,下面分几个方面进行介绍,排故思路也是按照下面的顺序走。 1、 时钟我们知道FX3有19.2、26、38.4 和 52 MH,有晶体输入和有源晶振输入两种,这些组合怎么让内部PLL(锁相环)知道是那种时钟输入呢?那就是FSLC[0..2]这几个引脚进行配置,下表展示了FSLC[0..2]不同的设置代表的不同输入时钟,具体如下: 这里容易出问题的地方在于设置选项和时钟频率不匹配。 当然,FX3对于晶振/晶体是有要求的,但是比较宽松,常规的型号基本都可以满足。 复位:通过激活 EZ-USB FX3 上的 Reset# 引脚来初始化硬复位。复位序列和时序的具体要求详见下图。 常规的使用就是RC复位即可,想控制FX3,把Reset# 引脚拉到FPGA即可(注意电平匹配)。 时序图就是大部分芯片推荐的时序图,无非就是电源、时钟先上,然后进行复位。 引导选向这是最重要的一部分。 FX3 为了灵活使用,加载程序时可从多个源加载引导二进制文件(编译出来的),可通过 PMODE 引脚配置来选择。EZ-USB FX3 有下列引导选项:
注2:F代表的是悬空。 这里面常用的就是F11(USB引导)用来调试和下载固件;I2C引导:用来从EEPROM启动;SPI引导,用来从SPI FLASH启动。 注意一下,对于SPI FLASH支持的型号(支持的 SPI 器件为 M25P16 (16 Mbit)、M25P80 (8 Mbit) 和 M25P40 (4 Mbit)),当然也支持同类型的器件。对于SPI FLASH很多相同的封装,引脚兼容,所以很容易造成混乱。 这里说明一下,大部分PHY芯片从外部器件引导器件时,都会首先读取外部器件的FLASH的ID,然后才启动,如果不是他数据手册里推荐的型号,很大概率是启动不了的,如果出现问题首先记得先核实以下FLASH的型号。这么做的好处当然是…貌似没什么好处。 我这里建议的是使用SPI FLASH,价格会便宜点。模式我设计的思路是使用0F1(SPI,如失败,则启用 USB 引导),然后FALSH的CS引脚加开关接地,需要烧写固件时将CS拉低,FX3启动检测不到FLASH后会自动启动USB boot,上电完毕后可以将CS放开,就可以烧写固件了。 优秀的 Verilog/FPGA开源项目介绍(五)- USB通信 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:34:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |