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

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

江蘇大學(xué)計(jì)算機(jī)學(xué)院 TIME\@"yyyy年M月"2019年2月 江蘇大學(xué)計(jì)算機(jī)學(xué)院 TIME\@"yyyy年M月"2019年2月1.概述1.1設(shè)計(jì)目的(1)掌握FPGA設(shè)計(jì)軟件QuartusII的使用方法;(2)了解數(shù)字系統(tǒng)在信息安全領(lǐng)域中的應(yīng)用,熟悉查閱資料方法,鍛煉學(xué)習(xí)能力;(3)訓(xùn)練使用VerilogHDL進(jìn)行較復(fù)雜邏輯電路設(shè)計(jì)的能力;(4)熟練使用調(diào)試工具,提高分析問(wèn)題、解決問(wèn)題的能力;(5)培養(yǎng)良好的文檔習(xí)慣,鍛煉撰寫規(guī)范報(bào)告的能力。1.2設(shè)計(jì)要求(1)能夠全面地應(yīng)用課程中所學(xué)的基本理論和基本方法,完成從邏輯電路到簡(jiǎn)單數(shù)字系統(tǒng)或計(jì)算機(jī)系統(tǒng)的設(shè)計(jì);(2)能夠獨(dú)立思考、獨(dú)立查閱資料,獨(dú)立設(shè)計(jì)規(guī)定的系統(tǒng);(3)能夠獨(dú)立地完成實(shí)施過(guò)程,包括電路設(shè)計(jì)、調(diào)試驗(yàn)證和排除錯(cuò)誤。1.3設(shè)計(jì)任務(wù)用VerilogHDL設(shè)計(jì)一個(gè)A5/1流密碼器;設(shè)計(jì)多功能移位寄存器用于保存和移位要加密/解密的數(shù)據(jù);用流密碼器和移位寄存器組成對(duì)稱加密數(shù)據(jù)通路;用狀態(tài)機(jī)的方法設(shè)計(jì)控制單元,由控制單元控制自動(dòng)完成加密及解密過(guò)程。(1)分析系統(tǒng)功能需求,制定詳細(xì)設(shè)計(jì)方案;(2)通過(guò)VerilogHDL完成規(guī)定的設(shè)計(jì)內(nèi)容,采取模塊化、層次化的設(shè)計(jì)方法設(shè)計(jì)電路;(3)在實(shí)驗(yàn)板上驗(yàn)證設(shè)計(jì)的正確性,認(rèn)真記錄測(cè)試過(guò)程中遇到的故障以及解決方法;(4)撰寫設(shè)計(jì)報(bào)告,并對(duì)存在的問(wèn)題進(jìn)行分析、提出改進(jìn)意見。1.4實(shí)驗(yàn)設(shè)備及軟件工具實(shí)驗(yàn)設(shè)備:windows系統(tǒng)電腦實(shí)驗(yàn)系統(tǒng):WeLab遠(yuǎn)程實(shí)驗(yàn)板設(shè)計(jì)軟件:QuartusII12.0WebEdition2.設(shè)計(jì)2.1功能分析本次設(shè)計(jì)的A5/1密碼器是一個(gè)簡(jiǎn)單易用的硬件加密/解密器,它的功能分析如下:保存和顯示數(shù)據(jù):硬件內(nèi)部設(shè)計(jì)有移位寄存器來(lái)保存輸入數(shù)據(jù)和加/解密獲得的數(shù)據(jù),通過(guò)數(shù)碼管可以顯示加/解密獲得的數(shù)據(jù)。即輸入待處理的數(shù)據(jù),啟動(dòng)密碼器進(jìn)行處理后,就可以顯示處理后的數(shù)據(jù)加密/解密輸入的數(shù)據(jù):本密碼器是對(duì)稱式的密碼器,輸入明文能得到相應(yīng)的密文,而再輸入相應(yīng)的密文,就能解密出相應(yīng)的明文,限制二進(jìn)制輸入位數(shù)為16位,A5/1密鑰機(jī)制的復(fù)雜性使得它更難被破譯2.2整體設(shè)計(jì)思路本密碼器總體上分為兩個(gè)大模塊,一是外部接口模塊,該模塊中定義了外部信號(hào)和內(nèi)部信號(hào)的連接,從而實(shí)現(xiàn)內(nèi)外部的交互;二是FSM狀態(tài)機(jī)控制單元,也是實(shí)驗(yàn)邏輯所在,該模塊控制了密碼器的狀態(tài)運(yùn)轉(zhuǎn),在每個(gè)時(shí)鐘周期內(nèi)進(jìn)行相應(yīng)的數(shù)據(jù)處理,次態(tài)計(jì)算,以及狀態(tài)轉(zhuǎn)換,從而實(shí)現(xiàn)每個(gè)時(shí)鐘周期內(nèi)加密一位輸入數(shù)據(jù),加密了16次之后將其進(jìn)行輸出模塊一:外部接口將輸入端口賦值給內(nèi)部信號(hào):將連續(xù)16個(gè)開關(guān)賦值給16位輸入信號(hào)IN,將按鍵0賦值給外部輸入的啟動(dòng)信號(hào)start_asyn,將按鍵1賦值給重置信號(hào)_reset內(nèi)部信號(hào)賦值給輸出端口(數(shù)碼管)觀察:一位數(shù)碼管最多能表示四位二進(jìn)制數(shù),將16位的處理完成數(shù)據(jù)OUT分為四個(gè)部分分別賦值給四個(gè)數(shù)碼管啟動(dòng)信號(hào)處理與模塊連接:將外部輸入的啟動(dòng)信號(hào)start_asyn進(jìn)行處理,在啟動(dòng)重置或者加/解密完成的時(shí)候?qū)?shí)際的啟動(dòng)信號(hào)start置0,在時(shí)鐘來(lái)臨的時(shí)候?qū)tart_asyn賦值給start。將此模塊連接到FSM控制模塊模塊二:FSM控制單元start=1,開始加密,計(jì)數(shù)器啟動(dòng)start=1,開始加密,計(jì)數(shù)器啟動(dòng)初態(tài)start=0,未啟動(dòng)時(shí)count<4’hF,count計(jì)數(shù)一次,加密一位encrypt加密態(tài)init初態(tài)start=0,未啟動(dòng)時(shí)count<4’hF,count計(jì)數(shù)一次,加密一位encrypt加密態(tài)init初態(tài)count=4’hF,加密完成初態(tài)count=4’hF,加密完成初態(tài)計(jì)數(shù)器:四位計(jì)數(shù)器,重置時(shí)計(jì)數(shù)值置0,啟動(dòng)加/解密時(shí)啟動(dòng)計(jì)數(shù),總共加/解密16位計(jì)數(shù)16次,從0開始計(jì)數(shù),到15即計(jì)數(shù)16次。完成加/解密計(jì)數(shù)值置0狀態(tài)機(jī)數(shù)據(jù)處理:重置信號(hào)為1則把輸出寄存器清零。時(shí)鐘來(lái)臨時(shí),若現(xiàn)態(tài)為初態(tài),start=1則根據(jù)輸入數(shù)據(jù)和總密鑰初始化輸入寄存器和三個(gè)分密鑰寄存器;若現(xiàn)態(tài)為加密態(tài),加密一位輸入數(shù)據(jù)后放入輸出寄存器次態(tài)計(jì)算:若現(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)換:重置信號(hào)為1則將現(xiàn)態(tài)轉(zhuǎn)到初態(tài)。時(shí)鐘來(lái)臨時(shí),將現(xiàn)態(tài)轉(zhuǎn)到計(jì)算好的次態(tài)運(yùn)作流程和時(shí)序順序:(1)時(shí)鐘來(lái)臨:外部啟動(dòng)信號(hào)start_asyn賦值給啟動(dòng)信號(hào)start (‘+’表示同時(shí)發(fā)生) +根據(jù)現(xiàn)態(tài)來(lái)處理數(shù)據(jù)+狀態(tài)轉(zhuǎn)換+計(jì)數(shù)器根據(jù)條件計(jì)數(shù) (2)重置:輸出寄存器置0+現(xiàn)態(tài)跳轉(zhuǎn)為初態(tài)+計(jì)數(shù)器清0+啟動(dòng)信號(hào)置0(現(xiàn)態(tài)為上次時(shí)鐘周期轉(zhuǎn)換成的次態(tài),組合邏輯的always塊有自己的觸發(fā)條件)2.3核心設(shè)計(jì)及闡釋本次設(shè)計(jì)的核心設(shè)計(jì)為FSM控制單元,各部件詳細(xì)設(shè)計(jì)如下:計(jì)數(shù)器:敏感列表為時(shí)鐘上升沿和重置信號(hào)上升沿,表示當(dāng)時(shí)鐘來(lái)臨或者按下重置鍵的時(shí)候激活該部件,重置信號(hào)為1或現(xiàn)態(tài)為初態(tài)時(shí)計(jì)數(shù)器置0,現(xiàn)態(tài)為加密態(tài)是計(jì)數(shù)一次狀態(tài)定義和變量定義:需要用到的變量,總密鑰在定義的時(shí)候初始化,并且不做更改。狀態(tài)定義,定義初態(tài)為0,加密態(tài)為1輸出邏輯(數(shù)據(jù)處理):數(shù)據(jù)處理是本次設(shè)計(jì)最核心的地方。敏感列表為時(shí)鐘上升沿和重置信號(hào)上升沿,表示當(dāng)時(shí)鐘來(lái)臨或者按下重置鍵的時(shí)候激活該部件。重置信號(hào)為1時(shí)將輸出寄存器清零。時(shí)鐘來(lái)臨時(shí),若現(xiàn)態(tài)為初態(tài),start=1則根據(jù)輸入數(shù)據(jù)和總密鑰初始化輸入寄存器和三個(gè)分密鑰寄存器;若現(xiàn)態(tài)為加密態(tài),加密一位輸入數(shù)據(jù)后放入輸出寄存器,然后分密鑰寄存器、輸入寄存器和輸出寄存器都需要進(jìn)行移位。三個(gè)分密鑰有它們自己的線性反饋移位規(guī)則。每次將最高位加密后放到最低位,其他位都向高位移動(dòng)一位,當(dāng)加密16次后,原來(lái)在最低位的第一位加密數(shù)據(jù)就回到了最高位下方的小部件是用來(lái)計(jì)算密碼流的,每次分密鑰寄存器進(jìn)行了更改,就按照當(dāng)前的分密鑰進(jìn)行一位密碼流的計(jì)算,然后才能根據(jù)此密碼流進(jìn)行數(shù)據(jù)加密,因?yàn)樾枰扔?jì)算出使能位才能再計(jì)算密碼流,所以只能使用組合邏輯和阻塞賦值,即滿足觸發(fā)條件時(shí)馬上運(yùn)行所有語(yǔ)句,code計(jì)算時(shí)使用剛計(jì)算好的M進(jìn)行計(jì)算,而不是上次觸發(fā)運(yùn)行時(shí)M計(jì)算的結(jié)果次態(tài)計(jì)算:敏感列表為*,表示所有信號(hào)改變的時(shí)候都會(huì)觸發(fā),這樣就能在每個(gè)信號(hào)變換時(shí)及時(shí)決定好次態(tài),這個(gè)部件也是組合邏輯,一經(jīng)觸發(fā)馬上執(zhí)行。有信號(hào)變化時(shí),若現(xiàn)態(tài)為初態(tài),,完成信號(hào)done置0,start=1則次態(tài)為加密態(tài),否則為初態(tài);若現(xiàn)態(tài)為加密態(tài),count<4’hF則次態(tài)為加密態(tài),完成信號(hào)done置0,否則,加密次數(shù)達(dá)到16次,將完成信號(hào)done置1,將輸出寄存器的值賦給輸出信號(hào)OUT。注:數(shù)碼管顯示的時(shí)OUT的值,重置時(shí)重置的是輸出寄存器OR的值狀態(tài)轉(zhuǎn)換:敏感列表為時(shí)鐘上升沿和重置信號(hào)上升沿,表示當(dāng)時(shí)鐘來(lái)臨或者按下重置鍵的時(shí)候激活該部件。重置信號(hào)為1則將現(xiàn)態(tài)轉(zhuǎn)到初態(tài)。時(shí)鐘來(lái)臨時(shí),將現(xiàn)態(tài)轉(zhuǎn)到計(jì)算好的次態(tài),而數(shù)據(jù)處理部分是根據(jù)上次轉(zhuǎn)換的次態(tài)來(lái)進(jìn)行判斷的,即本次時(shí)鐘周期中,現(xiàn)態(tài)為上次時(shí)鐘周期最后轉(zhuǎn)換成的次態(tài)除此之外,時(shí)鐘信號(hào)的控制對(duì)于時(shí)序電路的設(shè)計(jì)來(lái)說(shuō)也是非常關(guān)鍵的,本次設(shè)計(jì)使用的時(shí)鐘分頻模塊為偶分頻模塊,分頻系數(shù)為50000,實(shí)驗(yàn)板的時(shí)鐘頻率為50MHz,所以分頻后的時(shí)鐘輸出頻率為1KHz,即最大時(shí)鐘周期為1ms2.4驗(yàn)證測(cè)試輸入四位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í)驗(yàn)板更新數(shù)據(jù)比較不穩(wěn)定,改變開關(guān)輸入數(shù)據(jù)后前幾次按下密碼器啟動(dòng)鍵時(shí),輸出數(shù)據(jù)為未完成16次加密時(shí)的數(shù)據(jù),但多按幾次后會(huì)維持在一個(gè)穩(wěn)定的顯示數(shù)據(jù),雖然再按也會(huì)有一兩次輸出不穩(wěn)定,但穩(wěn)定時(shí)的數(shù)據(jù)就是加密完成的數(shù)據(jù),通過(guò)對(duì)稱解密可以驗(yàn)證。重置鍵重置的是內(nèi)部輸出寄存器,并不清零數(shù)碼管觀察的OUT信號(hào),所以按下重置鍵沒(méi)有現(xiàn)象,所以不作演示附錄:設(shè)計(jì)源代碼文件目錄:只附上主要文件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)部信號(hào)wire[15:0]IN=SWITCH[15:0]; //需加/解密的輸入數(shù)據(jù)wirestart_asyn=BUTTON[0]; //啟動(dòng)信號(hào)wire_reset=BUTTON[1]; //重置信號(hào)regstart; //啟動(dòng)信號(hào)定義wiredone; //完成信號(hào)定義wire[15:0]OUT; //加/解密完成的輸出數(shù)據(jù)信號(hào)定義//啟動(dòng)信號(hào)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)部信號(hào)賦值給輸出端口(數(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位計(jì)數(shù)器//----------計(jì)數(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ù)通路,并且通過(guò)行為描述來(lái)定義了數(shù)據(jù)通路的控制信號(hào)*/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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論