新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种基于ARM和FPGA的环形缓冲区接口设计

一种基于ARM和FPGA的环形缓冲区接口设计

作者:时间:2013-07-15来源:网络收藏

2.3 接收程序设计
数据的接收同样包括端和FPGA端两部份程序,相互配合共同完成从FPGA读取数据帧的流程。FPGA端的程序主要有两个任务,一是负责把从物理层接收到的数据帧写入接收缓冲区中,并向发出中断请求接收数据帧,另一个是在得到ARM接收完毕确认后处理好接收缓冲区的空间释放;ARM端的程序负责从FPGA接收缓冲区中读取数据帧。
接收部分FPGA端仍然是利用子缓冲空间的忙闲状态与读写指针的变化来控制数据帧的写入和读取,并实现接收完来自物理层数据帧后向ARM发出发起中断,当ARM读取数据帧后释放子缓冲区空间,程序结构如图6和图7所示。

本文引用地址:http://www.eepw.com.cn/article/148003.htm

f.jpg


接收部分ARM端的程序流程如图8所示,当ARM接收到FPGA的中断后,判断是否有数据帧要上传,若不是则不做任何处理;若是则从统一编址的接收缓冲区读取数据帧,然后向FPGA发出接收完毕指示以便于FPGA及时释放相应的子缓冲空间。

g.jpg



3 测试结果
本方案在实验室自行开发设计的BCNG2440宽带无线收发平台上进行了测试运行。该平台主要由Samsung公司S3C2240型的ARM CPU和Xi-linx公司的V5系列SX95T型FPGA组成。物理层最高速率为1Mb/s,通过变化来自应用层的数据包大小和的间隔来改变用户速率,用以测试
ARM和FPGA的数据缓冲区和匹配功能。实际测试和运行表明,此方案是有效而合理的。

h.jpg


以发送缓冲区设计为例,图9给出了用chipscope观察该部分设计方法的正确性。ARM发送数据帧到发送缓冲区后FPGA的内部变化如图7所示。可以看到ARM发送的数据帧写入了FPGA中序号为13的子缓冲空间,结束时写指针(nTxBuffWNum)递增指向了序号为14的子缓冲空间,同时序号为13(实际上是第14个,这是由于序号是从0到15)的子缓冲空间被标示为占用。从图中也可以看到前面写入的数据帧已经发送,其它子缓冲空间都为空闲状态,读指针(nTxBuffRNum)也是正常变化的。
应该指出的是,本方案具备良好的扩展性。通过改变子缓冲区的数目和子缓冲区的大小,可以用来对不同的应用情况进行速率匹配。

4 结语
本文介绍了基于ARM和FPGA的的设计方法,实现简单并便于扩展。测试结果表明此方法能实现ARM和FPGA之间数据的有效传输。对网络协议的实现具有重要的参考价值。

fpga相关文章:fpga是什么



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