一种多用户高速伪随机序列发生器电路及其工作方法与流程

文档序号:18008744发布日期:2019-06-25 23:43阅读:313来源:国知局
一种多用户高速伪随机序列发生器电路及其工作方法与流程

本发明属于电子电路技术领域,特别是一种多用户高速伪随机序列发生器电路及其工作方法。



背景技术:

伪随机数生成电路可以广泛的应用于各类通信测试设备和加解密技术中。目前的伪随机数生成技术较为成熟,较为典型的包括线性反馈移位寄存器和基于线性同余算法的伪随机数产生器等。应用于网络协议测试仪这类通信测试设备时,通常需要同时为多达上千个测试业务流同时产生所需的随机数据包长度序列,这些长度序列相互独立,在一定取值范围内随机分布。如果此时采用大量独立的常规伪随机序列生成电路,那么硬件资源消耗就会非常大。



技术实现要素:

本发明的目的在于提供一种硬件成本低、实时性强的多用户高速伪随机序列发生器电路及其工作方法,能够同时为大量用户提供伪随机长度序列,且伪随机序列的长度大。

实现本发明目的的技术解决方案为:一种多用户高速伪随机序列发生器电路,包括ddr存储器和fpga,其中:

所述ddr存储器,用于预先为用户以队列方式存储各自的随机数序列;用户通过网络测试仪的配置界面进行测试配置,测试软件为不同业务流生成测试数据包长度序列并写入到ddr中,每个测试业务流对应ddr中一个存储数据包长度值的队列,每个队列的长度为该测试序列长度值分布的周期;

所述fpga,用于管理ddr存储器中的随机数队列,为不同的用户按顺序循环读取所属队列中的长度值;在fpga中,针对ddr中的每个队列,建立一个对应的子队列,存储来自于ddr中对应的队列数据;fpga中设置有队列管理电路,用于管理ddr中每个队列的建立和读取,并管理fpga内部各个子队列的建立和读取;当子队列中缓存数据深度降低到设定门限时,队列管理电路从ddr内部对应的队列中根据上次读取的存储位置,顺序读入设定数量的长度值,并写入对应的子队列。

进一步地,fpga中的队列管理电路,包括ddr多用户伪随机序列管理电路和片内多用户伪随机序列管理电路,fpga内部还包括片内多用户伪随机序列管理电路所维护的多用户本地伪随机序列缓冲区及对应的头尾指针存储器、读写指针存储器,ddr多用户伪随机序列管理电路所维护的与ddr中多个队列对应的头尾指针存储器和读指针存储器;

所述片内多用户伪随机序列管理电路在接收到端口用户帧生成电路的请求后,根据该用户的编号和对应的当前内部队列读指针读出一个随机数并发送给该用户;当一个用户本地缓冲的随机数个数少于给定的门限时,向ddr多用户伪随机序列管理电路发出请求,请求从ddr中按照顺序以突发的方式读入数据;

所述ddr多用户伪随机序列管理电路接收到请求后,根据该用户的编号,读出对应的队列信息,包括头指针、尾指针和当前读指针,并根据读出的信息,从当前读指针位置开始以突发的方式从ddr中读出一组数据并发送给片内多用户伪随机序列管理电路,根据该用户本地队列的写指针将数据依次写入本地伪随机序列缓冲区。

进一步地,fpga中还包括分属不同端口的用户帧生成电路,从片内多用户伪随机序列管理电路读取需要生成的数据帧长度信息,产生所需的测试帧,一个用户帧生成电路能够同时模拟多个用户业务流。

进一步地,所述测试软件为不同业务流生成测试数据包长度序列并写入到ddr中,具体如下:

在ddr中为每个业务流建立一个测试数据包长度序列,具体的长度值分布由测试软件根据用户配置得到,不同的业务流具有相互独立的测试包长度分布,队列长度越大,则测试长度序列的周期越长;

fpga中的队列管理,根据测试软件的配置建立ddr中的队列,ddr中队列的数量与测试业务流数量相同,每个队列的长度与具体的测试配置相关。

一种多用户高速伪随机序列发生器电路的工作方法,步骤如下:

步骤1,各个用户生成相应的随机长度序列后,在ddr中为各个序列分配连续的存储空间,并将随机序列写入到ddr中形成存储队列;

步骤2,将各个队列存储的首尾地址写入到,fpga内部的ddr多用户伪随机序列管理电路所维护的头尾指针存储区中,初始时每个队列的读指针与头指针相同;cpu对fpga内部缓冲区进行分配,构成每个用户的本地随机数队列;

