CY7C68013与FPGA接口的Verilog HDL实现
发布时间:2008/5/28 0:00:00 访问次数:679
0 引 言
usb(通用串行总线)是英特尔、微软、ibm、康柏等公司1994年联合制定的一种通用串行总线规范,它解决了与网络通信问题,而且端口扩展性能好、容易使用。最新的usb2.0支持3种速率:低速1.5 mbit/s,全速12 mbit/s,高速480 mbit/s。这3种速率可以满足目前大部分外设接口的需要。
本文介绍了目前使用较多的usb2.0控制器cy7c68013芯片与fpga(现场可编程门阵列)芯片接口的verilog hdl(硬件描述语言)实现。本系统可扩展,完全可用于其他高速数据采集系统中。
1 系统构成
本系统主要是由fpga和usb2.0控制器cy7c268013组成,系统框图及其信号连接关系如图1所示。可以根据实际系统的需要,用fpga实现预定功能,如数据采集卡、控制硬盘读写等。
1.1 控制器cy7c68013
cypress公司的ez-usb fx 2是第一个包含usb2.0的集成微控制器,它内部集成了1个增强型的8051、1个智能usb串行接口引擎、1个usb数据收发器、3个8位i/o口、16位地址线、8.5 kb ram和4 kbfifo等。增强性8051内核完全与标准8051兼容,而性能可达到标准8051的3倍以上。其框图如图2所示。
1.1.1 cy7c68013结构特点
ez-usb fx2提供了一种独持架构,使usb接口和应用环境直接共享fifo,而微控制器可不参与数据传输,但允许以fifo或ram的方式访问这些共享fifo,这种被称之为"量子fifo"的处理架构,较好地解决了usb高速模式的带宽问题。
fx2芯片在数据传输时主要利用了4 kb的fifo,分为7个端点:epoin&out、ep1in、ep1out、ep2、ep4、ep6和ep8。其中epo、eplin和ep1out是3个64 b的缓存,只能被固件访问,ep0是一个默认的数据输入输出端口缓存;ep1in和ep1out是单独的64 b缓存,呵以配置这些端点为块传输、中断传输或同步传输;端点2、4、6、8是大容量高带宽的数据传输端点,可以配置为各种带宽以满足实际需要,端点2、4是输出端点,端点6、8是输入端点。值得注意的是,端点4、8能配置为每帧512 b,而端点2、6却能配置为每帧512 b或1 024 b,并可配置为2、3、4级,这样ep2或ep6最大能配置为4 kb的缓存。
其在内部的传输控制是通过full(满)和empty(空)两个控制信号来完成的,当full为真时不能再写数据,当empty为真时不能再对fifo进行读,其内部数据传输示意图如图3所示。
如图3所示,usb执行out传输,将ep2端点设成512 b四重fifo。在usb端和外部接门端都并不知道有四重fifo。usb端只要有1个fifo为"半满",就可以继续发送数据。当操作的fifo写"满"时,fx2自动将其转换到外部接口端,排队等候读取;并将usb接口队列中下一个为"空"的fifo转移到usb接口上,供其继续写数据。外部接门端与此类似,只要有1个fifo为"半满",就可以继续读取数据。当前操作的fifo读"空"时,fx2自动将其转换到usb接口端,排队等候写入;并将外部接口队列中下一个为"满"的fifo转移到外部接口上,供其继续读取。
1.1.2 fx2接口方式
fx2有slave fifo和gpif两种接口方式。
slave fifo是从机方式,即fx的cpu不直接参与usb数据处理,而是简单地把fx作为usb和外部数据处理逻辑(如asic、dsp和ide(串行接口引擎)控制器)之间的通道,数据流并不经过cpu,而是通过fx的fifo直接传输。fifo通过外部主机控制,同时,fifo提供所需的时序信号、握手信号(满、空等)和输出使能等。
可编程接口gpif是主机方式,gpif作为内部主机控制端点fifo,其core是一个可编程状态机,可以生成多达6个控制输出信号和9个地址输出信号,能外接6个外部ready输入信号和2个内部ready输入信号。通过用户自定义的波形描述符来控制状态机,使用软件编程读写控制波形,几乎可以对任何8/16 hit接口的控制器、存储器和总线进行数据的主动读写,非常灵活。
2 接口的verilog hdl编程实现
在本设计巾采用slave fifo从机方式实现fpga对fx的控制,通过verilog hdl编程实现。fpga可以根据实际情况选定。我们在设计时选用xilinx公司的virtex-ⅱ设备(xc2v10004fg456c)。
2.1 异步fifo读数据
fx读数据也就是数据从fx传到fpga的过程,其过程如下:
a)反复检测控制线状态,当读事件发生时,即控制线con_out_z=0和rd_disk=10时,转到 b;
b)分配fifoadr[1:0]=00,这时fifo指针会指向输出端点,表明使用端点ep2;
c)检查fifo是否空,当empy=1时
0 引 言
usb(通用串行总线)是英特尔、微软、ibm、康柏等公司1994年联合制定的一种通用串行总线规范,它解决了与网络通信问题,而且端口扩展性能好、容易使用。最新的usb2.0支持3种速率:低速1.5 mbit/s,全速12 mbit/s,高速480 mbit/s。这3种速率可以满足目前大部分外设接口的需要。
本文介绍了目前使用较多的usb2.0控制器cy7c68013芯片与fpga(现场可编程门阵列)芯片接口的verilog hdl(硬件描述语言)实现。本系统可扩展,完全可用于其他高速数据采集系统中。
1 系统构成
本系统主要是由fpga和usb2.0控制器cy7c268013组成,系统框图及其信号连接关系如图1所示。可以根据实际系统的需要,用fpga实现预定功能,如数据采集卡、控制硬盘读写等。
1.1 控制器cy7c68013
cypress公司的ez-usb fx 2是第一个包含usb2.0的集成微控制器,它内部集成了1个增强型的8051、1个智能usb串行接口引擎、1个usb数据收发器、3个8位i/o口、16位地址线、8.5 kb ram和4 kbfifo等。增强性8051内核完全与标准8051兼容,而性能可达到标准8051的3倍以上。其框图如图2所示。
1.1.1 cy7c68013结构特点
ez-usb fx2提供了一种独持架构,使usb接口和应用环境直接共享fifo,而微控制器可不参与数据传输,但允许以fifo或ram的方式访问这些共享fifo,这种被称之为"量子fifo"的处理架构,较好地解决了usb高速模式的带宽问题。
fx2芯片在数据传输时主要利用了4 kb的fifo,分为7个端点:epoin&out、ep1in、ep1out、ep2、ep4、ep6和ep8。其中epo、eplin和ep1out是3个64 b的缓存,只能被固件访问,ep0是一个默认的数据输入输出端口缓存;ep1in和ep1out是单独的64 b缓存,呵以配置这些端点为块传输、中断传输或同步传输;端点2、4、6、8是大容量高带宽的数据传输端点,可以配置为各种带宽以满足实际需要,端点2、4是输出端点,端点6、8是输入端点。值得注意的是,端点4、8能配置为每帧512 b,而端点2、6却能配置为每帧512 b或1 024 b,并可配置为2、3、4级,这样ep2或ep6最大能配置为4 kb的缓存。
其在内部的传输控制是通过full(满)和empty(空)两个控制信号来完成的,当full为真时不能再写数据,当empty为真时不能再对fifo进行读,其内部数据传输示意图如图3所示。
如图3所示,usb执行out传输,将ep2端点设成512 b四重fifo。在usb端和外部接门端都并不知道有四重fifo。usb端只要有1个fifo为"半满",就可以继续发送数据。当操作的fifo写"满"时,fx2自动将其转换到外部接口端,排队等候读取;并将usb接口队列中下一个为"空"的fifo转移到usb接口上,供其继续写数据。外部接门端与此类似,只要有1个fifo为"半满",就可以继续读取数据。当前操作的fifo读"空"时,fx2自动将其转换到usb接口端,排队等候写入;并将外部接口队列中下一个为"满"的fifo转移到外部接口上,供其继续读取。
1.1.2 fx2接口方式
fx2有slave fifo和gpif两种接口方式。
slave fifo是从机方式,即fx的cpu不直接参与usb数据处理,而是简单地把fx作为usb和外部数据处理逻辑(如asic、dsp和ide(串行接口引擎)控制器)之间的通道,数据流并不经过cpu,而是通过fx的fifo直接传输。fifo通过外部主机控制,同时,fifo提供所需的时序信号、握手信号(满、空等)和输出使能等。
可编程接口gpif是主机方式,gpif作为内部主机控制端点fifo,其core是一个可编程状态机,可以生成多达6个控制输出信号和9个地址输出信号,能外接6个外部ready输入信号和2个内部ready输入信号。通过用户自定义的波形描述符来控制状态机,使用软件编程读写控制波形,几乎可以对任何8/16 hit接口的控制器、存储器和总线进行数据的主动读写,非常灵活。
2 接口的verilog hdl编程实现
在本设计巾采用slave fifo从机方式实现fpga对fx的控制,通过verilog hdl编程实现。fpga可以根据实际情况选定。我们在设计时选用xilinx公司的virtex-ⅱ设备(xc2v10004fg456c)。
2.1 异步fifo读数据
fx读数据也就是数据从fx传到fpga的过程,其过程如下:
a)反复检测控制线状态,当读事件发生时,即控制线con_out_z=0和rd_disk=10时,转到 b;
b)分配fifoadr[1:0]=00,这时fifo指针会指向输出端点,表明使用端点ep2;
c)检查fifo是否空,当empy=1时
深圳服务热线:13751165337 13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式