基于FPGA的自定义总线MCMB的设计与实现
扫描二维码
随时随地手机看文章
摘要:针对现在对机载数据采集系统中总线技术的要求,采用Altera公司的CycloneIII系列FPGA EP3C40F484,在数据采集系统中实现了自定义数据采集总线MCMB的设计。通过Modelsim进行功能仿真,并利用QuartusⅡ自带的仿真软件SignaltapⅡ在FPGA上调试验证总线IP核设计的正确性。
关键词:自定义总线MCMB;机载数据采集系统;Modelsim;QuartusⅡ
机载数据采集系统由于其特殊的应用环境,对数据采集的要求较高。飞机一般都在高速、高空、高温环境下飞行,所以机载数据采集系统不仅要加大系统可靠性和电磁兼容性方面的设计,还要针对数据采集种类多、时间长、数量大、精度高等要求作更多特殊处理。可编程逻辑器件(FPGA)能将传统数据采集系统中的很多外围设备和分立元件集成,减小系统的体积,同时还具备系统在线编程的能力,使系统的维护、开发、更新变得更加方便。这些特性较好的解决了机载系统对产品重量轻、体积小、可靠性高、复杂度高等要求。
随着计算机技术的发展,出现了许多优秀的总线技术,PCI总线和Wishbone总线就是其中的杰出代表。本文在对PCI总线和Wishhone总线研究的基础上,在FPGA内部设计实现了一种符合应变参数结构、适用于机载大量数据快速稳定传输的总线,在数据采集系统内部以IP核的形式实现了分布式数据采集总线(MCMB总线),真正达到高效、高速的数据双向传输。
1 数据采集系统的整体设计
系统整体系统框图如图1所示。
机载数据采集系统采用模块化的设计思想,将机载分布式数据采集系统分为主控制单元、供电单元、总线中继单元、远程控制单元、传感器单元这几个模块。供电单元负责给整个系统提供所需电源。远程控制单元负责接收主控制器发送的信息并对其进行处理。当需实现远距离传输时,在远程终端处增加中继单元,延长通信距离。传感器负责采集外部实时参数并经远程模块上传至主控制器。主控制器控制整个数据采集系统的工作,一个主控制器可以连接多个远程终端,通过自定义的MCMB总线实现数据的采集和控制,完成对端点数据的采集。下面详细介绍自定义MCMB总线IP核的设计。
2 MCMB总线IP核整体设计
MCMB总线IP核的整体设计分为SMC接口模块和MCMB主桥接口模块两个部分。SMC接口模块实现ARM的SMC总线到Wishbone总线的转换,MCMB
主桥接口模块实现的是Wishbone总线到MCMB总线的转换。这里我们将对这两个设计部分做详细介绍。
(1) SMC接口模块
实现SMC总线到Wishbone总线的转换,SMC总线至Wishbone总线接口转换模块如图2所示。
该模块的信号转换可以分为以下三种:
1)数据地址线
地址线上将SMC总线的地址线SMC_A[15..0 ]译码成Wishbone地址总线ADR_O[15..0]。数据线上使SMC总线的输入输出复用数据线SMC_D转换成两个分开的单个输入输出信号DAT_O[15..0]和DAT_I[15..0]。
2)控制信号
当ARM发起SMC总线操作时,我们根据SMC总线操作的类型,译码得到以下输出控制信号:WE_O、 CYC_O、 SEL_O[3..0]、 CTI_O[2..0]、STB_O和BTE_O[1..0]。
SMC总线的读写命令分别为NRD和NWE。当NWE为低时,表明当前操作是写操作。NRD为低时,表明当前操作是渎操作。Wishbone总线的WE_O信号只在写操作时有效,所以当FSC0和NWE都有效时,便将WE_O信号置1,证明这是一个有效的写操作,当FCS0有效但NEW为低时,为读操作。
CYC_O有效表示Wishbone总线事务的开始。当ARM发起SMC总线操作时,可由SMC总线的FCS0信号译码得到。
SEL_O[3..0]代表Wishbone数据总线上的有效位。在系统的设计中将SEL_O[3..0]置全1,表明数据线上的每一位数据郜一直有效。
CTI_O[2..0]译码Wishbone总线的操作是单字操作和块操作。选择SMC总线地址线A[17]和A[18],A[17]定义为SMC_LAST;A[18]定义为SMC_BURST。这两个信号用于对CTI_0 [2..0]的译码。当进行单字读写操作时,SMC_LAST和SMC_BURST均为低,CTI_O [2..0]译码为111;当进行块读写操作并且不是最后一个数据相时,SMC_LAST为低,SMC_BURST为高,CTI_O[2..0]译码输出010;当进行块传输且为最后一个数据相时,SMC_LAST和SMC_BURST均置为高,CTI_O[2..0]译码输出111,代表块传输操作的结束。
3)响应信号译码
当外设和MCMB总线进入等待状态时,需要产生NWAIT信号;当外设和MCMB总线状态异常时,需要产生中断信号。
Wishbone主模块有三个输入的响应信号,分别为ACK_I、ERR_I、RTY_I。当外设不能及时响应当前操作时,需要在SMC总线上插入等待周期。NWAIT是SMC总线的等待信号。当NWAIT为0时,ARM保持当前SMC总线操作,直到撤销NWAIT为止。
(2) SMC主桥接口模块
实现Wishbone总线到MCMB总线的转换,主要是对MCMB总线的各种状态进行译码,并将译码结果与上面的Wishbone从模块进行对接。模块如图3所示。
①数据地址
Wishbine从模块的地址和数据的输入输出是分开的,但在MCMB总线上,地址和数据复用一个线,在这主桥中有个译码逻辑,将数据和地址进行转换。即将ADR_O [15..0]、DATA_I [15..0]和DATA_O [15..0]译码为AD [15..0]。
②控制信号
在MCMB事务的地址相期间,C/BE[2..0]代表总线命令。MCMB支持7种总线操作。在地址相,需要对Wishbone侧总线的命令进行译码,转换成MCMB总线C/BE [2..0]的命令再输出至从设备。此处的译码逻辑和空间地址配置有关,Wishbone从模块将读写信号发送到MCMB总线模块,MCMB模块根据地址线上的地址译码,进行空间的选择,确定操作的类型,并译码出操作的命令C/BE[2..0]信号。
FRAME由主设备驱动,表示一个总线事务的开始和持续。Wishbone从模块通过读写信号告诉MCMB总线操作的开始,FRAMF有效,指总线操作正在开始;FRAME保持有效,数据传送继续进行;当操作完成时FRAME无效时,表明操作已处于最后一个数据相;FRAME保持无效,表示该操作已完成。这些操作的译码过程均在MCMB总线模块中完成。
IRDY由总线主设备驱动,写操作时,IRDY#表示主设备已把写数据放在了AD [15..0]上;读操作时,IRDY#表示主设备已准备好接收数据线上的数据。
TRDY#由目标设备驱动,表示目标设备准备好完成现行数据传输。写操作时,TRDY#表示目标设备已准备好接收数据;读操作时,TRDY#表
示目标设备已将数据放在了AD [15..0]上。在TRDY#有效的那一个时钟的上升沿,数据传送开始并结束该数据传输,此时如果TRDY#无效,则认为是插入等待周期。
DEVSEL#由目标设备驱动,表示一个目标设备已对地址传输里主设备发出的地址进行了译码并认领了该操作,成为有效的目标设备,主设备根据该信号确定是否有一设备被选中,从而发起读写操作。
3 仿真结果分析
经过HDL语言仿真软件ModelSim仿真,利用Altera公司推出的调试工具Signal TapⅡ的逻辑分析仪进行软件调试。仿真的操作为从设备单字读写操作。通过对从设备读写的仿真和分析来验证MCMB总线IP核设计的正确性。
上位机可以对从设备的存储空间进行读写操作,当上位机发起写操作时,SMC总线地址线上的目标地址必须在从设备的存储空间范围内。图4是写入从设备存储空间操作总线IP核MCMB总线侧的时序。SMC_A[15..0]是一个有效地址传输,上位机有效片选SMC_FSC0,表明SMC总线事务开始。同时上位机有效SMC_WE和SMC_D [15..0]给出写入目标地址的有效数据。上化机发起写操作,等待从设备响应。当从设备准备好时,有效TRDY#信号,通知上位机从设备准备好,开始写操作。
图5是从设备读操作的时序图。SMC_A[15..0]给出一个有效地址传输,上位机有效片选SMC_FSC0,表明SMC总线操作的开始。上位机肯定SMC_RD,表明SMC总线的读操作类型,并进入等待状态。此时发起读操作,等待从设备响应,因为读操作时间较长,所以存在较长的等待周期,不能像写操作那样快速的响应,等待周期较长,当从设备准备好数据并返回到MCMB总线时,肯定TRDY#信号,告诉总线数据已经准备好,总线将数据取出,返回上位机,完成一个读操作。当等待周期,超过七个周期时,以从设备超时完成这个读操作,防止上位机挂死,一直等待数据的返回。
通过上面的仿真结果可以看出,本文设计的MCMB总线能够较好地完成数据的采集和传输,满足预先的设想,最后通过在整个机载信息采集系统上的测试来验证MCMB总线的可行性,结果表明本文设计的MCMB总线可以较好的完成机载数据的采集任务,满足现代机载采集系统对总线的要求。
4 结束语
本文主要讨论了基于FPGA的数据采集总线MCMB在机载数据采集系统中的设计,通过在Modelsim下的仿真,下载到FPGA中进行调试,验证了MCMB总线IP核设计的正确性。实现了分布式的主、从设备之间的总线接口MCMB,适用于机载大量数据快速稳定传输,真正达到高效、高速的数据双向传输。