Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH) Thiết kế hệ thống điều khiển tín hiệu đèn giao thông sử dụng FPGA (Đề tài NCKH)
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN TÍN HIỆU ĐÈN GIAO THÔNG SỬ DỤNG FPGA SV2020 - 124 Chủ nhiệm đề tài: Nguyễn Thanh Phong TP HỒ CHÍ MINH – 10/2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN TÍN HIỆU ĐÈN GIAO THƠNG SỬ DỤNG FPGA SV2020 – 124 Thuộc nhóm ngành khoa học: Kỹ thuật máy tính SV thực hiện: Phạm Thanh Phong Dân tộc: Kinh Lớp, khoa: 16119CLC, ĐT CLC Ngành học: Công nghệ kỹ thuật máy tính Nam, Nữ: Nam Năm thứ: Người hướng dẫn: TS Trương Ngọc Sơn TP HỒ CHÍ MINH – 10/2020 /Số năm đào tạo: MỤC LỤC DANH MỤC HÌNH i DANH MỤC BẢNG iii DANH MỤC CÁC TỪ VIẾT TẮT iv TỔNG QUAN 1.1 Đặt vấn đề: 1.2 Giải vấn đề: 1.3 Mục tiêu: 1.4 Đối tượng phạm vi nghiên cứu: CƠ SỞ LÝ THUYẾT 2.1 Tổng quan FPGA 2.1.1 FPGA gì? 2.1.2 Lịch sử đời FPGA 2.1.3 Vì chọn FPGA 2.1.4 Cấu trúc FPGA 2.2 Ngôn ngữ Verilog 2.2.1 Giới thiệu ngôn ngữ Verilog 2.2.2 Quy trình thiết kế số 2.3 Máy trạng thái hữu hạn FSM 18 2.3.1 Khái niệm 18 2.3.2 Phân loại 19 THIẾT KẾ HỆ THỐNG 21 3.1 Chức yêu cầu hệ thống 21 3.2 Thiết kế điều khiển tín hiệu đèn giao thông 21 3.2.1 Thiết kế đơn vị traffic_light_fsm 23 3.2.2 Thiết kế đơn vị delay_counter 26 3.2.3 Thiết kế chức giữ trạng thái 28 KẾT QUẢ NGHIÊN CỨU VÀ ĐÁNH GIÁ 29 4.1 Sơ đồ khối đơn vị traffic_light 29 4.2 Kết mô chức 29 4.2.1 Kiểm tra trường hợp bình thường 30 4.2.2 Kiểm tra trường hợp Reset tích cực 30 4.2.3 Kiểm tra trường hợp Switch tích cực 31 4.3 Kết mô Xilinx Spartan 3E Stater Kit 31 KẾT LUẬN VÀ KIẾN NGHỊ 33 5.1 Kết luận 33 5.2 Kiến nghị 33 TÀI LIỆU THAM KHẢO 34 PHỤ LỤC 35 DANH MỤC HÌNH Hình 2.1: Kiến trúc tổng quan FPGA Hình 2.2: Khối logic FPGA Hình 2.3: Kết nối nội FPGA Hình 2.4: Quy trình thiết kế số 11 Hình 2.5: Mơ hình q trình mơ 14 Hình 2.6: Quá trình tổng hợp 17 Hình 2.7: Sơ đồ máy trạng thái hữu hạn 18 Hình 2.8: Mơ hình máy trạng thái Moore 19 Hình 2.9: Mơ hình máy trạng thái Mealy 20 Hình 3.1: Sơ đồ khối đơn vị traffic_light 22 Hình 3.2: Sơ đồ thiết kế điều khiển tín hiệu đèn giao thơng 23 Hình 3.3: Sơ đồ chân đơn vị traffic_light_fsm 24 Hình 3.4: Sơ đồ trạng thái đơn vị traffic_light_fsm 25 Hình 3.5: Sơ đồ chân đơn vị delay_counter 26 Hình 3.6: Sơ đồ nguyên lý đơn vị delay_counter 27 Hình 3.7: Cổng AND ngõ vào 28 Hình 4.1: Top module traffic_light 29 Hình 4.2: Kết mơ trường hợp reset switch khơng tích cực 30 Hình 4.3: Kết mơ trường hợp reset tích cực 30 Hình 4.4: Kết mơ trường hợp switch tích cực 31 Hình 4.5: FSM trạng thái MG_CR 31 Hình 4.6: FSM trạng thái MY_CR 31 i Hình 4.7: FSM trạng thái MR_CR1 31 Hình 4.8: FSM trạng thái MR_CG 31 Hình 4.9: FSM trạng thái MR_CY 32 Hình 4.10: FSM trạng thái MR_CR2 32 ii DANH MỤC BẢNG Bảng 3.1: Bảng chuyển trạng thái tín hiệu đèn 21 Bảng 3.2: Mơ tả chân tín hiệu điều khiển đèn giao thông 22 Bảng 3.3: Bảng trá trị ngõ tương ứng với trạng thái đèn 22 Bảng 3.4: Mơ tả chân tín hiệu đơn vị traffic_light 24 Bảng 3.5: Bảng trạng thái hoạt động đơn vị traffic_light_fsm 25 Bảng 4.1: Thông số lựa chọn trường hợp đặc biệt 30 iii DANH MỤC CÁC TỪ VIẾT TẮT ASIC Application Specific Intergrated Circuit CPLD Complex Programmable Logic Device DUT Design Under Test FPGA Field Progammable Gate Array FSM Finite State Machine FSMD VHDL VLSI Finite State Machine Diagram Very High Speed Integrated Hardwave Description Language Very Large Scale Integration iv BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Thiết kế hệ thống điều khiển đèn giao thông sử dụng FPGA - Chủ nhiệm đề tài: Nguyễn Thanh Phong Mã số SV: SV2020 - 124 - Lớp: 16119CLC Khoa: ĐT CLC - Thành viên đề tài: Stt Họ tên MSSV Lớp Khoa Đỗ Phương Nam 16119030 16119CLC ĐT CLC Trương Đào Khương Duy 16119007 16119CLC ĐT CLC Dương Văn San 16119CLC ĐT CLC 16119041 - Người hướng dẫn: TS Trương Ngọc Sơn Mục tiêu đề tài: Xây dựng hệ thống điều khiển đèn giao thông sử dụng FPGA, phân luồng di chuyển hướng khác khoảng thời gian phù hợp cho khung khác ngày Tính sáng tạo: Thiết kế FPGA Kết nghiên cứu: Báo cáo hệ thống điều khiển đèn giao thơng sử dụng FPGA Đóng góp mặt giáo dục đào tạo, kinh tế - xã hội, an ninh, quốc phòng khả áp dụng đề tài: Áp dụng vào việc giảng dạy Áp dụng vào việc thiết kế ASIC Công bố khoa học SV từ kết nghiên cứu đề tài (ghi rõ tên tạp chí có) nhận xét, đánh giá sở áp dụng kết nghiên cứu (nếu có): Ngày tháng năm SV chịu trách nhiệm thực đề tài (kí, họ tên) Nhận xét người hướng dẫn đóng góp khoa học SV thực đề tài (phần người hướng dẫn ghi): Ngày tháng năm Người hướng dẫn (kí, họ tên) Thực thiết kế đơn vị traffic_light_fsm theo mơ hình máy trạng thái hữu hạn FSM Gồm có trạng thái MGRE_CRED, MYEL_CRED, MRED_CRED1, MRED_CGRE, MRED_CYEL MRED_CRED2 Mỗi trạng thái xây dựng theo bước dựa Bảng 3.3 MG_CR g_end 100&001 MY_CR y_end 010&001 MR_CR1 rst_n 001&001 r_end r_end MR_CR2 y_end 001&001 MR_CY g_end 001&010 MR_CG 001&100 Hình 3.4: Sơ đồ trạng thái đơn vị traffic_light_fsm Trạng thái MR_CR1 trạng thái khởi tạo FSM, hai đèn màu đỏ Trạng thái MR_CG có chức điều khiển đèn đường đỏ đèn đường cắt ngang xanh Trạng thái MR_CY có chức điều khiển đèn đường đỏ đèn đường cắt ngang vàng Trạng thái MR_CR2 có chức điều khiển đèn đường đỏ đèn đường cắt ngang đỏ Trạng thái MG_CR có chức điều khiển đèn đường xanh đèn đường cắt ngang đỏ Cuối cùng, Trạng thái MY_CR có chức điều khiển đèn đường vàng đèn đường cắt ngang đỏ Bảng 3.5: Bảng trạng thái hoạt động đơn vị traffic_light_fsm Trạng thái Điều kiện MR_CR1 MR_CG r_end = 001&001 MR_CG MR_CY g_end = 001&100 MR_CY MR_CR2 y_end = 001&010 Trạng thái Tín hiệu (Trạng thái tại) 25 MR_CR2 MG_CR r_end = 001&001 MG_CR MY_CR g_end = 100&001 MY_CR MR_CR1 y_end = 010&001 3.2.2 Thiết kế đơn vị delay_counter Đơn vị delay_counter có chức tạo tín hiệu thơng báo delay hoàn thành clk g_end rst_n state_g Delay_Counter y_end r_end state_y state_r Hình 3.5: Sơ đồ chân đơn vị delay_counter Loại Độ rộng (bit) clk Input Tín hiệu xung Clock rst_n Input Tín hiệu Reset state_g Input state_y Input Chân Chức Tín hiệu xác định FSM trạng thái đèn xanh Tín hiệu xác định FSM trạng thái đèn vàng 26 state_r Input g_end Output y_end Output r_end Output Tín hiệu xác định FSM trạng thái đèn đỏ Tín hiệu xác định delay đèn xanh hồn thành Tín hiệu xác định delay đèn vàng hồn thành Tín hiệu xác định delay đèn đỏ hồn thành Nhóm tín hiệu g_end, y_end r_end thời điểm có tín hiệu kéo lên mức logic 1, hai tín hiệu cịn lại phải mức logic Đối với nhóm tín hiệu state_g, state_y state_r tương tự Hình 3.6: Sơ đồ nguyên lý đơn vị delay_counter Hình 3.6 cho thấy thiết kế cấu tạo thành phần đơn vị delay_counter Bộ mux 2x1 có chức lựa chọn thiết đặt biến đếm tăng Bên đơn vị delay_counter gồm có so sánh biến đếm với biến dùng để delay 27 thiết đặt sẵn Tiếp theo, tín hiệu fsm_g, fsm_y fsm_r kết hợp với ngõ so sánh cho biết delay tín hiệu đèn hồn thành Cuối cổng OR ngõ vào dùng để lựa chọn thiết đặt biến đếm hay tăng 3.2.3 Thiết kế chức giữ trạng thái Đối với chức giữ trạng thái, đề tài sử dụng cổng AND ngõ vào để khống chế xung clock, đơn vị chức khác bị tạm dừng hoạt động có xung clock lại Khi tín hiệu switch tích cực, tức mức logic 0, ngõ clk_out ln ln mức logic clk_in clk_out switch Hình 3.7: Cổng AND ngõ vào 28 KẾT QUẢ NGHIÊN CỨU VÀ ĐÁNH GIÁ 4.1 Sơ đồ khối đơn vị traffic_light Bộ điều khiển tín hiệu đèn giao thơng sau tổng hợp tạo sơ đồ khối hình 4.1 Các ngõ vào có độ rộng C 1-bit, clk 1-bit rst_n 1-bit Và ngõ light_crossroad 3-bit light_mainroad 3-bit Hình 4.1: Top module traffic_light 4.2 Kết mô chức Tất chức trường hợp xảy mơ kết với tín hiệu đầu vào tín hiệu switch, clock reset Module traffic_ligh mô chức trường hợp: Hoạt động bình thường (Switch khơng tích cực reset khơng tích cực), hoạt động reset tích cực hoạt động Switch tích cực Để kiểm tra tất chức trường hợp module đèn giao thông, người thực đề tài phải giảm tốc độ xung clock thấp để dễ dàng quan sát 29 Bảng 4.1: Thơng số lựa chọn trường hợp đặc biệt Trường hợp rst_n (Reset) C (Switch) Bình thường 1 Reset tích cực X Switch tích cực 4.2.1 Kiểm tra trường hợp bình thường Kiểm tra trường hợp tín hiệu đèn tự động chuyển trạng thái theo thời gian thiết đặt mặc định Kết mô biểu diễn qua Hình 4.2 Các trạng thái từ S0 đến S5 thực theo sơ đồ trạng thái nêu phần thiết kế Hình 4.2: Kết mơ trường hợp reset switch khơng tích cực 4.2.2 Kiểm tra trường hợp Reset tích cực Kiểm tra trường hợp tín hiệu đèn tự động chuyển trạng thái tín hiệu reset tích cực Kết mơ biểu diễn qua Hình 4.3 Khi đèn trạng thái S1 (đèn chính: 001 đèn cắt ngang: 100) tín hiệu reset tích cực, làm cho đèn chuyển trạng thái ban đầu S0 (đèn chính: 001 đèn cắt ngang: 001) Kết reset theo thiết kế Hình 4.3: Kết mơ trường hợp reset tích cực 30 4.2.3 Kiểm tra trường hợp Switch tích cực Kiểm tra trường hợp tín hiệu đèn tự động chuyển trạng thái tín hiệu switch tích cực Kết mơ biểu diễn qua Hình 4.4 Khi đèn trạng thái S2 (đèn chính: 001 đèn cắt ngang: 010) tín hiệu switch tích cực, làm cho đèn trạng thái S2 giữ lại Sau tín hiệu switch hết tích cực, đèn tiếp tục hoạt động lại bình thường theo trạng thái trước Hình 4.4: Kết mơ trường hợp switch tích cực 4.3 Kết mơ Xilinx Spartan 3E Stater Kit Dưới kết việc mô Kit FPGA Spartan 3E Các trạng thái thể Kit với yêu cầu thiết kế Hình 4.5: FSM trạng thái MG_CR Hình 4.6: FSM trạng thái MY_CR 31 Hình 4.7: FSM trạng thái MR_CR1 Hình 4.8: FSM trạng thái MR_CG Hình 4.9: FSM trạng thái MR_CY Hình 4.10: FSM trạng thái MR_CR2 32 KẾT LUẬN VÀ KIẾN NGHỊ 5.1 Kết luận Mục tiêu ban đầu đề tài thiết kế điều khiển tín hiệu đèn giao thông ngã tư Với kết đạt qua q trình thiết kế, kết luận kết đề tài đáp ứng mục tiêu đề phù hợp với lý thuyết ban đầu Cụ thể, đề tài đạt kết sau: Thiết kế hồn chỉnh điều khiển tín hiệu đèn giao thông ngã tư với đầy đủ chức yêu cầu Sử dụng ngôn ngữ Verilog để tạo điều khiển tín hiệu đèn giao thơng thiết kế giấy Bên cạnh thành đạt sau q trình nghiên cứu, đề tài có hạn chế cần phải giải sau: Thiết kế chưa phải tối ưu phần cứng Chưa có chức lựa chọn trạng thái tín hiệu đèn 5.2 Kiến nghị Đề tài nhóm sử dụng thực tế cho tuyến đường thực tế nên vận hành tuyến đường nhỏ với lưu lượng giao thơng trung bình Để sử dụng tuyến đường lớn hơn, nhóm kiến nghị thêm chức nhóm đề xuất để hỗ trợ tốt cho việc kiểm sốt lưu lượng giao thơng lớn 33 TÀI LIỆU THAM KHẢO [1] Nguyễn Bảo Ngọc, “Tại lại sử dụng FPGA ? Cấu trúc FPGA nào” , 2019 [online] Available https://semiconvn.com/home/hoc-thiet-ke-vi-mach/bai-hc-vi-mch/12559-ti-sao-li-sdng-fpga cu-truc-fpga-nh-th-nao-.html [2] Lâm Đức Khải, “Giáo trình Verilog HDL”, Bài báo khoa học, 2017 [3] Nguyễn Quân, “Máy trạng thái hữu hạn FSM”, 2017, [online] Available http://nguyenquanicd.blogspot.com/2017/08/verilogsystem-verilog-may-trangthai.html 34 PHỤ LỤC A Source code traffic_light_topModule module traffic_light_topModule( input clk, input rst_n,//low active input switch,//low active output [2:0] light_mainRoad, output [2:0] light_crossRoad ); wire g_end, r_end, y_end, state_g, state_r, state_y; wire inter_clk; and a1 (inter_clk, clk, switch); delay_counter delay_module ( clk(inter_clk), rst_n(rst_n), state_g(state_g), state_r(state_r), state_y(state_y), g_end(g_end), r_end(r_end), y_end(y_end) ); traffic_light_fsm fsm_module ( clk(inter_clk), rst_n(rst_n), g_end(g_end), r_end(r_end), y_end(y_end), light_mainroad(light_mainRoad), light_crossroad(light_crossRoad), state_g(state_g), state_r(state_r), state_y(state_y) ); endmodule B Source code đơn vị traffic_light_fsm module traffic_light_fsm( input clk, input rst_n, 35 input g_end, input r_end, input y_end, output reg [2:0] light_mainroad, output reg [2:0] light_crossroad, output wire state_g, output wire state_r, output wire state_y ); //encode state localparam MGRE_CRED = 3'b000;// mainroad green and crossroad red localparam MYEL_CRED = 3'b001;// mainroad yellow and crossroad red localparam MRED_CRED1 = 3'b010;// mainroad red and crossroad red localparam MRED_CGRE = 3'b011;// mainroad red and crossroad green localparam MRED_CYEL = 3'b100;// mainroad red and crossroad yellow localparam MRED_CRED2 = 3'b101;// mainroad red and crossroad red //signal declaration reg [2:0] current_state, next_state; //next state always @ (*) begin case (current_state[2:0]) MGRE_CRED: begin if(g_end) next_state = MYEL_CRED; else next_state = current_state; end MYEL_CRED: begin if(y_end) next_state = MRED_CRED1; else next_state = current_state; end MRED_CRED1: begin if(r_end) next_state = MRED_CGRE; else next_state = current_state; end MRED_CGRE: begin if(g_end) next_state = MRED_CYEL; else next_state = current_state; end MRED_CYEL: begin if(y_end) next_state = MRED_CRED2; else next_state = current_state; end MRED_CRED2: begin 36 if(r_end) next_state = MGRE_CRED; else next_state = current_state; end default: next_state = current_state; //can chu y truong hop endcase end //state register always @ (posedge clk) //reset syn begin if (~rst_n) current_state