步骤3,cpu将每个本地随机数队列的头尾指针和读写指针写入到,片内多用户伪随机序列管理电路所维护的头尾指针和读写指针存储区中;初始状态下,每个队列的读写指针与该队列的头指针相同;

步骤4,当用户电路需要生成测试帧时,用户帧生成电路向片内多用户伪随机序列管理电路发出请求,片内多用户伪随机序列管理电路根据用户编号读出对应的头尾指针和读写指针:

如果当前读写指针不同,片内多用户伪随机序列管理电路将当前读指针指向的存储空间中的随机数发送给当前用户,然后将读指针加1,结束本次操作;

如果当前读指针与尾指针相同,则跳转到头指针;同时,片内多用户伪随机序列管理电路检查当前剩余随机数个数:如果低于请求门限,则向ddr多用户伪随机序列管理电路发出读入请求,然后进入步骤5;否则结束本次操作;

步骤5,ddr多用户伪随机序列管理电路收到请求后,根据用户编号读出相应ddr队列中的头指针、尾指针和读指针,并采用突发方式顺序读入一个数据块,然后向片内多用户伪随机序列管理电路发出请求,将数据写入到本地缓冲区;此后ddr多用户伪随机序列管理电路修改读指针,将当前队列状态保存后结束本次操作。

本发明与现有技术相比,其显著优点为:(1)通过使用片外的ddr存储区来存储伪随机序列,伪随机序列的长度较大,可以满足随机性的要求;(2)采用双队列电路结构充分利用了ddr存储器容量大、可存储的序列周期长的特点,又可适应ddr突发操作的特点和克服ddr读操作延迟大的问题;(3)片内的高速缓冲区可以快速读写,实时性强,可以满足多用户的需求,同时为大量用户同时高速提供伪随机长度序列;(4)ddr的价格低廉,降低了硬件成本。

附图说明

图1为本发明多用户高速伪随机序列发生器电路的应用网络结构示意图。

图2为本发明实施例中用户所需伪随机序列的结构示意图。

图3为本发明实施例中队列的结构示意图。

图4为本发明实施例中多用户高速伪随机序列发生器电路的结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步详细说明。

多用户高速伪随机序列发生器电路主要的实现载体是fpga这类可编程器件及和fpga配套的常用外围器件ddr存储器。使用硬件描述语言,采用fpga设计流程,可以实现本发明所描述的电路功能。结合图1,本发明电路需要和其他测试电路配套使用。当测试仪同时模拟大量具有不同特征的业务流对被测试网络进行测试时,多用户高速伪随机序列发生器电路可以在消耗fpga硬件资源较小、使用较为方便的情况下以全硬件方式高速、实时的为不同用户生成测试数据包产生所需的长度序列。

本发明多用户高速伪随机序列发生器电路,包括ddr存储器和fpga,其中:

所述ddr存储器,用于预先为用户以队列方式存储各自的随机数序列;用户通过网络测试仪的配置界面进行测试配置,测试软件为不同业务流生成测试数据包长度序列并写入到ddr中,每个测试业务流对应ddr中一个存储数据包长度值的队列,每个队列的长度为该测试序列长度值分布的周期;

所述fpga,用于管理ddr存储器中的随机数队列,为不同的用户按顺序循环读取所属队列中的长度值;在fpga中,针对ddr中的每个队列,建立一个对应的子队列,存储来自于ddr中对应的队列数据;fpga中设置有队列管理电路,用于管理ddr中每个队列的建立和读取,并管理fpga内部各个子队列的建立和读取;当子队列中缓存数据深度降低到设定门限时,队列管理电路从ddr内部对应的队列中根据上次读取的存储位置,顺序读入设定数量的长度值,并写入对应的子队列。

进一步地,fpga中的队列管理电路,包括ddr多用户伪随机序列管理电路和片内多用户伪随机序列管理电路,fpga内部还包括片内多用户伪随机序列管理电路所维护的多用户本地伪随机序列缓冲区及对应的头尾指针存储器、读写指针存储器,ddr多用户伪随机序列管理电路所维护的与ddr中多个队列对应的头尾指针存储器和读指针存储器;

所述片内多用户伪随机序列管理电路在接收到端口用户帧生成电路的请求后,根据该用户的编号和对应的当前内部队列读指针读出一个随机数并发送给该用户;当一个用户本地缓冲的随机数个数少于给定的门限时,向ddr多用户伪随机序列管理电路发出请求,请求从ddr中按照顺序以突发的方式读入数据;

