一种基于FPGA的MAC地址管理的系统的制作方法

文档序号:32345307发布日期:2022-11-26 11:09阅读:37来源:国知局
一种基于fpga的mac地址管理的系统
技术领域
:1.本发明属于网络通信领域,具体涉及一种基于fpga的mac地址管理的系统。
背景技术
::2.在网络实际通信过程中要经过物理层,所以仅仅知道对方ip是不够的还需要知道对方的mac地址,在fpga实现由ip查询mac地址的时候,本设计提供了一种mac地址管理的方法。3.目前基于fpga的mac地址管理查询,基本上都是轮询依次查询数据,导致mac地址较多时,查询效率太低。而且mac地址的增、删、改依赖于上位机cpu的控制,增加了cpu开销负担。技术实现要素:4.(一)要解决的技术问题5.本发明要解决的技术问题是如何提供一种基于fpga的mac地址管理的系统,以解决基于fpga的mac地址管理查询效率太低,增加了cpu开销负担的问题。6.(二)技术方案7.为了解决上述技术问题,本发明提出一种基于fpga的mac地址管理的系统,该系统包括fpga、上位机和外部设备,fpga包括一个状态机、一个32位系统时间计数器time_counter和4个深度64位宽120位的双口ram,状态机连接双口ram,fpga对外提供三个接口,分别为:配置接口、查询mac地址的查询接口和更新mac地址的更新接口,上位机通过配置接口连接双口ram,外部设备通过查询接口和更新接口连接状态机;8.配置接口,允许上位机通过配置接口直接读写双口ram,对双口ram中的mac地址进行增、删、改、查;9.查询接口,用于外部设备输入已知ip查询到双口ram中与其相对应的mac地址,将mac地址输出;10.更新接口,用于外部设备输入已知的ip和mac地址,查询到ram中与其ip相对应的mac地址,将mac地址字段改为输入的mac地址;11.系统时间计数器time_counter,是一个32位的计数器,从上电开始每次相隔1毫秒累加1;time_counter用于同ram中的time_counter字段相比较,监督该mac地址从添加或者更新后距离上一次查询相隔多长时间,如果时间超过阈值,将触发老化机制,该mac地址将判为无效mac地址;12.双口ram为由4个64深度120位宽的双口ram组成的256深度的120位宽的ram;ram中存取的120位数据的结构为:8位宽的flag+48位的mac地址+32位ip+32位时间计数器time_counter,其中标志位flag等于0时表示该mac地址无效,flag非0时表示mac地址有效;13.状态机用于控制该系统的状态转换,该系统有5个状态,分别为:空闲状态idle、由配置接口进入的工作状态config、由更新接口进入的工作状态updata、由查询接口进入的工作状态look_up_table和工作状态结束done。14.进一步地,当上位机通过配置接口对双口ram中的mac地址增加或者改动的时候,将mac地址对应的time_counter字段更新为当前计数器time_counter的值然后写入双口ram中;上位机可读写的mac地址数量为256个。15.进一步地,当外部设备通过查询接口查找到mac地址时,将mac地址对应的time_counter字段更新为当前计数器time_counter的值。16.进一步地,当外部设备通过更新接口修该mac地址时,将mac地址对应的time_counter字段更新为当前计数器time_counter的值。17.进一步地,配置接口进来的是8位宽的地址,将该地址的高2位作为4个ram的片选地址,低6位作为ram的读写地址。18.进一步地,idle状态下,当配置接口、查询接口和更新接口有数据进入时,状态机跳转到相应处理状态,跳转优先级依次是配置接口、查询接口、更新接口;三个接口都没有数据进入时,idle状态下有一个6位宽的地址idle_addr从0至63不断累加,通过地址idle_addr同时读出四块ram中的数据,判断flag字段非0时,time_counter字段减去系统时间计数器time_counter的值是否大于老化时间old_time,如果大于老化时间,则触发老化条件,将该地址中的flag字段改为0,使其对应的mac地址无效。19.进一步地,config状态下,上位机通过ram的地址直接对ram中数据进行读写操作实现增、删、改、查;在增加或改动mac地址时需要将time_counter字段更新为当前计数器time_counter的值,ram读写操作完成跳转至done状态。20.进一步地,look_up_table状态下,有一个6位宽的地址work_addr从0至63不断累加,通过地址work_addr同时读出四块ram中的数据,当flag字段非0并且ip字段与输入的ip相等,表示已经查询到想要的mac地址,此时将mac地址输出,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done;如果work_addr累加一轮后仍未查询到与输入ip对应的mac地址,则mac地址查询失败,将work_addr从63修改为0,状态跳转至done。21.进一步地,updata状态下,有一个6位宽的地址work_addr从0至63不断累加,通过地址work_addr同时读出四块ram中的数据,当flag字段非0并且ip字段与输入的ip相等,表示已经查询到想要更新的mac地址字段,此时将mac地址字段改为输入的mac值,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done;如果work_addr累加一轮后仍未查询到与输入ip对应的mac地址,则将work_addr从63修改为0,work_addr进行第二轮累加;当查询到flag字段等于0的地址时,将对应的ip字段和mac地址字段改为输入的ip和mac值,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done;如果work_addr累加完成第二轮后未查询到flag字段等于0的地址,则更新失败,将work_addr从63修改为0,状态跳转至done。22.进一步地,done状态下,将work_addr清0,跳转至idle状态。23.(三)有益效果24.本发明提出一种基于fpga的mac地址管理的系统,本发明采用4个64深度120位宽的双口ram组成一个256深度的120位宽的ram提高了查询速度,对一个256深mac地址表,单次查询完成最多使用时间为64个时钟周期;多次长时间查询平均时间为32个时钟周期。25.本发明通过一个系统时间计数器time_counter和每次mac地址增、该、查的当前时间记录,实现了mac地址的老化机制,减少了上位机cpu的额外开销。并且实现简单,并且是在idle空闲状态小完成老化机制的实现,使系统空闲时间得以利用。26.本发明实现了基于fpag的mac地址增、删、改、查的管理方法。附图说明27.图1为本发明的设计框架;28.图2为ram0/1/2/3内存示意图;29.图3为状态机流程图。具体实施方式30.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。31.本发明的目的就是提供一种基于fpag的mac地址增、删、改、查的管理系统和方法。32.本发明的系统框架如图1所示,该系统包括fpga、上位机和外部设备,fpga包括一个状态机、一个32位系统时间计数器time_counter(每隔1毫秒累加一次1)和4个深度64位宽120位的双口ram,状态机连接双口ram,fpga对外提供三个接口,分别为:配置接口、查询mac地址的查询接口和更新mac地址的更新接口,上位机(cpu)通过配置接口连接双口ram,外部设备通过查询接口和更新接口连接状态机。33.配置接口,允许上位机通过配置接口直接读写双口ram,对双口ram中的mac地址进行增、删、改、查。每当通过配置接口对双口ram中的mac地址增加或者改动的时候,需要将mac地址对应的time_counter字段更新为当前计数器time_counter的值然后写入双口ram中。上位机可读写的mac地址数量为256个。34.查询接口,用于外部设备输入已知ip查询到双口ram中与其相对应的mac地址,将mac地址输出,并且当外部设备通过查询接口查找到mac地址时,将mac地址对应的time_counter字段更新为当前计数器time_counter的值。35.更新接口,用于外部设备输入已知的ip和mac地址,查询到ram中与其ip相对应的mac地址,将mac地址字段改为输入的mac地址,并且当外部设备通过更新接口修该mac地址时,将mac地址对应的time_counter字段更新为当前计数器time_counter的值。36.系统时间计数器time_counter,是一个32位的计数器,从上电开始每次相隔1毫秒累加1。作用是同ram中的time_counter字段相比较,监督该mac地址从添加或者更新后距离上一次查询相隔多长时间,如果时间超过阈值,将触发老化机制,该mac地址将判为无效mac地址。例如,阈值为24个小时。37.双口ram,如图2所示,本系统中为4个64深度120位宽的双口ram组成一个256深度的120位宽的ram。配置接口进来的是8位宽的地址,在本设计中将该地址的高2位作为4个ram的片选地址,低6位作为ram的读写地址。ram中存取的120位数据的结构为:8位宽的flag+48位的mac地址+32位ip+32位时间计数器time_counter。其中标志位flag等于0时表示该mac地址无效,flag非0时表示mac地址有效。38.状态机,如图3所示,用于控制该系统的状态转换,本系统中有5个状态,idle(空闲状态)、config(由配置接口进入的工作状态)、updata(由更新接口进入的工作状态)、look_up_table(由查询接口进入的工作状态)和done(工作状态结束)。39.idle状态,当配置接口、查询接口和更新接口有数据进入时,状态机跳转到相应处理状态,跳转优先级依次是配置接口、查询接口、更新接口。三个接口都没有数据进入时,idle状态下有一个6位宽的地址idle_addr从0至63不断累加,通过地址idle_addr同时读出四块ram中的数据,判断flag字段非0时,time_counter字段减去系统时间计数器time_counter的值是否大于老化时间old_time(24个小时),如果大于老化时间,则触发老化条件,将该地址中的flag字段改为0,使其对应的mac地址无效。40.config状态,上位机通过ram的地址直接对ram中数据进行读写操作实现增、删、改、查。但是在增加或改动mac地址时需要将time_counter字段更新为当前计数器time_counter的值。ram读写操作完成跳转至done状态。41.look_up_table状态下有一个6位宽的地址work_addr从0至63不断累加,通过地址work_addr同时读出四块ram中的数据,当flag字段非0并且ip字段与输入的ip相等,表示已经查询到想要的mac地址,此时将mac地址输出,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done。如果work_addr累加一轮后仍未查询到与输入ip对应的mac地址,则mac地址查询失败,将work_addr从63修改为0,状态跳转至done。42.updata状态下有一个6位宽的地址work_addr从0至63不断累加,通过地址work_addr同时读出四块ram中的数据,当flag字段非0并且ip字段与输入的ip相等,表示已经查询到想要更新的mac地址字段,此时将mac地址字段改为输入的mac值,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done。如果work_addr累加一轮后仍未查询到与输入ip对应的mac地址,则将work_addr从63修改为0,work_addr进行第二轮累加,当查询到flag字段等于0时,将对应的ip字段和mac地址字段改为输入的ip和mac值,并且将对应的time_counter字段更新为当前计数器time_counter的值,状态跳转至done。如果work_addr累加完成第二轮后未查询到flag字段等于0的地址,则更新失败,将work_addr从63修改为0,状态跳转至done。43.done状态,将work_addr清0,跳转至idle状态。44.本发明采用4个64深度120位宽的双口ram组成一个256深度的120位宽的ram提高了查询速度,对一个256深mac地址表,单次查询完成最多使用时间为64个时钟周期;多次长时间查询平均时间为32个时钟周期。45.本发明通过一个系统时间计数器time_counter和每次mac地址增、该、查的当前时间记录,实现了mac地址的老化机制,减少了上位机cpu的额外开销。并且实现简单,并且是在idle空闲状态小完成老化机制的实现,使系统空闲时间得以利用。46.本发明实现了基于fpag的mac地址增、删、改、查的管理方法。47.以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1