基于fpga的筛选模块及筛选方法

文档序号:7797951阅读:372来源:国知局
基于fpga的筛选模块及筛选方法
【专利摘要】基于FPGA的筛选模块及筛选方法,属于量子保密通信领域。解决现有筛选模块及筛选方法的密钥生成速率的实时性差和数据交互量大造成的存储压力大的问题。本发明通过游程长度编码模块计算相邻两个均满足条件“K0!=0||K1!=0”的事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,计数结果run_len附加上标识位后,作为游程长度码runlen_code送至Alice模块进行处理,获得Alice模块的筛选码Alice_siftedkey,再将Alice模块输出的筛选码Alice_siftedkey的位置信息result给Bob模块中的密钥抽取模,并根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey,筛选码Bob_siftedkey为Bob模块输出的筛选码。本发明用于量子保密通信中密钥的筛选领域。
【专利说明】基于FPGA的筛选模块及筛选方法
【技术领域】
[0001 ] 本发明属于量子保密通信领域。
【背景技术】
[0002]基于量子特性,量子密钥分发(Quantum Key Distribution, QKD)允许相距遥远的双方,称为Alice与Bob,即使在窃听者Eve存在的前提下,仍能共享无条件安全的密钥。这些密钥不但可以与传统密码算法一起使用,增强其安全性,也可以与Vernam—次一密算法结合构造无条件安全的加密系统。尽管QKD已经成为了全球性的研究热点,QKD依然不能广泛地应用于现实生活中。QKD系统由量子信道与经典信道构成。由于系统噪声、窃听者、Alice调制基与Bob测量基的不一致等原因,Alice与Bob从量子信道接收到的裸码仅仅只是相关的,而不是一致的。为了剔除裸码中不一致的比特,后处理过程是必须的。虽然许多研究机构已经搭建了 GHz的QKD物理系统,QKD后处理系统实现速度的不足仍然是最重要的瓶颈之一。筛选模块需要处理巨大的输入,因此研究如何设计与实现有效的筛选模块以加速整个系统显得尤为重要。
[0003]一般来说,QKD后处理系统包括筛选、误码估计、误码协商与私密放大模块。与其他模块相比,筛选模块的特点是需要更多的存储资源与网络资源,但是对计算资源的需求相对较低。 2012年,Li等人在PC机上实现的QKD后处理系统的实验表明,在整个后处理模块中,筛选模块需要的时间最长。虽然一些研究者尝试通过多线程技术加速筛选速度,但是最终的密钥生成速率仍不能满足实时应用的需求,仍存在实时性差的问题。
[0004]目前虽然QKD系统已经吸引了许多研究者的注意,但是QKD后处理系统的实现速度仍然不够,成为了 QKD广泛应用最大障碍之一。QKD后处理系统的筛选模块需要处理大量的数据,因此研究如何设计与实现一种有效的筛选模块以加速QKD后处理系统显得尤为重要。

【发明内容】

