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

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

2.2.1. Giới thiệu chung về ngôn ngữ VHDL.

VHDL (VHSIC Hardware Description Laguage) là một ngôn ngữ đƣợc dùng

để mô tả các hệ thống điện tử số. VHSIC (Very High Speed Integrated Circuits) do

chính phủ Mỹ khởi xƣớng vào đầu những năm 1980. Các công ty tham gia chƣơng trình VHSIC nhận thấy rằng họ cần phải có một công cụ nào đó để thiết kế các giản đồ đầu vào cho các IC chuyên dụng cỡ lớn, và họ đã đề xuất việc lập ra một ngôn ngữ mô tả phần cứng dùng để mô tả cấu trúc và chức năng của các mạch tích hợp.

Kể từ đó, VHDL ra đời và đƣợc phát triển, sau đó đƣợc tổ chức IEEE

(Institude of Electrical and Electronic Engineers) chấp nhận coi nhƣ là tiêu chuẩn

tại Mỹ. Phiên bản đầu tiên là tiêu chuẩn IEEE 1076-1987 (còn đƣợc gọi là VHDL-

87). Phiên bản này đƣợc bổ sung sửa đổi năm 1993 thành IEEE 1076-1993 (còn đƣợc gọi là VHDL-93).

VHDL đƣợc thiết kế nhằm thay thế cho một số khâu cần thiết trong quá trình thiết kế. Đầu tiên, nó cho phép mô tả cấu trúc của một bản thiết kế, tức là làm thế nào để có thể phân tách bản thiết kế thành các bản thiết kế con, và làm thế nào để kết nối các bản thiết kế con đó lại với nhau. Thứ hai là nó cho phép mô tả đặc điểm chức năng của các bản thiết kế tƣơng tự nhƣ trong ngôn ngữ lập trình. Thứ ba là dựa vào kết quả đạt đƣợc, nó cho phép một bản thiết kế có thể mô phỏng đƣợc trƣớc khi đƣa vào sản xuất, vì vậy các nhà thiết kế có thể so sánh một cách nhanh chóng việc thay thế và kiểm tra để điều chỉnh chính xác mà không mất thời gian và chi phí vào việc chế tạo mẫu thử đầu tiên.

2.2.1.1. Mô tả cấu trúc.

Một hệ thống điện tử số có thể đƣợc mô tả thành các khối - còn gọi là module

với các đầu vào và đầu ra. Các giá trị điện ở đầu ra có mối quan hệ với các giá trị trên các đầu vào. Hình 2.12.a biểu diễn một ví dụ nhƣ vậy, khối F có hai đầu vào A và B, và có một đầu ra Y.

Sử dụng ngôn ngữ VHDL để mô tả khối F, thì ta gọi khối F là một thực thể (entity) thiết kế, và các đầu vào và đầu ra là các cổng (port).

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ó một cách để mô tả chức năng của khối F, đó là chúng ta mô tả các khối con (sub-module) thành phần của nó. Mỗi một khối con đƣợc gọi là một tập hợp (instance) của một số thực thể, và các cổng của các tập hợp đó đƣợc nối lại bằng các đƣờng tín hiệu (signal).

Hình 2.12.b mô tả khối F là một tập hợp gồm các thực thể G, H và I. Kiểu

mô tả này đƣợc gọi là mô tả cấu trúc (structural). Các thực thể G, H và I cũng đƣợc mô tả theo cấu trúc tƣơng tự nhƣ vậy.

a) Khối F có hai đầu vào và một đầu ra; (b) Khối F gồm 3 thực thể G, H, I Hình 2.12: Sơ đồ khối một module mô tả bằng VHDL.

2.2.1.2. Mô tả hoạt động.

Trong nhiều trƣờng hợp, việc mô tả cấu trúc không tƣơng ứng với việc mô tả hoạt động. Thực tế thƣờng dùng cách mô tả hoạt động theo kiểu từ dƣới lên dựa vào mô tả cấu trúc. Ví dụ, khi thiết kế hệ thống điện tử thì không cần phải mô tả cụ thể cấu trúc bên trong của từng IC mà chỉ cần mô tả theo chức năng của các khối của hệ

thống mà thôi. Trƣờng hợp này đƣợc gọi là mô tả chức năng (fuctional) hoặc mô tả

hành vi (behavioural).

Để minh hoạ cho điều này, chúng ta giả sử rằng chức năng của thực thể F trong hình 2.12.a là một mạch OR đảo. Khi mô tả hoạt động của F ta có thể biến đổi theo đại số Boolean nhƣ sau: YA.BA.B

Đối với các mạch có chức năng hoạt động phức tạp hơn, thì không thể biểu diễn theo các chức năng đầu vào đƣợc. Trong các hệ thống có phản hồi ngƣợc, đầu ra thƣờng là các hàm chức năng theo thời gian. Ngôn ngữ VHDL cho phép giải quyết vấn đề này bằng cách mô tả hoạt động theo khuôn dạng chƣơng trình 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

trình.

2.2.1.3. Mô hình thời gian theo các sự kiện rời rạc.

Khi chức năng hoạt động và cấu trúc của khối đã đƣợc chỉ định rõ, ngƣời thiết kế có thể mô phỏng khối bằng cách kích hoạt theo mô tả hoạt động của nó. Điều này có thể thực hiện đƣợc bằng cách mô phỏng quá trình hoạt động đã đƣợc rời rạc thành các bƣớc theo thời gian. Tại một vài thời điểm mô phỏng, khối đầu vào đƣợc kích hoạt bằng cách thay đổi giá trị trên cổng đầu vào. Khối này phản ứng lại bằng cách thực hiện mã lệnh theo mô tả hoạt động của nó đã đƣợc gán và tạo ra các giá trị mới đƣa đến đƣờng tín hiệu để gửi tới các cổng đầu ra của nó tại các thời điểm

mô phỏng tiếp theo sau, công việc này đƣợc gọi là kế hoạch giao tác (scheluding a

transaction) trên tín hiệu đó. Nếu giá trị mới khác giá trị trƣớc đó đã có trên đƣờng tín hiệu, thì sẽ có một sự kiện (event) xảy ra, và các khối khác với các đầu vào đã đƣợc kết nối với đƣờng tín hiệu đó có thể sẽ đƣợc kích hoạt.

Quá trình mô phỏng bắt đầu với một pha đƣợc gọi là pha khởi động

(initialisatoin phase), và sau đó các quá trình đƣợc thực hiện lặp lại hai giai đoạn trong một chu kỳ mô phỏng (simulation cycle). Trong pha khởi động, tất cả các tín hiệu đƣợc cung cấp sẵn các giá trị khởi động, thời gian mô phỏng đƣợc đƣa về 0, và mỗi một chƣơng trình hoạt động của một khối đƣợc kích hoạt.

Trong giai đoạn đầu tiên của chu kỳ mô phỏng, thời gian mô phỏng đƣợc nâng lên thành thời gian sớm nhất tại thời điểm mà giao tác đã đƣợc thực hiện. Tất cả các giao tác đƣợc đƣa vào tại thời điểm này đều đƣợc kích hoạt, và điều này có thể gây ra một số sự kiện nào đó.

Trong gian đoạn thứ hai của chu kỳ mô phỏng, tất cả các khối phản ứng lại đối với các sự kiện vừa xảy ra trong giai đoạn một sẽ kích hoạt chƣơng trình hoạt động của chúng. Các chƣơng trình đó thƣờng là kế hoạch giao tác trên các tín hiệu đầu ra của chúng. Khi tất cả các chƣơng trình kết thúc hoạt động, chu kỳ mô phỏng đƣợc lặp lại. Nếu không có thêm thao tác nào thì quá trình mô phỏng đã hoàn thành.

Mục đích của việc mô phỏng là để biết thêm thông tin về sự thay đổi trong hệ thống tại từng thời điểm. Việc này có thể thực hiện đƣợc giám sát bởi chƣơng trình

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

giám sát mô phỏng (simulation monitor). Chƣơng trình này nhằm mục đích ghi lại

quá trình hoạt động theo từng thời điểm tại các điểm dùng để phân tích về sau.

2.2.2. Mô hình tổ chức.

2.2.2.1. Thư viện thiết kế.

Khi ngƣời thiết kế viết mô tả các hoạt động VHDL thì phải ghi lại dạng các tệp thiết kế (design file), sau đó dùng một trình biên dịch để phân tích cú pháp của chúng và đƣa chúng vào thành lập một thƣ viện thiết kế (Design Library). Một số các cấu trúc của VHDL có thể đƣợc phân tích riêng rẽ để đƣa vào thƣ viện thiết kế. Các cấu trúc đó đƣợc gọi là các đơn vị thƣ viện (Library Units). Các đơn vị thƣ viện

chính (primary) bao gồm các mô tả đầu vào, các mô tả đóng gói thành phần chính

và các mô tả cấu hình. Các đơn vị thƣ viện phụ (secondary) bao gồm các thân chƣơng trình kiến trúc và các thân của các đóng gói thành phần chính. Các đơn vị thƣ viện đó phụ thuộc vào đặc điểm giao diện của chúng trong các đơn vị thƣ viện chính tƣơng ứng, vì đơn vị chính phải đƣợc phân tích trƣớc bất kỳ đơn vị phụ nào tƣơng ứng.

