您现在的位置:首页 >> 技术文章 >> 接口技术 >> 内容

EZ-USB与FPGA的通信接口设计

时间:2014-10-10 0:19:41 点击:

  核心提示:MATLAB代做|MATLAB代写|MATLAB有偿编程 - MATLAB代做FPGA代做|FPGA代写|FPGA有偿编程 - FPGA代做QQ: 1224848052...

使用芯片:CY7C68013A(Cypress)与XC3S50AN(Xilinx)

 

一、原理图

FPGA与EZ-USB通过异步FIFO方式连接,以下截图来自于Cypress的手册EZ-USB_TRM.pdf。

将图9-19和9-22两图中的信号合并在一起,与FPGA连接即可。

本例子中使用了以下信号: FIFOADR[7:0](只用了8位总线)、SLRD、SLOE、SLWR、FLAGA(配置成EP6 FULL)、FLAGB(配置成EP2 EMPTY)、PKTEND(常1)、SLCS#(常0)

 

二、FPGA读写SlaveFIFO时序

异步写,在FULL不为0的时候,SLWR下降沿的时候将写的数据放到总线上,保持一个周期即可将数据写入。

异步读,在EMPTY不为0的时候,将SLOE和SLRD拉低,过半个周期读总线上的数即可。

 

-->附件中有原理图可以参考

 

三、FPGA代码

工程结构如下图,在Xilinx ISE中。

1)usb_bmd.v为顶层测试文件,测试上行和下行的数据。

2)RX_FIFO为下行数据缓存FIFO,TX_FIFO为上行数据缓存FIFO。

本工程中直接例化了FPGA内部的FIFO,可根据实际情况适当加大或减小FIFO,最小深度不得低于512。

3)usb_trx为FPGA与CY7C68013A通信的核心模块,包括:rx_engine.v下行接口,tx_engine上行接口,clk_div.v分频模块(控制FPGA读写SlaveFIFO的频率,不高于48M)。

可以根据实际电路情况调高或降低分频系数,但不建议修改,源代码中的分频系数已经为实测最佳情况,双面板没有做任何阻抗匹配的情况下,可以稳定传输数据。如果PCB阻抗做的比较好,可又适当调高试试。

4)S3an.ucf为管脚约束文件,可又根据自己的FPGA管脚进行修改。

 

-->附件中有Verilog源代码

 

二、固件程序,见附件CFR-FIFO-1.1.iic

通过CyConsole下载到外部的EEPROM中即可(在学习笔记[1]中有说明如何下载)。

该固件中使用了异步SlaveFIFO模式,使用端点EP2和EP6,512B 大小,4倍缓冲。

-->该固件仅供学习使用,源代码不公开,也不需要公开。

 

三、测试

1)使用EZ-USB CyConsole,选择Endpoint 6 IN,接收到的数为00~FF。

因为在usb_bmd.v代码中,不断向TX_FIFO中写入8位的cnt,从0开始。如下图

2)使用CyBulkLoop程序,进行闭环测试。数据包长度为512,从0开始累加,测试结果如下图。

细心的读者可以发现,实际在usb_bmd代码中做了手脚,上传的数据并不是真正下发的数据,而是自己上传的00~FF。

因为如果将代码中的RX和TX进行闭环,是下行一个数据(8b)立即上传一个数据的。而USB的SlaveFIFO是512B的,每次上行数据最小是512B,而且必须是512B的整数倍。在实际应用中需要注意。

Tags:EZ-USB 
作者:不详 来源:网络
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment