基于TMS320VC5410的DES加密系統設計
2.3 DSP與PC通信模塊設計
系統設計中選擇了McBSP0作為TMS320VC5410從外界PC機接收明文數據和輸出密文的通道,直接通過PC機的RS232異步串口與TMS320VC54 10之間進行加密解密數據的傳送。這種方法通過軟件實現PC機與DSP之間的串行雙工通信,它的硬件設計簡單且不會過多占用CPU的時間,
可以實現數據的高速傳輸。
RS232異步串口采用負邏輯傳送數據,以10 V電壓狀態表示數據‘O’,-10 V電壓狀態表示數據‘1’;而DSP的IO口則以3.3 V表示高電平‘1’狀態或者無數據傳送,以0 V表示低電平‘O’狀態。因此為了使TMS320VC54lO的多通道緩沖串口與RS232接口進行通信,需要電平轉換電路,本文使用了MAXIM公司MAX232電平轉換器,如圖3所示。

3 系統軟件設計
選用TI公司CCS(Code Composer Studio)作為該加密系統軟件設計時的開發和調試工具,使用C語言和匯編混合編程的模式完成軟件設計。由于C語言編程具有便于閱讀、維護、交流和可移植性好的特點,因此采用C語言完成整個程序的主框架設計,在對時間要求比較苛刻的地方或對代碼運行效率有較大影響的場合采用匯編指令編寫。
3.1 DSP讀IC卡軟件實現
3.1.1 McBSP1串口配置
當把卡片插入卡座時,狀態開關選通,并且電路板上提示燈亮表示插卡到位,DSP內存中的讀卡狀態標志位設置為‘1’。TMS320VC5410開始初始化 McBSP1,使其工作在通用IO口狀態,采用子地址尋址的方式對SPCR11(映射地址為0049h,子地址為00h)、SPCR12(子地址為 01h)和PCR1(子地址為0Eh)等寄存器進行配置。配置代碼如下:
SPCR11=0x0000;
SPCR12=0x0000;
PCR1=0x3F00;
此時FSR1、FSX1、CLKR1和CLKX1均用作通用輸出管腳。把PCR中的FSRP位設置為‘O’,PCR1&=0xFFFB;則卡片Voc觸點電平為低,卡片處于掉電狀態;通過語句PCR1l=0x0004把FSR1引腳置高電平給卡片上電。
由于DSP的FSX1引腳與卡片的數據I/O觸點相連,要求FSX1引腳具有雙向傳輸的功能,但該引腳在同一時刻只能處于輸入或輸出一種狀態,為此定義了以下兩個宏實現引腳在輸入與輸出狀態的改變。
3.1.2 復位與復位應答
DSP檢測到讀卡狀態位為‘1’時,給卡片上電,CLK(和RST保留于狀態L,開始運行讀卡程序將卡中存儲的密鑰讀取至內存中。首先按照 ISO7816-3標準對SLE5542卡片進行應答復位,復位可以發生在操作過程的任意時刻。之后,RST線被置于H狀態,并維持至少15μs。在 RST狀態由高電平到低電平的轉換期間CLK提供一個時鐘脈沖,卡片內的地址計數器(address counter)清零,I/O引腳輸出有效數據的第1位,這一數據可視為復位應答;在此后連續31個時鐘脈沖的作用下,主存儲器中的前4個地址中的32位標頭數據被讀出;下一個時鐘脈沖使I/O引腳變為高阻狀態;此時卡片復位與復位應答完成。
3.1.3 DSP讀卡主程序設計
圖4為DSP讀IC卡主程序設計。卡片復位應答之后,則處于等待指令輸入的狀態。SLE5542每個指令均由控制字節、地址字節和數據字節組成,傳輸時從控制字節的最低位開始。控制字節傳送完畢之后,依次傳送地址字節和數據字節,均為低位在前。每個指令的傳輸都開始于一個Start條件 (在時鐘信號為高電平狀態,通過DSP發送卡片IO口一個下降沿),結束于Stop條件(在時鐘信號為高電平狀態,通過DSP發送卡片IO口一個上升沿)。根據指令作用的不同。SLE5542接收完成后可能處于數據輸出模式(DSP讀卡)或者內部處理模式(DSP寫卡)。

評論