草庐IT

CYUSB3014 USB3.0与FPGA设计

alley98 2023-04-05 原文

目录

1. USB3014连接框图

2. 复位设置

3. 时钟晶振

4. 时钟源配置

5. 引导方式配置

6. IIC存储器

7. SPI flash存储器

8. FPGA外接串口


1. USB3014连接框图

         为了充分发挥 USB3.0芯片的特性,特将 CYUSB3014芯片的所有数字 IO与 FPGA连接,包括 32根数据线,13根控制线、4根 I2S信号线以及 UART线等。

2. 复位设置

        CYUSB3014有一个复位输入接口,当复位输入为低电平时,芯片处于复位状态。只有当该引脚为高电平时,芯片才能正常工作,AC6102开发板在设计时,充分考虑了实际应用和系统调试时的情况,给 CYUSB3014设计了两种复位方式,分别为 FPGA控制复位和上电自动复位。默认使用上电自动复位方式,该方式非常适合我们调试系统原型时使用,这样不必担心因为重新下载 FPGA 的 sof固件而导致 USB芯片复位,影响 USB3.0芯片的正常运行。增加调试时候的工作量。(如果使用 fpga控制复位,那么每次下载完 fpga的 sof后,都会对USB芯片执行一次复位操作,从而使芯片内烧写的固件丢失,那么用户只能再烧写一次 usb芯片固件,从而增加了调试时候的工作量)。如下图,R64默认没有焊接,即断开了 CYUSB芯片与 FPGA芯片的连接,从而避免受到 FPGA固件的影响,如果产品最终定型需要测试使用 FPGA直接控制 USB芯片复位,给 R64安装 100R左右的电阻即可。

        对比USRP B2X0系列FPGA芯片,对于复位则是加了按键复位操作,见下图,也是大多数FPGA的通用复位方法。

3. 时钟晶振

        CYUSB3014支持外部晶振提供时钟信号,支持 19.2、26、38.4和 52MHz的时钟频率,AC6102开发板上使用 19.2MHz的晶振为 CYUSB3014提供时钟源。另外,CYUSB3014内部有一个看门狗定时器,用来在需要的时候对全局系统服务,看门狗定时器使用外部 32.768KHz时钟输入,所以 AC6102上也设计了一个 32.768KHz的晶振。当然,在大多数系统中,该部分可以不考虑。 

4. 时钟源配置

        CYUSB3014芯片的时钟源是可配置的,EZ-USBFX3允许在 XTALIN和 XTALOUT引脚之间连接晶振,也允许在 CLKIN引脚上连接外部时钟。支持的晶振频率为 19.2MHz,支持的外部时钟频率为 19.2、26、38.4和 52MHz。EZ-USBFX3有一个片上振荡器电路,使用外部19.2MHz(±100ppm)晶振(使用晶振选项时)。FSLC[2:0]引脚必须进行适当配置,以选择晶振选项/时钟频率选项。配置选项请参见下表。

         AC6102开发板在设计时,将 FSLC配置脚使用电阻跳线的方式引出,如下图,每个 FSLC
引脚都有两个电阻接到 VCC和 GND,通过选择焊接或者留空对应电阻,能够设置 CYUSB3014
芯片的外部时钟源频率。AC6102上焊接的是 19.2MHz的晶振,根据上表得之,FSCL三个脚
都应该为 0,即接地。所以连接到 GND的 R56、R59、R63均焊接了 10K的电阻,而连接到
VCC的 R55、R58、R61则留空不焊接。

        对比USRP B2X0系列板子,也通用19.2Mhz晶振。

5. 引导方式配置

        EZ-USBFX3芯片总共支持 7种引导方式,所谓引导,就是 EZ-USBFX3芯片上电以后,片上的 ARM9处理器从何处开始读取程序并运行。其支持的 7种启动方式如下所示:

1、从 USB 引导 
2、从 IIC 引导 
3、 从 SPI (支持的 SPI 器件为 M25P16 (16 Mbit)、M25P80(8 Mbit) 和 M25P40 (4 Mbit))或同类器件引导 
4、 从 GPIF II 异步 ADMUX 模式引导 
5、 从 GPIF II 同步 ADMUX 模式引导 
6、 从 GPIF II 异步 SRAM 模式引导 

        3014芯片具体提供了 3个启动配置引脚,通过设置启动引脚不同的值,来选择不同的启动方式。这三个引脚名叫 PMODE脚。 

         这三个配置引脚,每个引脚都有三种状态,1(接高电平)、0(接低电平)、F(浮空,既不接高电平,也不接低电平),三个配置引脚的不同状态与对应的启动方式如下表所示

         其中,对于 FPGA和 USB3.0组成的系统,我们很少用到第 1、2、4种启动方式。第 7种启动方式,即使用 SPI引导,主要用在 EZ-USBFX3作为整个系统的主机层,片上的处理器需要运行复杂的程序的情况下,使用片外的大容量 SPI FLASH存储器启动。FPGA + EZ-USBFX3,使用最多的是 SlaveFifo接口,因此,可以选择 EEPROM存储器,即 IIC方式启动。同时,为了保证系统在 IIC接口的 EEPROM存储器失效的情况下,能够有其他方式可以恢复,所以,AC6102上的启动方式设置为了方式 5,即默认从IIC引导,如果从IIC引导失败,则启用从USB引导。对应的PMODE[2:0]的配置为 F1F,在原理图上,即电阻 R51使用 0R电阻,其他电阻全部不焊接即可。

        USRP B2X0系列也采用IIC方式启动,对应的PMODE[2:0]设置了F1F,如下图, 这里DNP(Do Not Populate)不焊接,FX3_PMODE1留了10k的保护电阻。

