0
Tải bản đầy đủ (.doc) (66 trang)

NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL

Một phần của tài liệu ĐỒ ÁN “TÍCH HỢP THUẬT TOÁN MẬT MÃ DES TRÊN FPGA” (Trang 40 -66 )

2.3.1 Khái quát về VHDL

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC(Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế.

VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác đã kể ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác:

- Thứ nhất là tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE. VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống.

- Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế. VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên.

- Thứ ba là tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế

- Thứ tư là khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức. Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết.

- Thứ năm là khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn được chấp nhận nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL. Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL. Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập).

- Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế. Và nó cũng cho phép dùng lại các phần đã có sẵn.

2.3.2 Cấu trúc một mô hình hệ thống mô tả bằng VHDL

VHDL là một ngôn ngữ mô tả phần cứng, nó được sử dụng để mô tả các hệ thống số. Các hệ thống số này có thể rất đơn giản, chẳng hạn như

một cổng logic nhưng cũng có thể rất phức tạp, chẳng hạn như một hệ thống điện tử hoàn chỉnh. Trong VHDL, các hệ thống này được "trừu tượng hóa" và được gọi là các thực thể (entities). Một thực thể X, khi được sử dụng trong một thực thể Y khác sẽ trở thành một hợp phần (component) của thực thể Y. Vì thế, một hợp phần cũng là một thực thể, phụ thuộc vào vị trí mà chúng ta mô tả.

Để mô tả một thực thể, VHDL cung cấp 5 kiểu kiến trúc cơ sở khác nhau, gọi là các đơn vị thiết kế (design units). Chúng bao gồm:

- Các thực thể (entity)

- Các kiến trúc (architecture) - Các gói (package)

- Các cấu hình (configuration) - Các thư viện (library)

Một thực thể được mô tả sẽ bao gồm một phần khai báo thực thể và ít nhất một thân kiến trúc. Phần khai báo thực thể cho thấy cái nhìn từ bên ngoài của một thực thể, chẳng hạn như tên của các chân tín hiệu vào ra. Phần thân kiến trúc bao gồm sự mô tả bên trong của một thực thể, chẳng hạn như một tập hợp các hợp phần được kết nối với nhau tạo thành kiến trúc của một thực thể, hay như một tập hợp các câu lệnh đồng thời hoặc tuần tự cho biết hoạt động của thực thể. Mỗi kiểu mô tả có thể áp dụng trong các phần thân kiến trúc khác nhau hoặc sử dụng hỗn hợp trong một thân kiến trúc.

Phần khai báo cấu hình được sử dụng để tạo ra cấu hình cho một thực thể. Nó chỉ ra sự ràng buộc của một phần thân kiến trúc từ rất nhiều thân kiến trúc có thể được kết hợp với thực thể. Nó cũng có thể cho biết sự

ràng buộc của các hợp phần sử dụng trong thân kiến trúc được chọn đến các thực thể khác. Một thực thể có thể có nhiều cấu hình khác nhau.

Một phần khai báo gói sẽ đóng gói hoàn chỉnh một tập hợp các khai báo liên quan với nhau, chẳng hạn như các khai báo kiểu, kiểu con, các khai báo chương trình con ... mà chúng có thể được chia sẻ trong hai hoặc nhiều đơn vị thiết kế. Phần thân gói chứa định nghĩa của chương trình con đã được khai báo trong phần khai báo gói.

2.4 KẾT LUẬN CHƯƠNG 2

Chương 2 đồ án đã trình bày những nét cơ bản về công nghệ FPGA. Giới thiệu quy trình thiết kế trên công nghệ FPGA sử dụng môi trường phần mềm tích hợp ISE của Xilinx. Đồng thời cũng giới thiệu một số đặc điểm tóm tắt của các ngôn ngữ mô tả phần cứng, trong đó mô tả cơ bản về ngôn ngữ mô tả phần cứng VHDL là ngôn ngữ sẽ được dùng trong quá trình thiết kế modul DES. Trên cơ sở công nghệ FPGA và các thuật toán DES đã được trình bày ở trên quá trình thiết kế modul mã khối sẽ được trình bày trong chương 3.

Chương 3

