Data 0 1 2 3 4 5 6 7
Ciphertext 39 C2 40 10 03 A0 C7 98 Sơ đồ khối bộ truyền dữ liệu trong CAN được thể hiện trong hình 2.33.
Hình 2.33: Sơ đồ khối bộ truyền CAN
Dữ liệu chuẩn bị truyền đi sẽ được định danh và lưu lại trên vi điểu khiển, sau đó sẽ được truyền xuống bộ CAN Protocol để kiểm tra xem số bit và dữ liệu truyền
Transmit Assenly Registers Identifier bit Data bit
CAN Protocol Engine -Start/stop bit -CRC Checking -Message Arbitration Bus Transceiver Data bit CAN Bus
xuống có lỗi hay không nếu không lỗi dữ liệu sẽ được truyền xuống Bus Transceiver và xuống CAN bus, nếu lỗi thì kiểm tra xem lỗi đó thuộc lỗi gì sau đó sẽ xử lý và ghép lại dữ liệu rồi truyền xuống CAN bus. Những lỗi hay gặp trong quá trình truyền như:
Lỗi bit: Mỗi khi nút truyền gửi bột bit xuống bus, nó kiểm tra xem mức điện áp trên bus có đúng với bit cần gửi hay không.
Lỗi Stuffing: Được phát hiện trong mỗi lần có 6 bit hay nhiều hơn liên tục trên một đường dây của Bus.
Lỗi CRC: Nếu giá trị tính toán bởi nút nhận không giống với giá trị gửi đi bởi nút phát.
Sơ đồ khối bộ nhận dữ liệu được thể hiện trong hình 2.34.
Hình 2.34: Sơ đồ khối bộ nhận CAN
Bus Transceiver
Receive Assembly Registers
CAN protocol Engine -Error Checking -CRC Checking
Data Filters Identifier bit Data bit
Receive Register
CAN bus
Khi dữ liệu và số bit được nhận từ Bus Transceiver sẽ được định danh lần nữa và được lưu lại trên vi điều khiển sau đó sẽ được đưa xuống CAN Protocol Engine để kiểm tra lỗi, kiểm tra xem dữ liệu nhận được có giống dữ liệu gửi đi ban đầu không, mức điện áp có đúng không, nếu kiểm tra thấy không đúng thì dữ liệu sẽ phải quay lại để xử lý lỗi nếu không có lỗi thì sẽ được đưa xuống bộ lọc dữ liệu và được lưu lại trên vi điều khiển.
Sơ đồ nguyên lý quá trình truyền và nhận CAN.
Tác giả thực hiện hiện quá trình truyền và nhận dữ liệu đã được mã hóa thông qua 2 KITSTM 32F4 được kết nối với IC MCP2551 và dữ liệu sẽ được hiển thị thông qua CP2102.
Chương trình giao tiếp giữ hai KITSTM32F4 được viết bằng Code C và được lập trình trên phần mềm Keil C.
Sơ đồ nguyên lý được thể hiện trong hình 2.35.
Sơ đồ nguyên lý gồm có 5 thành phần như sau:
IC MPC2551: Dùng để tạo ra hai giá trị điện áp CANH và CAN L và kết nối với 2 KITSTM32F4 để truyền nhận dữ liệu.
KITSTM32F4 (1): Dùng để kết nối với IC MCP2551 để truyền dữ liệu mã hóa sang STM32F4 (2).
KITSTM32F4 (2): Thực hiện việc nhận dữ liệu từ KITSTM32F4 (1) thông qua IC MCP2551.
CP2102: Nhận dữ liệu từ KITSTM32F4 (2) sau đó kết nối với PC qua chuẩn USB rồi hiển thị dữ liệu lên màn hình.
Quá trình truyền và nhận dữ liệu được thực hiện như sau: Dữ liệu mã hóa sẽ được nạp vào trong KITSTM32F4 (1) để thực hiện việc truyền, dữ liệu sẽ được truyền xuống CAN bus và truyền qua IC MCP2551, tiếp tục truyền tín hiệu đó sang KITSTM32F4 (2) tín hiệu sẽ được lưu lại rồi tiếp tục truyền đến CP2102. CP2102 được kết nối với máy tính để hiển thị dữ liệu ra màn hình.
2.5. Kết luận
Như vậy chương này đã trình bày xong việc giới thiệu về mã hạng nhẹ, mã hạng nhẹ LED, cách thiết kế thuật toán LED-64, quá trình mã hóa và giải mã LED, mã hóa LED 64 bit 0 và ứng dụng để truyền dữ liệu đã được mã hóa trong CAN thông qua hai KITSTM32F4, ở chương tiếp theo sẽ trình bày về mô phỏng thuật toán LED-64 và kết quả việc truyền dữ liệu trong CAN.
CHƯƠNG 3: MÔ PHỎNG VÀ KẾT QUẢ
Chương này trình bày mô phỏng LED 64bit bằng phần mềm ModelSim. Phần mô phỏng trình bày về cách giải mã và mã hóa LED 64 bit, chương trình mã hóa và giải mã được viết bằng Code Verilog, chương trình giao tiếp giữa hai STM32 được viết bằng Code C và được lập trình trên phần mềm Keil C. Kết quả quá trình truyền dữ liệu đã được mã hóa trong CAN được hiển thị trên màn hình máy tình bằng phần mềm UART_Teminal.
3.1. Mô phỏng quá trình mã hóa và giải mã LED 64bit 3.1.1. Mô phỏng quá trình mã hóa LED 64bit
Mã hóa khối dữ liệu 64bit được thực hiển bởi các thông số:
Plaintext :64’ b0
Key :64’ b0
Hình 3.1: Input key, Plaintext 64 bit 0
Kết quả quá trình mã hóa được thể hiện trong hình 3.2. Bản mã ciphertext nhận được là 39c2401003a0c798 (trùng với kết quả đã được công bố trong [1])
Hình 3.2: Kết quả được mã hóa
Thời gian mã hóa và chu kỳ mã hóa LED 64 bit 0
Với thời điểm bắt đầu mã hóa tbd= 6000 ps, thời gian mã hóa xong tht=320000 ps từ đó tính được thời gian mã hóa tmh cho cả quá trình:
1 chu kỳ mã hóa tck=10000 ps tính được chu kỳ thực hiện mã hóa cho LED 64 bit 0:
𝑐𝑘 = 𝑡ℎ𝑡 − 𝑡𝑏𝑑
10000 = 31,4 (𝑐ℎ𝑢 𝑘ỳ)
Hình 3.3: Thời gian ban đầu và 1 chu kỳ mã hóa
Hình 3.3 Thể hiện thời gian bắt đầu mã hóa 64 bit 0 là 6000ps và thời gian một chu kỳ mã hóa là 10000ps.
Hình 3.4: Kết quả quá trình mã hóa
Hình 3.4 Thể hiện kết quá trình mã hóa qua mỗi bước và kết quả được bản mã ciphertext: 64h’39c2401003a0c798
3.1.2. Mô phỏng quá trình giải mã LED 64bit
Giải mã một khối dữ liệu 64 bit được thực hiện bởi những thông số sau:
Key : 64’b0
Kết quả mô phỏng giải mã 64 bit 0 được thể hiện qua hình 3.5. Plaintext nhận được là 64’0000000000000 (khớp với bản rõ ban đầu của quá trình mã hóa).
Hình 3.5: Kết quả quá trình giải mã LED 64
Thời gian và chu kỳ giải mã LED 64
Với thời điểm bắt đầu giải mã tbd= 6000 ps, thời giải mã xong tht= 319632 ps do đó tính được thời gian giải mã tgm cho cả quá trình:
𝑡𝑔𝑚 = 𝑡ℎ𝑡 − 𝑡𝑏𝑑 = 313632 𝑝𝑠
1 chu kỳ giải mã tck= 10000 ps từ đó tính được chu kỳ thực hiện giải mã cho LED 64 bit 0:
𝑐𝑘 = 𝑡ℎ𝑡 − 𝑡𝑏𝑑
10000 = 31,3632 (𝑐ℎ𝑢 𝑘ỳ)
3.1.3. Đánh giá hiệu năng thực thi của LED 64
Kết quả so sánh LED 64 với 2 thuật toán KATAN 64, KLEIN 64 được thể hiện trong bảng 3.1. Có thể thấy rằng số chu kì của LED thấp hơn so với hai thuật toán trên chứng tỏ thời gian mã hóa của LED nhanh hơn khi mã hóa một khối 64 bit.
Về tài nguyên phần cứng thì LED 64 có tài nguyên phần cứng lớn hơn (2310 GE so với 1054 GE của KTATAN và 1220 GE của KLEIN)