Đặt vấn đề: Tình trạng kẹt xe đặc biệt là ở các thành phố lớn đang ngày một gia tăng do lượng phương tiện tham giao thông ngày càng lớn. Sự hạn chế của hệ thống điều khiển đèn giao thông hiện tại – TLC – sử dụng vi xử lý và vi điều khiển làm ảnh hưởng đến thời gian di chuyển cũng như thời gian chờ của người tham gia giao thông. Ở rất nhiều nơi, TLC được xây dựng dựa vi điều khiển và vi xử lý, những TLC sử dụng vi điều khiển và vi xử lí này có giới hạn do phần cứng của chúng chỉ thực hiện được những chức năng đã được lập trình từ trước, không có tính linh hoạt để phù hợp với thực tế. Những chức năng này là cố định, do đó khoảng thời gian chuyển đổi giữa các tín hiệu xanh, đỏ, vàng của TLC cũng là cố định.
Những lí do đó làm giảm độ hiệu quả của việc tham gia giao thông và ô nhiễm môi trường. Từ những vấn đề đó nhóm thực hiện đề tài tiến hàng tìm hiểu, nghiên cứu và xây dựng “Mô hình hệ thống điều khiển đèn giao thông sử dụng FPGA” với mong muốn giúp người tham gia giao thông di chuyển hiệu quả, giảm thiểu thời gian chờ.2 Giải quyết vấn đề: Để giải quyết những vấn đề này cần xây dựng hệ thống có các chức năng: Có thể lập trình lại được. Có thể thay đổi chức năng để phù hợp với luồng giao thông thời gian thực.3 Mục tiêu: Mô hình đáp ứng được yêu cầu sau: xây dựng mô hình hệ thống điều khiển đèn giao thông tại giao lộ 4 nhánh trong vòng 24 giờ và giảm thiểu thời gian chờ của người tham gia giao thông, mô hình hệ thống điều khiển đèn giao thông này sử dụng FPGA.4 Đối tượng và phạm vi nghiên cứu: Việc sử dụng VHDL được ưu tiên đặc biệt cho thiết kế FPGA vì VHDL có thể được sử dụng để mô tả và mô phỏng hoạt động của các mạch số từ ít cổng đến phức tạp. Trong dự án này, TLC sẽ được thiết kế dựa trên VHDL sử dụng ISE Design Suite và được thực hiện trong phần cứng bằng cách sử dụng kit Xilinx Spartan 3E.
2 Luan van CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về FPGA 2.1 FPGA là gì? Field-programmable gate array (FPGA) là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được. Chữ field ở đây muốn chỉ đến khả năng tái lập trình "bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn. Vi mạch FPGA được cấu thành từ các bộ phận: - Các khối logic cơ bản lập trình được (logic block) - Hệ thống mạch liên kết lập trình được - Khối vào/ra (IO Pads) - Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý. FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động hơn; và khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng lớn cổng logic (logic gate), so với các vi mạch bán dẫn lập trình được có trước nó. Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này như Synopsys, Synplify. 3 Luan van Các gói phần mềm này có khả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL).2 Lịch sử ra đời FPGA FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic,[1] trong khi CPLD chỉ chứa từ 10.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programmable devices, thuật ngữ chung chỉ PAL, PLA). SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán. Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD.
Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân cộng (multiplication and accumulation, MAC), thuật ngữ tiếng Anh là DSP slice dùng cho những ứng dụng xử lý tín hiệu số DSP. Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác.3 Vì sao chọn FPGA 4 Luan van Vì FPGA có kiến trúc mảng phần tử logic nên có thể thực thi song song. So với vi điều khiển hoặc CPU phải thực thi mã lệnh theo dạng tuần tự. Như vậy với FPGA, người phát triển có thể tăng hiệu suất/năng suất xử lý của hệ thống, hoặc những ứng dụng đòi hỏi phải xử lý tốc độ cao hoặc dùng trong các hệ thống làm việc theo thời gian thực.
Vì có thể cấu hình, lập trình lại được, nên FPGA dễ dàng mở rộng các ngoại vi cũng như giao tiếp với nhiều thiết bị hơn mà các MCU hoặc ASIC lại hạn chế về điểm này. Nhìn chung ASIC/ASSP có hiệu suất cao hơn nếu xét về mặt tiêu thụ công suất và số lượng cổng. Nhưng nếu chỉ cần thực thi một chức năng nhỏ nào đó, một chip ASIC/ASSP có thể đòi hỏi công suất tiêu thụ lớn hơn và nhiều cổng hơn thực tế yêu cầu. Với FPGA, firmware có thể xác định được “kích cỡ” của ứng dụng, từ đó giảm số cổng và công suất cần tiêu thụ.
Nếu xét về giá thành, FPGA không thể nào so sánh được với ASIC hay SoC, nhưng bù lại, với khả năng tái cấu hình kiến trúc, FPGA đóng vài trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC. Để rõ hơn, người phát triển cần phải biết quy trình thiết kế của hai công nghệ này. FPGA và ASIC đều phải trải qua hai giai đoạn: Front End (ý tưởng, thiết kế ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, kiểm tra mô phỏng bằng phần mềm, …) và Back End (kiểm tra timing đảm bảo thiết kế sẽ hoạt động ở tần số yêu cầu, layout chip, …). Ở khâu backend này, với FPGA, các giai đoạn sẽ được làm tự động bằng phần mềm của nhà sản xuất FPGA và tạo ra 1 file bitstream để nạp xuống FPGA và chạy thử nghiệm.
Còn với ASIC, thì back end cần tốn nhân lực và thời gian lâu hơn. Sau đó, toàn bộ thiết kế đó được gửi tới nhà máy sản xuất chip (ví dụ như Intel, TSMC, …) để làm ra chip mẫu với giá thành vài triệu đô la. Tiếp đến là quá trình test chip trong môi trường thực, nếu thất bại thì phải thực hiện lại từ đầu như qui trình trên và vài triệu đô trước đó xem như vứt sọt rác. Nhưng với FPGA, không những giúp rút ngắn thời gian mà còn giảm tối đa chi phí nghiên cứu, thiết kế có thể thử nghiệm trực tiếp trên FPGA gần với môi trường ASIC thực nhất.
Khả năng tái cấu hình cho phép người phát triển sửa đi sửa lại thiết kế cho đến khi đạt yêu cầu mà không tốn một xu nào cho nhà sản xuất chip.4 Cấu trúc FPGA 5 Luan van Kiến trúc cơ bản của FPGA gồm 3 thành phần chính sau: Khối I/O (hay gọi là Pad hoặc các pin FPGA), Khối kết nối (Interconnection/Switch Matrix), các Khối logic cấu hình (CLB – Configurable Logic Blocks). Các khối CLB được tổ chức sắp xếp theo mảng theo 2 hướng dọc và ngang như hình dưới đây.1: Kiến trúc tổng quan FPGA Chức năng của mỗi thành phần như sau: Khối CLB: thực thi các chức năng logic, cung cấp các tính toán và phần tử nhớ cơ bản được sử dụng trong hệ thống số. CLBs là phần tử cơ bản cấu thành FPGA, là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ. Một CLB cơ bản gồm một mạch tổ hợp có thể lập trình (còn gọi là LUT), một Flip-Flop hoặc một chốt (latch).
LUT(Look up table) là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào (số đầu vào này sẽ tùy thuộc vào từng dòng chip của mỗi hãng và sẽ được thảo luận chi tiết trong bài viết khác), kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop. Ngoài khối logic cơ bản đó, nhiều Chip FPGA hiện nay gồm một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân (multipliers) 6 Luan van hoặc các bộ ghép kênh (multiplexers).