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
    +关注

    关注

    1655

    文章

    22282

    浏览量

    630071
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281606
  • Cypress
    +关注

    关注

    11

    文章

    137

    浏览量

    84424
  • CY7C68013A
    +关注

    关注

    2

    文章

    20

    浏览量

    22118
  • 编写
    +关注

    关注

    0

    文章

    29

    浏览量

    8699
  • 双向通信
    +关注

    关注

    0

    文章

    18

    浏览量

    8852

原文标题:基于FPGA的cy7c68013a双向通信教程

文章出处:【微信号:gh_873435264fd4,微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    慌了!CY7C68013A停产实锤!价格飙到离谱+断供16周

    CY7C68013A即将迎来全线停产的命运,涵盖SSOP56、QFN56、VFBGA56、LQFP100等所有封装型号,作为一款面世超20年的“长青料号”,CY7
    的头像 发表于 09-16 11:39 1006次阅读
    慌了!<b class='flag-5'>CY7C68013A</b>停产实锤!价格飙到离谱+断供16周

    CY7C68013A无法加载EEPROM中的程序是为什么?

    我通过cycontrol将.IIC文件下载到24lc64中,但是再次启动时无法加载到CY7C68013A中,必须再使用cycontrol将hex文件下载到ram中才能使用,这是为什么?
    发表于 06-03 14:07

    使用CY7C68013A GPIF和FIFO的疑问求解

    我想把这样使用 CY7C68013A 的GPIF 和 FIFO功能: 1. 两路数据传输,CY7C68013都作为从机接收数据 2. 每一路都数据格式为:1个clock pin,8个数据pin 3.
    发表于 06-03 13:35

    cy7c68013a的数据传输错误的原因?

    cy7c68013aFPGA采用同步slfifo模式通讯,当上位机使用control center发送2个字节时,FPGA收到数据正确,当发送4个以上字节时会出现头两个字节丢失,后两个字节重复的现象,百思不得其解?固件使用官网
    发表于 06-03 10:44

    可以使用CY7C68013A的CLKOUT输出37.125KHz的时钟吗?

    我想这样使用CY7C68013A的CLKOUT输出37.125KHz的时钟, 请问能输出这种频率吗? 如果能,怎么样才能输出这个频率呢? 如果不能,其它pin可以输出这个频率吗?怎样输出?
    发表于 06-03 10:05

    CY7C68013A客户配置成slavefifo模式,FPGA发送数据到PC则会丢包或者收到的数据对不上,什么原因?

    我们这边有个客户使用CY7C68013A,客户配置成slavefifo模式,PC端发送数据到FPGA时数据正常,FPGA发送数据到PC则会丢包或者收到的数据对不上。能否帮忙看下客户的配置是否正确。
    发表于 05-30 08:21

    USB芯片CY7C68013AFPGA进行通信,从EP6读取512字节是正常的,但是读取2个字节失败,为什么?

    大家好,USB芯片CY7C68013AFPGA进行通信,从EP6读取512字节是正常的,但是读取2个字节失败(fpga端一直在发)Bulk IN failed,谢谢
    发表于 05-30 07:12

    MCU是否可以使用普通IO口和数据总线控制cy7c68013a,用异步slavefifo模式增加一个与PC通信的USB口?

    cy7c68013a的固件已经配置成异步slave模式,是否有MCU用IO口控制cy7c68013a通过数据总线来实现与PC的USB口通信,这样应用的示例程序或教程? 目的就是在现有的MCU系统中增加一个USB
    发表于 05-30 06:32

    如何使用EZ-USB FX2LP CY7C68013A开发大容量存储设备?

    我应该如何使用 EZ-USB FX2LP CY7C68013A 开发大容量存储设备,我找不到允许在 FX2LP 上开发大容量存储设备的文档,请帮帮我,谢谢
    发表于 05-29 06:15

    请问CY7C68013A高速模式如何配置?

    请问CY7C68013A高速模式如何配置?手册里只有提到了中断和ram
    发表于 05-28 07:14

    如何使用/编程CY7C68013A

    CY7C68013A USB 微控制器的新手。 我打算在我的设计中使用这些 IC,但是,我不知道当 PCB 通过 USB 连接到笔记本电脑时,需要什么来访问该芯片或对其进行编程。 所以, 1. 我的笔记本电脑需要安装哪些软件或驱动程序才能使用 CY7C68013A 芯片?
    发表于 05-20 06:41

    CY7C68013A无PID和VID,如何制作PDF?

    我用 CY7C68013A MCU 设计了一个 PCB,所以这意味着我不是程序员之类的。 但是我尝试上传一些代码,但没有 PID 和 VID。 我找到了一些关于如何制作的 PDF,但那些对我来说很难。 有人可以帮我吗?
    发表于 05-13 07:50

    如何通过上位机控制CYUSB3014的指定管脚实现类似功能?

    我们原来使用CY7C68013A实现了上位机与FPGA之间双向通信,通过控制端点可以实现对诸如CY7C68013A上的PA0等管脚进行控制以便FPG
    发表于 05-13 06:24

    CY7C68013A的windows 10驱动现在支持吗?如何获取?

    CY7C68013A 的windows 10 驱动现在支持吗?如何获取?
    发表于 05-12 07:56

    使用wavevison5软件时,FPGA中的程序是在线加载的,CY7C68013A中的固件也是在线加载的吗?

    指示灯都没有亮,但是OVER_RANGE指示灯亮了,请问这是什么原因呢? 再请教一个问题,使用wavevison5软件时,FPGA中的程序是在线加载的,CY7C68013A中的固件也是在线加载的吗?
    发表于 12-27 08:11