PHƢƠNG PHÁP THIẾT KẾ MODULE DES TRÊN FPGA

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 82 - 126)

3.3.1. Quy trình và công cụ thiết kế.

3.3.1.1. Quy trình thiết kế.

Phƣơng pháp thiết kế nhằm áp dụng DES trên công nghệ FPGA hoàn toàn tuân thủ theo qui trình thiết kế một ứng dụng trên công nghệ FPGA đã đƣợc trình bày trong chƣơng 2.

Thực chất của việc thiết kế module mã khối trên FPGA là việc lập trình để thiết lập cấu hình ghép nối các phần tử mạch có sẵn trên linh kiện FPGA nhằm thực thi các khâu xử lý của thuật toán DES khi thực hiện phép mã hoá/giải mã cũng nhƣ hoạt động của các khối chức năng.

Quá trình thiết kế đƣợc thực hiện theo các bƣớc sau:

a) Xây dựng các khối hàm cơ bản của thuật toán mã khối DES bằng ngôn ngữ mô tả phần cứng.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

b) Biên dịch và kiểm tra từng khối chức năng ở mức RTL (Register Transfer Level).

c) Tổng hợp và tối ƣu về mặt logic.

d) Đặt và định đƣờng đi cho các thiết bị chuyên dụng. e) Kiểm tra thiết kế.

f) Nạp cấu hình cho phần cứng.

Các bƣớc b, c, d chủ yếu do công cụ thiết kế thực hiện một cách tự động.

3.3.1.2. Công cụ thiết kế.

Trong chƣơng 2 luận văn đã trình bày và giới thiệu một số hãng chuyên sản xuất linh kiện FPGA trong đó các họ sản phẩm của hãng ALTERA là những sản phẩm phổ biến trên thị trƣờng hiện nay. Vì vậy công cụ thiết kế đƣợc chọn nhƣ sau:

a) Công cụ phần mềm:

- Thiết kế các khối hàm cơ bản của DES bằng ngôn ngữ VHDL. - Hệ công cụ phát triển cho thiết kế logic Quartus II của ALTERA. b) Công cụ phần cứng:

FPGA đƣợc sử dụng trong thiết kế là dòng linh kiện của ALTERA.

3.3.2. Sơ đồ khối chức năng của module mã khối DES trên FPGA.

3.3.2.1. Sơ đồ khối tổng quát.

Từ cấu trúc chung của moduê mã khối và thuật toán DES, sơ đồ khối tổng quát của module mã khối gồm các thành phần mô tả trên hình 3.6.

- Khối vào/ra dữ liệu: Vào/Ra dữ liệu rõ/mã; vào khoá mã; độ dài khối dữ liệu là 64 bít.

- Khối FPGA DES: Tính toán khoá con; thực hiện các hàm mã hoá, giải mã theo thuật toán DES.

- Khối điều khiển: Các tín hiệu điều khiển hoạt động của Module.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn FPGA DES Điều khiển Dữ liệu ra Dữ liệu vào

Khoá mã vào Cấu

hình

Hình 3.6: Sơ đồ khối tổng quát của module mã khối DES trên FPGA. 3.3.2.2. Mô tả quá trình mã hoá giải mã của DES.

Mô tả chung về quá trình mã hoá/giải mã của thuật toán DES trên hình 3.7. - Khối mã hoá: Dữ liệu rõ có độ dài 64 bít đƣợc chuyển vào hoán vị IP, sau đó đi qua 16 vòng lặp với các khoá từ K1, K2,...., K16 , tiếp theo dữ liệu đƣợc chuyển vào hoán vị FP cho ra bản mã.

- Khối giải mã thực hiện theo thứ tự ngƣợc lại so với khối mã hoá với các khoá từ K16, K15,...., K1.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn K 1 K15 K16 K 16 K2 K1 Bản rõ Tính toán khoá con Hoán vị IP Bản mã Hoán vị FP Vòng 1 Vòng 1 Vòng 2 Vòng 16 Bả n mã Vòng 2 Vòng 16 Bả n rõ Hoán vị IP Hoán vị FP

Hình 3.7: Quá trình mã hoá/giải mã DES.

