0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的cy7c68013a双向通信教程

e9Zb_gh_8734352 来源:chengfengwenalan 作者:chengfengwenalan 2023-03-09 09:40 次阅读

01基于FPGA的cy7c68013a双向通信实验

cy68013

教程是基于FPGA的cy7c68013a的USB双向通信实验,本教程主要内容:

1.cy7c68013a的固件编写,以及生成iic固件和下载固件。

2.cy7c68013a的slave模式,以及他的读写时序

3.cy7c68013a的FPGA的上板测试,包括发送和接收两部分

02开发过程

cy68013

01驱动

在进行试验前要先安装好Cypress提供的usb驱动,插上usb后,电脑就会检测到未识别的设备,这时打开设备管理器,右键未识别的usb,然后手动选择驱动。

在驱动会在本教程最后的链接中给出,如图所示:

a07b7700-bdb5-11ed-bfe3-dac502259ad0.pnga0968bbc-bdb5-11ed-bfe3-dac502259ad0.png

02固件

固件是在CY68013的FPGA内部有一个MCU,需要给MCU固化程序,固件的编写主要是确定IN和OUT端点,以及一些标志信号

a0ca9b28-bdb5-11ed-bfe3-dac502259ad0.png

固件只需要改这些参数即可,一般情况下不需要修改,很容易看出本教程中设置的时钟是48MHz,然后设置EP2为OUT端点,512字节,4缓冲,bulk (注意OUT,IN都是相对PC来说的,OUT表示PC--->cy7c68013a,IN则相反)

EP6为IN端点,512字节,4缓冲,bulk

flag_a 为EP2的EF,也就是空标志信号,为低时表示空,也就是没有数据过来,为高则表示有数据来了

flag_d 为EP6的FF,也就是满标志信号,为低时表示写满了,这时再去写就是无效写了,为高则表示没有写满,可以继续写。

a0e72a9a-bdb5-11ed-bfe3-dac502259ad0.png

教程提供的固件所在文件夹:固件源码什么的都在Firmware文件中

a0fd7138-bdb5-11ed-bfe3-dac502259ad0.png

03时序

Slave FIFO的时序如图所示。

a1231fb4-bdb5-11ed-bfe3-dac502259ad0.png

有图很容易看出,再写之前要先把FIFOADR确认好,这个决定了你写的对象是谁

a135a710-bdb5-11ed-bfe3-dac502259ad0.png

slave读操作

a1472b34-bdb5-11ed-bfe3-dac502259ad0.png

然后在该fifo非满时(相应的FF标志位高),才可以进行写操作,这个时序很简单,就是拉低slwr信号就可以了,注意FD要与slwr对齐。

注意:写操作时,slwr与FD的数据都是FPGA来控制的,为了让cy7c68013a更好的采样,ifclk与clk反向之后再发送给cy7c68013a.

读时序跟写也是类似的,再读之前先确定FIFOADR,然后拉低sloe,这时FD总线就会出现第一个数据,然后检测到slrd为低时,FD就会显示下一个数据。

04FPGA与cy7c68013a通信

前面主要是准备工作,现在正是进入测试:

项目工程如下:

a16fadca-bdb5-11ed-bfe3-dac502259ad0.png

a186aff2-bdb5-11ed-bfe3-dac502259ad0.png

具体代码都已经有了详细注释了,这里就不详细解释。

本教程所用的调试工具是官方的工具

a1a73164-bdb5-11ed-bfe3-dac502259ad0.png

03调试

Deep learnning

下面给出写的signal tap 的调试截图

写是一次写512个字节数据,0-255,注意usb的fifo是一次发送16位的,也就是2个字节。先发送低字节,然后再发送高字节,这我直接把低字节给赋值为0了

a1c3ec78-bdb5-11ed-bfe3-dac502259ad0.png

a1d8294a-bdb5-11ed-bfe3-dac502259ad0.png

a1eb6a96-bdb5-11ed-bfe3-dac502259ad0.png

前面局部放大图

a202dc6c-bdb5-11ed-bfe3-dac502259ad0.png

后面局部放大图,注意只有在flag_d为高时,slwr为低才是有效写,否则就是无效写,因为当flag_d为低时,表示写满了,这时fifo就会丢弃后面写的数据。

a2205e90-bdb5-11ed-bfe3-dac502259ad0.png

PC端接收到的数据要2个字节一起读,因为usb是16位发送的,可以看出接收到的数据的确是0000-00FF。

注意:pc接收数据按照下图标的编码顺序执行

a2331e86-bdb5-11ed-bfe3-dac502259ad0.png

a2524220-bdb5-11ed-bfe3-dac502259ad0.png

a26cf6e2-bdb5-11ed-bfe3-dac502259ad0.png

pc发送数据按1-->2-->3的步骤,可以看出我们发送了12 34 56 78 这4个字节

a280d608-bdb5-11ed-bfe3-dac502259ad0.pnga29715bc-bdb5-11ed-bfe3-dac502259ad0.png

注意这里我是设置了cmd_flag标志信号的,只有cmd_flag为高时的cmd_data的数据才是有效的,也就是pc发送过来的数据

