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 单片机验证伪码的程序
单片机核心源程序如下:
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 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;通过异或指令,计算反馈逻辑

