0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于有限状态机[8]的DSR路由表项设计实现方法

电子设计 来源:电子技术应用 作者:电子技术应用 2020-12-22 16:27 次阅读

来源:2018年电子技术应用第12期

摘要: 近年来,Ad Hoc网络无线通信领域发展迅猛。它是一种不依赖预设通信设施的新型组网技术,具有很高的灵活性与独立性,适用于许多网络设备临时架设困难的场景。DSR协议是Ad Hoc网络的一种按需路由控制协议,也是Ad Hoc网络中最有发展潜力的路由协议。DSR协议的核心是用于各节点之间相互通信的路由表项管理。设计与实现了一种基于有限状态机(FSM)支持DSR路由表项管理的FPGA方法。

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状态。

o4YBAF9uGXCARuZCAACLqxbTmxM551.png

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地址条目从链表中剔除。删除操作完成后,更新后一个条目的链表指针,使得链表完整。

o4YBAF9uGXKAIx9AAACFuVyLNvQ981.png

2 实验仿真与分析

2.1 总体功能仿真

图4是路由存储仿真结果。标号①是存储的路由信息,store_route_en是路由存储的使能,hop[31:0]路由数据周期数,did[31:0]目的节点地址,data_route[31:0]是路由数据。

pIYBAF9uGXOANV9RAACJxLcRkcE981.png

图5、图6是路由查找仿真结果。did_to_rd_rt[31:0]是目的节点地址。标号③与标号④分别是存储与读取的路由数据,两者是一样的,故路由查找结果正确。

pIYBAF9uGXWAIpFZAAB2ZW0Q90c787.png

o4YBAF9uGXaASWF8AABsY3xlynk146.png

图7与图8是路由删除仿真结果。标号①是存储的路由,标号③是需要删除路由包含的前端节点ID1与后端节点ID2地址。标号②是路由存储时插入链表的有效BD地址,标号④是路由删除后链表释放的BD地址。两者的数据一致,路由删除结果正确。

o4YBAF9uGXeACKsOAACL6loNgBw759.png

pIYBAF9uGXmAay2ZAAB9PFFso9w772.png

2.2 总体性能仿真与分析

表1是一条路由存储的时延随周期变化的情况。由表1可知,随着存储的路由周期变长,模块路由存储的时延均在166.4 ns左右。

pIYBAF9uGXqAZ888AAA01zRIOdA140.png

若路由不过期,每条路由固定长度且每次查找第一条存储路由,表2是长度为2周期的路由查找时延随着条数变化情况。表3是长度为8周期的路由查找时延随着条数变化情况。

o4YBAF9uGXuAJ9k4AABeOQKJ9y0310.png

由表2、表3可知,路由周期固定,随着存储条数增加查找路由的时延快速增加。在路由表中存储路由条数固定情况下,路由查找时延随着路由长度的增加缓慢增加。路由查找的时延在ns级,说明查找速度很快。

表4是长度为2周期的路由删除时延随着条数变化情况。表5是长度为8周期的路由删除时延随着条数变化情况。

pIYBAF9uGX2AcNILAABbwLKWmuw074.png

由表4、表5可知,在存储周期固定的路由情况下,随着存储条数增加,删除路由的时延快速增加,几乎是2倍的速率。在路由表中存储路由条数固定情况下,路由删除时延随着路由长度的增加缓慢增加。 但路由删除的时延还在μs级以下,说明删除速度依然很快。从路由存储、查找、删除的结果分析上来说,路由管理模块工作效率是非常高的。

模块设计使用vivado2015.2平台,开发板采用Xilinx的VC707,使用的设备是XC7VX485T。片上总功耗为28.379 W,模块功耗为11.755 W。片上各部分资源使用情况如表6所示。

pIYBAF9uGX6AMJPSAABPW2SazPk758.png

由表6可见,使用硬件实现DSR路由表项管理所占用的硬件资源非常少,功耗十分小。

3 结论

本文针对在FPGA中支持DSR路由协议的核心内容路由表项管理提出了一种基于有限状态机的设计与实现方法。建立实现模型,使用vivado2015.2平台进行仿真,仿真结果很好地验证了预期目标。通过实验分析,发现使用FPGA实现DSR路由表项管理时延非常低,资源占用十分少,功耗很小。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1627

    文章

    21685

    浏览量

    602325
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27493
  • DSR
    DSR
    +关注

    关注

    0

    文章

    11

    浏览量

    9775
