江蘇大學(xué)-硬件基礎(chǔ)課程設(shè)計-A5-1流密碼器_第1頁
江蘇大學(xué)-硬件基礎(chǔ)課程設(shè)計-A5-1流密碼器_第2頁
江蘇大學(xué)-硬件基礎(chǔ)課程設(shè)計-A5-1流密碼器_第3頁
江蘇大學(xué)-硬件基礎(chǔ)課程設(shè)計-A5-1流密碼器_第4頁
江蘇大學(xué)-硬件基礎(chǔ)課程設(shè)計-A5-1流密碼器_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

江蘇大學(xué)計算機學(xué)院 TIME\@"yyyy年M月"2019年2月 江蘇大學(xué)計算機學(xué)院 TIME\@"yyyy年M月"2019年2月1.概述1.1設(shè)計目的(1)掌握FPGA設(shè)計軟件QuartusII的使用方法;(2)了解數(shù)字系統(tǒng)在信息安全領(lǐng)域中的應(yīng)用,熟悉查閱資料方法,鍛煉學(xué)習(xí)能力;(3)訓(xùn)練使用VerilogHDL進(jìn)行較復(fù)雜邏輯電路設(shè)計的能力;(4)熟練使用調(diào)試工具,提高分析問題、解決問題的能力;(5)培養(yǎng)良好的文檔習(xí)慣,鍛煉撰寫規(guī)范報告的能力。1.2設(shè)計要求(1)能夠全面地應(yīng)用課程中所學(xué)的基本理論和基本方法,完成從邏輯電路到簡單數(shù)字系統(tǒng)或計算機系統(tǒng)的設(shè)計;(2)能夠獨立思考、獨立查閱資料,獨立設(shè)計規(guī)定的系統(tǒng);(3)能夠獨立地完成實施過程,包括電路設(shè)計、調(diào)試驗證和排除錯誤。1.3設(shè)計任務(wù)用VerilogHDL設(shè)計一個A5/1流密碼器;設(shè)計多功能移位寄存器用于保存和移位要加密/解密的數(shù)據(jù);用流密碼器和移位寄存器組成對稱加密數(shù)據(jù)通路;用狀態(tài)機的方法設(shè)計控制單元,由控制單元控制自動完成加密及解密過程。(1)分析系統(tǒng)功能需求,制定詳細(xì)設(shè)計方案;(2)通過VerilogHDL完成規(guī)定的設(shè)計內(nèi)容,采取模塊化、層次化的設(shè)計方法設(shè)計電路;(3)在實驗板上驗證設(shè)計的正確性,認(rèn)真記錄測試過程中遇到的故障以及解決方法;(4)撰寫設(shè)計報告,并對存在的問題進(jìn)行分析、提出改進(jìn)意見。1.4實驗設(shè)備及軟件工具實驗設(shè)備:windows系統(tǒng)電腦實驗系統(tǒng):WeLab遠(yuǎn)程實驗板設(shè)計軟件:QuartusII12.0WebEdition2.設(shè)計2.1功能分析本次設(shè)計的A5/1密碼器是一個簡單易用的硬件加密/解密器,它的功能分析如下:保存和顯示數(shù)據(jù):硬件內(nèi)部設(shè)計有移位寄存器來保存輸入數(shù)據(jù)和加/解密獲得的數(shù)據(jù),通過數(shù)碼管可以顯示加/解密獲得的數(shù)據(jù)。即輸入待處理的數(shù)據(jù),啟動密碼器進(jìn)行處理后,就可以顯示處理后的數(shù)據(jù)加密/解密輸入的數(shù)據(jù):本密碼器是對稱式的密碼器,輸入明文能得到相應(yīng)的密文,而再輸入相應(yīng)的密文,就能解密出相應(yīng)的明文,限制二進(jìn)制輸入位數(shù)為16位,A5/1密鑰機制的復(fù)雜性使得它更難被破譯2.2整體設(shè)計思路本密碼器總體上分為兩個大模塊,一是外部接口模塊,該模塊中定義了外部信號和內(nèi)部信號的連接,從而實現(xiàn)內(nèi)外部的交互;二是FSM狀態(tài)機控制單元,也是實驗邏輯所在,該模塊控制了密碼器的狀態(tài)運轉(zhuǎn),在每個時鐘周期內(nèi)進(jìn)行相應(yīng)的數(shù)據(jù)處理,次態(tài)計算,以及狀態(tài)轉(zhuǎn)換,從而實現(xiàn)每個時鐘周期內(nèi)加密一位輸入數(shù)據(jù),加密了16次之后將其進(jìn)行輸出模塊一:外部接口將輸入端口賦值給內(nèi)部信號:將連續(xù)16個開關(guān)賦值給16位輸入信號IN,將按鍵0賦值給外部輸入的啟動信號start_asyn,將按鍵1賦值給重置信號_reset內(nèi)部信號賦值給輸出端口(數(shù)碼管)觀察:一位數(shù)碼管最多能表示四位二進(jìn)制數(shù),將16位的處理完成數(shù)據(jù)OUT分為四個部分分別賦值給四個數(shù)碼管啟動信號處理與模塊連接:將外部輸入的啟動信號start_asyn進(jìn)行處理,在啟動重置或者加/解密完成的時候?qū)嶋H的啟動信號start置0,在時鐘來臨的時候?qū)tart_asyn賦值給start。將此模塊連接到FSM控制模塊模塊二:FSM控制單元start=1,開始加密,計數(shù)器啟動start=1,開始加密,計數(shù)器啟動初態(tài)start=0,未啟動時count<4’hF,count計數(shù)一次,加密一位encrypt加密態(tài)init初態(tài)start=0,未啟動時count<4’hF,count計數(shù)一次,加密一位encrypt加密態(tài)init初態(tài)count=4’hF,加密完成初態(tài)count=4’hF,加密完成初態(tài)計數(shù)器:四位計數(shù)器,重置時計數(shù)值置0,啟動加/解密時啟動計數(shù),總共加/解密16位計數(shù)16次,從0開始計數(shù),到15即計數(shù)16次。完成加/解密計數(shù)值置0狀態(tài)機數(shù)據(jù)處理:重置信號為1則把輸出寄存器清零。時鐘來臨時,若現(xiàn)態(tài)為初態(tài),start=1則根據(jù)輸入數(shù)據(jù)和總密鑰初始化輸入寄存器和三個分密鑰寄存器;若現(xiàn)態(tài)為加密態(tài),加密一位輸入數(shù)據(jù)后放入輸出寄存器次態(tài)計算:若現(xiàn)態(tài)為初態(tài),start=1則次態(tài)為加密態(tài),否則為初態(tài);若現(xiàn)態(tài)為加密態(tài),count<4’hF則次態(tài)為加密態(tài),否則為初態(tài)狀態(tài)轉(zhuǎn)換:重置信號為1則將現(xiàn)態(tài)轉(zhuǎn)到初態(tài)。時鐘來臨時,將現(xiàn)態(tài)轉(zhuǎn)到計算好的次態(tài)運作流程和時序順序:(1)時鐘來臨:外部啟動信號start_asyn賦值給啟動信號start (‘+’表示同時發(fā)生) +根據(jù)現(xiàn)態(tài)來處理數(shù)據(jù)+狀態(tài)轉(zhuǎn)換+計數(shù)器根據(jù)條件計數(shù) (2)重置:輸出寄存器置0+現(xiàn)態(tài)跳轉(zhuǎn)為初態(tài)+計數(shù)器清0+啟動信號置0(現(xiàn)態(tài)為上次時鐘周期轉(zhuǎn)換成的次態(tài),組合邏輯的always塊有自己的觸發(fā)條件)2.3核心設(shè)計及闡釋本次設(shè)計的核心設(shè)計為FSM控制單元,各部件詳細(xì)設(shè)計如下:計數(shù)器:敏感列表為時鐘上升沿和重置信號上升沿,表示當(dāng)時鐘來臨或者按下重置鍵的時候激活該部件,重置信號為1或現(xiàn)態(tài)為初態(tài)時計數(shù)器置0,現(xiàn)態(tài)為加密態(tài)是計數(shù)一次狀態(tài)定義和變量定義:需要用到的變量,總密鑰在定義的時候初始化,并且不做更改。狀態(tài)定義,定義初態(tài)為0,加密態(tài)為1輸出邏輯(數(shù)據(jù)處理):數(shù)據(jù)處理是本次設(shè)計最核心的地方。敏感列表為時鐘上升沿和重置信號上升沿,表示當(dāng)時鐘來臨或者按下重置鍵的時候激活該部件。重置信號為1時將輸出寄存器清零。時鐘來臨時,若現(xiàn)態(tài)為初態(tài),start=1則根據(jù)輸入數(shù)據(jù)和總密鑰初始化輸入寄存器和三個分密鑰寄存器;若現(xiàn)態(tài)為加密態(tài),加密一位輸入數(shù)據(jù)后放入輸出寄存器,然后分密鑰寄存器、輸入寄存器和輸出寄存器都需要進(jìn)行移位。三個分密鑰有它們自己的線性反饋移位規(guī)則。每次將最高位加密后放到最低位,其他位都向高位移動一位,當(dāng)加密16次后,原來在最低位的第一位加密數(shù)據(jù)就回到了最高位下方的小部件是用來計算密碼流的,每次分密鑰寄存器進(jìn)行了更改,就按照當(dāng)前的分密鑰進(jìn)行一位密碼流的計算,然后才能根據(jù)此密碼流進(jìn)行數(shù)據(jù)加密,因為需要先計算出使能位才能再計算密碼流,所以只能使用組合邏輯和阻塞賦值,即滿足觸發(fā)條件時馬上運行所有語句,code計算時使用剛計算好的M進(jìn)行計算,而不是上次觸發(fā)運行時M計算的結(jié)果次態(tài)計算:敏感列表為*,表示所有信號改變的時候都會觸發(fā),這樣就能在每個信號變換時及時決定好次態(tài),這個部件也是組合邏輯,一經(jīng)觸發(fā)馬上執(zhí)行。有信號變化時,若現(xiàn)態(tài)為初態(tài),,完成信號done置0,start=1則次態(tài)為加密態(tài),否則為初態(tài);若現(xiàn)態(tài)為加密態(tài),count<4’hF則次態(tài)為加密態(tài),完成信號done置0,否則,加密次數(shù)達(dá)到16次,將完成信號done置1,將輸出寄存器的值賦給輸出信號OUT。注:數(shù)碼管顯示的時OUT的值,重置時重置的是輸出寄存器OR的值狀態(tài)轉(zhuǎn)換:敏感列表為時鐘上升沿和重置信號上升沿,表示當(dāng)時鐘來臨或者按下重置鍵的時候激活該部件。重置信號為1則將現(xiàn)態(tài)轉(zhuǎn)到初態(tài)。時鐘來臨時,將現(xiàn)態(tài)轉(zhuǎn)到計算好的次態(tài),而數(shù)據(jù)處理部分是根據(jù)上次轉(zhuǎn)換的次態(tài)來進(jìn)行判斷的,即本次時鐘周期中,現(xiàn)態(tài)為上次時鐘周期最后轉(zhuǎn)換成的次態(tài)除此之外,時鐘信號的控制對于時序電路的設(shè)計來說也是非常關(guān)鍵的,本次設(shè)計使用的時鐘分頻模塊為偶分頻模塊,分頻系數(shù)為50000,實驗板的時鐘頻率為50MHz,所以分頻后的時鐘輸出頻率為1KHz,即最大時鐘周期為1ms2.4驗證測試輸入四位16進(jìn)制數(shù)據(jù)4’h1234,得到數(shù)據(jù)4’h2A57輸入四位16進(jìn)制數(shù)據(jù)4’h2A57,得到數(shù)據(jù)4’h1234輸入四位16進(jìn)制數(shù)據(jù)4’hABCD,得到數(shù)據(jù)4’h93AE輸入四位16進(jìn)制數(shù)據(jù)4’h93AE,得到數(shù)據(jù)4’hABCD注:由于遠(yuǎn)程實驗板更新數(shù)據(jù)比較不穩(wěn)定,改變開關(guān)輸入數(shù)據(jù)后前幾次按下密碼器啟動鍵時,輸出數(shù)據(jù)為未完成16次加密時的數(shù)據(jù),但多按幾次后會維持在一個穩(wěn)定的顯示數(shù)據(jù),雖然再按也會有一兩次輸出不穩(wěn)定,但穩(wěn)定時的數(shù)據(jù)就是加密完成的數(shù)據(jù),通過對稱解密可以驗證。重置鍵重置的是內(nèi)部輸出寄存器,并不清零數(shù)碼管觀察的OUT信號,所以按下重置鍵沒有現(xiàn)象,所以不作演示附錄:設(shè)計源代碼文件目錄:只附上主要文件Virtual_Lab_Top.v和FSM_controller.v的代碼:Virtual_Lab_Top.v://A5/1密碼器`default_nettypenonemoduleVirtual_Lab_Top(inputwireCLOCK,inputwire[4:0]BUTTON,//按鍵inputwire[35:0]SWITCH,//開關(guān)outputwire[35:0]LED,//指示燈outputwire[3:0]HEX0,//數(shù)碼管 outputwire[3:0]HEX1, outputwire[3:0]HEX2, outputwire[3:0]HEX3);//輸入端口賦值給內(nèi)部信號wire[15:0]IN=SWITCH[15:0]; //需加/解密的輸入數(shù)據(jù)wirestart_asyn=BUTTON[0]; //啟動信號wire_reset=BUTTON[1]; //重置信號regstart; //啟動信號定義wiredone; //完成信號定義wire[15:0]OUT; //加/解密完成的輸出數(shù)據(jù)信號定義//啟動信號always@(posedgeCLOCKorposedge_resetorposedgedone)begin if(_reset==1||done==1) start<=1'b0; else start<=start_asyn;end//連接FSM控制模塊FSM_controlleru1(CLOCK,_reset,start,IN,OUT,done);//內(nèi)部信號賦值給輸出端口(數(shù)碼管)觀察assignHEX0=OUT[3:0];assignHEX1=OUT[7:4];assignHEX2=OUT[11:8];assignHEX3=OUT[15:12];endmoduleFSM_controller.v://-----------A5/1密碼器-----------//FSM控制單元moduleFSM_controller( inputCLOCK,_reset,start, input[15:0]IN, outputreg[15:0]OR, outputregdone);reg[15:0]IR,OUT; //輸入,輸出寄存器reg[63:0]LFSR=64'h3170604015ABCDEF; //十六位總密鑰reg[18:0]X; //分密鑰Xreg[21:0]Y; //分密鑰Yreg[22:0]Z; //分密鑰ZregM; //使能總位regcode; //每次得到的1位密碼流reg[3:0]count; //4位計數(shù)器//----------計數(shù)器-----------always@(posedgeCLOCKorposedge_reset) //為15即已加密16位begin if(_reset==1) count<=0; elseif(current_state==init) count<=0; elseif(current_state==encrypt) count<=count+1;endregcurrent_state,next_state; //----------狀態(tài)定義----------localparaminit=1'b0; //初始態(tài)localparamencrypt=1'b1; //加密態(tài)/*---------輸出邏輯----------輸出發(fā)生器定義了數(shù)據(jù)通路,并且通過行為描述來定義了數(shù)據(jù)通路的控制信號*/always@(posedgeCLOCKorposedge_reset)beginif(_reset==1) OR<=0;elsebegincase(current_state) init: begin//初始化 if(start==1) begin IR<=IN; X<=LFSR[18:0]; Y<=LFSR[40:19]; Z<=LFSR[63:41]; end end encrypt:begin OR<={OR[14:0],code^IR[15]}; IR<={IR[14:0],IR[15]}; X<={X[17:0],X[13]^X[16]^X[17]^X[18]}; Y<={Y[20:0],Y[20]^Y[21]}; Z<={Z[21:0],Z[7]^Z[20]^Z[21]^Z[22]}; end endcaseendendalways

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論