![]() |
加解密模塊:包括輸入和輸出、加/解密選擇、狀態(tài)機,以及函數(shù)調(diào)用聲明和ROM調(diào)用取址。用于輸入128位明文或密文,并且利用一個狀態(tài)機定義程序順序執(zhí)行和保證循環(huán)控制,實現(xiàn)對ROM的44個子密鑰讀取,以及將數(shù)據(jù)輸入函數(shù)中進行處理。由于輸入ROM的地址是在一個時鐘控制下,子密鑰數(shù)據(jù)的輸出有一定的延時,所以利用一個控制變量cnt實現(xiàn)地址提前一個時鐘左右輸入ROM,ROM接收到后輸出子密鑰,使在進行數(shù)據(jù)加解密處理時,已經(jīng)有準備好的子密鑰調(diào)用。
加解密函數(shù)模塊:利用work用戶自定義函數(shù)庫,定義算法中用到的函數(shù)。其中包括5個函數(shù),分別是:rfunct、afunct、cfunct、lshift、rshift。頂層文件循環(huán)調(diào)用此函數(shù)21次,進行加解密運算。
ROM模塊:先在QuartusII里面將預定義的子密鑰輸入rc6keyrom.mif文件中,調(diào)用QuartusII的MegaWizardPlug-In Manager,自動生成ROM,供頂層文件調(diào)用。需要提前利用QuartusII建立一個.mif文件,將子密鑰的數(shù)據(jù)輸入。
2.2 RC6協(xié)處理器的頂層原理圖
如圖2所示,基于FPGA的RC6算法協(xié)處理器分3個模塊:頂層模塊、RC6加解密函數(shù)模塊和ROM模塊。共有260個I/O口,包括131輸入端口和129個輸出端口。
![]() |
2.3 各模塊的功能及實現(xiàn)
2.3.1 ROM模塊
圖3為QuartusII自動生成的ROM模塊。ROM取址需要由加解密模塊提供地址輸入,然后輸出子密鑰。輸入地址為address[4..0],輸出為q[63..0]兩個子密鑰一起輸出到主程序中進行。
![]() |
ROM模塊在輸入地址和得到子密鑰數(shù)據(jù)之間,有一定的延時,從地址“00”輸入,開始讀取到輸出子密鑰總時間約一個時鐘周期左右。所以在主函數(shù)調(diào)用ROM時,需提前1~2個時鐘輸入地址。








