您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

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

时间:2007-1-20栏目:电子通信论文

在FPGA中。配置完成后,单片机发送的ASET信号由低电平跳变为高电平,使得FPGA内的PN码产生电路开始工作,并于CPU发送过来的PN码进行比较。比较结果一致就使能USER_DESIGN模块正常工作。其中PLL_BITSYS模块用来发生VERIFY_PN的位同步时钟,采用微

分锁相原理实现。各种参考资料都有较多介绍,在此不再详述。

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四个状态异或运算的结果。

图4 

    系统加电时,单片机将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码

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页

★相关文章: