基于有限状态机的FPGA DSR路由表项设计和实现方法

0 引言
ad hoc[1]网络具有无中心控制节点、路由多跳、拓扑动态等特点,可以用于不能预设网络设施的场合和需要快速自动组网的场合,例如:战场、无人烟山区、救灾现场等[2]。因此ad hoc网络在当今社会具有非常广泛的应用场景。
动态源路由协议(dynamic source routing)[3]是一种按需路由协议,是十分适用于ad hoc网络的路由协议。在dsr协议中,路由表的表项都是按需建立的。路由过期或链路断开,表项就失去作用了。为减少路由不断建立而产生的网络开销,按需建立的路由都由源节点存储,用于与目的节点通信[4]。因此dsr协议的核心是管理各节点之间通信的路由表项。
目前,国内外针对ad hoc网络的研究大多是基于软件的,使用的软件平台有ns2、glomosim、opnet等。因此,dsr协议的核心功能——路由表项管理,也是基于软件完成的。目前为止,还未有基于fpga实现dsr路由表项管理的先例。
使用硬件实现 dsr协议功能将减少功耗和延迟时间,延长移动设备的电池使用时间[5]。ad hoc网络中,通过硬件与嵌入式芯片联系在一起,使得操作速度的增加与功耗降低,处理时间还可以用于其他操作[6]。此外,使用硬件实现dsr协议可以更快地建立呼叫和更改动态拓扑[7]。因此,使用fpga实现dsr路由表项管理具有很好的实际用途。
本文为在fpga中支持dsr协议的路由表项管理功能,设计一种基于有限状态机[8]的实现方法。本文的设计中,状态机包含一个初始状态和3个功能状态。有限状态机的3个功能状态一起联合实现路由存储、路由查找、路由删除的功能。有限状态机使得硬件代码符合时序电路的风格。此外,综合后的代码在电路物理实现时使得时延特性与功耗更加优化[9]。
1 dsr路由表项管理的实现
1.1 总体方案
总体方案如图1所示,设计分为两个部分:路由管理有限状态机模块以及路由管理模块。有限状态机根据需求跳转到不同的功能状态,生成不同的操作使能,用以驱动路由管理模块对路由表项进行添加、查找、删除。路由管理模块完成对路由表项的操作后,有限状态机从现有状态跳转回初态。
1.2 路由管理有限状态机
路由管理有限状态机的设计是基于dsr协议,有限状态机的状态跳转如图2所示。若需要查找一条路由时,状态机从idle状态跳转到路由查找状态并生成路由查找使能,当状态机收到查找操作结束信号时,状态机跳转到idle状态;若需要删除路由时,状态机从idle状态跳转到路由删除状态并生成路由删除使能,当状态机收到删除操作结束信号时,状态机跳转到idle状态;若需要存储一条路由时,状态机从idle状态跳转到路由缓存状态并生成路由存储使能给路由管理模块,当状态机收到路由存储操作结束信号时,状态机跳转回idle状态。
1.3 路由管理模块
路由管理模块具体细化为4个模块:生存周期模块、路由写模块、路由读模块、路由删除模块。路由管理模块对路由表项的管理是通过对路由bd(buffer description)以及它的地址进行操作完成的。bd包含路由的某些信息,例如:该路由所导向目的节点ip地址、路由长度、路由表项存储单元的起始地址。根据一个bd就可以读取一条完整路由。
(1)路由写模块存储路由与生成该路由的bd。需要存储一条路由时,模块将该路由存储于rt表一个空条目(条目容量为16个周期数据长度)。同时生成一个新bd存入bd表。
(2)路由读模块完成两个功能:①读取一条有效路由;②查收所有包含断开链路的有效路由并反馈给路由删除模块。
(3)生存周期模块包含256个计数器(网络只支持256个节点),为每个新bd设置生存周期。
(4)路由删除模块维护一个有效bd地址的单向链表。路由存储时,将包含新bd地址的表项插入链表;路由查找时,查找一个有效bd地址;路由过期时,从链表中删除该条路由的有效bd地址表项;路由删除时,删除包含断开链路的路由有效bd地址的表项。
路由存储时,将路由存于rt表一个空条目。同时生成一个对该条目进行描述的bd并存于bd表中;它的地址被插入链表中,并为它设定生存周期。
路由管理原理如图3所示。查找路由时,首先读取链表尾条目,根据有效bd地址读取bd表一个有效bd,比对目的节点地址。若匹配,根据rt长度与有效rt地址读取rt表一条完整的路由。若不匹配,则根据链表指针读取链表的前一个条目,然后重复上面所述的操作,直到目标路由或者查完链表。路由过期即路由的bd过期,将包含该bd地址的条目从链表中删除。路由删除时,需要重复路由查找过程,读取全部有效路由,并逐条比对是否包含断开链路。将包含断开链路的bd地址条目从链表中剔除。删除操作完成后,更新后一个条目的链表指针,使得链表完整。
2 实验仿真与分析
2.1 总体功能仿真
图4是路由存储仿真结果。标号①是存储的路由信息,store_route_en是路由存储的使能,hop[31:0]路由数据周期数,did[31:0]目的节点地址,data_route[31:0]是路由数据。
图5、图6是路由查找仿真结果。did_to_rd_rt[31:0]是目的节点地址。标号③与标号④分别是存储与读取的路由数据,两者是一样的,故路由查找结果正确。
图7与图8是路由删除仿真结果。标号①是存储的路由,标号③是需要删除路由包含的前端节点id1与后端节点id2地址。标号②是路由存储时插入链表的有效bd地址,标号④是路由删除后链表释放的bd地址。两者的数据一致,路由删除结果正确。
2.2 总体性能仿真与分析
表1是一条路由存储的时延随周期变化的情况。由表1可知,随着存储的路由周期变长,模块路由存储的时延均在166.4 ns左右。
若路由不过期,每条路由固定长度且每次查找第一条存储路由,表2是长度为2周期的路由查找时延随着条数变化情况。表3是长度为8周期的路由查找时延随着条数变化情况。
由表2、表3可知,路由周期固定,随着存储条数增加查找路由的时延快速增加。在路由表中存储路由条数固定情况下,路由查找时延随着路由长度的增加缓慢增加。路由查找的时延在ns级,说明查找速度很快。
表4是长度为2周期的路由删除时延随着条数变化情况。表5是长度为8周期的路由删除时延随着条数变化情况。
由表4、表5可知,在存储周期固定的路由情况下,随着存储条数增加,删除路由的时延快速增加,几乎是2倍的速率。在路由表中存储路由条数固定情况下,路由删除时延随着路由长度的增加缓慢增加。 但路由删除的时延还在μs级以下,说明删除速度依然很快。从路由存储、查找、删除的结果分析上来说,路由管理模块工作效率是非常高的。
模块设计使用vivado2015.2平台,开发板采用xilinx的vc707,使用的设备是xc7vx485t。片上总功耗为28.379 w,模块功耗为11.755 w。片上各部分资源使用情况如表6所示。
由表6可见,使用硬件实现dsr路由表项管理所占用的硬件资源非常少,功耗十分小。
3 结论
本文针对在fpga中支持dsr路由协议的核心内容路由表项管理提出了一种基于有限状态机的设计与实现方法。建立实现模型,使用vivado2015.2平台进行仿真,仿真结果很好地验证了预期目标。通过实验分析,发现使用fpga实现dsr路由表项管理时延非常低,资源占用十分少,功耗很小。