TÍCH HỢP THUẬT TOÁN DES TRÊN FPGA

3.1 QUY TRÌNH VÀ CÔNG CỤ THIẾT KẾ3.1.1 Quy trình thiết kế 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ế modul 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ã/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:

- Bước 1: Nhập thiết kế: 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.

- Bước 2: Tổng hợp và tối ưu về mặt logic - Bước 3: Thực hiện thiết kế

- Bước 4: Kiểm tra và mô phỏng - Bước 5: Nạp thiết kế vào FPGA

3.1.2 Công cụ thiết kế

Chương 2 đã trình bày tổng quát về công nghệ FPGA cũng như ngôn ngữ mô tả phần cứng VHDL 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 XILINX 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:

- Công cụ phần mềm: Hệ công cụ phát triển cho thiết kế logíc ISE của XILINX, trong đó thiết kế các khối hàm cơ bản của DES bằng ngôn ngữ mô tả phần cứng VHDL

- Công cụ phần cứng: FPGA được sử dụng trong thiết kế là dòng linh kiện của XILINX.

3.2 SƠ ĐỒ KHỐI CHỨC NĂNG 3.2.1 Sơ đồ khối tổng quát 3.2.1 Sơ đồ khối tổng quát

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

- 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 Modul. - Khối cấu hình cho FPGA.

Hình 3.1: Sơ đồ khối tổng quát của modul DES trên FPGA

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.2

- 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

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

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

Hình 3.3 mô tả các chức năng chính của modul DES gồm : - Khối thực hiện phép hoán vị IP.

- Khối thực hiện mã hoá/giải mã 16 vòng DES (Roundfunc). - 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.

Hình 3.3: Mô tả chức năng modul mã hoá DES

Chức năng các chân tín hiệu của modul DES được mô tả trong bảng 3.1 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 toàn khối trong modul

En_de Input En_de = ‘1’ chế độ mã hóa

En_de = ‘0’ chế độ giải mã

Key[1...64] Input Khóa mã: 64 bít ( 56 bít + 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 ra trong chế độ mã hóa hoặc dữ liệu rõ trong chế độ giải mã

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

Hoạt động của các khối trong modul mã khối sẽ được lần lượt mô tả bằng ngôn ngữ mô tả phần cứngVHDL.

3.3 CÁC KHỐI TRONG MODUL DES

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 Modul, 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.2

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

Desenc.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

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

Keysched.vhd Mô tả việc tính Khóa cho các vòng lặp của DES

Bảng 3.2: Danh sách các tệp tin của modul DES

Hình 3.4: Cấu trúc I/O của DES

Modul 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 (desenc.vhd). Mô tả khai báo modul DES ở mức cao nhất (Top Level) bằng VHDL như sau:

use ieee.std_logic_1164.all; entity desenc is port

( pt : in std_logic_vector(1 TO 64); key : in std_logic_vector(1 TO 64); ct : out std_logic_vector(1 TO 64); reset : in std_logic; en_de : in std_logic; clk : in std_logic ); end desenc; component keysched component ip component roundfunc component fp

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

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

- Khối Keysched.

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ả trong bảng Hoán vị IP. 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:

Hình 3.5: 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 l 0.

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;

3.3.2 Mô tả khối Roundfunc

Khối roundfunc là thành phần chính của modul 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à vùng đệm dữ liệu của vòng lặp thứ 16 trước khi qua phép hoán vị FP.

Hình 3.6: 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 roundfunc.vhd.

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

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 Ri 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 roundfunc và các hàm trong vòng lặp bằng VHDL như sau:

entity roundfunc is port (

clk : in std_logic; reset : in std_logic;

li,ri : in std_logic_vector(1 to 32); k : in std_logic_vector(1 to 48); lo,ro : out std_logic_vector(1 to 32) ); end roundfunc; component xp component desxor1 component s1 component s2 .... component s8 component pp component desxor2 component reg32

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]. 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.

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.8.

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

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 chương 1. 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 Hoán vị P; 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 Khối Keysched (tính toán khoá)

Một phần của tài liệu ĐỒ ÁN “TÍCH HỢP THUẬT TOÁN MẬT MÃ DES TRÊN FPGA” (Trang 40 -66 )

×