6. IIC存储器

            CYUSB3014支持从 IIC存储器引导程序,AC6102开发板上,为 CYUSB3014芯片提供了一颗 256Kb的 IIC接口的 EEPROM存储器 24LC256,方便用户存储 CYUSB3014的固件。

             USRP B2X0系列同样采用EPROM存储器来存放固件。

7. SPI flash存储器

        CYUSB3014芯片支持从 SPI FLASH存储器引导程序,AC6102开发板上,为 CYUSB3014芯片提供了一颗 64Mb的 SPI接口的 FLASH存储器 M25P64,由于 CYUSB3014的 SPI接口和UART接口引脚是复用的,一个时刻内只能工作在一种模式,在 FPGA和 CYUSB3014的典型应用系统中,我们通常使用 Slave Fifo模式,不需要 CYUSB3014运行复杂的应用程序,但是由于 Slave Fifo接口虽然适合传输大量的数据,却不适合传输控制信号,我们可以考虑使用UART在两者之间传递控制信号,因此 AC6102上默认将 CYUSB的 SPI/UART复用引脚通过排阻跳线设置为了 UART模式。如下图,RN5和 RN6为两个排阻,M25P64为 SPI FLASH存储器,当焊接 RN6,悬空 RN5时,SPI FLASH是被硬件旁路掉的,并没有连接到 CYUSB3014芯片上,AC6102上默认就是此种配置方式。

        USRP B2X0系列SPI配置如下,同样SPI接口和UART接口引脚是复用的,一个时刻内只能工作在一种模式。

 8. FPGA外接串口

                

        由于上述SPI和UART口共用,USB串口传输要遵循FX3协议,C/C++开发语言,相对复杂,所以为了如果为了简单进行FPGA的串口开发,可以采用RS232外接,用串口助手进行数据收发。

有关CYUSB3014 USB3.0与FPGA设计的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

  6. ruby-on-rails - 设计通过 reset_password_token 获取用户 - 2

    我正在尝试创建密码规则来设计可恢复的密码更改。我通过passwords_controller.rb做了一个父类(superclass),但我需要在应用规则之前检查用户角色,但我所拥有的只是reset_password_token。 最佳答案 假设您的模型是用户:User.with_reset_password_token(your_token_here)Source 关于ruby-on-rails-设计通过reset_password_token获取用户,我们在StackOverflow

  7. ruby-on-rails - Rails 5,公寓和设计 : sign in with subdomains are not working - 2

    我已经使用Apartment设置了一个Rails5应用程序(1.2.0)和Devise(4.2.0)。由于某些DDNS问题,应用只能在app.myapp.com下访问(请注意子域app)。myapp.com重定向到app.myapp.com。我的用例是每个注册该应用的用户(租户)都应该通过他们的子域(例如tenant.myapp.com)访问他们的特定数据。用户不应限定在其子域内。基本上应该可以从任何子域登录。重定向到租户的正确子域由ApplicationController处理。根据Devise标准,登录页面位于app.myapp.com/users/sign_in。这就是问题开始的

  8. ruby-on-rails - 设计中的 ArgumentError::RegistrationsController#new 错误的参数数量(2 代表 0..1) - 2

    我在关注RyanbatesRailsCast的devise和omniauth(第235集-devise-and-omniauth-revised)。当我尝试使用Twitter登录时,标题中不断出现错误。defself.new_with_session(params,session)ifsession["devise.user_attributes"]new(session["devise.user_attributes"],without_protection:true)do|user|user.attributes=paramsuser.valid?end完整跟踪:C:/Ruby20

  9. ruby-on-rails - rails:为#<StateMachine::Machine:0xba3014ec> 调用了 protected 方法 `around_validation' - 2

    我正在尝试实现state_machinegem,在我的rails项目中,我安装了gem,然后我将“state”列添加到我的account_entries模型中:defchangeadd_column:account_entries,:state,:stringend然后在我的account_entries模型中,我添加了状态机初始方法,如下所示:state_machine:state,:initial=>:submitteddoend然后在我看来我显示时间进入状态:account_entry.state但是当我尝试从我的应用程序创建一个account_entry时,我得到了这个错误:p

  10. ruby-on-rails - 使用用户或管理员模型和 Basecamp 样式子域设计登录 - 2

    我为Devise用户和管理员提供了不同的模型。我也在使用Basecamp风格的子域。除了我需要能够以用户或管理员身份进行身份验证的一些Controller和操作外,一切都运行良好。目前我有authenticate_user!在我的application_controller.rb中设置,对于那些只有管理员才能访问的Controller和操作,我使用skip_before_filter跳过它。不幸的是,我不能简单地指定每个Controller的身份验证要求,因为我仍然需要一些Controller和操作才能被用户或管理员访问。我尝试了一些方法都无济于事。看来,如果我移动authentica

随机推荐