首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» FPGA在多串口读数系统中的应用
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
FPGA在多串口读数系统中的应用
发短消息
加为好友
yuchengze
当前离线
UID
1062083
帖子
5837
精华
0
积分
2921
阅读权限
70
在线时间
222 小时
注册时间
2016-6-30
最后登录
2018-9-9
金牌会员
UID
1062083
性别
男
1
#
打印
字体大小:
t
T
yuchengze
发表于 2016-8-23 12:23
|
只看该作者
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的核心是一个可编程的状态机,通过对其进行编程可以实现多种协议,功能非常强大。
本设计中68013与FPGA之间的接口即采用GPIF模式,基本的运行模式为:68013每启动一次GPIF读波形,便从FPGA中读取512个字节的数据,然后FPGA自动切换FIFO号。在程序设计时可以在GPIF中断函数中设置一个标志,这样CPU模块在检测到这个标志后表明对该FIF0的操作已完成,应该切换FIF0了,该标志信号使用PA4引脚来发出,具体说明见见表1。
5个FIFO的具体操作如下:系统上电后先复位各FIFO,并使各FIFO处于关闭状态,然后判断是否为读状态,如果不是则循环判断,如果为读状态,则使能各FIFO;由于默认操作在FIF0l,所以判断FIF01的0K信号是有效,如果有效,则判断PA4引脚是否为‘0’,如果为‘0’则置RDYO为l,68013判断到此信号后启动一次GPIF波形读取512字节的数据,并在读完后将PA4置1,表示数据已经读取完毕,CPU模块在判断到PA4为1后将RDYO置O,然后将操作对象切换至FIF02,接着判断FIF02的OK信号是否有效,具体操作同FIF01,具体流程见图3。
注意:为了保证数据读取时的畅通无阻,在判断四个FIF0的OK信号时,应该采取轮循的判断方式,即当FIF01 的OK信号无效时应该转去判断FIF02的0K信号,而不能死等FIF01的0K信号有效,这样可以有效防止因某个单片机或某个外部设备的故障而出现的读数停滞现象。
3 结束语
经过长时间的工作表明,该读数系统能稳定地进行数据的上传,满足实际需要。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
测试测量
MCU 单片机技术
DSP技术
X86
无线技术
数字电路
嵌入式技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议