所述ddr多用户伪随机序列管理电路接收到请求后,根据该用户的编号,读出对应的队列信息,包括头指针、尾指针和当前读指针,并根据读出的信息,从当前读指针位置开始以突发的方式从ddr中读出一组数据并发送给片内多用户伪随机序列管理电路,根据该用户本地队列的写指针将数据依次写入本地伪随机序列缓冲区。

进一步地,fpga中还包括分属不同端口的用户帧生成电路,从片内多用户伪随机序列管理电路读取需要生成的数据帧长度信息,产生所需的测试帧,一个用户帧生成电路能够同时模拟多个用户业务流。

进一步地,所述测试软件为不同业务流生成测试数据包长度序列并写入到ddr中,具体如下:

在ddr中为每个业务流建立一个测试数据包长度序列,具体的长度值分布由测试软件根据用户配置得到,不同的业务流具有相互独立的测试包长度分布,队列长度越大,则测试长度序列的周期越长;

fpga中的队列管理,根据测试软件的配置建立ddr中的队列,ddr中队列的数量与测试业务流数量相同,每个队列的长度与具体的测试配置相关。

本发明多用户高速伪随机序列发生器电路的工作方法,步骤如下:

步骤1,各个用户生成相应的随机长度序列后,在ddr中为各个序列分配连续的存储空间,并将随机序列写入到ddr中形成存储队列;

步骤2,将各个队列存储的首尾地址写入到,fpga内部的ddr多用户伪随机序列管理电路所维护的头尾指针存储区中,初始时每个队列的读指针与头指针相同;cpu对fpga内部缓冲区进行分配,构成每个用户的本地随机数队列;

步骤3,cpu将每个本地随机数队列的头尾指针和读写指针写入到,片内多用户伪随机序列管理电路所维护的头尾指针和读写指针存储区中;初始状态下,每个队列的读写指针与该队列的头指针相同;

步骤4,当用户电路需要生成测试帧时,用户帧生成电路向片内多用户伪随机序列管理电路发出请求,片内多用户伪随机序列管理电路根据用户编号读出对应的头尾指针和读写指针:

如果当前读写指针不同,片内多用户伪随机序列管理电路将当前读指针指向的存储空间中的随机数发送给当前用户,然后将读指针加1,结束本次操作;

如果当前读指针与尾指针相同,则跳转到头指针;同时,片内多用户伪随机序列管理电路检查当前剩余随机数个数:如果低于请求门限,则向ddr多用户伪随机序列管理电路发出读入请求,然后进入步骤5;否则结束本次操作;

步骤5,ddr多用户伪随机序列管理电路收到请求后,根据用户编号读出相应ddr队列中的头指针、尾指针和读指针,并采用突发方式顺序读入一个数据块,然后向片内多用户伪随机序列管理电路发出请求,将数据写入到本地缓冲区;此后ddr多用户伪随机序列管理电路修改读指针,将当前队列状态保存后结束本次操作。

作为一种具体示例,首先测试仪内部的cpu首先需要根据用户配置为不同的测试业务流生成所需的伪随机序列。然后再将所生产的伪随机序列写入到深度为128m的ddr3的存储区中,通过这种方式可以产生并存储大量不同分布特征的伪随机序列。在fpga中设计双队列管理电路,两个队列管理电路的名称分别为ddr3多用户伪随机序列管理电路和片内多用户伪随机序列管理电路。在接收到端口用户帧产生电路的请求后,片内多用户伪随机序列管理电路根据该用户的编号和他的当前内部队列读指针读出一个随机数并交给该用户。当一个用户本地缓冲的随机数个数少于给定的门限时,就会向ddr3多用户伪随机序列管理电路发出请求,请求从ddr3中按照顺序以突发的方式读入一部分数据。ddr3多用户伪随机序列管理电路接收到请求后,根据该用户的编号,读出其对应的队列信息,包括头指针、尾指针和当前读指针,并根据这些信息,从当前读指针位置开始以突发的方式从ddr3中读出一组数据并交给片内多用户伪随机序列管理电路,该电路根据该用户本地队列的写指针将数据依次写入。ddr3以突发方式操作,速度快但存在一定的操作延迟,因此不能等到对应的fpga内部队列为空时才请求读入数据,要提前申请读入。片内的用户本地队列读写速度快,可以同时满足多个用户的高速读取要求。在ddr3中为每个用户存储着完整的伪随机序列,其长度为伪随机序列的周期,在fpga内部存储的是依次读入的伪随机序列片段,这种双队列结构可以将ddr3的大存储容量和片内的高速读写有效结合起来,满足多用户随机测试需求。

