1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế hệ thống mã khối bằng công nghệ fpga

126 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 126
Dung lượng 1,31 MB

Nội dung

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP  LỤC VŨ KHANH THIẾT KẾ HỆ THỐNG MÃ KHỐI BẰNG CÔNG NGHỆ FPGA LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ THÁI NGUYÊN 2010 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên Tai ngay!!! Ban co the xoa dong chu nay!!! http://www.lrc-tnu.edu.vn ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP  LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ Tên đề tài: THIẾT KẾ HỆ THỐNG MÃ KHỐI BẰNG CÔNG NGHỆ FPGA Ngành: KỸ THUẬT ĐIỆN TỬ Mã số: 60 52 70 Học viên: Lục Vũ Khanh Người hướng dẫn Khoa học: PGS.TS Đỗ Xuân Tiến THÁI NGUYÊN 2010 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn MỤC LỤC Trang Trang phụ bìa Lời cam đoan Lời cảm ơn MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU 10 CHƢƠNG HỆ TRUYỀN TIN MẬT VÀ CƠ SỞ LÝ THUYẾT MÃ KHỐI 13 1.1 TỔNG QUAN VỀ HỆ TRUYỀN TIN MẬT 13 1.1.1 Mô hì nh hệ thống truyền tin mật 13 1.1.2 Các phƣơng pháp mã mật 15 1.1.2.2 Phƣơng pháp thay thế 15 1.1.3 Mô hì nh hệ mật 16 1.1.3.1 Hệ mật đối xƣ́ng (Hệ mật khoá bí mật) 16 1.1.3.2 Hệ mật không đối xƣ́ng (Hệ mật khoá công khai ) 17 1.1.4 Phân loại hệ mã 18 1.1.5 Đánh giá độ mật hệ thống truyền tin mật 20 1.2 CƠ SỞ LÝ THUYẾT VỀ MÃ KHỐI 21 1.2.1 Khái niệm mã khối 21 1.2.2 Nguyên lý thiết kế mã khối 22 1.2.2.1 Nguyên lý thiết kế chung về độ an toàn 22 1.2.2.2 Nguyên lý thiết kế cho ƣ́ng dụng 23 1.2.3 Các tham số mã khối 23 1.2.3.1 Độ dài khối m 23 1.2.3.2 Độ dài khóa k và cỡ khóa đúng k t 24 1.2.4 Các cấu trúc mã khối 24 1.2.4.1 Cấu trúc mã Feistel 24 1.2.4.2 Cấu trúc cộng - nhân 26 1.2.5 Các mã lặp 27 1.2.5.1 Mã lặp và hàm vòng 27 1.2.6 Độ an toàn các hệ mã khối 28 1.3 GIỚI THIỆU MỘT SỐ KỸ THUẬT MÃ KHỐI 29 1.3.1 Chuẩn mã dƣ̃ liệu DES 29 1.3.2 Chuẩn mã dƣ̃ liệu Xô-Viết 30 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 1.3.3 Thuật toán mã hoá dƣ̃ liệu IDEA 32 1.3.3.1 Quá trình mã hoá của IDEA 32 1.3.3.3 Quá trình giải mã IDEA 35 1.3.4 Các chế độ ứng dụng mã khối 35 1.3.5 Một số giải pháp kỹ thuật thiết kế mã khối 38 1.3.5.1 Thiết kế mã khối chƣơng trình phần mềm 38 1.3.5.2 Thiết kế mã khối công cụ phần cứng 39 1.3.5.3 Lựa chọn giải pháp thiết kế module mã khối Việt Nam 40 1.4 Kết luận chƣơng 40 CHƢƠNG 2: CÔNG NGHỆ FPGA 42 2.1 TỔNG QUAN VỀ CÔNG NGHỆ FPGA 42 2.1.1 Giới thiệu công nghệ FPGA 42 2.1.1.1 Sự phát triển thiết bị lập trình đƣợc 42 2.1.1.2 Cấu trúc FPGA 45 2.1.1.3 Phân loại FPGA 49 2.1.1.4 Ứng dụng FPGA 52 2.1.2 Quá trình thiết kế FPGA 52 2.1.2.1 Giới thiệu trình thiết kế 52 2.1.2.2 Tối ƣu lô gic 54 2.1.2.3 Ánh xạ công nghệ 54 2.1.2.4 Sắp xếp phần tử (Placement) 55 2.1.2.5 Định tuyến FPGA (rounting) 56 2.1.2.6 Tải nạp chƣơng trình 57 2.1.3 Giới thiệu FPGA hãng ALTERA 57 2.1.3.1 Các loại FPGA thị trƣờng 57 2.1.3.2 Đặc điểm thiết bị FPGA hãng Altera 58 2.1.3.3 Các họ FPGA hãng Altera 59 2.1.4 Các công cụ thiết kế 60 2.1.4.1 Giới thiệu EDA 60 2.1.4.2 Giới thiệu công cụ thiết kế Quartus II 61 2.1.4.3 Giới thiệu công cụ thiết kế MAX + PLUS II 63 2.1.5 Các ngôn ngữ mô tả phần cứng 65 2.2 NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL 66 2.2.1 Giới thiệu chung ngôn ngữ VHDL 66 2.2.1.1 Mô tả cấu trúc 66 2.2.1.2 Mô tả hoạt động 67 Số hóa Trung tâm Học liệu – Đại học Thái Ngun http://www.lrc-tnu.edu.vn 2.2.1.3 Mơ hình thời gian theo kiện rời rạc 68 2.2.2 Mơ hình tổ chức 69 2.2.2.1 Thƣ viện thiết kế 69 2.2.2.2 Các cấu hình 70 2.3 Kết luận chƣơng 70 CHƢƠNG 3: THIẾT KẾ HỆ THỐNG MÃ KHỐI 71 3.1 CẤU TRÚC CỦA MODULE MÃ KHỐI 71 3.1.1 Cấu trúc chung 71 3.1.2 Một số yêu cầu module mã khối 71 3.2 LỰA CHỌN THUẬT TỐN CHO MƠ PHỎNG THIẾT KẾ 72 3.2.1 Lựa chọn thuật toán 72 3.2.2 Mô tả thuật toán DES 72 3.2.2.1 Hàm F thuật toán DES 73 3.2.2.2 Lƣợc đồ tạo khoá mã dịch 78 3.3 PHƢƠNG PHÁP THIẾT KẾ MODULE DES TRÊN FPGA 80 3.3.1 Quy trình và cơng cụ thiết kế 80 3.3.1.1 Quy trình thiết kế 80 3.3.1.2 Công cụ thiết kế 81 3.3.2 Sơ đồ khối chức module mã khối DES FPGA 81 3.3.2.1 Sơ đồ khối tổng quát 81 3.3.2.3 Sơ đồ khối chức module DES 83 3.3.3 Mô tả hoạt động các khối module DES VHDL 85 3.3.3.1 Khối các phép hoán vị 86 3.3.3.2 Mô tả khối DES16 87 3.3.3.3 Khối deskey (tính toán khoá) 92 3.3.3.4 Khối Control (điều khiển) 93 3.3.3.5 Khối Converter (lấy liệu vào/ra) 94 3.3.3.6 Tổng hợp các khối chức module DES 95 3.3.3.7 Kiểm tra thiết kế 96 3.3.4 Phần cứng mô module DES 96 3.3.4.1 Khối xử lý (mã hoá/giải mã) 97 3.3.4.2 Khối cấu hình cho FPGA 97 3.3.4.3 Các phần mạch khác 99 3.3.5 Kiểm tra hoạt động DES module mã khối 99 3.4 KẾT QUẢ THIẾT KẾ MODULE MÃ KHỐI DES 101 3.4.1 Kết thiết kế 101 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 3.4.1.1 Sơ đồ phần cứng module 101 3.4.1.2 Kiểm tra kết thiết kế 104 3.4.2 Đánh giá kết thiết kế module mã khối 105 3.5 Kết luận chƣơng 106 3.6 Kết luận chung 106 TÀI LIỆU THAM KHẢO 108 PHỤ LỤC 110 PHỤ LỤC 2: CHƢƠNG TRÌNH MƠ TẢ DES BẰNG VHDL 113 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt APEX ASIC Tiếng Anh Advanced ProgrammablE logic matriX Application-Specific Integrated Circuit CAE Computer-Aided Electronics CBC Cipher Block Channing mode Complex Programmable Logic Devices CPLD CDL Computer Design Language CFB ECB DES DSP EDA Cipher Freed Back Component & Supplier Management Electronic Code Book Data Encryption Standard Digital Signal Processing Electronic Design Automation FPGA Field-Programmable Gate Array FLEX GOST Flexible Logic Element MatriX Gosudarstvennyy Standart International Data Encryption Algorithm Integrated Circuit Institude of Electrical and Electronic Engineers Logic Array Block Look-Up Table Logic Block Logic Cell CSM IDEA IC IEEE LAB LUT LB LC Số hóa Trung tâm Học liệu – Đại học Thái Nguyên Tiếng VIệt Ma trận logic lập trình đƣợc Vi mạch tích hợp chun dụng Cơng cụ thiết kế mạch điện tử có hỗ trợ máy tính Phƣơng thƣ́c móc xí ch khới mã Thiết bị lơgíc lập trình phức hợp Ngơn ngữ mơ tả dịng liệu phát triển qúa trình đào tạo Chế độ phản hồi mã Hệ thống quản trị nhà cung cấp thành phần Chế độ sách mã điện tử Chuẩn mã hoá liệu Xử lý tín hiệu số Thiết kế điện tử tự động hoá Vi mạch dùng cấu trúc mảng phần tử logic mà ngƣời dùng có thể lập trình đƣợc Ma trận phần tử logic linh hoạt Hệ mã liệu Xô Viết Thuật toán mã hoá liệu quốc tế Mạch tích hợp Học Viện kỹ nghệ Điện và Điện Tử Mảng lớn Block lập trình đƣợc Bảng tìm kiếm Khối Logic Tế bào Logic http://www.lrc-tnu.edu.vn Multiple Array matriX Ma trận chuỗi đa phần tử Multi-Chip Module Mô đun đa chip Mechanical Computer-Aided Hệ thống thiết kế khí có trợ giúp MCAD Design máy tính OFB Output Freed Back Chế đợ phản hồi đầu OTP One - Time Programmable Loại SRAM lập trình mợt lần PES Proposed Encryption Standard Chuẩn mã hóa liệu PLD Programmable Logic Device Thiết bị logic lập trình đƣợc PAL Programmable Array Logic Mảng logic lập trình đƣợc PLA Programmable Logic Array Mảng logic lập trình đƣợc PROM Programmable Read Only Memory Chíp bợ nhớ đọc lập trình đƣợc RSA là mợt thuật toán mật mã hóa khóa công khai Thuật toán đƣợc Ron Rivest, Adi Shamir Len Adleman mô tả lần vào năm 1977 RSA Học viện Công nghệ Massachusetts (MIT) Tên thuật toán lấy từ chữ cái đầu tên tác giả RISC Reduced Instructions Set Computer Máy tính với tập lệnh đơn giản hóa SRAM Static Random Access Memory Bộ nhớ truy cập ngẫu nhiên tĩnh SSI Small Scale Integrated Vi mạch tích hợp cỡ nhỏ VLSI Very Large-Scale Integration Vi mạch tích hợp cỡ lớn Very high speed integrated circuits Ngôn ngữ mô tả hệ thống điện VHDL HDL tử số MAX MCM Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn DANH MỤC CÁC BẢNG Bảng Nội dung 2.1 Một số loại FPGA thị trƣờng 2.2 Số cổng sử dụng chân I/O họ FPGA Altera 3.1 Các tham số phép hoán vị ban đầu IP 3.2 Các tham số phép hoán vị FP 3.3 Các tham số hàm mở rộng E 3.4 Tham số các hộp S-Box 3.5 Các tham số phép hoán vị P 3.6 Các tham số phép hoán vị PC-1 3.7 Các tham số phép hoán vị PC-2 3.8 Mô tả các tín hiệu vào modul DES 3.9 Danh sách các tệp tin module DES 3.10 Chức các tín hiệu vào/ra EPC2 LC20 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn DANH MỤC CÁC HÌNH VẼ Hình vẽ 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Nội dung Mô hì nh hệ thống truyền tin Mô hì nh hệ thớng trùn tin mật Mơ hình hệ mật khoá bí mật Mơ hình hệ mật khoá cơng khai Sơ đồ cấu trúc cộng-nhân Một mã lặp r vòng với hàm vòng f Mô tả một vòng DES Sơ đồ một vòng lặp GOST Sơ đồ cấu trúc IDEA Chi tiết vòng đơn IDEA Phép biến đổi quá trình mã hoá IDEA Các chế độ hoạt động mã khối Các kỹ thuật thiết kế mã khối Cấu trúc PLA Cấu trúc PAL Cấu trúc CPLD Mô tả mơ hình mợt FPGA Cấu trúc Logic Cell FPGA Cấu trúc FPGA Bốn loại FPGA điển hình Cấu trúc SRAM FPGA (SRAM Logic Cell) Cấu trúc OTP FPGA (OTP Logic Cell) Quá trình thiết kế FPGA Kiến trúc tổng quát Altera FPGA MAX 7000 Cấu trúc chung Module mã khối Lƣợc đồ thuật toán DES Một vòng DES Hàm F thuật toán DES Sơ đồ tính khoá thuật toán DES Sơ đồ khối tổng quát Module mã khối DES FPGA Quá trình mã hoá/giải mã DES Mơ tả chức module mã hoá DES Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 110 PHỤ LỤC Quartus II Version 4.2 Build 157 04/05/2005 SJ Full Version CHIP "DES" ASSIGNED TO AN: EP20K100TC144-3 Pin Name/Usage : Location : Dir : I/O Standard : Voltage : I/O Bank : User Assignment VCC_INT :1 : power : : 2.5V : : DataIn[0] :2 : input : LVTTL/LVCMOS : : :Y DataIn[1] :3 : input : LVTTL/LVCMOS : : :Y GND :4 : gnd : : : : DataIn[2] :5 : input : LVTTL/LVCMOS : : :Y DataIn[3] :6 : input : LVTTL/LVCMOS : : :Y DataIn[4] :7 : input : LVTTL/LVCMOS : : :Y DataIn[5] :8 : input : LVTTL/LVCMOS : : :Y DataIn[6] :9 : input : LVTTL/LVCMOS : : :Y DataIn[7] : 10 : input : LVTTL/LVCMOS : : :Y cs[0] : 11 : output : LVTTL/LVCMOS : : :Y GND_IO : 12 : gnd : : : : cs[1] : 13 : output : LVTTL/LVCMOS : : :Y cs[2] : 14 : output : LVTTL/LVCMOS : : :Y cs[3] : 15 : output : LVTTL/LVCMOS : : :Y VCC_INT : 16 : power : : 2.5V : : GND : 17 : gnd : : : : MSEL0 : 18 : input : : : : MSEL1 : 19 : input : : : : GND+ : 20 : : : : : VCC_INT : 21 : power : : 2.5V : : NCONFIG : 22 : input : : : : cs[4] : 23 : output : LVTTL/LVCMOS : : :Y cs[5] : 24 : output : LVTTL/LVCMOS : : :Y cs[6] : 25 : output : LVTTL/LVCMOS : : :Y cs[7] : 26 : output : LVTTL/LVCMOS : : :Y GND* : 27 : : : : : VCC_IO : 28 : power : : 3.3V : : GND* : 29 : : : : : GND* : 30 : : : : : GND* : 31 : : : : : GND* : 32 : : : : : GND* : 33 : : : : : GND : 34 : gnd : : : : GND* : 35 : : : : : VCC_INT : 36 : power : : 2.5V : : res_out[0] : 37 : output : LVTTL/LVCMOS : : :Y res_out[1] : 38 : output : LVTTL/LVCMOS : : :Y res_out[2] : 39 : output : LVTTL/LVCMOS : : :Y res_out[3] : 40 : output : LVTTL/LVCMOS : : :Y res_out[4] : 41 : output : LVTTL/LVCMOS : : :Y GND_IO : 42 : gnd : : : : res_out[5] : 43 : output : LVTTL/LVCMOS : : :Y res_out[6] : 44 : output : LVTTL/LVCMOS : : :Y Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 111 res_out[7] res_out[8] res_out[9] res_out[10] res_out[11] res_out[12] TMS TCK Clk GND VCC_INT GND+ STATUS CONF_DONE res_out[13] res_out[14] VCC_IO res_out[15] res_out[16] res_out[17] res_out[18] res_out[19] res_out[20] res_out[21] res_out[22] res_out[23] res_out[24] GND_IO VCC_INT GND res_out[25] res_out[26] GND res_out[27] res_out[28] res_out[29] res_out[30] res_out[31] res_out[32] res_out[33] VCC_CKLK VCC_INT GND GND_CKLK VCC_IO TDI nCE GND+ DCLK DATA0 res_out[34] res_out[35] res_out[36] res_out[37] : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : 81 : 82 : 83 : 84 : 85 : 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : 94 : 95 : 96 : 97 : 98 : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : input : : : : : input : : : : : input : LVTTL/LVCMOS : : :Y : gnd : : : : : power : : 2.5V : : : : : : : : bidir : : : : : bidir : : : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : power : : 3.3V : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : gnd : : : : : power : : 2.5V : : : gnd : : : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : gnd : : : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : power : : 2.5V : : : power : : 2.5V : : : gnd : : : : : gnd : : : : : power : : 3.3V : : : input : : : : : input : : : : : : : : : : bidir : : : : : input : : : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 112 res_out[38] res_out[39] res_out[40] res_out[41] res_out[42] res_out[43] res_out[44] GND_IO res_out[45] VCC_INT res_out[46] res_out[47] res_out[48] res_out[49] res_out[50] res_out[51] res_out[52] VCC_IO res_out[53] res_out[54] res_out[55] res_out[56] res_out[57] res_out[58] TDO GND+ VCC_INT GND GND+ nCEO TRST res_out[59] res_out[60] res _out[61] res _out[62] GND_IO res_out[63] GND* En/De GND* done GND* GND* GND* rdy_to_ld VCC_IO : 99 : 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : gnd : : : : : output : LVTTL/LVCMOS : : :Y : power : : 2.5V : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : power : 3.3V : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : : : : : : : : : : power : : 2.5V : : : gnd : : : : : : : : : : output : : : : : input : : : : : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : output : LVTTL/LVCMOS : : :Y : gnd : : : : : output : LVTTL/LVCMOS : : :Y : : : : : : input : LVTTL/LVCMOS : : :Y : : : : : : output : LVTTL/LVCMOS : : :Y : : : : : : : : : : : : : : : : output : LVTTL/LVCMOS : : :Y : power : : 3.3V : : Số hóa Trung tâm Học liệu – Đại học Thái Ngun http://www.lrc-tnu.edu.vn 113 PHỤ LỤC 2: CHƢƠNG TRÌNH MƠ TẢ DES BẰNG VHDL DES.VHD library ieee; use ieee.std_logic_1164.all; entity DES is port ( pt : in std_logic_vector(1 TO 16); key : in std_logic_vector(1 TO 16); clk : in std_logic; reset : in std_logic; ct : out std_logic_vector(1 TO 64) ); end DES; architecture structural of DES is component control port ( reset : in std_logic; clk : in std_logic; load_new_pt : out std_logic; output_ok : out std_logic; load_pt : out std_logic; unload_pt : out std_logic; load_key : out std_logic; unload_key : out std_logic; shift : out std_logic_vector(1 to 3) ); end component; component Des16 port ( pt : in std_logic_vector(1 TO 64); xkey : in std_logic_vector(1 TO 48); reset : in std_logic; clk : in std_logic; load_new_pt : in std_logic; output_ok : in std_logic; ct : out std_logic_vector(1 TO 64)); end component; component deskey port ( the_key : in std_logic_vector(1 to 64); shift : in std_logic_vector(1 to 3); clk : in std_logic; ki : out std_logic_vector(1 to 48) Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 114 ); end component; component converter port ( input : in std_logic_vector(1 to 16); load : in std_logic; unload : in std_logic; clk : in std_logic; output : out std_logic_vector (1 to 64) ); end component; signal load_new_pt : std_logic; signal output_ok : std_logic; signal load_pt_sig : std_logic; signal unload_pt_sig : std_logic; signal load_key_sig : std_logic; signal unload_key_sig : std_logic; signal shift_sig : std_logic_vector(1 to 3); signal ki_sig : std_logic_vector(1 to 48); signal key_sig : std_logic_vector(1 to 64); signal pt_sig : std_logic_vector(1 to 64); begin control_unit : control port map(reset=>reset, clk=>clk, load_new_pt=>load_new_pt,output_ok=>output_ok,load_pt=>load_pt_sig ,unload_pt=>unload_pt_sig,load_key=>load_key_sig,unload_key=>unloa d_key_sig, shift=>shift_sig ); converter_pt : converter port map ( input=>pt, load=>load_pt_sig, unload=>unload_pt_sig, clk=>clk, output=>pt_sig ); converter_key : converter port map ( input=>key, load=>load_key_sig,unload=>unload_key_sig,clk=>clk, utput=>key_sig ); datapath : Des16 port map ( pt=>pt_sig, xkey=>ki_sig, reset=>reset,clk=>clk,load_new_pt=>load_new_pt, output_ok=>output_ok, ct=>ct ); key_proc : deskey port map ( the_key=>key_sig, shift=>shift_sig, clk=>clk, ki=>ki_sig ); end structural; IP.VHD Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 115 library ieee; use ieee.std_logic_1164.all; entity ip is port ( pt : in std_logic_vector(1 TO 64); l0x : out std_logic_vector(1 TO 32); r0x : out std_logic_vector(1 TO 32)); end ip; architecture behavior of ip is begin l0x(1)so5x, so6x=>so6x, so7x=>so7x, so8x=>so8x, ppo=>ppo); des_xor2: desxor2 port map(d=>ppo,l=>li,q=>r_toreg32); l_toreg32l_toreg32, q=>lo, reset=>reset, clk=>clk ); register32_right: reg32 port map( a=>r_toreg32, q=>ro, reset=>reset, clk=>clk ); end; SBOX1 library ieee; use ieee.std_logic_1164.all; entity sbox1 is port ( b : in std_logic_vector(1 to 6); so : out std_logic_vector(1 to 4)); end sbox1; architecture behaviour of sbox1 is begin process(b) begin case b is when "000000"=> so "000110"=> "001000"=> "001010"=> "001100"=> "001110"=> "010000"=> "010010"=> "010100"=> "010110"=> "011000"=> "011010"=> "011100"=> "011110"=> "000001"=> "000011"=> "000101"=> "000111"=> "001001"=> "001011"=> "001101"=> "001111"=> "010001"=> "010011"=> "010101"=> "010111"=> "011001"=> "011011"=> "011101"=> "011111"=> "100000"=> "100010"=> "100100"=> "100110"=> "101000"=> "101010"=> "101100"=> "101110"=> "110000"=> "110010"=> "110100"=> "110110"=> "111000"=> "111010"=> so

Ngày đăng: 30/10/2023, 17:15

w