RSS

单片机SRAM工艺的FPGA加密应用

发布时间:2008-04-14 关键字: 加密 工艺 MOV 配置 FPGA 移位 电路 单片机 产生


       COMPARE_PN模块完成对单片机发送的伪随机码和PNMA_PRODUCER模块产生的伪随机码的比较:当两路相同,输出1,不同时输出0;若两路伪码完全匹配,则恒定输出1,使USER_DESIGN电路正常工作,否则,输出为类似于伪码的信号,使USER_DESIGN电路不能正常工作。

4 FPGA内的伪随机码产生电路

      
PNMA_PRODUCER 模块和来产生伪随机码,采用移位寄存器实现,具体电路见图5。LPM_SHIFTREG为移位寄存器模块。移位寄存器ASET端为异步置位端,高电平有效,即ASET为高时,将初值85置入移位寄存器内,LPMSHIFTREG模块的“DIRECTION”设置为“RIGHT”即移位方向为右移。Q[39..0]表示40位移位寄存器的各个状态,SHIFTIN为串行输入,SHIFTIN为Q0、Q2、Q21、Q23四个状态异或运算的结果。

   系统加电时,单片机将ASET置为低电平,经过一个非门,变成高电平使移位寄存器处于置位状态。在配置完成后,单片机将ASET信号置为高电平,经非门使移位寄存器正常工作。利用移位寄存器电路产生伪随机码的电路非常简单,反馈逻辑也便于修改。

       5 单片机验证伪码的程序

      




在位寻址区(20H~2FH)定义了字节变量WORD1、WORD2、WORD3、WORD4、WORD5,用来存储移位寄存器的40个状态。其中Q0对应 WORD1.0,Q1对应WORD1.1……Q39对应WORD5.7。同时,在位寻址区定义了WORD6、WORD7、WORD8、WORD9,用来进行后面的反馈逻辑计算。单片机一上电,首先将ASET脚清零,同时,也将PNMA脚清零,将初值55H作为移位寄存器的初始状态,接着完成FPGA的上电配置工作。配置完成后,单片机检测来自FPGA的外部中断CONFDONE。如果配置完成,CONFDONE为高电;否则,为低电平。在检测到 CONFDONE为高电平,即配置完成后,单片机将ASET脚置为1,使能FPGA内的伪码发生电路工作,单片机产生伪随机码的流程。配置完成后,首先将 Q0输出到PNMA引脚,接着计算反馈逻辑输入,将参与反馈运算的几个状态运算结果存在中间变量MID_VARY中。然后,对各个状态进行右移,为了提高运算效率,使用了带进位C的字节循环右移指令。移位完成后,将MID_VARY存入Q39,再将新的Q0输出到PNMA引脚,程序循环执行产生伪随机码。
   单片机核心源程序如下:

       CLR ASET;单片机上电后将ASET位清0
       CLR PNMA
       MOV WORD1,#55h
       MOV WORD2,#0
       MOV WORD3,#0
       MOV WORD4,#0
       MOV WORD5,#0;将55H作为移位寄存器的初值PEIZHI:
       ……;进行FPGA的配置工作
       JB CONFDONE,PNPRODUCE;根据CONFDONE判断配置是否完成
       LJMP PEIZHI;否则继续配置
       PNPRODUCE:SETB ASET;配置完成后,将ASET脚置1
       XMQLOOP:MOV C,Q0
       MOV PNMA,C;将Q0输出到PNMA引脚,作为PN码
       MOV C,Q0
       MOV WORD6.0,C;用WORD6单元的0位来存Q0的状态
       MOV C,Q2
       MOV WORD7.0,C;用WORD7单元的0位来存Q2的状态
      




; MOV C,Q21
       MOV WORD8.0,C;用WORD8单元的0位来存Q21的状态
       MOV C,Q23
       MOV WORD9.0,C;用WORD9单元的0位来存Q23的状态
       MOV ACC,WORD6
       XRL A,WORD7
       XRL A,WORD8
       XRL A,WORD9;通过异或指令,计算反馈逻辑
上一篇:超低功耗MCU之战拉开帷幕
下一篇:没有了
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册