CY7C68013与FPGA接口的VerilogHDL实现_第1页
CY7C68013与FPGA接口的VerilogHDL实现_第2页
CY7C68013与FPGA接口的VerilogHDL实现_第3页
CY7C68013与FPGA接口的VerilogHDL实现_第4页
CY7C68013与FPGA接口的VerilogHDL实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CY7C68013与FPGA接口的VERILOGHDL实现20071030嵌入式在线收藏|打印引言USB通用串行总线是英特尔、微软、IBM、康柏等公司1994年联合制定的一种通用串行总线规范,它解决了与网络通信问题,而且端口扩展性能好、容易使用。最新的USB20支持3种速率低速15MBIT/S,全速12MBIT/S,高速480MBIT/S。这3种速率可以满足目前大部分外设接口的需要。本文介绍了目前使用较多的USB20控制器CY7C68013芯片与FPGA现场可编程门阵列芯片接口的VERILOGHDL硬件描述语言实现。本系统可扩展,完全可用于其他高速数据采集系统中。1系统构成本系统主要是由FPGA和USB20控制器CY7C268013组成,系统框图及其信号连接关系如图1所示。可以根据实际系统的需要,用FPGA实现预定功能,如数据采集卡、控制硬盘读写等。11控制器CY7C68013CYPRESS公司的EZUSBFX2是第一个包含USB20的集成微控制器,它内部集成了1个增强型的8051、1个智能USB串行接口引擎、1个USB数据收发器、3个8位I/O口、16位地址线、85KBRAM和4KBFIFO等。增强性8051内核完全与标准8051兼容,而性能可达到标准8051的3倍以上。其框图如图2所示。111CY7C68013结构特点EZUSBFX2提供了一种独持架构,使USB接口和应用环境直接共享FIFO,而微控制器可不参与数据传输,但允许以FIFO或RAM的方式访问这些共享FIFO,这种被称之为“量子FIFO“的处理架构,较好地解决了USB高速模式的带宽问题。FX2芯片在数据传输时主要利用了4KB的FIFO,分为7个端点EPOINOUT、EP1IN、EP1OUT、EP2、EP4、EP6和EP8。其中EPO、EPLIN和EP1OUT是3个64B的缓存,只能被固件访问,EP0是一个默认的数据输入输出端口缓存;EP1IN和EP1OUT是单独的64B缓存,呵以配置这些端点为块传输、中断传输或同步传输;端点2、4、6、8是大容量高带宽的数据传输端点,可以配置为各种带宽以满足实际需要,端点2、4是输出端点,端点6、8是输入端点。值得注意的是,端点4、8能配置为每帧512B,而端点2、6却能配置为每帧512B或1024B,并可配置为2、3、4级,这样EP2或EP6最大能配置为4KB的缓存。其在内部的传输控制是通过FULL满和EMPTY空两个控制信号来完成的,当FULL为真时不能再写数据,当EMPTY为真时不能再对FIFO进行读,其内部数据传输示意图如图3所示。如图3所示,USB执行OUT传输,将EP2端点设成512B四重FIFO。在USB端和外部接门端都并不知道有四重FIFO。USB端只要有1个FIFO为“半满“,就可以继续发送数据。当操作的FIFO写“满“时,FX2自动将其转换到外部接口端,排队等候读取;并将USB接口队列中下一个为“空“的FIFO转移到USB接口上,供其继续写数据。外部接门端与此类似,只要有1个FIFO为“半满“,就可以继续读取数据。当前操作的FIFO读“空“时,FX2自动将其转换到USB接口端,排队等候写入;并将外部接口队列中下一个为“满“的FIFO转移到外部接口上,供其继续读取。112FX2接口方式FX2有SLAVEFIFO和GPIF两种接口方式。SLAVEFIFO是从机方式,即FX的CPU不直接参与USB数据处理,而是简单地把FX作为USB和外部数据处理逻辑如ASIC、DSP和IDE串行接口引擎控制器之间的通道,数据流并不经过CPU,而是通过FX的FIFO直接传输。FIFO通过外部主机控制,同时,FIFO提供所需的时序信号、握手信号满、空等和输出使能等。可编程接口GPIF是主机方式,GPIF作为内部主机控制端点FIFO,其CORE是一个可编程状态机,可以生成多达6个控制输出信号和9个地址输出信号,能外接6个外部READY输入信号和2个内部READY输入信号。通过用户自定义的波形描述符来控制状态机,使用软件编程读写控制波形,几乎可以对任何8/16HIT接口的控制器、存储器和总线进行数据的主动读写,非常灵活。2接口的VERILOGHDL编程实现在本设计巾采用SLAVEFIFO从机方式实现FPGA对FX的控制,通过VERILOGHDL编程实现。FPGA可以根据实际情况选定。我们在设计时选用XILINX公司的VIRTEX设备XC2V10004FG456C。21异步FIFO读数据FX读数据也就是数据从FX传到FPGA的过程,其过程如下A反复检测控制线状态,当读事件发生时,即控制线CON_OUT_Z0和RD_DISK10时,转到B;B分配FIFOADR1000,这时FIFO指针会指向输出端点,表明使用端点EP2;C检查FIFO是否空,当EMPY1时表示FIFO不空,转到状态D,否则保持在状态C;D赋值SLOE0,使双向数据线FD在输出状态,采样FD数据线上的数据,并在SLRD的上升沿使FIFO指针门动加1,跳转到E;E假如有更多的数据需要读,转到状态B,否则转到状态A。对读数据编程如下用MENTOR软件MODELSIM进行仿真验证,其仿真波形如图4所示。在此过程中,SLRD信号特别重要,在SLRD的下降沿把FLFO中的数据放到FD数据线上;在SLRD的上升沿把FIFO指针加1,并指向下一个单元。22异步FIFO写数据向FIFO写数据是读数据的逆过程,也就是把FPGA数据写入FX的FIFO,其编程过程如下A查询控制信号线CON_OUT_Z和WR_DISK,看是否有读事件发生,如果有,就转移到状态B,否则保持在状态A;B分配FIFOAFR1010,FIFO指针指向输入端点,转向状态C;C检查FIFO的满标志是否为1,假如FUIL1,表示FIFO不满,转到状态D,否则保持在状态C;D把外部数据INDATA放在FD上,同时把SLWR拉高,以使得FIFO指针自动加1,然后转到状态E;E假如有更多的数据要传输,转到状态B,否则转到状态A。其程序与写FIFO数据时一样,只是在生成SLWR信号时,需要注意控制信号之间的保持延时时间约束,这可以通过仿真结果进行适当修改。读数据信号仿真波形如图5所示。但必须注意的是,在SLWR的下降沿把INDATA数据线上的数据放到FD数据线上;在SLWR的上降沿把FD数据线上的数据放人FIFO,并同时使FIFO指针加1,指向下一个缓存单元。3结束语现在USB2O控制器C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论