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

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 85 - 126)

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.

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

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

101 Dịch vòng trái 2 vị trí; lấy khoá mới.

“Khác” Báo lỗi

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

Init (trạng thái ban đầu): Lấy khoá mới, dịch vòng trái một vị trí. State 1 : Dịch vòng trái một vị trí.

State 2,3,4,5,6,7 : Dịch vòng trái hai vị trí. State 8 : Dịch vòng trái một vị trí. State 9,10,11,12,13,14 : Dịch vòng trái hai vị trí. State 15 : Dịch vòng trái một vị trí. State 16 : Dừng.

Ở mỗi trạng thái điều khiển một khoá con sẽ đƣợc sinh ra phục vụ cho tác vụ

mã hoá - giải mã của mỗi vòng lặp tƣơng ứng.

3.3.3.5. Khối Converter (lấy dữ liệu vào/ra).

Khối converter có nhiệm vụ lấy dữ liệu vào hoặc ra. Về nguyên tắc, dữ liệu vào/ra có thể đƣa song song hoặc nối tiếp phụ thuộc yêu cầu của một bài toán cụ thể nào đó.

Với phƣơng thức đƣa dữ liệu vào song song 64 bít có thể giảm đƣợc số chu kỳ xung nhịp cho một quá trình mã hoá/giải mã một khối dữ liệu. Tuy nhiên phƣơng thức này đôi khi lại phụ thuộc vào dung lƣợng cổng lôgíc và số chân vào/ra của FPGA. Ví dụ: EP20K100TC144-3 có 144 chân vào/ra trong đó 95 chân dành cho ngƣời sử dụng.

Giả sử việc lấy dữ liệu vào/ra bao gồm: - 64 bít cho dữ liệu rõ vào.

- 64 bít cho khoá vào. - 1 bít cho reset. - 1 bít cho clock.

- 1 bít cho chọn chế độ mã hoá/giải mã. - 64 bít cho dữ liệu mã ra.

Nhƣ vậy tổng số chân vào/ra phải dùng sẽ là: 195 chân, lớn hơn nhiều so với số chân của mạch EP20K100TC144-3 chọn lựa để đƣa vào sử dụng trong quá trình thiết kế.

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ới phƣơng thức nối tiếp thì ngƣợc lại, sử dụng số chân vào/ra ít hơn và tiết kiệm số cổng lôgíc nhƣng số chu kỳ xung nhịp dành cho một quá trình mã hoá/giải lại cần nhiều hơn vì vậy tốc độ mã hoá/giải mã chậm hơn.

Clk

Data_in Converter

16 64

load unload

Data_out

Hình 3.15: Mô tả khối vào/ra dữ liệu.

Trong thực tế, cần phải quan tâm đến việc kết hợp cả hai phƣơng thức lấy dữ liệu với nhau nhằm đảm bảo tính tối ƣu của thiết kế. Để minh hoạ cho một phƣơng án thiết kế thực tế, khi đó 64 bít dữ liệu đƣợc lấy thành 4 lần nối tiếp nhau, mỗi lần lấy song song 16 bít. Nhƣ vậy sẽ cần 4 chu kỳ xung nhịp cho việc lấy 64 bít dữ liệu. Hình 3.15 minh hoạ cho ví dụ này, trong đó tín hiệu “load”; “unload” điều khiển việc lấy dữ liệu.

3.3.3.6. Tổng hợp các khối chức năng của module DES.

Key [1:16] Data_int [1:16] clk reset Data_out Control_unit Load_cl Load_key Clk Load_pl Reset Output_clk Shit [1:3] Unload_pl Unload_key Control Converter_data Clk Input Output [1..64] load Unload converter datapath Clk Load_cl 0nput_cl C[1:64] Data_in [1:64] reset xkey[1:48] Enciph Des16 Converter_key Clk Input[1:16] Output[1:64] Load Unload converter Key_proc Clk shit1:3] kl[1:48] lhe_key[1:64] Enciph deskey En/De

Hình 3.16: Sơ đồ liên kết giữa các khối trong modul DES.

Khi các khối chức năng trong DES đƣợc mô tả xong, cần phải tiến hành liên kết các khối với nhau.

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ó 2 phƣơng pháp thực hiện chính:

- Sử dụng chế độ Block Diagram trong Quartus.

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 85 - 126)