[0005]本发明是为了解决现有筛选模块及筛选方法的密钥生成速率的实时性差和数据交互量大造成的存储压力大的问题,本发明提供了一种基于FPGA的筛选模块及筛选方法。
[0006]基于FPGA的筛选模块,它包括Alice模块和Bob模块,所述的Alice模块和Bob模块均采用FPGA实现,
[0007]Alice模块,用于从接收到的裸码中筛选出筛选码,
[0008]Bob模块,用于从接收到的裸码中筛选出筛选码,Alice模块包括游程长度译码模块和基比较模块;Bob模块包括游程长度编码模块、非空信号译码模块和密钥抽取模块,
[0009]所述的游程长度编码模块,用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,所述相邻两个事件是指时序上相邻的两个均满足条件“K0! =0 I I Kl! =0”的事件;
[0010]并对该计数结果run_len附加上标识位后,作为游程长度码runlen_code,还用于输出非空信号位置对应的探测结果nempty_kO、nempty_kl和非空信号位置对应的测量基nempty_bb给非空信号译码模块,
[0011]K0, Kl表示同一个事件的两个探测结果;
[0012]非空信号译码模块,用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码,并输出有效裸码Bob_key给密钥抽取模块,还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base给基比较模块,
[0013]游程长度译码模块,用于将接收到的游程长度码runlerucode转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base给基比较模块;
[0014]基比较模块,用于通过比较接收到的测量基bob_base与调制基base获得筛选码Alice_siftedkey和该筛选码Alice_siftedkey的位置信息result,并将该筛选码Alice_siftedkey的位置信息result反馈给密钥抽取模块;
[0015]密钥抽取模块,用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。
[0016]基于FPGA的筛选方法,该方法包括步骤Alice和步骤Bob,
[0017]步骤Al ice,用于从裸码中筛选出筛选码,
[0018]步骤Bob,用于从裸码中筛选出筛选码,
[0019]步骤Alice进一步包括游程长度译码的步骤和基比较的步骤;
[0020]步骤Bob进一步包括游`程长度编码步骤、非空信号译码步骤和密钥抽取步骤,
[0021]所述的游程长度编码步骤,用于计算接收到的相邻两个事件之间符合条件"KO==OMKl==O"的事件出现的次数,获得计数结果run_len,
[0022]所述相邻两个事件是指时序上相邻的两个均满足条件“K0!=0 I |Κ1!=0”的事件;并对该计数结果run_len附加上标识位后,作为游程长度码runlen_code,还用于输出非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基nempty_bb,
[0023]K0、Kl表示同一个事件的两个探测结果;
[0024]非空信号译码步骤,用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码,并输出有效裸码Bob_key,还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base,
[0025]游程长度译码步骤,用于将接收到的游程长度码runlerucode转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base ;
[0026]基比较步骤,用于通过比较测量基bob_base与调制基base获得筛选码Alice_siftedkey 和该筛选码 Alice_siftedkey 的位置信息 result ;
[0027]密钥抽取步骤,用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。
[0028]本发明带来的有益效果是,本发明提供了基于FPGA的筛选模块及筛选方法,通过游程长度编码模块将空信号的位置编码为游程长度,一方面解决了密钥生成速率的实时性差使密钥生成速率提高30%以上,另一方面大大地减少交互数据量,从而间接地缓减了通信压力及双方的存储压力。减少传输数据量的同时,为了防止连续空信号数超过一定值,造成溢出,我们引入一位标识位。如果连续空信号数超过可表示的范围,则该标识位设为0,否则设置为I。
【专利附图】

【附图说明】
[0029]图1为本发明所述的基于FPGA的筛选模块的原理示意图;其中,
[0030]Clk表示IOOMHz时钟信号,Bb表示Bob模块的测量基,Ready指示筛选模块的初始化状态,Tvalid表示Kl和KO是否有效的标识信号;
[0031]图2为【具体实施方式】三中,所述的游程长度编码模块的原理示意图;其中,wr_clk表示工作时钟,ena表示输出使能信号,din表示游程长度计数值,rd_clk表示读时钟,rd_count表示FIFO存储单元中现有游程长度码的数量,rd_en表示FIFO存储单元的读使能信号,
[0032]图3为【具体实施方式】四中,所述的游程长度译码模块的原理示意图;其中,rd_enl表示裸码与调制基FIFO存储单元的读使能信号;
[0033]图4为【具体实施方式】五中,所述的编码状态控制器的原理示意图;
[0034]图5为【具体实施方式】六中,所述的译码状态控制器的原理示意图;
【具体实施方式】
[0035]【具体实施方式】一:参见图1说明本实施方式,本实施方式所述的基于FPGA的筛选模块,它包括Alice模块I和Bob模块2,所述的Alice模块I和Bob模块2均采用FPGA实现,
[0036]Alice模块1,用于从接收到的裸码中筛选出筛选码,
[0037]Bob模块2,用于从接收到的`裸码中筛选出筛选码,Alice模块I包括游程长度译码模块1-1和基比较模块1-2 ;Bob模块2包括游程长度编码模块2-1、非空信号译码模块2-2和密钥抽取模块2-3,
[0038]所述的游程长度编码模块2-1,用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,所述相邻两个事件是指时序上相邻的两个均满足条件“K0! =0 I I Kl! =0”的事件;
[0039]并对该计数结果run_len附加上标识位后,作为游程长度码runlen_code,还用于输出非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基nempty_bb给非空信号译码模块2_2,
[0040]K0、Kl表示同一个事件的两个探测结果;
[0041]非空信号译码模块2-2,用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码,并输出有效裸码Bob_key给密钥抽取模块2_3,还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base给基比较模块1_2,
[0042]游程长度译码模块1-1,用于将接收到的游程长度码runlerucode转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base给基比较模块1_2 ;
[0043]基比较模块1-2,用于通过比较接收到的测量基bob_base与调制基base获得筛选码Alice_siftedkey和该筛选码Alice_siftedkey的位置信息result,并将该筛选码Alice_siftedkey的位置信息result反馈给密钥抽取模块2_3 ;
[0044]密钥抽取模块2-3,用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。
[0045]本实施方式中筛选码指的是基一致位置对应的有效裸码。
[0046]【具体实施方式】二:本实施方式是对【具体实施方式】一所述的基于FPGA的筛选模块中的非空信号译码模块2-2的进一步限定,本实施方式中,所述非空信号译码模块2-2用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码的转换原则为:当nempty_k0的取值为‘0’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘I’ ;当nempty_k0的取值为‘l’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘0’;当nempty_k0的取值为‘l’、nempty_kl的取值为‘I’时,有效裸码Bob_key为‘I’或‘O’。
[0047]【具体实施方式】三:参见图2说明本实施方式,本实施方式与【具体实施方式】一或二所述的基于FPGA的筛选模块的区别在于,所述的游程长度编码模块2-1包括游程长度计数单元2-1-1、编码状态控制器2-1-2和FIFO存储单元2_1_3 ;
[0048]游程长度计数单元2-1-1,用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,并将计数结果run_len发送给编码状态控制器2-1-2 ;
[0049]编码状态控制器2-1-2,用于控制写使能信号wr_en,将计数结果run_len写入FIFO存储单元2-1-3,并将非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基nempty_bb输出给非空信号译码模块2_2 ;
[0050]FIFO存储单元2-1-3,用于存储等待发送给游程长度译码模块1_1的游程长度码runlen—code。
[0051]【具体实施方式】四:参见图3说明本实施方式,本实施方式与【具体实施方式】一或二所述的基于FPGA的筛选模块的区别在于,所述的游程长度译码模块1-1包括裸码与调制基FIFO存储单元1-1-1、接收游程长度FIFO存储单元1_1_2和译码状态控制器1_1_3 ;
[0052]裸码与调制基FIFO存储单元1-1-1用于缓存输入的裸码Ka及调制基Ba,并获得非空信号位置对应的裸码及调制基数组{Ba,Ka};
[0053]接收游程长度FIFO存储单元1-1-2用于缓存从游程长度编码模块2_1传输而至的游程长度码runlen_code,
[0054]译码状态控制器1-1-3用于通过控制读使能信号rd_en2,从接收游程长度FIFO存储单元1-1-2中获得游程长度码runlen_code,还用于控制读使能信号rd_enl,来读取非空信号位置对应的裸码及调制基数组{Ba,Ka},从而获得效裸码的位置对应的密钥值key和调制基base。
[0055]【具体实施方式】五:参见图4说明本实施方式,本实施方式与【具体实施方式】三所述的基于FPGA的筛选模块的区别在于,所述的编码状态控制器2-1-2采用状态机实现,该状态机包括状态Idle和 状态Out,
[0056]状态Idle,初始化变量c的值为O ;当信号Tvalid为高电平时,如果Kl和KO的值均为0,则变量c递增I ;如果KO ! =0 I Kl ! =0,则将变量c的值作为计数结果赋给当前计数值counter,然后由状态Idle转移到状态Out,
[0057]状态Out,用于将counter的值赋给输出计数结果run_len,并将该计数结果run_Ien输出给FIFO存储单元2_1_3,然后跳转到Idle状态;
[0058]Tvalid表示Kl和KO是否有效的标识信号。[0059]本实施方式中获得的计数结果rUn_len即为游程长度计数值din。
[0060]【具体实施方式】六:参见图5说明本实施方式,本实施方式与【具体实施方式】四所述的基于FPGA的筛选模块的区别在于,所述的译码状态控制器1-1-3采用状态机实现,该状态机包括状态Idle、状态Count和状态Out,
[0061]状态Idle,当信号empty在时钟上升沿为高电平,则用于保持状态Idle不变,当信号empty在时钟上升沿为低电平,用于将读使能信号rd_en2置高电平,并从接收游程长度FIFO存储单元1-1-2中读取runlen_code的值;
[0062]如果runlen_code不等于O,将runlen_code的值赋于cnt,跳转到状态Count ;
[0063]如果runlen_code等于O,则跳转到状态Out ;
[0064]状态Count,用于将读使能信号rd_enl置高电平,并从裸码与调制基FIFO存储单元1-1-1中读取待剔除的空信号位置数量cnt,然后在每个时钟周期内将cnt递减1,当cnt递减为O时,跳转到状态Out ;
[0065]状态Out,用于将使能信号rd_enl置为高电平,读取裸码与调制基FIFO存储单元1-1-1中的非空信号位置对应的裸码及调制基数组{Ba,Ka},并将该数组{Ba,Ka}中的裸码Ka和调制基Ba分别赋给有效裸码的位置信息对应的密钥值key和调制基base,然后跳转倒状态Idle ;
[0066]其中,empty表示接收游程长度FIFO存储单元1_1_2是否为空的指示信号。
[0067]【具体实施方式】七:本实施方式所述的基于FPGA的筛选方法,该方法包括步骤Alice和步骤Bob, [0068]步骤Al ice,用于从裸码中筛选出筛选码,
[0069]步骤Bob,用于从裸码中筛选出筛选码,步骤Alice进一步包括游程长度译码的步骤和基比较的步骤;
[0070]步骤Bob进一步包括游程长度编码步骤、非空信号译码步骤和密钥抽取步骤,
[0071]所述的游程长度编码步骤,用于计算接收到的相邻两个事件之间符合条件"KO==OMKl==O"的事件出现的次数,获得计数结果run_len,
[0072]所述相邻两个事件是指时序上相邻的两个均满足条件“K0!=0 I |Κ1!=0”的事件;并对该计数结果run_len附加上标识位后,作为游程长度码runlen_code,还用于输出非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基nempty_bb,
[0073]K0、Kl表示同一个事件的两个探测结果;
[0074]非空信号译码步骤,用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码,并输出有效裸码Bob_key,还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base,
[0075]游程长度译码步骤,用于将接收到的游程长度码runlerucode转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base ;
[0076]基比较步骤,用于通过比较测量基bob_base与调制基base获得筛选码Alice_siftedkey 和该筛选码 Alice_siftedkey 的位置信息 result ;
[0077]密钥抽取步骤,用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。[0078]【具体实施方式】八:本实施方式是对【具体实施方式】七所述的基于FPGA的筛选方法中的非空信号译码步骤的进一步限定,本实施方式中,所述非空信号译码步骤用于将非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码的转换原则为:当nempty_k0的取值为‘0’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘I’;当nempty_k0的取值为‘l’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘0’ ;当nempty_k0的取值为‘l’、nempty_kl的取值为‘I’时,有效裸码Bob_key为‘I’或‘O’。
[0079]【具体实施方式】九:参见图4说明本实施方式,本实施方式是对【具体实施方式】七或八所述的基于FPGA的筛选方法中的游程长度编码步骤的进一步限定,所述的游程长度编码步骤包括游程长度计数步骤、编码状态控制步骤和FIFO存储步骤;
[0080]游程长度计数步骤,用于计算相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,
[0081 ] 编码状态控制步骤,用于控制写使能信号wr_en,将计数结果run_len写入FIFO存储步骤,并将非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基nempty_bb输出;
[0082]FIFO存储步骤,用于存储等待发送给游程长度译码步骤的游程长度码rUnlen_
Code0
[0083]【具体实施方式】十:本实施方式是对【具体实施方式】七或八所述的基于FPGA的筛选方法中的游程长度译码步骤的进一步限定,所述的游程长度译码步骤包括裸码与调制基FIFO存储步骤、接收游程长度FIFO存储步骤和译码状态控制步骤;
[0084]裸码与调制基F`IFO存储步骤,用于缓存输入的裸码Ka及调制基Ba,并获得非空信号位置对应的裸码及调制基{Ba,Ka};
[0085]接收游程长度FIFO存储步骤,用于缓存游程长度码runlen_code,
[0086]译码状态控制步骤,用于通过控制读使能信号rd_en2,获得游程长度码runlen_code,还用于控制读使能信号rd_enl,来读取非空信号位置对应的裸码及调制基{Ba,Ka},从而获得效裸码的位置对应的密钥值key和调制基base。
[0087]【具体实施方式】^:本实施方式是对【具体实施方式】九所述的基于FPGA的筛选方法中的编码状态控制步骤的进一步限定,所述的编码状态控制步骤采用状态机的方式实现,其包括状态Idle和状态Out,
[0088]状态Idle,初始化变量c的值为O ;当信号Tvalid为高电平时,如果Kl和KO的值均为0,则变量c递增I ;如果KO ! =0 I Kl ! =0,则将变量c的值作为计数结果赋给当前计数值counter,然后由状态Idle转移到状态Out,
[0089]状态Out,用于将counter的值赋给输出计数结果run_len,然后跳转到Idle状态;
[0090]Tvalid表示Kl和KO是否有效的标识信号。
[0091]【具体实施方式】十二:本实施方式是对【具体实施方式】十所述的基于FPGA的筛选方法中的译码状态控制步骤的进一步限定,
[0092]所述的译码状态控制步骤采用状态机的方式实现,其包括状态Idle、状态Count和状态Out,
[0093]状态Idle,当信号empty在时钟上升沿为高电平,则用于保持状态Idle不变,当信号empty在时钟上升沿为低电平,用于将读使能信号rd_en2置高电平,并读取runlen_code的值;
[0094]如果runlen_code不等于O,将runlen_code的值赋于cnt,跳转到状态Count ;
[0095]如果runlen_code等于O,则跳转到状态Out ;
[0096]状态Count,用于将读使能信号rd_enl置高电平,并读取待剔除的空信号位置数量cnt,然后在每个时钟周期内将cnt递减I,当cnt递减为O时,跳转到状态Out ;
[0097]状态Out,用于将使能信号rd_enl置为高电平,读取非空信号位置对应的裸码及调制基数组{Ba,Ka},并将该数组{Ba,Ka}中的裸码Ka和调制基Ba分别赋给有效裸码的位置信息对应的密钥值key和调制基base,然后跳转倒状态Idle ;
[0098]其中,empty表示接收游程长度FIFO存储步骤中的数据是否为空的指示信号。
【权利要求】
1.基于FPGA的筛选模块,其特征在于,它包括Alice模块(I)和Bob模块(2),所述的Alice模块(I)和Bob模块(2)均采用FPGA实现, Alice模块(1),用于从接收到的裸码中筛选出筛选码, Bob模块(2 ),用于从接收到的裸码中筛选出筛选码, Alice模块(I)包括游程长度译码模块(1-1)和基比较模块(1-2) ;Bob模块(2)包括游程长度编码模块(2-1)、非空信号译码模块(2-2)和密钥抽取模块(2-3), 所述的游程长度编码模块(2-1),用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,所述相邻两个事件是指时序上相邻的两个均满足条件“K0! =0 I I Kl! =0”的事件; 并对该计数结果run_len附加上标识位后,作为游程长度码runlen_code,还用于输出非空信号位置对应的探测结果nempty_kO、nempty_kl和非空信号位置对应的测量基nempty_bb给非空信号译码模块(2_2), KO, Kl表示同一个事件的两个探测结果; 非空信号译码模块(2-2),用于将输入的非空信号位置对应的探测结果nempty_kO、nempty_kl转换为有效裸码,并输出有效裸码Bob_key给密钥抽取模块(2_3),还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base给基比较模块(1_2),游程长度译码模块(1-1),用于将接收到的游程长度码runlen_COde转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base给基比较模块(1_2);基比较模块(1-2 ),用于通过比较接收到的测量基bob_base与调制基base获得筛选码Alice_siftedkey和该筛 选码Alice_siftedkey的位置信息result,并将该筛选码Alice_siftedkey的位置信息result反馈给密钥抽取模块(2_3); 密钥抽取模块(2-3),用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。
2.根据权利要求1所述的基于FPGA的筛选模块,其特征在于,所述非空信号译码模块(2-2)用于将输入的非空信号位置对应的探测结果nempty_kO、nempty_kl转换为有效裸码的转换原则为:当nempty_kO的取值为‘0’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘I’ ;当nempty_kO的取值为‘l’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘O,;当nempty_kO的取值为‘l’、nempty_kl的取值为‘I’时,有效裸码Bob_key为‘I’或‘O’。
3.根据权利要求1或2所述的基于FPGA的筛选模块,其特征在于,所述的游程长度编码模块(2-1)包括游程长度计数单元(2-1-1 )、编码状态控制器(2-1-2)和FIFO存储单元(2-1-3); 游程长度计数单元(2-1-1),用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len,并将计数结果run_len发送给编码状态控制器(2-1-2);编码状态控制器(2-1-2),用于控制写使能信号wr_en,将计数结果run_len写入FIFO存储单元(2_1_3),并将非空信号位置对应的探测结果nempty_kO、nempty_kl和非空信号位置对应的测量基nempty_bb输出给非空信号译码模块(2_2);FIFO存储单元(2-1-3),用于存储等待发送给游程长度译码模块(1-1)的游程长度码runlen_code。
4.根据权利要求1或2所述的基于FPGA的筛选模块,其特征在于,所述的游程长度译码模块(1-1)包括裸码与调制基FIFO存储单元(1-1-1)、接收游程长度FIFO存储单元(1-1-2)和译码状态控制器(1-1-3); 裸码与调制基FIFO存储单元(1-1-1 ),用于缓存输入的裸码Ka及调制基Ba,并获得非空信号位置对应的裸码及调制基数组{Ba,Ka}; 接收游程长度FIFO存储单元(1-1-2),用于缓存从游程长度编码模块(2-1)传输而至的游程长度码runlen_code, 译码状态控制器(1-1-3),用于通过控制读使能信号rd_en2,从接收游程长度FIFO存储单元(1-1-2)中获得游程长度码runlen_code,还用于控制读使能信号rd_enl,来读取非空信号位置对应的裸码及调制基数组{Ba,Ra},从而获得效裸码的位置对应的密钥值key和调制基base。
5.根据权利要求3所述的基于FPGA的筛选模块,其特征在于,所述的编码状态控制器(2-1-2)采用状态机实现,该状态机包括状态Idle和状态Out, 状态Idle,初始化变量c的值为O ;当信号Tvalid为高电平时,如果Kl和KO的值均为0,则变量c递增I ;如果KO ! =0 I I Kl ! =0,则将变量c的值作为计数结果赋给当前计数值counter,然后由状态Idle转移到状态Out, 状态Out,用于将counter的值赋给输出计数结果run_len,并将该计数结果run_len输出给FIFO存储单元(2-1-3),然后跳转到Idle状态; Tvalid表示Kl和KO是否有效的标识信号。
6.根据权利要求4 所述的基于FPGA的筛选模块,其特征在于,所述的译码状态控制器(1-1-3)采用状态机实现,该状态机包括状态Idle、状态Count和状态Out, 状态Idle,当信号empty在时钟上升沿为高电平,则用于保持状态Idle不变,当信号empty在时钟上升沿为低电平,用于将读使能信号rd_en2置高电平,并从接收游程长度FIFO存储单元(1-1-2)中读取runlen_code的值; 如果runlen_code不等于O,将runlen_code的值赋于cnt,跳转到状态Count ; 如果runlen_code等于O,则跳转到状态Out ; 状态Count,用于将读使能信号rd_enl置高电平,并从裸码与调制基FIFO存储单元(1-1-1)中读取待剔除的空信号位置数量cnt,然后在每个时钟周期内将cnt递减1,当cnt递减为O时,跳转到状态Out ; 状态Out,用于将使能信号rd_enl置为高电平,读取裸码与调制基FIFO存储单元(1-1-1)中的非空信号位置对应的裸码及调制基数组{Ba,Ka},并将该数组{Ba,Ka}中的裸码Ka和调制基Ba分别赋给有效裸码的位置信息对应的密钥值key和调制基base,然后跳转倒状态Idle ; 其中,empty表示接收游程长度FIFO存储单元(1_1_2)是否为空的指示信号。
7.基于FPGA的筛选方法,其特征在于,该方法包括步骤Alice和步骤Bob, 步骤Al ice,用于从裸码中筛选出筛选码, 步骤Bob,用于从裸码中筛选出筛选码, 步骤Alice进一步包括游程长度译码的步骤和基比较的步骤; 步骤Bob进一步包括游程长度编码步骤、非空信号译码步骤和密钥抽取步骤, 所述的游程长度编码步骤,用于计算接收到的相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len, 所述相邻两个事件是指时序上相邻的两个均满足条件“K0!=0| |Κ1!=0”的事件;并对该计数结果run_len附加上标识位后,作为游程长度码runlerucode,还用于输出非空信号位置对应的探测结果nempty_kO、nempty_kl和非空信号位置对应的测量基nempty_bb, KO, Kl表示同一个事件的两个探测结果; 非空信号译码步骤,用于将输入的非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码,并输出有效裸码Bob_key,还用于根据调制基nempty_bb输出有效裸码Bob_key所对应的测量基bob_base, 游程长度译码步骤,用于将接收到的游程长度码runlen_COde转换为有效裸码的位置,并输出该有效裸码的位置对应的密钥值key和调制基base ; 基比较步骤,用于通过比较测量基bob_base与调制基base获得筛选码Alice_siftedkey 和该筛选码 Alice_siftedkey 的位置信息 result ; 密钥抽取步骤,用于根据筛选码Alice_siftedkey的位置信息result从有效裸码Bob_key中抽取并输出筛选码Bob_siftedkey。
8.根据权利要求7所述的基于FPGA的筛选方法,其特征在于,所述非空信号译码步骤用于将非空信号位置对应的探测结果nempty_k0、nempty_kl转换为有效裸码的转换原则为:当nempty_k0的取值为‘O’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘I’ ;当nempty_k0的取值为‘l’、nempty_kl的取值为‘0’时,有效裸码Bob_key为‘0’;当nempty_k0的取值为‘l’、nempty_kl的`取值为‘I’时,有效裸码Bob_key为‘I’或‘O’。
9.根据权利要求7或8所述的基于FPGA的筛选方法,其特征在于,所述的游程长度编码步骤包括游程长度计数步骤、编码状态控制步骤和FIFO存储步骤; 游程长度计数步骤,用于计算相邻两个事件之间符合条件“K0==0&&K1==0”的事件出现的次数,获得计数结果run_len, 编码状态控制步骤,用于控制写使能信号wr_en,将计数结果run_len写入FIFO存储步骤,并将非空信号位置对应的探测结果nempty_k0、nempty_kl和非空信号位置对应的测量基 nempty_bb 输出; FIFO存储步骤,用于存储等待发送给游程长度译码步骤的游程长度码runlerucode。
10.根据权利要求7或8所述的基于FPGA的筛选方法,其特征在于,所述的游程长度译码步骤包括裸码与调制基FIFO存储步骤、接收游程长度FIFO存储步骤和译码状态控制步骤; 裸码与调制基FIFO存储步骤,用于缓存输入的裸码Ka及调制基Ba,并获得非空信号位置对应的裸码及调制基{Ba,Ka}; 接收游程长度FIFO存储步骤,用于缓存游程长度码runlen_COde, 译码状态控制步骤,用于通过控制读使能信号rd_en2,获得游程长度码runlen_COde,还用于控制读使能信号rd_enl,来读取非空信号位置对应的裸码及调制基{Ba,Ka},从而获得效裸码的位置对应的密钥值key和调制基base。
【文档编号】H04L9/08GK103825726SQ201410074813
【公开日】2014年5月28日 申请日期:2014年3月3日 优先权日:2014年3月3日
【发明者】李琼, 韩琦, 乐丹, 林志斌, 牛夏牧 申请人:哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1