基于TMS320VC5410的DES加密系統(tǒng)設(shè)計(jì)
2.3 DSP與PC通信模塊設(shè)計(jì)
系統(tǒng)設(shè)計(jì)中選擇了McBSP0作為TMS320VC5410從外界PC機(jī)接收明文數(shù)據(jù)和輸出密文的通道,直接通過PC機(jī)的RS232異步串口與TMS320VC54 10之間進(jìn)行加密解密數(shù)據(jù)的傳送。這種方法通過軟件實(shí)現(xiàn)PC機(jī)與DSP之間的串行雙工通信,它的硬件設(shè)計(jì)簡(jiǎn)單且不會(huì)過多占用CPU的時(shí)間,
可以實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。
RS232異步串口采用負(fù)邏輯傳送數(shù)據(jù),以10 V電壓狀態(tài)表示數(shù)據(jù)‘O’,-10 V電壓狀態(tài)表示數(shù)據(jù)‘1’;而DSP的IO口則以3.3 V表示高電平‘1’狀態(tài)或者無數(shù)據(jù)傳送,以0 V表示低電平‘O’狀態(tài)。因此為了使TMS320VC54lO的多通道緩沖串口與RS232接口進(jìn)行通信,需要電平轉(zhuǎn)換電路,本文使用了MAXIM公司MAX232電平轉(zhuǎn)換器,如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
選用TI公司CCS(Code Composer Studio)作為該加密系統(tǒng)軟件設(shè)計(jì)時(shí)的開發(fā)和調(diào)試工具,使用C語言和匯編混合編程的模式完成軟件設(shè)計(jì)。由于C語言編程具有便于閱讀、維護(hù)、交流和可移植性好的特點(diǎn),因此采用C語言完成整個(gè)程序的主框架設(shè)計(jì),在對(duì)時(shí)間要求比較苛刻的地方或?qū)Υa運(yùn)行效率有較大影響的場(chǎng)合采用匯編指令編寫。
3.1 DSP讀IC卡軟件實(shí)現(xiàn)
3.1.1 McBSP1串口配置
當(dāng)把卡片插入卡座時(shí),狀態(tài)開關(guān)選通,并且電路板上提示燈亮表示插卡到位,DSP內(nèi)存中的讀卡狀態(tài)標(biāo)志位設(shè)置為‘1’。TMS320VC5410開始初始化 McBSP1,使其工作在通用IO口狀態(tài),采用子地址尋址的方式對(duì)SPCR11(映射地址為0049h,子地址為00h)、SPCR12(子地址為 01h)和PCR1(子地址為0Eh)等寄存器進(jìn)行配置。配置代碼如下:
SPCR11=0x0000;
SPCR12=0x0000;
PCR1=0x3F00;
此時(shí)FSR1、FSX1、CLKR1和CLKX1均用作通用輸出管腳。把PCR中的FSRP位設(shè)置為‘O’,PCR1&=0xFFFB;則卡片Voc觸點(diǎn)電平為低,卡片處于掉電狀態(tài);通過語句PCR1l=0x0004把FSR1引腳置高電平給卡片上電。
由于DSP的FSX1引腳與卡片的數(shù)據(jù)I/O觸點(diǎn)相連,要求FSX1引腳具有雙向傳輸?shù)墓δ?,但該引腳在同一時(shí)刻只能處于輸入或輸出一種狀態(tài),為此定義了以下兩個(gè)宏實(shí)現(xiàn)引腳在輸入與輸出狀態(tài)的改變。
3.1.2 復(fù)位與復(fù)位應(yīng)答
DSP檢測(cè)到讀卡狀態(tài)位為‘1’時(shí),給卡片上電,CLK(和RST保留于狀態(tài)L,開始運(yùn)行讀卡程序?qū)⒖ㄖ写鎯?chǔ)的密鑰讀取至內(nèi)存中。首先按照 ISO7816-3標(biāo)準(zhǔn)對(duì)SLE5542卡片進(jìn)行應(yīng)答復(fù)位,復(fù)位可以發(fā)生在操作過程的任意時(shí)刻。之后,RST線被置于H狀態(tài),并維持至少15μs。在 RST狀態(tài)由高電平到低電平的轉(zhuǎn)換期間CLK提供一個(gè)時(shí)鐘脈沖,卡片內(nèi)的地址計(jì)數(shù)器(address counter)清零,I/O引腳輸出有效數(shù)據(jù)的第1位,這一數(shù)據(jù)可視為復(fù)位應(yīng)答;在此后連續(xù)31個(gè)時(shí)鐘脈沖的作用下,主存儲(chǔ)器中的前4個(gè)地址中的32位標(biāo)頭數(shù)據(jù)被讀出;下一個(gè)時(shí)鐘脈沖使I/O引腳變?yōu)楦咦锠顟B(tài);此時(shí)卡片復(fù)位與復(fù)位應(yīng)答完成。
3.1.3 DSP讀卡主程序設(shè)計(jì)
圖4為DSP讀IC卡主程序設(shè)計(jì)??ㄆ瑥?fù)位應(yīng)答之后,則處于等待指令輸入的狀態(tài)。SLE5542每個(gè)指令均由控制字節(jié)、地址字節(jié)和數(shù)據(jù)字節(jié)組成,傳輸時(shí)從控制字節(jié)的最低位開始??刂谱止?jié)傳送完畢之后,依次傳送地址字節(jié)和數(shù)據(jù)字節(jié),均為低位在前。每個(gè)指令的傳輸都開始于一個(gè)Start條件 (在時(shí)鐘信號(hào)為高電平狀態(tài),通過DSP發(fā)送卡片IO口一個(gè)下降沿),結(jié)束于Stop條件(在時(shí)鐘信號(hào)為高電平狀態(tài),通過DSP發(fā)送卡片IO口一個(gè)上升沿)。根據(jù)指令作用的不同。SLE5542接收完成后可能處于數(shù)據(jù)輸出模式(DSP讀卡)或者內(nèi)部處理模式(DSP寫卡)。
評(píng)論