Các thƣ viện đƣợc tham chiếu để sử dụng các định danh đƣợc gọi là các tên

logic (logic name). Tên này phải đƣợc dịch bởi hệ điều hành chủ thành một tên lƣu

trữ hoạt động độc lập. Ví dụ, các thƣ viện thiết kế có thể hoạt động nhƣ các tệp cơ sở dữ liệu (database file), và tên logic phải đƣợc dùng để có thể xác định tên tệp cơ sở dữ liệu. Các đơn vị thƣ viện trong thƣ viện đã đƣợc cung cấp có thể tham chiếu đến thông qua hậu tố tên của chúng với tên logic thƣ viện.

Có hai loại thƣ viện đặc biệt hoàn toàn có thể sử dụng đƣợc cho tất cả các đơn vị thiết kế, và không cần đặt tên trong mệnh đề thƣ viện. Thƣ viện đầu tiên có tên là

work, nó tham chiếu thƣ viện thiết kế đang làm việc vào đơn vị thiết kế hiện tại sẽ

đƣợc đặt dành cho ngƣời phân tích. Sau khi đặt vào đơn vị thiết kế, các đơn vị thiết kế đƣợc phân tích trƣớc đó trong tệp thiết kế có thể tham chiếu để sử dụng tên thƣ viện có sẵn đó là work.

Thƣ viện đặc biệt thứ hai đƣợc gọi là std, và nó chứa các dạng đóng gó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

chức năng. Tất cả các thành phần con trong các đóng gói đó đều có thể sử dụng đƣợc, và không cần sử dụng các mệnh đề để truy xuất chúng.

2.2.2.2. Các cấu hình.

Chúng ta đã đề cập đến một thành phần đã đƣợc khai báo có thể đƣợc coi nhƣ một mẫu cho một thực thể thiết kế. Sự ràng buộc của một thực thể tới mẫu này đạt đƣợc thông qua một mô tả cấu hình. Mô tả này có thể đƣợc sử dụng để chỉ định các hằng số chung trong thực tế cho các thành phần và khối. Nhƣ vậy mô tả cấu hình (configuration declaration) đóng vai trò chính trong việc tổ chức mô tả thiết kế khi chuẩn bị cho việc mô phỏng hoặc các xử lý khác.

2.3 Kết luận chƣơng.

Chƣơng này giới thiệu tổng quan về công nghệ FPGA, quá trình thiết kế cơ bản trên FPGA; giới thiệu cụ thể về FPGA của hãng ALTERA cùng các công cụ thiết kế hệ thống nhƣ EDA, Quartus II hay Max+Plus II và ngôn ngữ mô tả phần cứng VHDL: một ngôn ngữ đƣợc dùng để mô tả các hệ thống điện tử số với các ƣu điểm vƣợt trội so với các ngôn ngữ mô tả phần cứng khác. Phần cuối của luận văn sẽ trình bày cụ thể về phƣơng pháp thiết kế module mã khối trên FPGA.

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

CHƢƠNG 3: THIẾT KẾ HỆ THỐNG MÃ KHỐI

3.1. CẤU TRÚC CỦA MODULE MÃ KHỐI. 3.1.1. Cấu trúc chung. 3.1.1. Cấu trúc chung.

Nguyên lý thiết kế và cấu trúc của thuật toán mã khối đã đƣợc trình bày trong chƣơng 1 của luận văn. Trên cơ sở đó, cấu trúc của module mã khối đƣợc xây dựng nhƣ sơ đồ hình 3.1.

Hình 3.1: Cấu trúc chung của module mã khối.

Khóa mã

Dữ liệu vào Dữ liệu ra

Khối xử lý mã hóa/giải

mã dữ liệu

Điều khiển

Trong đó:

- Khối dữ liệu vào (ra) là bản tin rõ (mã) có độ dài M bít .

- Khối xử lý mã hoá/giải mã dữ liệu là khối đóng vai trò chức năng chính của modul mã khối, có nhiệm vụ mã hoá hay giải mã dữ liệu theo thuật toán mã khối đƣợc chọn lựa.

- Khoá mã độ dài K bít có nhiệm vụ kết hợp với các hàm toán học của thuật toán mã khối để thực hiện mã hoá hay giải mã khối dữ liệu.

- Khối điều khiển thực hiện nhiệm vụ điều khiển toàn bộ hoạt động của modul.

3.1.2. Một số yêu cầu đối với module mã khối.

Module mã khối dùng trong hệ truyền tin mật phải thoả mãn một số yêu cầu cơ bản sau:

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ề mặt mật mã: Phải đảm bảo yêu cầu bảo mật, yêu cầu nghiệp vụ mật mã tuỳ theo các cấp độ mật khác nhau phụ thuộc vào nội dung thông tin cần bảo mật.