3.3.2.3. Sơ đồ khối chức năng của module DES.

Hình 3.8 mô tả các chức năng chính của module DES gồm : - Khối vào/ra dữ liệu (Converter).

- Khối thực hiện phép hoán vị IP.

- Khối thực hiện mã hoá/giải mã DES 16 vòng (Des16).

- Khối tính khoá con cho các vòng lặp của DES (Deskey).

- Khối thực hiện phép hoán vị FP. - Các tín hiệu điều khiển (Control).

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Data_out Data_in 32 L 0 32 R0 32 R0 32 L0 48 48 48 K1 64 IP Tính khoá DES 16 vòng FP 64 En/De 64 Reset Clk Key EN K16

Hình 3.8: Mô tả chức năng module mã hoá DES.

Chức năng các chân tín hiệu của module DES đƣợc mô tả trong bảng 3.8.

Tên chân tín hiệu Kiểu I/O Mô tả

Reset Input Đặt trạng thái ban đầu cho toàn bộ hệ thống

Clk Input Hệ thống xung nhịp. Cung cấp nhịp cho hoạt động

của các khối trong modul

EN Input Tín hiệu cho phép: EN=”1” cho phép hệ thống

hoạt động; EN=”0” dừng hoạt động của hệ thống.

En/De Input E/D=”1” Chế độ mã hoá.

E/D=”0” Chế độ giải mã.

Key[1..64] Input Khoá mã: 64 bít (56 bít khoá + 8 bít kiểm tra)

Data_in [1.64] Input 64 bít dữ liệu vào

Data_out[1.64] Output 64 bít dữ liệu mã ra trong chế độ mã hoá hoặc dữ

liệu rõ trong chế độ giải mã.

Bảng 3.8: Mô tả các tín hiệu vào ra của module DES.

Hoạt động của các khối trong module mã khối sẽ đƣợc lần lƣợt mô tả bằng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

3.3.3. Mô tả hoạt động của các khối trong module DES bằng VHDL.

Mô tả thuật toán DES bằng VHDL sẽ đƣợc thực hiện từ mức mô tả khối cao nhất (Top Level) sau đó sẽ lần lƣợt đi vào các chức năng chính của từng khối cơ bản. Căn cứ theo sơ đồ khối của Module, phần mềm chức năng của các khối sẽ đƣợc xây dựng thành các tập tin chính nhƣ mô tả trong bảng 3.9. Các thƣ viện chuẩn IEEE và LPM của QUARTUS-II sẽ đƣợc sử dụng trong chƣơng trình. Phần khai báo các thực thể trong module DES sử dụng các tín hiệu có kiểu là STD_LOGIC và STD_LOGIC_VECTOR đƣợc định nghĩa trong IEEE std_1164- 1993.

Tên tệp tin Mô tả chức năng

Des.vhd Mô tả modul DES ở mức cao nhất (Top Level).

IP.vhd, FP.vhd Mô tả các phép hoán vị IP, FP.

Des1.vhd Mô tả hoạt động một vòng lặp của DES.

Des16.vhd Mô tả toàn bộ hoạt động 16 vòng lặp của DES

Deskey.vhd Mô tả việc tính toán khoá cho các vòng lặp của DES .

Control.vhd Mô tả toàn bộ hành vi điều khiển của DES

Converter.vhd Mô tả việc lấy dữ liệu Vào/Ra của DES.

Bảng 3.9: Danh sách các tệp tin của module DES.

Data_in[1..64] En Code DES Key[1..64] Enciph Reset Data_out[1..64] Clk

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Module DES đƣợc tổng hợp từ mô tả hoạt động của các khối chức năng bằng VHDL (DES.vhd). Mô tả khai báo module DES ở mức cao nhất (Top Level) bằng VHDL nhƣ sau:

library ieee;

use ieee.std_logic_1164.all; entity DES is port

( data_in : in std_logic_vector(1 to 64); encrypt : in std_logic; En : in std_logic; key : in std_logic_vector(1 TO 64); clk : in std_logic; reset : in std_logic;

data_out : out std_logic_vector(1 TO 64));

end DES;