超快激光技术及其应用
即插即用!复旦微和利尔达联合发布基于LoRa通讯的开发套件
韩国加速推动数字货币投放过程
谷歌AI发布3D物体数据集,附带标记边界框、相机位姿、稀疏点云
韩国KIST研发基于薄膜的陶瓷燃料电池,可应用于便携式和移动应用中
基于有限状态机的FPGA DSR路由表项设计和实现方法
城市大脑IOC中心将人工智能技术与城市管理有机融合
显示屏背光源管理解决方案
华为手机销量超过2亿部 提前64天达到全年目标
新购买的蓄电池在使用前是否要对蓄电池进行充电?
洁面仪什么牌子好?肌肤清洁要彻底
三星电子明年将全力抢攻5G基地台及终端芯片市场
如何在Python中进行Elasticsearch操作?
北汽董事长徐和谊:特斯拉咄咄逼人“后补贴时代”呼唤颠覆性技术创新
如何对楼宇自控建筑智能化系统进行检测
低功耗、精准检测、超长待机,物联网设备助力实现“双碳”目标
快捷开发出P通道薄型WL-CSP MOSFET
关于手机防水透声组件在5G手机上的应用
为什么IGBT市场一直被英飞凌、安森美等少数供应商所垄断?
LED驱动电源失效的原因分析
s