由于该芯片支持480Mbps高速传输,为本设计传输提供了传输速率的保证。FPGA与CY7C68013的连接图如图3所示。
图3FPGA与CY7C68013的连接图
CY7C68013设置为SlaveFIFO模式,即设置IFCONFIG寄存器中IFCFG[1:0]=11。本设计数据传输采用异步SlaveFIFO方式,因此接口时钟IFCLK采用内部48MHZ时钟。为方便传输,数据总线FD配置为16bit,与FPGA的FIFO宽度相同。 是SlaveFIFO数据输出使能信号。 与 分别为SlaveFIFO读使能信号与写使能信号。FIFOADDR[1:0]用于选择端点,当FIFOADDR[1:0]=00时选中EP2,当FIFOADDR[1:0]=10时选中EP6。
FLAGA、FLAGB、FLAGC脚可通过FINFLGSAB、PINFLAGSCD寄存器来选择它工作在索引模式和固定模式。本设计中被设置为固定模式。其中FLAGA表示EP2的FIFO_EMPTY,FLAGB表示EP6的FIFO_FULL。
2.3USB接口芯片
本设计使用容量为16Kbit的EEPROM芯片AT24C016A设置CY7C68013的VID与PID。在CY7C68013上电并脱离复位状态后,内部逻辑会检查I2C端口上是否连接有串行EEPROM,如果有则判断连接上的EEPROM第一个字节是0xC0还是0xC2。本设计设置EEPROM第一个字节为0xC0,设置VID=0x1234,PID=0x2211,DID=0x0001。在这种情况下,由CY7C68013内核提供USB描述符,使用EEPROM存储的VID/PID/DID值替换CY7C68013内部的值,并设置RENUM=0。设这样,在重新设备列举后,芯片内的程序代码会以全新的自定义设备来加以呈现。
3FPGA软核设计
FPGA内部控制单元分别由三个软核负责完成,他们分别为ADC接口控制单元,FIFO控制单元与USB传输控制单元。其中三个软核连接示意图如图4所示。
图4FPGA内部软核连接示意图
3.1ADC口控制单元
ADC接口控制单元控制数据采集的启停和传输。数据采集开始时ADC接口控制单元将时钟信号分频为30MHz供ADS800作转换时钟ADC_CLK使用。此时控制单元内寄存器CLK_CNT对ADC_CLK进行周期计数,当第7个时钟上升沿(ADS800转换延时为6.5个时钟周期,延时半个时钟周期为了使数据转换稳定)到来即CLK_CNT=7时,CLK_CNT清零,FIFO写时钟FIFO_WR_CLK输出,同时FIFO_WR_EN置高电平,ADC转换的数据补齐16bit后随时钟FIFO_WR_CLK上升沿存入FIFO中。ADC接口控制单元状态机工作过程如下:
(1)当FPGA上电或者复位后,状态机进入空闲状态(IDEL);
(2)在空闲状态下,当FIFO不满(FIFO_FULL=0)且ADC_START=1时,状态机进入转换状态(CONVERT),此时ADC_CLK输出ADC数据转换时钟;
(3)在转换状态下,当FIFO_WR_EN=1即数据转换延时结束时,状态机进入写状态(WRITE),此时,CLK_CNT清零,ADC_OE置高电平,FIFO_WR_EN置高电平,FIFO_WR_CLK输出FIFO写时钟;
(4)在任何状态下,如果FIFO已经写满(FIFO_FULL=1)或者ADC_START=0时,自动跳转到空闲状态。
ADC接口控制单元状态机示意图如图5所示。

图5ADC接口控制单元状态机示意图
3.2FIFO控制单元
本设计首先使用FPGA内部BlockRAM生成FIFO。由于A/D接口控制单元输出数据为16bit,FIFO宽度设置为16bit,深度设置为4K-bit。FIFO可以使用ISE套件中的COREGENERATOR生成。、由COREGENERATOR生成的FIFO软核配合控制部分构成FIFO控制单元。FIFO控制单元内部结构示意图如图6所示。

图6FIFO控制单元内部结构示意图
由于本设计中数据采集系统处于异步SlaveFIFO模式,且EZ-USBFX2读数据的速度与ADC数据写入FIFO的速度不同,FIFO软核上FULL与EMPTY两信号线可以分别指示FIFO满与空的状态,解决了因读写速度不同而可能带来的数据读写错误问题。当FIFO处于满状态时,FIFO_FULL信号置高电平,由ADC控制单元通知ADC停止采集数据。当FIFO处于空状态时FIFO_EMPTY信号置高电平,由USB接口控制单元通知EZ-USBFX2停止读FIFO。FIFO的读时钟(FIFO_RD_CLK)与读使能(FIFO_RD_EN)信号由USB接口控制单元提供,写时钟(FIFO_WR_CLK)与写使能(FIFO_WR_EN)信号由ADC接口控制单元提供。 2/4 首页 上一页 1 2 3 4 下一页 尾页 |