《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應用 > 基于SOC的FPSLIC硬件實現(xiàn)分組加密算法
基于SOC的FPSLIC硬件實現(xiàn)分組加密算法
摘要: 美國Atmel公司生產(chǎn)的AT94K系列芯片是以Atmel 0.35的5層金屬CMOS工藝制造,。它基于SRAM的FPGA,、高性能準外設(shè)的Atmel 8位RISC AVR單片機,。另外器件中還包括擴展數(shù)據(jù)和程序SRAM及器件控制和管理邏輯。
關(guān)鍵詞: SOC FPSLIC 硬件 分組加密 AVR單片機
Abstract:
Key words :

       1  引言:

       美國Atmel公司生產(chǎn)的AT94K系列芯片是以Atmel 0.35 的5層金屬CMOS工藝制造,。它基于SRAM的FPGA,、高性能準外設(shè)的Atmel 8位RISC AVR單片機。另外器件中還包括擴展數(shù)據(jù)和程序SRAM及器件控制和管理邏輯,。圖1-1是Atmel公司的FPSLIC內(nèi)部結(jié)構(gòu)圖,。

FPSLIC內(nèi)部結(jié)構(gòu)圖

                                       

 

                  圖1-1 FPSLIC內(nèi)部結(jié)構(gòu)圖

       AT94K內(nèi)嵌AVR內(nèi)核,Atmel公司的FPSLIC可編程SOC內(nèi)嵌高性能和低功耗的8位AVR單片機,,最多還帶有36KB的SRAM,,2個UART、1個雙線串行接口,,3個定時/計數(shù)器,、1個8 8乘法器以及一個實時時鐘。通過采用單周期指令,,運算速度高達1MPS/MHz,,這樣用戶可以充分優(yōu)化系統(tǒng)功耗和處理速度。AVR內(nèi)核基于增強型RISC結(jié)構(gòu),,擁有豐富的指令系統(tǒng)以及32個通用工作寄存器,。而且所有通用寄存器都與算術(shù)邏輯單元ALU相連;另外,,在一個時鐘周期內(nèi),,執(zhí)行單條指令時允許存取2個獨立的寄存器,,這種結(jié)構(gòu)使得代碼效率更高,并且在相同的時鐘頻率下,,可以獲得比傳統(tǒng)的CISC微處理器高10倍的數(shù)據(jù)吞吐量,。AVR從片內(nèi)SRAM執(zhí)行程序,由于AVR運行代碼存儲在SRAM中,,因此它可以提供比較大的吞吐量,,這樣可以使其工作在突發(fā)模式上。在這種模式上,,AVR大多時間都是處于低功耗待機狀態(tài),,并能在很短的時間里進行高性能的處理。微處理器在突發(fā)模式運行模式下的平均功耗要比長時間低頻率運行時的功耗低得多,。FPSLIC的待機電流小于100 ,,典型的工作電流為2-3mA/MHz。在系統(tǒng)上電時,,F(xiàn)PGA配置SRAM和AVR程序SRAM都能自動地通過Atmel在系統(tǒng)可編程串行存貯器AT17來裝載,。

       2    FPSLIC硬件的設(shè)計實現(xiàn):

       2.1 硬件實現(xiàn)框圖

系統(tǒng)硬件實現(xiàn)框圖

                                                             圖2-1系統(tǒng)硬件實現(xiàn)框圖

       圖2-1是為了實現(xiàn)加密算法的硬件框圖。計算機通過它的串口和FPSLIC的通信端口UART0相連,,用來進行數(shù)據(jù)的傳送和接收,。FPSLIC通過AVR的通信端口等待接收主機傳來的信息,通過內(nèi)部的下載程序?qū)?shù)據(jù)進行處理,,最后再傳回到主機上,。圖2-1中FPGA是一個計數(shù)器,此計數(shù)器一上電就從0計數(shù),,并用進位輸出信號產(chǎn)生一個AVR中斷,,即進位輸出信號RCO連接到AVR的中斷信號INTA0。當AVR接收到由計數(shù)器的進位信號產(chǎn)生的中斷時,,則執(zhí)行INTA0的中斷服務程序(ISR),。在此期間,AVR就給INTA0產(chǎn)生的次數(shù)計數(shù),,并把它放到8位的AVR-FPGA數(shù)據(jù)總線上,,這時就會觸發(fā)AVR的寫使能信號(FPGA的aWE信號端)和FPGA的I/O SELECT0信號(FPGA的LOAD信號端),同時從AVR——FPGA數(shù)據(jù)總線上將數(shù)據(jù)載入計數(shù)器,。數(shù)碼管的各極連接在實驗板上的可編程端口,,通過引腳配置用來顯示數(shù)據(jù)。LED指示燈在AVR I/O輸出的D口,,直接將數(shù)據(jù)通過命令PORTD來顯示。FPGA的時鐘通過GCLK5選自AVR單片機的時鐘,。我們以DES數(shù)據(jù)加密為例,,由仿真試驗可以得出DES加密的速率為57.024 kbit/s,它大于串口的最大速率19.2kbit/s,,因此可以實時進行數(shù)據(jù)的加密操作。    
        一個典型的FPSLIC設(shè)計通常應該包括以下幾個步驟:

       1.    利用聯(lián)合仿真軟件建立一個FPSLIC工程,。 

 

 

     2.    預先建立一個AVR軟件仿真程序文件,。

       3.    預先建立一個FPGA的硬件仿真程序文件。

       4.    設(shè)置和運行AVR-FPGA接口設(shè)計,。

       5.    運行布局前的聯(lián)合仿真Pre-layout Converification(這一步是可選擇的),。

       6.    運行Figaro-IDS進行FPGA的布局布線。

       7.    運行布局后的聯(lián)合仿真Pos-layout Converification(這一步是可選擇的),。

       8.    器件編程數(shù)據(jù)下載與實驗驗證,。    

        我們以DES數(shù)據(jù)加密為例,(新建的工程名為lab1.apj,AVR仿真程序文件為desjiami.asm,,F(xiàn)PGA的硬件仿真程序為Count.vhdl),。

       2.2 編譯AVR的仿真程序軟件  