architecture structural of DES is component IP component control; component des16; componet deskey; component converter; component FP; end structural;

Mô tả module DES ở mức cao ngoài việc khai báo cấu trúc của module chúng ta phải xây dựng các thành phần chức năng trong module:

- Khối các phép hoán vị.

- Khối control.

- Khối des16 (bao gồm des1).

- Khối deskey.

- Khối converter.

3.3.3.1. Khối các phép hoán vị.

Phép hoán vị IP: Dữ liệu đầu vào Data_in [1..64] đƣợc hoán vị IP sau đó chia thành hai phần L0[1..32] và R0[1..32]. Tham số của phép hoán vị IP đƣợc mô tả

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

trong bảng 3.1. Thực chất của phép hoán vị đƣợc thực hiện bằng phần cứng chính là việc kết nối vị trí các dây tín hiệu theo tham số của phép hoán vị.

Mô tả phép hoán vị IP bằng VHDL nhƣ sau:

32 32 64 Data_in Hoán vị IP L0 R0

Hình 3.10: Sơ đồ thực thể phép hoán vị IP.

library ieee; use ieee.std_logic_1164.all; entity ip is port ( data_in: in std_logic_vector(1 TO 64); l0 : out std_logic_vector(1 TO 32); r0 : out std_logic_vector(1 TO 32)); end ip; architecture behavior of ip is begin

l0(1)<=data_in(58); sắp xếp vị trí của các dây tín hiệu theo phép hoán vị IP. Tức là dây tín hiệu thứ 58 của data_in đƣợc gán cho dây tín hiệu thứ 1 của l0.

....

r0x(32)<=data_in(7); dây tín hiệu thứ 7 của data_in đƣợc gán cho dây tín hiệu thứ 32 của r0.

end behavior;

Các phép hoán vị FP, PC-1, PC-2, P đƣợc thực hiện tƣơng tự nhƣ IP.

3.3.3.2. Mô tả khối DES16.

Khối DES16 là thành phần chính của module DES với 16 vòng lặp. Tại đầu vào dữ liệu có độ rộng là 64 bít đƣợc chia thành 2 phần, các thanh ghi đƣợc tạo ra từ các Triger D của FPGA L0[1..32] và R0[1..32] sử dụng để nhận dữ liệu đầu vào sau hoán vị IP đồng thời cũng là vùng đệm dữ liệu từ đầu ra của các vòng lặp quay về. Tại đầu ra, 2 thanh ghi Li[1..32] và Ri[1..32] cũng đƣợc sử dụng để lƣu giữ kết quả và quay trở về đầu vào sau mỗi vòng lặp do khối điều khiển tác động, đồng thời là

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

vùng đệm dữ liệu của vòng lặp thứ 16 trƣớc khi qua phép hoán vị FP.

Reset Clk Khoá mã Lo Ro 16 vòng lặp Điều khiển Li Ri FP IP

Hình 3.11: Mô tả 16 vòng lặp của DES.

Các vòng lặp của DES có cấu trúc cơ bản giống nhau, vì vậy một vòng lặp của DES sẽ đƣợc mô tả trong tập tin des1.vhd.

6 4 S1 Key 32 S2 S8 EP . P . . . . . XOR1 XOR2 6 4 6 4 32 32 48 32 48 Ri Li Reg_L Reset Clk Lo Ro 32 32 Reg_R

Hình 3.12 : Sơ đồ thiết kế của một vòng lặp.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Mô tả một vòng lặp của DES đã đƣợc trình bày trong phần 3.2.2 gồm các phép toán nhƣ sau:

• EP : Hàm mở rộng dữ liệu của Li từ 32 bít thành 48 bít.

• XOR1 : Phép cộng modul 2 giữa khoá Ki và dữ liệu đầu ra của hàm EP. • S-BOX : Các hộp thế.

• P : Hoán vị dữ liệu đầu ra của các hộp S-BOX. • XOR2 : Phép cộng modul 2 giữa kết quả của P và Li .

Các thành phần khối màu xám trong sơ đồ tạo nên hàm F của DES.

Mô tả khai báo cấu trúc của khối des1 và các hàm trong vòng lặp bằng VHDL nhƣ sau:

entity des1 is port

( clk : in std_logic;

reset : in std_logic;

li,ri : in std_logic_vector(1 to 32);

key : in std_logic_vector(1 to 48);

lo,ro : out std_logic_vector(1 to 32));

end round;

architecture behaviour of des1 is

Mô tả tín hiệu kết nối giữa các hàm trong des1.

signal e : std_logic_vector(1 to 48);

signal b1x,b2x,b3x,b4x,b5x,b6x,b7x,b8x

: std_logic_vector(1 to 6);đầu vào của 8 hộp thế. signal so1x,so2x,so3x,so4x,so5x,so6x,so7x,so8x

: std_logic_vector(1 to 4); đầu ra của 8 hộp thế.

signal ppo,r_toreg32,l_toreg32 : std_logic_vector(1 to 32);

Mô tả cấu trúc hàm des1 bao gồm. component ep component xor1 component sbox1 ... component sbox8 component p component xor2 component reg32

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

end;

a) Hàm EP: 32 bít dữ liệu tại thanh ghi bên phải Ri [1..32] đƣợc mở rộng thành 48 bít theo tham số mô tả ở bảng 3.3; kết quả chuyển tới e[1..48]. Thực hiện phép mở rộng dữ liệu có thể đƣợc mô tả nhƣ sau:

entity ep is port ( ri : in std_logic_vector(1 to 32); e : out std_logic_vector(1 to 48)); end ep; architecture behavior of ep is begin

e(1)<=ri(32); e(47)<=ri(32); lấy nội dung của vị trí thứ 32 trong thanh ghi Ri gán vào vị trí số 1 và vị trí số 47 của e.

....

end behavior;

b) Hàm XOR1: Thực hiện cộng modul 2 giữa khoá trong thanh ghi K[1..48] và dữ liệu chuyển đến qua e[1..48], kết quả đƣa vào 8 hộp S-BOX theo thứ tự vị trí các bít dữ liệu: [1..6] vào hộp S-BOX1; [7..12] vào hộp S-BOX2;... ; [43..48] vào hộp S-BOX8.

Mô tả cấu trúc của XOR1 bằng VHDL nhƣ sau: entity xor1 is port

( e : in std_logic_vector(1 to 48); b1x,b2x,b3x,b4x,b5x,b6x,b7x,b8x : out std_logic_vector (1 to 6);

k : in std_logic_vector (1 to 48)); end xor1;

architecture behavior of xor1 is

signal XX : std_logic_vector( 1 to 48);

begin XX<=k xor e;

b1x<=XX(1 to 6); bít [1..6] đƣa vào hộp thế số 1. b2x<=XX(7 to 12);

....

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

end behavior;

Hàm XOR2 cũng đƣợc mô tả tƣơng tự nhƣ hàm XOR1.

c) Hộp thế S-BOX: Có 8 hộp S-BOX trong mỗi vòng của DES, cấu trúc một hộp S-BOX đƣợc mô tả nhƣ hình 3.13. Trong FPGA chúng ta sử dụng các bít ROM để lƣu các tham số của các hộp S-BOX.

Đầu vào dữ liệu b là xâu bít có độ dài 6, qua hộp thế dữ liệu tại đầu ra S1 là xâu bít có độ dài 4.

4 6

b

S- BOX1 S1

Hình 3.13 : Sơ đồ thực thể hộp S-BOX.

Mô tả hộp thế S-BOX1 bằng VHDL. entity sbox1 is port

( b : in std_logic_vector(1 to 6);

s1 : out std_logic_vector(1 to 4));

end sbox1;

architecture behaviour of sbox1 is begin

process(b) begin case b is

