打印
[FPGA]

基于FPGA的ARM并行总线研究与仿真

[复制链接]
1353|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梅花望青竹|  楼主 | 2013-8-24 23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0 引言
在数字系统的设计中,FPGA+ARM的系统架构得到了越来越广泛的应用,FPGA主要实现高速数据的处理;ARM主要实现系统的流程控制。人机交互。外部通信以及FPGA控制等功能。I2C、SPI等串行总线接口只能实现FPGA和ARM之间的低速通信;当传输的数据量较大。要求高速传输时,就需要用并行总线来进行两者之间的高速数据传输。

下面基于ARM处理器LPC2478以及FPGA器件EP2C20Q240,以ARM外部总线的读操作时序为例,研究两者之间高速传输的并行总线;其中,数据总线为32位;并在FPGA内部构造了1024x32bits的SRAM高速存储缓冲器,以便于ARM处理器快速读写FPGA内部数据。


1 ARM并行总线的工作原理

ARM处理器LPC2478的外部并行总线由24根地址总线。32根数据总线和若干读写、片选等控制信号线组成。根据系统需求,数据总线宽度还可以配置为8位,16位和32位等几种工作模式。

在本设计中,用到ARM外部总线的信号有:CS.WE.OE.DATA[310].ADDR[230].BLS等。CS为片选信号,WE为写使能信号,OE为读使能信号,DATA为数据总线,ADDR地址总线,BLS为字节组选择信号。ARM的外部总线读操作时序图,分别如图1所示。




根据ARM外部并行总线操作的时序,ARM外部总线的读写操作均在CS为低电平有效的情况下进行。由于读操作和写操作不可能同时进行,因此WE和OE信号不能同时出现低电平的情况。

数据总线DATA是双向的总线,要求FPGA也要实现双向数据的传输。在时序图中给出了时序之间的制约关系,设计FPGA时应该满足ARM信号的建立时间和保持时间的要求,否则可能出现读写不稳定的情况。

相关帖子

沙发
梅花望青竹|  楼主 | 2013-8-24 23:54 | 只看该作者
2 FPGA的并行总线设计

2.1 FPGA的端口设计

FPGA和ARM之间的外部并行总线连接框图,如图2所示。由于FPGA内部的SRAM存储单元为32位,不需要进行字节组的选择,因此BLS信号可以不连接。为了便于实现ARM和FPGA之间数据的快速传输,FPGA内部的SRAM既要与ARM处理器进行读写处理,还要跟FPGA内部的其他逻辑模块进行数据交换,因此SRAM采用双口RAM来实现。




从端口的方向特性看,DATA端口是INOUT(双向)方式,其余端口均为IN(输入)方式。从端口的功能看,clk20m是全局时钟,在实现时应采用FPGA的全局时钟网络,这样可以有效减少时钟延时,保证FPGA时序的正确性。ADDR是16位的地址总线,由ARM器件输入到FPGA。DATA是32位的双向数据总线,双向总线的设计是整个设计的重点。OE为ARM输入到FPGA的读使能信号。

WE为ARM输入到FPGA的写使能信号。CS为ARM输入到FPGA的片选信号,FPGA没有被ARM选中时必须输出高阻态,以避免总线冲突。

使用特权

评论回复
板凳
梅花望青竹|  楼主 | 2013-8-24 23:54 | 只看该作者
2.2 FPGA的双向总线设计

在FPGA的并行总线设计中,如果顶层和底层的模块都要用到双向的IO端口,则要遵守设计原则;否则不利于VHDL程序的综合。双向IO端口的设计原则是:只有顶层设计才能用INOUT类型的端口,在底层模块中应把顶层的INOUT端口转化为独立的IN(输入)。OUT(输出)端口并加上方向控制端口。顶层设计的VHDL代码如下:




其中,DATA_i.DATA_o和output_en均为FPGA内部的信号,在内部的各层次模块中,通过这三个信号就可以进行单向的IO控制。这样,顶层设计中双向的DATA端口转化为了内部单向的DATA_i(输入)。DATA_o(输出)和output_en(输出使能)。在内部各模块中,结合这三个信号以及ADDR。OE。WE。CS等信号,则可方便地实现ARM总线接口的功能。实现的VHDL关键代码如下:




使用特权

评论回复
地板
梅花望青竹|  楼主 | 2013-8-24 23:54 | 只看该作者
3 仿真结果分析

通过QuartusII仿真工具,对FPGA并行总线进行时序仿真;仿真结果如图3所示。根据ARM并行总线的读写时序图要求,从仿真结果可以看出FPGA的总线接口设计满足了设计的要求。由于选用的FPGA器件内部带有逻辑分析仪的功能模块,通过QuartusII软件中的SignalTapII逻辑分析工具,对FPGA的设计模块进行在线测试,发现总线时序了满足ARM并行总线的要求,且工作稳定,从另一个角度验证了设计和仿真结果的正确性。




4 结论

由于FPGA技术和ARM技术应用越来越广泛,通过设计并行总线接口来实现两者之间的数据交换,可以较容易地解决快速传输数据的需求,因此设计满足系统要求的FPGA并行总线显得尤为重要。本文设计的FPGA的ARM外部并行总线接口,满足了总线的时序要求,并在某航空机载雷达应答机中进行了应用,系统运行稳定,性能良好。以上的设计和仿真方法,对其他类似的设计也有一定的参考作用。

使用特权

评论回复
5
GoldSunMonkey| | 2013-8-24 23:55 | 只看该作者
不错,感谢啊

使用特权

评论回复
6
星星之火红| | 2013-8-25 20:36 | 只看该作者
学习啦

使用特权

评论回复
7
星星之火红| | 2013-8-25 20:36 | 只看该作者
感谢分享啊

使用特权

评论回复
8
GoldSunMonkey| | 2013-8-25 20:51 | 只看该作者
星星之火红 发表于 2013-8-25 20:36
感谢分享啊

你也像小梅版主学习一下啊

使用特权

评论回复
9
GoldSunMonkey| | 2013-8-25 20:52 | 只看该作者
多过来帮忙分享一些东西啊

使用特权

评论回复
10
梅花望青竹|  楼主 | 2013-8-25 23:50 | 只看该作者
GoldSunMonkey 发表于 2013-8-25 20:52
多过来帮忙分享一些东西啊

其实有猴哥一个人就够了的。

使用特权

评论回复
11
GoldSunMonkey| | 2013-8-26 21:06 | 只看该作者
梅花望青竹 发表于 2013-8-25 23:50
其实有猴哥一个人就够了的。

众人拾柴火焰高啊

使用特权

评论回复
12
GoldSunMonkey| | 2013-8-26 21:06 | 只看该作者
;P

使用特权

评论回复
13
xiao6666| | 2013-8-26 21:20 | 只看该作者
不错啊

使用特权

评论回复
14
xiao6666| | 2013-8-26 21:21 | 只看该作者
感谢分享啊

使用特权

评论回复
15
GoldSunMonkey| | 2013-8-28 23:10 | 只看该作者
xiao6666 发表于 2013-8-26 21:21
感谢分享啊

有什么心得么??

使用特权

评论回复
16
GoldSunMonkey| | 2013-8-28 23:10 | 只看该作者
期望的心得

使用特权

评论回复
17
feihong777| | 2013-8-29 21:32 | 只看该作者
学习啦

使用特权

评论回复
18
yghanwuji| | 2013-12-25 10:28 | 只看该作者
感谢啊,这个应用很广泛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

2589

帖子

7

粉丝