系统加电时,单片机将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;通过异或指令,计算反馈逻辑
MOV C,ACC.0;反馈逻辑为Qin=Q0;
XOR Q2 XOR Q21 XOR Q23
MOV MID_VARY,C;将运算后的状态存到MID_VARY中右移运算
MOV ACC,WORD1
RRC A;移位Q7~Q0
MOV WORD1,A;移位后,保存到WORD1单元中
MOV ACC,WORD2
RRC A;移位Q15~Q8
MOV WORD2,A;移位后,保存到WORD2单元中
MOV Q7,C;将Q8的值赋到Q7
MOV ACC,WORD3
RRC A;移位Q23~Q16
MOV WORD3,A;移位后,保存到WORD3单元中
MOV Q15,C;将Q16的值赋到Q15
MOV ACC,WORD4
RRC A;移位Q31~Q24
MOV WORD4,A;移位后,保存到WORD4单元中
MOV Q23,C;将Q24的值赋到Q23
MOV ACC,WORD5
RRC A;移位Q39~Q32
MOV WORD5,A;移位后,保存到WORD5单元中
MOV Q31,C;将Q32的值赋到Q31
MOV C,MID_VARY;将前面反
馈计算的值赋给Q39
MOV Q39,C
LJMP XMALOOP ;继续产生下一代PN码元
6 其它加密方法介绍及比较
对SRAM工艺的FPGA进行加密,除了可以利用单片机实现外,还可以用E2PROM工艺的CPLD
实现。与用单片机实现相比,利用CPLD的优点在于可实现高速伪码,但要在硬件电路中增加一块CPLD芯片,使整个硬件电路复杂化,增加了成本。本文提供的加密方法考虑到配置完成后单片机处于空闲状态,此时利用单片机进行加密,不需要增加任何电路成本,使得整个系统硬件结构十分简洁。本文提出采用长伪随机码来实现加密。如果采用其它的算法产生验证信息,并增加单片机与FPGA工作时信息实时交互,使得获取验证信息的难度足够大,也可以达到类似的加密效果。
*** 16-192327D01
A*** 44-122035A90
A*** 16-404364-01
A*** 16-323732C01
A*** 02-189113D01
A*** 16-144173-01
A*** 16-184063-01
A*** 16-323790C01
A*** 16-323723D01
A*** 02-144406-01
A*** 1049-057-01
A*** 16-324097D01
A*** 16-193004-01
A*** 16-143803-01
A*** 1022-476-01
A*** 1034-315-01
A*** 93-123870A02
A*** 1111-457-01
A*** 1068-940-01
A*** 1010-998-01
A*** 62-106229A63
A*** 1044-963-01
A*** 95571-36001
A*** 02-196626-01
A*** 1022-475-01
A*** 16-195207-01
A*** 26-123950A44
A*** 22-122984A13
A*** 32-123808A71
A*** 60-122483A72
A*** 16-404607-01
A*** 1006-104-01
A*** 16-169702B01
A*** 1003-943-01
A*** 1042-820-01
A*** 16-193151-01
A*** 60-122486A27
A*** 02-195558-01
A*** 16-195646-01
A*** 16-193152-01
A*** 1042-820-02
A*** 49-106665A65
A*** 1053-220-01
A*** 28-119080A03
A*** 16-195062-01
A*** 39-113499A54
A*** 1027-212-01
A*** 1038-150-01
A*** 16-141293-01
A*** 16-188547-01
A*** 1007-712-01
A*** 16-193115-01
A*** 04-195969-01
A***/BAUMER 33-123495A02
A*** 1035-603-01
A*** 1016-507-01
A*** 16-323667B01
A*** 16-147633-01
A*** 16-329310-01
A*** 02-195445-01
A*** 16-195644-01
A*** 1075-913-01
A*** 1005-507-01
A*** 16-400650-01
A*** 16-193532-01
A*** 21-125141A12
A*** 50-106742A66
A*** 16-404494-01
A*** 16-195670-01
A*** 16-196701-01
A*** 16-323722D01
A*** 16-328443D01
A*** 51-106796A57
A*** 51-122832A31
A*** 1021-435-01
A*** 1021-656-01
A*** 1022-598-01
A*** 1041-107-01
A*** 1072-410-01
A*** 1072-414-01
A*** 1072-415-01
A*** 1072-427-01
A*** 1072-431-01
A*** 1072-432-01
A*** 1079-089-01
A*** 1079-090-01
A*** 1079-091-01
A***/ABB 26-123950A42
A*** 1072-472-01
A*** 1076-679-01
A*** 1076-680-01
A*** 1079-088-01
A*** 1069-899-01
A*** 1077-527-01
A*** 1084-278-01
A*** 1072-392-01
A*** 1072-395-01
A*** 1076-677-01
A*** 1051-410-01
A*** 16-402316-01
A*** 16-402315-01
A*** 26-122800A26
A*** 1072-393-01
A*** 1076-678-01
A*** 1077-524-01
A*** 1077-529-01
A*** 1072-396-01
A*** 1072-602-01
A*** 73055-73923
A*** 1017-328-01
A*** 1021-669-01
A*** 1032-346-01
A*** 1032-347-01
A*** 1016-512-01
A*** 1016-513-01
A*** 16-176259C02
A*** 51-108625A35
A*** 02-140398-04
A*** 44-105224A26
A*** 16-141391-01
A*** 16-320185B03
A*** 21-122477A32
A*** 32-123808A18
A*** 48-106661A68
A*** 02-338157-01
A*** 04-330868-11
A*** 845003895
A*** 845003879
A*** 16-189034-02
A*** 1075-460-01
A*** 16-322575B01
A*** 16-195779-01
A*** 02-336821-05
A*** 32-106856A90
A*** 1083-325-01
A*** 1086-753-01
A*** 16-194133-01
A***/Phoenix Contact 41-123497A08
A*** 16-321999B01
A*** 16-328355B02
A*** 16-320556C01
A*** 16-332156-01
A*** 16-321460B01
A*** 16-320487C01
A*** 32-125683A16
A*** 51-125326A15
A*** 16-320827C02
A*** 1016-876-01
A*** 1094-462-01
A*** 02-178368D01
A*** 16-184057-01
A*** 16-323172D01
A*** 1039-451-01
A*** 16-193532-01
A*** 1006-117-01
A*** 16-195176-01
A*** 60-122486A38
A*** 16-400324-01
A*** 1025-158-01
A*** 63-106758A64
A*** 26-122800A19
A*** 1003-895-01
A*** 16-195695-01
A*** 1041-589-01
A*** 1003-887-01
A*** 1052-764-01
A*** 1005-703-01
A*** 16-404968-01
A*** 57-106620A24
A***/Parker 60-122486A29
A*** 16-194328-01
A*** 60-122486A26
A*** 16-195053-01
A*** 1021-657-01
A*** 21-106863A17
A*** 22-120313A88
A*** 62-106622A49
A*** 02-187089D01
A*** 02-140419-01
A*** 16-187957B01
A*** 1048-721-01
A***/***C 1062-642-01
A*** 16-195734-01
A*** 16-320072C01
A*** 02-188922D01