編譯AVR的仿真程序軟件


       (以上程序代碼是整個仿真的程序框架,最主要的是對接口進行初始化和對發(fā)送和接收部分進行設(shè)置,,以便進行串口的通信)

       2.3器件編程與試驗驗證

       1.    將下載電纜ATDH2225的25針的一端從計算機的并行口接出,,令一端10針扁平線插入ATSTK94實驗板的J1插頭上。下載電纜的標有紅色的線和J1插頭的第一腳連接,。

       2.    因為要和計算機串口進行通信,,因此要制作一個串口連接電纜,其九針連接電纜的連接關(guān)系如下圖2-2,。電纜一端連接在計算機的任意串口上,,另一端連接在實驗板上的UART0上。連接電纜只需要連接三根線,,UART0的2端連接在FPSLIC的發(fā)送端,,因此它和計算機的串口2端(接收數(shù)據(jù)端)相連。UART0的3端連接在FPSLIC的接收端,,因此它和計算機的串口2端(發(fā)送數(shù)據(jù)端)相連,。

串口通信連接指示圖

                                           圖2-2  串口通信連接指示圖
       3.    選擇4MHz時鐘,即在實驗板上將JP17設(shè)置在靠近板子內(nèi)側(cè)位置,,而將JP18不連接,,也就是將其連接跳線拔掉。

       4.    將直流9V電源接頭插入ATSTK94實驗板的電源插座P3上,。

      

 

5.    將實驗板上的開關(guān)SW10調(diào)至PROG位置,。開關(guān)SW10有編程(PROG)和運行(RUN)兩種連接。在編程位置,,用戶可以通過下載電纜和下載程序軟件CPS,將System Designer生成的FPSLIC數(shù)據(jù)流文件給配置存儲器編程,。在運行位置,F(xiàn)PSLIC器件將載入數(shù)據(jù)流文件并運行該設(shè)計,。 

       6.    打開電源開關(guān)SW14,即將它調(diào)整到ON位置,。這時候?qū)嶒灠迳想娫窗l(fā)光二極管(紅色)發(fā)光,,表示實驗板上已經(jīng)上電。這樣,,硬件就連接完畢,,等待下一步的數(shù)據(jù)下載。

       7.    單擊OK按鈕,,即生成數(shù)據(jù)流文件,,它將下載到ATSTK94實驗板的配置存儲器中,這時,,Atmel的AT17配置可編程系統(tǒng)(CPS)窗口被打開,,如下圖2-3,并自動給器件編程,。

FPSLIC控制寄存器設(shè)置對話框

                                                 圖2-3  FPSLIC控制寄存器設(shè)置對話框

       在Procesure下拉列表框中選擇/P Partition,Program and Verify from an Atmel File,。在Family下拉列表框中選擇AT40K/Cypress,在Device下拉列表框中選擇AT17LV010(A)(1M)。其余采用系統(tǒng)的默認值,。然后點擊Start Produce按鈕,,如果電纜等硬件設(shè)置正確,那么程序?qū)⑾螺d到實驗板上,。

       8.     將開關(guān)SW10調(diào)至RUN位置,,打開串口調(diào)試程序Accesspot129軟件。對于Accessport129的設(shè)置為:串口為COM1(根據(jù)用戶選擇的計算機端口來設(shè)定),波特率:9600,,校驗位:NONE,,數(shù)據(jù)位為8 ,停止位選擇1,,串口開關(guān)選擇開,;

       3  試驗結(jié)果:

       圖3-1中,下面方框中是要輸入的64比特的明文,,(程序中輸入的明文為0123456789ABCDEF),當這64個比特的數(shù)據(jù)全部輸入完畢后,,點擊發(fā)送按鈕,在軟件上方的數(shù)據(jù)接收端顯示出經(jīng)過DES算法加密后的密文(85E813540F0AB405),。通過硬件實現(xiàn)的的結(jié)果和實際仿真結(jié)果是完全一致的,。同時通過數(shù)碼管也分別顯示出最后的加密數(shù)據(jù)。至此整個硬件試驗結(jié)束,。

Accesspot串口調(diào)試軟件顯示的結(jié)果圖

                                               圖3-1 Accesspot串口調(diào)試軟件顯示的結(jié)果圖

       從上面的串口調(diào)試軟件可以看出,,DES算法的仿真是正確的也是可以在實際中應用的。同理,,可以通過以上的方法來實現(xiàn)DES解密和AES等其它的分組加解密,。 

 
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。