a2a8ace6-bdb5-11ed-bfe3-dac502259ad0.png

alter 的fifo ip 是可以读写位宽不一致的,具体看下面的图。

a2c8d782-bdb5-11ed-bfe3-dac502259ad0.png

由上图可以看出这个和usb是一样的格式,都是先发低字节,然后再发高字节。或者说先接收低字节,然后再接收高字节。

至此本教程就全部介绍完了,教程只挑了最关键的部分讲述USB的开发,但是包括了固件,驱动和FPGA程序,一个完整的USB和FPGA开发的工程完全可以进行在此基础上进行二次开发。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • fpga
    +关注

    关注

    1551

    文章

    20327

    浏览量

    588737
  • usb
    usb
    +关注

    关注

    58

    文章

    7016

    浏览量

    255423
  • Cypress
    +关注

    关注

    10

    文章

    136

    浏览量

    81340
  • CY7C68013A
    +关注

    关注

    2

    文章

    19

    浏览量

    21453
  • 编写
    +关注

    关注

    0

    文章

    28

    浏览量

    8325
  • 双向通信
    +关注

    关注

    0

    文章

    11

    浏览量

    8528
收藏 人收藏

    评论

    相关推荐

    cy7c68013a的datasheet好像很复杂

    cy7c68013a的datasheet好像很复杂
    发表于 11-21 14:37

    CY7C68013A不能和labview连续通信

    FPGA主要是 Xilinx V5,子板USB2.0是CY7C68013A,USB采用异步slave fifo的bulk传输,主要过程是FPGA处理图像数据,经过
    发表于 06-28 10:31

    CY7C68013A USB Board

    FPGA板子上的LED灯的亮灭;-----详细见:USB通信实验3. 附录说明3.1. 模块扩展开发本模块是围绕
    发表于 03-28 14:41

    怎么在Cy7C68013A上进行调试

    CY7C68013A 56PIN CyPress USB控制器上工作。我没有使用开发板,而是为我自己的应用程序定制了设计。后来,我在某处读到56针不支持调试。对吗?有没有办法,我可以做任何
    发表于 05-05 06:32

    CY7C68013A芯片不能工作

    FPGA生成iFCLK,但是当我设置IFCONFIG= 0x03H,CPUCS= 0x10H时,CY7C68013A芯片不能工作。所以我希望你能告诉我IFCONFIG和CUPUC的价值。
    发表于 10-09 13:36

    怎么采用CY7C68013A实现USB控制系统的设计方案?

    CY7C68013A的主要特点求一中基于CY7C68013A的USB控制系统设计
    发表于 04-09 06:03

    基于USB芯片CY7C68013A的上位机

    CY7C68013A的上位机C基于USB芯片CY7C68013A的上位机C程序在国标《质量管理体系 基础和术语》GB/T19000—2008/ISO9000:2005中第
    发表于 08-06 09:58

    CY7C68013A开发板使用说明

    CY7C68013A开发板的第一个程序应当从点亮数码管开始,这样感觉起来相当不错。数码管是用PCF8574驱动的,PCF8574与CY7C68013A是用I2C总线连接的,实际上这个实验主要是学习I2C总线的,后面要
    发表于 05-25 10:26 345次下载
    <b>CY7C68013A</b>开发板使用说明

    基于CY7C68013A的并口转USB口数据采集系统设计

    CY7C68013A 为接口芯片的并口转USB口的数据采集系统,讨论了CY7C68013A的性能及传输方式,给出了该系统的硬件设计方案,设计实现了USB2.0数据传输模块,阐述了系统的硬件设
    发表于 08-29 14:26 276次下载
    基于<b>CY7C68013A</b>的并口转USB口数据采集系统设计

    CY7C68013A中文资料

    CY7C68013A, CY7C68014A, CY7C68015A, CY7C68016A .pdf 免费下载,希望对您有所帮助!
    发表于 01-09 16:22 437次下载

    基于CY7C68013AFPGA配置和通信接口设计

    FPGA进行在线配置和高速数据传输,提出了一种基于CY7C68013A芯片的USB2.0接口设计方案。介绍了以CY7C68013A芯片为核心的系统硬件电路设计和软件编程,详细分析了
    发表于 09-23 17:57 174次下载

    基于CY7C68013A的USB接口系统设计

    CY7C68013A的USB接口系统设计.
    发表于 01-22 14:26 40次下载

    基于CY7C68013AFPGA的4路数据采集系统设计_智丹

    CY7C68013AFPGA的4路数据采集系统设计_智丹
    发表于 01-13 21:40 23次下载

    基于CY7C68013A芯片的USB键盘的设计

    CY7C68013A芯片的基本原理,以及使用CY7C68013A芯片进行USB键盘设计的方法。
    发表于 12-26 09:32 2w次阅读
    基于<b>CY7C68013A</b>芯片的USB键盘的设计

    微雪电子CY7C68013A高速USB通信模块简介

    CY7C68013A 高速USB通信模块 USB mini接口 高速USB接口模块 型号
    的头像 发表于 12-30 11:12 2109次阅读
    微雪电子<b>CY7C68013A</b>高速USB<b>通信</b>模块简介