收藏 人收藏

    评论

    相关推荐

    FPGA中有状态表项的存储与管理

    一篇2014年的论文:《CACHE FOR FLOW CONTENT: SOLUTION TODEPENDENT PACKET PROCESSING IN FPGA》,主要讲述在FPGA中有状态表项的存储与管理。感兴趣的可以阅读原文。
    的头像 发表于 10-27 16:06 195次阅读
    FPGA中有<b class='flag-5'>状态表项</b>的存储与管理

    触发器和状态机的关系是什么

    触发器和状态机在数字电路设计中有着紧密的关系,它们共同构成了时序逻辑电路的基础,用于实现数据的存储、处理和传输。
    的头像 发表于 08-12 11:24 384次阅读

    如何在FPGA中实现状态机

    在FPGA(现场可编程门阵列)中实现状态机是一种常见的做法,用于控制复杂的数字系统行为。状态机能够根据当前的输入和系统状态,决定下一步的动作和新的状态。这里,我们将详细探讨如何在FPG
    的头像 发表于 07-18 15:57 522次阅读

    玩转Spring状态机

    说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种
    的头像 发表于 06-25 14:21 896次阅读
    玩转Spring<b class='flag-5'>状态机</b>

    关于SMU状态机的问题求解

    我有一些关于 SMU 状态机的问题。 假设由于某种原因,SMU 已进入故障状态。 手册指出,要返回运行状态并将 FSP 恢复到无故障状态,应调用IfxSmu_releaseFSP()。
    发表于 05-29 08:18

    在Verilog中实现Moore型和Mealy型状态机方法简析

    编写能够被综合工具识别的状态机,首先需要理解状态机的基本概念和分类。状态机(FSM)是表示有限状态以及在这些
    的头像 发表于 05-01 11:38 1483次阅读

    如何采用“状态机”解析UART数据帧

    如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战--如何高效接收与解析。 为简化系统设计,我们强烈建议您采用“状态机”来解析UART数据帧。
    的头像 发表于 03-25 14:29 652次阅读
    如何采用“<b class='flag-5'>状态机</b>”解析UART数据帧

    什么是有限状态机?如何解决传统有限状态机状态爆炸」问题?

    有限状态机(Finite State Machine,简称FSM)是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列以及如何响应来自外界的各种事件。
    的头像 发表于 02-17 16:09 6125次阅读
    什么是<b class='flag-5'>有限状态机</b>?如何解决传统<b class='flag-5'>有限状态机</b>「<b class='flag-5'>状态</b>爆炸」问题?

    Verilog状态机+设计实例

    的是有限状态机(Finite-State Machine,FSM),简称为状态机,表示在有限状态以及这些状态之间的转移和动作等行为的数学模
    的头像 发表于 02-12 19:07 3887次阅读
    Verilog<b class='flag-5'>状态机</b>+设计实例

    状态机该怎么监控

    状态机卡住的场景——通过状态跳转条件的DFX信号去判断卡住的原因
    的头像 发表于 01-15 10:03 400次阅读
    <b class='flag-5'>状态机</b>该怎么监控

    I.MX6ULL-ElfBoard ELF1板卡- route路由配置命令

    路由表项对应的输出接口 查看路由: elf@ubuntu:~$ route 添加路由: elf@ubuntu:~$ sudo route add default gw 192.168.0.1 删除
    发表于 01-12 14:33

    嵌入式学习-ElfBoard ELF 1板卡 - route路由配置命令你清楚吗?学起来吧

    路由表项对应的输出接口 查看路由: elf@ubuntu:~$ route 添加路由: elf@ubuntu:~$ sudo route add default gw 192.168.0.1 删除
    发表于 01-12 14:29

    Spring状态机实现原理和使用方法

    说起 Spring 状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring 状态机就是状态模式的一种
    的头像 发表于 12-26 09:39 1901次阅读
    Spring<b class='flag-5'>状态机</b>的<b class='flag-5'>实现</b>原理和使用<b class='flag-5'>方法</b>

    SaberRD状态机建模工具介绍(二)状态机建模工具使用示例

    假设电阻阻值为r_normal,首先打开状态机建模工具,添加电阻端口,电阻端口包含贯通变量电流和跨接变量电压,使用分支型端口。
    的头像 发表于 12-05 09:53 992次阅读
    SaberRD<b class='flag-5'>状态机</b>建模工具介绍(二)<b class='flag-5'>状态机</b>建模工具使用示例

    SaberRD状态机建模工具介绍(一)什么是状态机建模

    状态机建模是使用状态图和方程式的手段,创建基于混合信号的有限状态机模型的一种建模工具。
    的头像 发表于 12-05 09:51 1663次阅读
    SaberRD<b class='flag-5'>状态机</b>建模工具介绍(一)什么是<b class='flag-5'>状态机</b>建模