- Về mặt kỹ thuật công nghệ: Phải đảm bảo tốc độ mã hoá, tốc độ giải mã phù hợp với tốc độ luồng dữ liệu của hệ thống truyền tin.

- Về mặt hệ thống: Phải ghép nối đƣợc với các thiết bị truyền tin, đồng bộ giữa phần mã hoá và giải mã, hạn chế thấp nhất các khả năng gây lỗi cho toàn bộ hệ thống truyền tin mật

- Về mặt sử dụng: Có tính tiện dụng và chuyên dụng, có độ tin cậy cao trong khi hoạt động, linh hoạt trong quá trình xử lý, giá thành phù hợp, hiệu quả kinh tế cao.

3.2. LỰA CHỌN THUẬT TOÁN CHO MÔ PHỎNG THIẾT KẾ. 3.2.1. Lựa chọn thuật toán. 3.2.1. Lựa chọn thuật toán.

Việc lựa chọn thuật toán mã khối để mô phỏng thiết kế có ý nghĩa chứng minh về khả năng cũng nhƣ cách thức tiến hành khi thiết kế một hệ mã khối trên FPGA nên nó phải đáp ứng đƣợc các tiêu chí:

- Mang đầy đủ đặc trƣng cơ bản của cấu trúc Feistel.

- Đã đƣợc phổ biến rộng rãi và đƣợc kiểm chứng trên thực tế.

Trong số các thuật toán mã khối đã đƣợc công bố, thuật toán DES đã đáp ứng đƣợc hai tiêu chí trên, vì:

- DES có đầy đủ các đặc trƣng của cấu trúc Feistel nhƣ đã đƣợc trình bày trong mục 1.2.4 và trong đó một số cấu trúc biến đổi khác nhƣ các hộp nén, các phép hoán vị, các phép dịch vòng lại mang những đặc trƣng của cấu trúc cộng - nhân.

- DES đã đƣợc thừa nhận là chuẩn mật mã của Mỹ từ cuối những năm 1970, đã đƣợc sử dụng rộng rãi trên thế giới.

3.2.2. Mô tả thuật toán DES.

Thuật toán DES [1],[7] thực hiện mã hoá bản rõ X có độ dài 64 bits với khoá mã

K có độ dài 56 bít, cho bản mã là một xâu bít Y có độ dài 64 bits.

Thuật toán DES hoạt động ở 4 chế độ: ECB, CBC, CFB, OFB trong đó, chế độ ECB là chế độ hoạt động tiêu biểu của mã khối và từ đây về sau thuật ngữ DES đƣợc hiểu là DES làm việc ở chế độ ECB.

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

Lƣợc đồ của thuật toán DES đƣợc mô tả trên hình 3.2. Thuật toán tiến hành theo 3 giai đoạn:

Giai đoạn 1. Với bản rõ cho trƣớc x, một xâu bít x0 sẽ đƣợc xây dựng bằng cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP. x0= IP(X) = L0R0, trong đó L0 gồm 32 bít đầu và R0 là 32 bít cuối.

Giai đoạn 2. Sau đó tính toán 16 lần lặp theo một hàm toán học xác định, tính LiRi, 1  i 16 theo quy tắc sau:

Li = Ri-1

Ri = Li-1 f(Ri-1,Ki)

trong đó  kí hiệu phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2). F là một hàm sẽ đƣợc mô tả ở sau, còn K1,K2, . . . ,K16 là các xâu bít độ dài 48 đƣợc tính nhƣ hàm của khoá K. (trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K). K1, . . ., K16 sẽ tạo thành bảng khoá. Một vòng của phép mã hoá đƣợc mô tả trên hình 3.3.

Giai đoạn3. Áp dụng phép hoán vị FP cho xâu bit R16L16, ta thu đƣợc bản mờ y. Tức là y=FP (R16L16). Hãy chú ý thứ tự đã đảo của L16 và R16.

3.2.2.1. Hàm F trong thuật toán DES.

Hàm F: Có hai biến vào.

- Biến thứ nhất A là xâu bit độ dài 32.

- Biến thứ hai J là một xâu bit độ dài 48. Đầu ra của f là một xâu bit độ dài 32. a) Biến thứ nhất A đƣợc mở rộng thành một xâu bit độ dài 48 theo một hàm mở rộng cố định E. E(A) gồm 32 bớt của A (đƣợc hoán vị theo cách cố định) với 16 bit xuất hiện hai lần.

b) Tính E(A)  J và viết kết quả thành một chuỗi 8 xâu 6 bit

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 phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 68 - 126)