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.
- Sử dụng một mô tả bằng ngôn ngữ mô tả phần cứng VHDL.
3.3.3.7. Kiểm tra thiết kế.
a) Kiểm tra thiết kế bằng chương trình mô phỏng Waveform Edit:
Sau mỗi bƣớc thiết kế chƣơng trình, việc kiểm tra sự hoạt động của khối chức năng với mục đích khảng định tính đúng đắn của thiết kế theo các yêu cầu đặt ra có thể thực hiện nhờ sự trợ giúp bởi chƣơng trình Waveform Edit của công cụ Quartus II với việc cho bộ tham số véc tơ đầu vào mô phỏng, sau khi chạy chƣơng trình Simulation đầu ra sẽ thu đƣợc kết quả. Nếu việc thiết kế chƣa đạt các yêu cầu này, ngƣời thiết kế bắt buộc phải quay lại kiểm tra từng bƣớc trong quá trình thiết kế.
Việc kiểm tra DES có thể thực hiện theo phƣơng pháp Test Vector đƣợc trình bày trong 3.3.5.
b) Kiểm tra thiết kế trên phần cứng:
Nạp chƣơng trình đã đƣợc biên dịch cho phần cứng và tiến hành kiểm tra phân tích trực tiếp trên phần cứng theo phƣơng pháp Test Vector.
3.3.4. Phần cứng mô phỏng module DES.
Để module DES thiết kế trên FPGA có thể hoạt động đƣợc độc lập, cần phải thiết kế một bảng mạch phụ trợ theo sơ đồ hình 3.17:
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 EN M· ho¸/Gi¶i m· FPGA d÷ liÖu ra kho¸ m· Ic cÊu h×nh C¸p mv d÷ liÖu vµo t¹o xung nhÞp En/De Reset
Hình 3.17: Sơ đồ khối phần cứng của modul mã khối DES. 3.3.4.1. Khối xử lý chính (mã hoá/giải mã).
Đây là phần chính thực thi toàn bộ các hoạt động của modul mã khối. Toàn bộ chƣơng trình thiết kế thuật toán DES và các chức năng khác của modul bằng ngôn ngữ mô tả phần cứng sau khi qua các giai đoạn của trình biên dịch, tối ƣu, đặt và định đƣờng, kiểm tra sẽ đƣợc nạp và thực hiện trên cho FPGA. Việc chọn linh kiện FPGA hoàn toàn phụ thuộc vào các yêu cầu của một nhiệm vụ cụ thể. Ví dụ: Các yêu cầu về tốc độ xử lý phải đáp ứng đƣợc tốc độ dữ liệu của ứng dụng, số chân vào/ra tín hiệu phụ thuộc vào phƣơng thức lấy dữ liệu vào/ra, số lƣợng các cổng logic của linh kiện phải đảm bảo tƣơng ứng với số lƣợng các cổng logic của chƣơng trình thiết kế, giá thành sản phẩm...
3.3.4.2. Khối cấu hình cho 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
- Giai đoạn 1: “Nạp mềm” dùng cho việc kiểm tra kết quả trong từng giai đoạn hoặc toàn bộ quá trình thiết kế. Với mỗi khối chức năng đƣợc chia ra trong quá trình thiết kế modul ngoài việc kiểm tra sự hoạt động của khối bằng chƣơng trình mô phỏng“ Vector Waveform File” của công cụ Quartus II nhƣ đã trình bày trong phần 3.3.3.7, ngƣời thiết kế có thể kiểm tra sự hoạt động của các khối bằng cách nạp cấu hình của khối đó thông qua cáp ByteBlasterMV (MV) ra thiết bị phần cứng để phân tích xem hoạt động của khối có đúng so với yêu cầu chƣa. Nếu khối chức năng hoạt động chƣa đúng yêu cầu thì quay lại kiểm tra thiết kế. Cấu hình này trong phần cứng sẽ bị xoá khi tắt nguồn nuôi.
Hình 3.18: Sơ đồ ghép nối giữa FPGA và cáp MV.
- Giai đoạn 2: “Nạp cứng” sau khi kiểm tra toàn bộ hoạt động của modul theo đúng yêu cầu thiết kế, ngƣời thiết kế tiến hành nạp cấu hình cho phần cứng bằng thiết bị nạp trình ALL-11C. IC để lƣu giữ cấu hình đƣợc chọn phải phù hợp với linh kiệ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
Hình 3.19: Sơ đồ ghép nối giữa FPGA và linh kiện cấu hình
3.3.4.3. Các phần mạch khác.
- Mạch tạo xung nhịp: Tạo xung Clock cung cấp cho toàn bộ module.
- Khối nguồn đƣợc thiết kế cho ra các nguồn điện áp DC +5V; +2,5V; +3,3V
để cung cấp cho các vi mạch.
3.3.5. Kiểm tra sự hoạt động của DES trong module mã khối.
Việc thiết kế module mã khối DES, cũng nhƣ cứng hoá các thuật toán phức tạp khác trên công nghệ FPGA phải trả lời một câu hỏi: liệu vi mạch FPGA đã thiết kế có hoạt động đúng nhƣ mô tả lý thuyết của thuật toán? Để kiểm tra tính đúng đắn của thiết bị phần cứng đã thiết kế, ngƣời ta thƣờng thực hiện bằng phƣơng pháp kiểm tra theo vector (test vector)[17], trong đó mỗi vector là một bộ thông tin bao gồm: thông tin đầu vào, thông tin cần xử lý và thông tin kết quả, tuỳ theo từng thuật toán phải đánh giá. Những vector kiểm tra này đƣợc ngƣời xây dựng thuật toán tạo ra bằng công cụ lý thuyết. Việc kiểm tra vector đƣợc thực hiện theo hai phƣơng pháp:
- Phƣơng pháp kiểm tra vector đã đƣợc tính sẵn kết quả KAT (Know Answer Test).
- Phƣơng pháp kiểm tra vector ngẫu nhiên (Monte - Carlo).
Trong hai phƣơng pháp trên, KAT đƣợc sử dụng phổ biển nhất. Cơ sở của Test vector là các giá trị vector kiểm tra đƣợc tính toán sẵn. Sau khi công bố, phần lớn các thuật toán xử lý dữ liệu có khả năng cứng hoá đều đƣợc tính trƣớc các vector
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
kiểm tra nhằm tạo cơ sở cho nhà sản xuất thiết bị xử lý dữ liệu theo thuật toán đó kiểm tra thành phẩm.
Đối với thuật toán DES, các giá trị vector kiểm tra đƣợc công bố trong tài liệu: NIST Special Publication 800-17. Hai bảng vector kiểm tra chính là VPKAT (Variable Plaintext Know Answer Test) và VKKAT(Variable Key Know Answer Test).
Kiểm tra với bản rõ biến đổi (VPKAT).
Quá trình mã hoá đƣợc kiểm tra bằng cách thực hiện kiểm tra với bản rõ biến đổi, trong đó phần cứng cần kiểm tra (ITU: Implemantation Under Test) sẽ nhận các giá trị của bản rõ cho trƣớc trong vector đầu vào hệ thống kiểm tra (MOVS – Modes of Operation Validation System). Khoá phiên đƣợc đặt giá trị bằng 1 ở những vị trí lẻ.
Phép kiểm tra VPKAT đƣợc thực hiện nhƣ sau:
1. MOVS thiết lập:
a) Khoá phiên: Key=0101010101010101 (đặt parity lẻ)
b) Bản rõ ban đầu: PT1=8000000000000000
c) Gửi Key và PT1 đến IUT
2. IUT thực hiện thuật toán mã hoá dữ liệu với Key và gửi kết quả cho MOVS.
3. MOVS so sánh két quả tính toán trong IUT với bản mã đã đƣợc tính sẵn.
Kiểm tra với khoá biến đổi (VKKAT)
Kiểm tra với khoá biển đổi đƣợc thực hiện nhƣ sau: ITU nhận đƣợc vector đầu vào gồm có giá trị khoá thay đổi và giá trị bản rõ cố định là “0”
Phép kiểm tra với khoá biến đổi (VKKAT) đƣợc thực hiện nhƣ sau:
1. MOVS thiết lập:
a) Khoá phiên: Key1 = 800101010101010101
b) Bản rõ ban đầu: PT = 0000000000000000 c) Gửi Key1 và PT đến IUT
2. IUT thực hiện thuật toán mã hoá dữ liệu với Key và gửi kết quả tới MOVS
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.4. KẾT QUẢ THIẾT KẾ MODULE MÃ KHỐI DES. 3.4.1. Kết quả thiết kế. 3.4.1. Kết quả thiết kế.
Quá trình xây dựng và thiết kế module mã khối DES đƣợc thực hiện trên cơ sở xây dựng các khối chức năng của thuật toán DES bằng mô tả VHDL trong phần 3.3.3 và các yếu tố về phần cứng trong phần 3.3.4.
3.4.1.1. Sơ đồ phần cứng của module.
a) Module DES: Trong module sử dụng chíp EP20K100TC144-3 thuộc họ APEX 20K của ALTERA.
Những đặc điểm chính của chíp EP20K100TC144-3 của Altera:
EP20K100TC 144-3 cung cấp 100.000 cổng sử dụng, 144 chân vào ra trong đó có 95 chân I/O dành cho ngƣời sử dụng, 4406 thanh ghi, 53.248 bít RAM, ROM, sử dụng nguồn nuôi 2.5 VDC, làm việc với xung nhịp cao nhất là 133 MHz. Sơ đồ chân tín hiệu của EP20K100TC 144-3 đƣợc nêu trong phụ lục 1.
b) IC cấu hình: Có thể dùng loại EPC1, EPC2... tuỳ theo dung lƣợng của thiết bị. Với họ linh kiện APEX 20K của Altera có thể dùng IC cấu hình loại EPC2LC 20. File chƣơng trình DES.SOF đƣợc nạp cho EPC2LC20 bằng bộ nạp ALL-11C.
EPC2 LC20 là một loại SRAM có dung lƣợng là 1.655 Kbít sử dụng nguồn nuôi là 5.0 V và 3.3 V.
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 Control Control +3,3V +5V +2,5V Enciph
Reset MOdulE des
Apex20k Ep20k100tc144-3 DỮ LIỆU RA 74LS373 KHOÁ MÃ CÁP MV EPC2 Lc 20 BẢNG LED HIỂN THỊ TÍN HIỆU RA DỮ LIỆU VÀO 74LS244 BẢNG LED HIỂN THỊ TÍN HIỆU VÀO TẠO XUNG NHỊP KHỐI NGUỒN
Hình 3.20: Sơ đồ khối phần cứng mô phỏng.
Chức năng các chân tín hiệu vào/ra của EPC2 LC20 đƣợc mô tả ở bảng 3.10.
Stt Tên Vào/Ra Mô tả
1 TDO Output Nối với cáp JTAG nếu cáp này đƣợc sử
dụng.
2 DATA Output Dữ liệu ra nối tiếp. Dữ liệu đƣợc chốt tại đây
đến khi chân tín hiệu nCS có mức cao thì dữ liệu sẽ đƣợc nạp cho linh kiện FPGA.
3 TCK Input Chân nhịp của JTAG. Chân này nối tới GND
nếu nhƣ cáp JTAG không đƣợc sử dụng.
5 VCCSEL Input Chọn chế độ nguồn cung cấp Vcc. VCCSEL
phải đƣợc nối tới GND nếu linh kiện sử dụng chế độ nguồn cung cấp là 5V và nối tới Vcc nếu linh kiện sử dụng chế độ nguồn cung cấp là 3.3V.
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
8 OE(3) Output OE=’1’ cho phép đƣa dữ liệu vào linh kiện,
OE=’0’ reset lại bộ đếm.
9 nCS(3) Input Vào chọn chíp cấu hình khi phải dùng nhiều
IC cấu hình cho một linh kiện FPGA.
10 GND Đất Chân nối đất. Nối tụ điện 0.2mF để lọc
nguồn giữa Vcc và GND.
11 TDI Input Chân vào dữ liệu của mạch JTAG. Không
đƣợc nối chân này nếu nhƣ mạch JTAG không đƣợc sử dụng.
12 nCASC Output Nối tới chân nCS của IC cấu hình tiếp theo
nếu nhƣ trong mạch dùng nhiều hơn một IC cấu hình.
13 nINIT_CONF(3
)
Output Chân tín hiệu này đƣợc nối với nCONFIG
của linh kiện FPGA từ IC cấu hình qua cáp JTAG
14 VPPSEL Input Tƣơng tự nhƣ chân số 5
18 VPP Power Cung cấp nguồn. Với EPC2 chân này đƣợc
nối tới Vcc.
19 TMS Input Chọn chế độ JTAG. Nối chân này tới Vcc
nếu nhƣ mạch JTAG không sử dụng.
20 VCC Power Cung cấp nguồn.
Bảng 3.10: Chức năng các tín hiệu vào/ra của EPC2 LC20.
Chú ý: (3) Các chân OE, nCS, và nINIT_CONF trên EPC2 khi sử dụng nối một
điện trở 1KÙ với Vcc.
c)Mạch chốt dữ liệu vào/ra: Dữ liệu vào/ra có thể đƣợc thiết kế ở dạng nối tiếp hay song song tuỳ thuộc vào hệ thống truyền tin cụ thể đƣợc chọn làm đối tƣợng ghép nối. Trong thiết kế moduê để thuận tiện cho việc mô phỏng tín hiệu, mạch chốt dữ liệu đƣợc thiết kế riêng, sử dụng vi mạch 74LS 244 cùng với 8 cụm chuyển mạch (mỗi cụm có 8 chuyển mạch ) tạo ra 64 bít dữ liệu để mô phỏng cho tín hiệu đầu vào, vi mạch 74LS 373 chốt 64 bít dữ liệu đầu ra hiển thị ra LED, các tín hiệu điều khiển (control) đƣợc đƣa ra từ chíp FPGA nhằm điều khiển việc lấy dữ liệu vào/ra. Để thuận tiện cho quá trình mô phỏng, khoá mã đƣợc nạp sẵn trong modul mã khố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
d) Bảng dèn LED hiển thị: Dùng trong quá trình mô phỏng mục đích là chỉ thị các bít dữ liệu ở đầu vào và đầu ra. LED ở trạng thái “sáng” chỉ thị cho mức lôgíc “1” và ở trạng thái “tắt” chỉ thị cho mức lôgíc “0”.
e) Mạch tạo xung nhịp: Tạo xung Clock cung cấp cho toàn bộ modul với tần số hoạt động 24MHz.
f) Khối nguồn: Đƣợc thiết kế cho ra các nguồn điện áp DC +5V; +2,5V; +3,3V để cung cấp cho các vi mạch.
Hình 3.21: Hình ảnh module mã khối DES đã được thiết kế. 3.4.1.2. Kiểm tra kết quả thiết kế.
Module DES, sau khi đƣợc cứng hoá bằng công nghệ FPGA, đã đƣợc kiểm tra theo phƣơng pháp Test vector nhằm kiểm chứng tính đúng đắn trong hoạt động trên chíp FPGA. Sau khi kiểm tra từng vector theo hai bảng vector kiểm tra, module DES đã cho kết quả đúng nhƣ tính toán lý thuyết, chứng tỏ hoạt động của module DES trên FPGA hoàn toàn chính xác.
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.4.2. Đánh giá kết quả thiết kế module mã khối.
Căn cứ vào các yêu cầu đối với module mã khối, việc thiết kế mô phỏng module mã khối với thuật toán DES, sử dụng chíp EP20K100TC 144-3 đã đạt đƣợc các kết quả nhƣ sau:
- Đã thiết kế chế tạo 2 module mã khối với thuật toán DES trên công nghệ FPGA.
- Toàn bộ thuật toán DES đƣợc thiết kế đóng gói trên chíp FPGA, hoạt động chính xác so với mô tả về lý thuyết, đảm bảo đƣợc các yêu cầu về bảo mật thiết kế, kết cấu vật lý và tính ổn định khi hoạt động.
- Về tốc độ mã hoá/giải mã dữ liệu: Phƣơng pháp thiết kế trên sử dụng số chu kỳ xung nhịp cho một quá trình mã hoá là 24, trong đó 8 chu kỳ dành cho lấy dữ liệu và khoá, 16 chu kỳ dành cho 16 vòng lặp, dữ liệu ra đƣợc lấy song song 64 bít. Nhƣ vậy với xung nhịp 24 MHz, dữ liệu đầu vào mã hoá 64 bít thì tốc độ mã hoá dữ liệu