when "000000"=> s1<=To_StdLogicVector(Bit_Vector'(x"e"));

Sử dụng To_StdLogicVector để chuyển đổi kiểu dữ liệu của x”e” đƣợc xác định bởi hàng, cột đƣa vào S1[1..4];

when "000010"=> so<=To_StdLogicVector(Bit_Vector'(x"4")); when "000100"=> so<=To_StdLogicVector(Bit_Vector'(x"d")); ...

when "111101"=> so<=To_StdLogicVector(Bit_Vector'(x"6")); when others=> so<=To_StdLogicVector(Bit_Vector'(x"d")); end case;

end process; end;

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Các hộp thế S-BOX2,..., S-BOX8 cũng đƣợc thực hiện tƣơng tự nhƣ S-BOX1. Mô tả tham số của các hộp thế đƣợc trình bày trong bảng 3.4.

d) Hoán vị P: Thực hiện hoán vị dữ liệu tại đầu ra của các hộp thế theo tham số mô tả ở bảng 3.5; phƣơng pháp thực hiện tƣơng tự nhƣ hoán vị IP đã đƣợc trình bày ở trên.

3.3.3.3. Khối deskey (tính toán khoá).

Sơ đồ tính khoá đƣợc mô tả trên hình 3.14. Nhiệm vụ của khối deskey là tính toán khoá cho 16 vòng lặp của DES mỗi khoá con có độ dài 48 bít từ 56 bít cỡ khoá đúng (64 bít khoá đầu vào loại bỏ 8 bít kiểm tra chẵn lẻ) .

key_in 56 56 PC-1 Dịch vòng LSi PC-2 Lặp 16 lần 64 48 C0 D0

Hình 3.14: Sơ đồ khối tạo khoá con.

key_out(K )i

Mô tả cấu trúc của khối tính khoá con bằng VHDL nhƣ sau: entity deskey is port

( key_in : in std_logic_vector(1 to 64);

shift : in std_logic_vector(1 to 3);

clk : in std_logic;

key_out: out std_logic_vector(1 to 48));

end deskey;

architecture behaviour of deskey is

signal c,d,c1,d1 : std_logic_vector(1 to 28);

component pc1; phép hoán vị PC-1. component shifter; phép dịch vòng trái. component pc2; phép hoán vị PC-2.

Mô tả cách thức nối dây tín hiệu giữa các thành phần trong khối tính khoá: begin

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

pc_1: pc1 port map ( key=>key_in, c0x=>c, d0x=>d );

shifter_comp: shifter port map ( datac=>c, datad=>d, shift=>shift, clk=>clk, datac_out=>c1, datad_out=>d1 );

pc_2: pc2 port map ( c=>c1, d=>d1, k=>ki ); end behaviour;

a) Khối PC-1, PC-2: Từ 64 bít khoá vào cho trƣớc, loại bỏ 8 bít kiểm tra tính chẵn lẻ và hoán vị 56 bít còn lại theo phép hoán vị cố định PC-1 theo tham số mô tả ở bảng 3.6 và phép hoán vị PC-2 theo tham số mô tả ở bảng 3.7.

b) Khối dịch vòng: 56 bít khoá sau hoán vị PC-1 đƣợc chia làm hai phần C0[1..28] và D0[1..28], sau đó mỗi phần C0 và D0 đƣợc dịch vòng sang trái một hoặc hai vị trí tuỳ theo từng vòng khoá con cụ thể do khối control điều khiển, kết quả đƣợc chuyển tới Ci, Di đƣa tới phép hoán vị PC-2 tạo thành khoá con Ki có độ dài xâu bít là 48, đồng thời nội dung của Ci, Di lại đƣợc quay trở về đầu vào phép dịch vòng để tính khoá con tiếp theo.

3.3.3.4. Khối Control (điều khiển).

Nhiệm vụ chính của khối điều khiển là:

- Điều khiển việc vào/ra dữ liệu: Bản rõ, bản mã và khoá.

- Điều khiển thực hiện 16 vòng lặp của DES với các khoá K1,...,K16 trong chế độ mã hoá và K16,...,K1 trong chế độ giải mã.

- Điều khiển việc tính toán khoá.

Sử dụng 3 bít để thể hiện các trạng thái trong phép dịch vòng trái một hoặc hai vị trí và lấy khoá của khối điều khiển tính toán khoá :

Giá trị các bít Mô tả chức năng

000 Không dịch vòng trái; không lấy khoá mới.

001 Không dịch vòng trái; lấy khoá mới.

010 Dịch vòng trái 1 vị trí; không lấy khoá mới.

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 82 - 126)