基于TMS320VC5410的DES加密系統(tǒng)設(shè)計(jì)
通過TMS320VC5410發(fā)送讀卡命令和所要讀取內(nèi)容的地址(N=0,…,255)后,在CLK信號(hào)的作用下卡片將主存儲(chǔ)器中的數(shù)據(jù)按比特移至I/O 引腳發(fā)送至DSP內(nèi)存中。讀取數(shù)據(jù)完成后,額外的一個(gè)時(shí)鐘信號(hào)將使I/O引腳變?yōu)楦咦锠顟B(tài),卡片退出輸出模式等待接收新的指令,也可以用Break條件 (在CLK為低時(shí),把RST信號(hào)由低電平變?yōu)楦唠娖綘顟B(tài))結(jié)束此次操作。
圖5顯示了TMS320VC5410對(duì)SLE5542卡片讀卡程序的調(diào)試結(jié)果,為了驗(yàn)證讀卡功能的實(shí)現(xiàn),系統(tǒng)讀取了卡片中的所有字節(jié)的內(nèi)容。其中前8個(gè)字節(jié)為‘A2131091FFFF8115’為IC卡的廠商標(biāo)識(shí);之后地址8~20的13個(gè)字節(jié)全為‘FF’是寫保護(hù)區(qū);地址21~26是6個(gè)字節(jié)的用戶代碼‘D27600000400’,之后又是5個(gè)字節(jié)的寫保護(hù)區(qū);從地址32~255之間的數(shù)據(jù)是用戶數(shù)據(jù)區(qū),可以在這些地址里存放加密系統(tǒng)的密鑰和其他的用戶信息。
3.2 PC通信軟件設(shè)計(jì)
3.2.1 MeBSP0的初始化配置
首先通過SPCR1O=0x0000,SPCR20=Ox0000把RRST與XRST位設(shè)置為‘O’,使串口復(fù)位。設(shè)置PCR0=0x0BOC;采樣率由DSP內(nèi)部產(chǎn)生,接收與發(fā)送幀同步信號(hào)為低有效,時(shí)鐘上升沿發(fā)送數(shù)據(jù)、下降沿接收數(shù)據(jù)。其次通過接收控制寄存器RCR1O(子地址為02h)和 RCR20(子地址為03h)來對(duì)DSP串口接收模式進(jìn)行設(shè)置,令RCR10=0x0940;RCR20=0x0004;接收幀長(zhǎng)度10字、每字16 bit,忽略除第一個(gè)幀同步后的其他幀同步信號(hào)。通過傳輸控制寄存器XCR10(子地址為04h)和XCR20(子地址為05h)來對(duì)DSP串口發(fā)送模式進(jìn)行設(shè)置,令XCR10=0x0940;XCP20=0x0004;使數(shù)據(jù)的發(fā)送與接收模式一致。另外,采樣率發(fā)生器控制寄存器SRGR10(子地址為 06h)和SRGR20(子地址為07h)控制采用率發(fā)生器的工作模式。本系統(tǒng)中選擇PC機(jī)的串口工作波特率為38 400,采樣率發(fā)生器計(jì)算公式為:
CLKGDV=CPU工作頻率/(16x波特率)-1
由于TMS320VC5410工作頻率為100 MHz,因此CLKGDV=100 000 000/(16x38 400)-1=161,設(shè)置SRGR1=0x00A1,SRGR2=0x2000;最后通過SPCR1=0x0001,SRGR2=0x2000;對(duì)串口使能,處于可操作狀態(tài),至此完成了McBSPO的初始化配置。
3.2.2 數(shù)據(jù)格式的統(tǒng)一
DSP通過McBSP0接收外界PC機(jī)數(shù)據(jù)采用中斷方式。這里為了實(shí)現(xiàn)TMS320VC5410同步串口與PC機(jī)異步串口通信時(shí)數(shù)據(jù)格式的統(tǒng)一,把 McBSP的1個(gè)16位字等效為PC機(jī)串口傳送的1個(gè)8N1模式數(shù)據(jù)(1個(gè)起始位+8個(gè)數(shù)據(jù)位+1個(gè)停止位)的1位。PC機(jī)串口每發(fā)送1個(gè)位的數(shù)據(jù),DSP采樣16次暫存數(shù)據(jù)接收寄存器DRR10(地址為21h)中。例如PC機(jī)通過RS232串口傳送數(shù)據(jù)為‘1’,則DRR10經(jīng)過16次采用后接收一個(gè)字的數(shù)據(jù)為‘FFFFh’,同理若前者后‘0’,則后者為‘0000h’。之后觸發(fā)McBSPO串口接收中斷,DSP執(zhí)行中斷服務(wù)程序?qū)RR1O 中的有效數(shù)據(jù)(除去起始位和停止位)取走至內(nèi)存中,并對(duì)計(jì)數(shù)器加1。當(dāng)接收到一個(gè)完整的幀后,DSP置串口數(shù)據(jù)解碼標(biāo)志位為‘1’,DSP開始運(yùn)行解碼程序,將‘FFFFh’和‘0000h’分別等效為一個(gè)比特位‘1’和‘0’,從而恢復(fù)出原始的數(shù)據(jù)幀。
當(dāng)DSP對(duì)接收到的數(shù)據(jù)完成加密之后需要反饋輸出,TMS320VC5410串口數(shù)據(jù)向PC機(jī)發(fā)送的過程與數(shù)據(jù)接收的過程正好相反。每幀數(shù)據(jù)都需要進(jìn)行串口編碼之后通過數(shù)據(jù)發(fā)送寄存器DXR1O(地址為23h)發(fā)出。即把8位有效數(shù)據(jù)中的‘0’編碼為‘0000h’,‘1’編碼為‘FFFFh’,按照從低位到高位的順序重新排列編碼后的數(shù)據(jù),并在幀首和幀尾分別添加起始位‘0000h’和結(jié)束位‘FFFFh’,將每組10個(gè)數(shù)據(jù)作為一幀信號(hào)發(fā)出。
圖6顯示了本文設(shè)計(jì)的加密系統(tǒng)的實(shí)驗(yàn)結(jié)果。通過PC機(jī)和RS-232串口發(fā)送字符‘11112222’的十六進(jìn)制形式為‘3131313132323232’共64 bit,TMS320VC5410接收到64 bit明文數(shù)據(jù)后,通過讀取IC卡中的64 bit密鑰‘310000000000031’并對(duì)明文進(jìn)行DES加密后,輸出密文的十六進(jìn)制形式為‘96B466D634DE9A2D’。結(jié)果顯示系統(tǒng)工作穩(wěn)定可靠,符合設(shè)計(jì)要求。
4 結(jié)論
本文采用SLE5542型IC卡存儲(chǔ)密鑰,TMS320VC5410中的McBSP引腳與卡片觸點(diǎn)連接并實(shí)現(xiàn)對(duì)卡片的應(yīng)答復(fù)位和內(nèi)容的讀取,同時(shí)通過RS2 32串口與個(gè)人PC機(jī)實(shí)時(shí)交換數(shù)據(jù),接收PC機(jī)發(fā)送的明文并對(duì)其DES加密后反饋輸出。由于McBSP的工作機(jī)制是同步串口,把其當(dāng)作通用I/O口和異步串口使用時(shí)必須注意內(nèi)部寄存器的設(shè)置和輸入輸出方向的設(shè)定。經(jīng)軟硬件調(diào)試,實(shí)驗(yàn)結(jié)果表明該方案完全可以滿足大數(shù)據(jù)量的加密,合理使用了硬件資源,可以進(jìn)一步升級(jí)擴(kuò)展作為數(shù)據(jù)采集保密系統(tǒng)的加密模塊。
本文引用地址:http://butianyuan.cn/article/156883.htm
評(píng)論