FPGA在多串口读数系统中的应用
O 引言
本文所设计的读数系统主要为解决上传数据慢的问题,具体的背景如下:目前已设计一小型弹载记录器,采用单片机+FLASH的结构,FLASH容量为lGB,为了最大限度地减少记录器的外部接口数据线的数量,采用异步串行通信方式上报数据。单片机选用了Silabs公司混成集成芯片C8051F060,该单片机UARTl最高波特率可以达到系统时钟的一半,也即如果晶体振荡器采用14MHz,那么波特率理论值可以达到7Mbps,有效数据传输速率可达700kbps,但由于记录器需要从FLASH读取数据,而每读出一页的数据需要等待约20us的时间,所以上传数据为非连续性的传输,经实际测试发现,波特率为7Mbps时实际的数据上传速率仅为300kbps左右,如果上传1GB的数据就需要至少56分钟的时间,如果需要上传数套记录器数据的时候,就显得尤为浪费时间。为了解决这个问题,本文设计了一个读数系统,该系统通过增加每次上传的记录器的数量来提高读数系统的资源利用率,以5套记录器同时上传来计算,56分钟内可以上传5GB的数据,平均每套的上传时问仅为12分钟,提高了数据上传效率。系统框图见图l。
其中USB接口控制器选用CYPRESS公司的CY7C68013A,该芯片是Cypress公司推出的新一代高速EZ—USB FX2系列芯片;单片机部分选用C8051F060芯片;主控FPGA选用XILINX公司SPARTAN—IIE系列芯片XC2S100E一PQ208。
FPGA作为主控制中心,主要负责接收68013发送的状态指令,并将状态下发到各单片机及相应的外部设备,五个单片机分别负责通过串口接收外部设备的串行数据,并将其并行写入FPGA,68013除了从FPGA中读取数据外,还需要将计算机下发的控制命令发送到FPGA。
1 FPGA内部FIF0设计
由于本项目所用FPGA芯片内部RAM共有40Kbit,所以可构成1KB×5的FIF0结构,即可构成5个深度分别为1KB的FIFO,分别作为5个单片机上传时的数据缓冲,具体逻辑框图见图2。CPU模块主要负责五个FIF0之间的切换,5个FIFO采用相同的结构,限于篇幅,本文不详细介绍FIF0的具体设计,只给出5个FIF0与CPU模块之间的逻辑关系。5个FIFO分别给出两个状态信号,一个是OK,该信号表示FIFO已经准备好数据,可以进行读取操作,另一个信号为Req,该信号通知单片机该FIFO已经几乎空,可以向该FIF0写入数据,其中几个关键信号的具体用途如下表l所示:
2 FIF0切换
GPIF接口是EZ—USB FX2系列单片机提供的一个可由用户编程的接口,具有高速、灵活等特点,可方便地实现与各种外设之间的无缝连接。GPIF的核心是一个可编程的状态机,通过对其进行编程可以实现多种协议,功能非常强大。
相关文章
- 2023-12-21基于SolidWorks的深孔件冷挤压工艺设计
- 2024-01-26常压储罐声发射及漏磁检测技术
- 2023-12-26基于EdgeCAM的数控加工技术在模具加工中的应用
- 2024-09-17一种索支撑柔性结构轨迹跟踪控制方法
- 2023-10-27光电跟踪测量系统中调光机构的设计
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。