实施例

结合图1,本发明应用于网络测试仪的多用户高速伪随机序列发生器电路,由ddr3存储器和实现测试功能的fpga组成。

所述ddr3存储器,用于预先为大量用户以队列方式存储各自的随机数序列,用户通过测试仪的配置界面进行测试配置,为不同业务流生成测试数据包长度序列并写入到ddr3中,每个测试业务流对应ddr3中一个存储数据包长度值的队列,每个队列的长度为该测试序列长度值分布的周期;对于一个测试端口,根据测试仪模拟的测试业务流数量,建立相应的队列;

所述fpga内部包括多用户本地伪随机序列缓冲区及其对应的头尾指针存储器、读写指针存储器、与ddr3中多个队列对应的头尾指针存储器和读指针存储器、分属不同端口的用户帧生成电路;其中多用户本地伪随机序列缓冲区及其对应的头尾指针存储器、读写指针存储器由片内多用户伪随机序列管理电路所维护,与ddr3中多个队列对应的头尾指针存储器和读指针存储器由ddr3多用户伪随机序列管理电路维护和管理,用户帧生成电路从片内多用户伪随机序列管理电路读取需要生成的数据帧长度信息,产生所需的测试帧,一个用户帧生成电路可以同时模拟多个用户业务流。

具体来讲,fpga内部包括由片内多用户伪随机序列管理电路所维护的多用户本地伪随机序列缓冲区及其对应的头尾指针存储器、读写指针存储器。fpga内部还包括与ddr3中多个队列对应的头尾指针存储器和读指针存储器,具体由ddr3多用户伪随机序列管理电路维护和管理。fpga中还包括分属不同端口的用户帧产生电路,他们从片内多用户伪随机序列管理电路读取需要生成的数据帧长度信息,产生所需的测试帧,一个用户帧产生电路可以同时模拟多个用户业务流。

测试时,测试仪内部的cpu首先需要根据用户配置为不同的测试业务流生成所需的伪随机序列,如图2所示。生成的伪随机序列具有不同的分布特征,具有周期性,一个用户所生成测试帧长度的随机性取决于cpu为其生成的长度序列;由于实际测试时以太网帧典型长度为64-1518字节,其分布范围较小,不同用户的测试帧长度通常为其一个子集,分布范围更小,因此满足其随机性要求所需的序列周期不需要过长。

图3给出了整个电路的队列结构,cpu为每个用户生成相应的随机长度序列后,需要在ddr3中为各个序列分配连续的存储空间,并将随机序列写入到ddr3中形成存储队列;然后,cpu将各个队列存储的首尾地址写入到fpga内部的ddr3多用户伪随机序列管理电路所维护的头尾指针存储区(sram)中,初始时每个队列的读指针与头指针相同;接着,cpu对fpga内部缓冲区进行分配,构成每个用户的本地随机数队列;cpu将每个本地队列的头尾指针和读写指针写入到片内多用户伪随机序列管理电路所维护的头尾指针和读写指针存储区(sram)中,初始状态下,每个队列的读写指针与该队列的头指针相同。在系统初始化时,为了避免fpga内部的本地队列为空,cpu直接将ddr3中的一部分数据写入到对应的内部队列中并修改ddr3的队列读指针,避免本地缓冲区初始时为空,影响系统工作速度。

图4为电路的结构框图。当用户电路需要生成测试帧时,向片内多用户伪随机序列管理电路发出请求,片内多用户伪随机序列管理电路根据用户编号读出其头尾指针和读写指针,如果当前读写指针不同,说明存在可用的伪随机数,此时,片内多用户伪随机序列管理电路将当前读指针指向的存储空间中的随机数交给当前用户,然后将读指针加1,如果当前读指针与尾指针相同,则跳转到头指针,然后片内多用户伪随机序列管理电路会检查当前剩余随机数个数,如果其低于请求门限,则向ddr3多用户伪随机序列管理电路发出读入请求,否则结束本次操作;ddr3多用户伪随机序列管理电路收到请求后,根据用户编号读出相应ddr3队列中的头、尾指针和读指针,并采用突发方式顺序读入一个数据块,然后向片内多用户伪随机序列管理电路发出请求,将数据写入到本地缓冲区;接着ddr3多用户伪随机序列管理电路修改读指针,将当前队列状态保存后结束本次操作。

综上所述,通过片外的ddr3实现了对电路存储空间的扩展,fpga既可以对ddr3中的存储空间进行访问,又可以高速实时地为多达上千个用户高速产生所需的伪随机长度值序列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1