Mô hình hóa cho bài toán đèn giao thông

Ngày nay cùng với sự phát triển của khoa học kỹ thuật, xã hội ngày càng văn minh và hiện đại, sự phát triển ở đô thị ngày một đi lên. Nhu cầu về giao thông ngày càng trở nên cấp thiết, nhất là trong các khu vực thành thị. Với cuộc sống hiện đại và sự phát triển nhanh chóng của nền kinh tế và lượng dân cư đông đúc. Ùn tắc giao thông gây thiệt hại không nhỏ cho sự phát triển kinh tế quốc gia, giảm hiệu suất lao động và tăng các chi phí không cần thiết trong quá trình sản xuất. Trong bối cảnh kinh tế lạm phát và khó khăn như hiện nay, lãng phí trong giao thông lại đặt thêm một gánh nặng đối với đời sống kinh tế của người dân. Nguyên nhân của vấn đề này một phần là do cơ sở hạ tầng chưa đáp ứng được nhu cầu lưu thông hiện nay, một phần là do việc phân chia, định thời gian của hệ thống đèn giao thông hiện tại ở các giao lộ chưa hợp lý khiến cho số lượng phương tiện giao thông bị ùn tắc theo thời gian rồi dẫn đến tắc nghẽn giao thông. Qua thực trạng đó, nhóm muốn xây dựng một hệ thống điều thiết giao thông tự động, phân luồng trực tiếp và hiệu quả hơn phần nào đó giảm bớt tình trạng ùn tắc giao thông. Đồng thời tiêu tiếp cận, bổ sung các kiến thức mới cũng như củng cố lại những kỹ năng kiến thức trong suốt quá trình học tập. Tại Việt Nam số lượng xe máy trong những năm qua tăng một cách đột biến, mật độ xe lưu thông trên đường ngày một nhiều, trong khi đó hệ thống đường xá ở Việt Nam còn quá nhiều hạn chế nên thường gây ra các hiện tượng như kẹt xe, ách tắc giao thông, đặc biệt là tai nạn giao thông ngày càng phô biến trở thanh mối hiểm họa cho nhiều người. Vì lý do đó các luật giao thông lần lượt ra đời và được đưa vào sử dụng một cách lặng lẽ rồi dần trở nên phố biến như hiện nay. Trong đó hệ thống đèn giao thông là công cụ điều khiến giao thông công cộng thực tế và hiệu quả có vai trò rất lớn trong việc đảm bảo an toàn và giảm thiếu tai nạn giao thông.

1 Mục tiêu đề tài

Trước tình hình phương tiện tham gia giao thông ngày càng gia tăng không ngừng và hệ thống giao thông nước ta ngày càng phức tạp. Dần đến tình trạng ùn tắc và tai nạn giao thông ngày càng gia tăng. Xuất phát từ nhu cầu thực tế đó, chúng ta thiết nghĩ cần các giải pháp để giải quyết một phần nào đó về các nhu cầu thực tế trên.

" Hệ thống đèn giao thông thông minh" là hết sức cần thiết, nó có thể có những tính năng được cài đặt sẵn để giải quyết những sự cố kịp thời, tránh thời giờ lãng phí trong khi giao thông bị ùn tắt tại các ngã tư. Và để đảm bảo giao thông được an toan và thông suốt thì việc sử dụng các hệ thống tín hiệu đế điều khiến và phân luồng tại các nút giao thông là rất cần thiết. Với tầm quan trọng như vậy hệ thống điều khiến tín hiệu giao thông cần đảm bảo yêu cầu:

  • Đảm bảo hoạt động một cách chính xác, liên tục trong thời gian dài
  • Độ tin cậy cao
  • Đảm bảo làm việc ốn định, lâu dài
  • Dễ quan sát cho người đi đường
  • Chi phí nhỏ, tiết kiệm năng lượng

1 Nội dung nghiên cứu

Tìm hiểu và nguyên cứu các kiến thức đã học ở môn học thiết kế vi mạch và tích hợp để xây dựng module điều khiển đèn giao thông dựa trên ngôn ngữ verilog Công cụ thực hiện là phần mềm ISE Xilinx Design Suite.

1 Bố cục

Chương 1: Giới thiệu Trình bày vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và các nội dung cơ bản có liên quan

Chương 2: Cơ sở lý thuyết Tìm hiểu và đưa ra những cơ sở lý thuyết có liên quan đến đề tài để dẫn chứng cho việc thiết kế hệ thống module điều khiển đàn giao thông Chương 3: Thiết kế hệ thống Thiết kế và tính toán ,phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế chương trình , giao diện mô phỏng quá trình thực hiện.

Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các hàm, các lưu đồ, các chương trình được sử dụng. Lắp ráp và chạy chương trình.

Viết tài liệu hướng dẫn sử dụng, quy trình thao tác.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2 Ngôn ngữ lập trình Verilog

2.1 Giới thiệu về Verilog 2.1.1 Khái quát Verilog là một trong hai ngôn ngữ mô tả phần cứng chính [gồm VHDL và Verilog HDL] được người thiết kế phần cứng sử dụng để mô tả, thiết kế các hệ thống số, ví dụ như máy tính hay linh kiện điện tử. Verilog dễ học và dễ sử dụng hơn VHDL. Verilog được chuẩn hoá theo chuẩn IEEE vào năm 1995 và 2001. Verilog rất giống ngôn ngữ C và được giới chuyên môn nghiên cứu, sử dụng nhiều. Verilog HDL có thể được sử dụng để thiết kế hệ thống số ở nhiều mức khác nhau, ví dụ ở mức cao như các mô hình đặc trưng đến các mức thấp như mô hình bố trí dây, điện trở, transistor trên một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô tả thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi [RTL - Register Transfer Level]. 2.1.1 Mục đích sử dụng Verilog HDL Hệ thống số là một hệ thống phức tạp bậc cao. Ở cấp độ chi tiết nhất, chúng có thể bao gồm hàng nghìn thành phần như: các transistor hoặc các cổng logic, cho nên với hệ thống số lớn, thiết kế ở mức cổng không còn sử dụng nữa. Qua nhiều thập kỷ, giản đồ logic của các thiết kế logic cũng không còn nhiều nữa. Ngày nay, sự phức tạp của phần cứng đã tăng lên ở một mức độ mà giản đồ của cổng logic hầu như vô ích khi nó chỉ biểu diễn một mạng lưới phức tạp các liên kết không theo chức năng của thiết kế. Cách sử dụng cơ bản của Verilog HDL trong thiết kế mạch tích hợp là mô phỏng thiết kế và tạo mẫu trên FPGA trước khi chuyển sang sản xuất. Mục tiêu của Verilog không phải tạo ra những chip VLSI mà sử dụng Verilog để mô tả một cách chính xác chức năng của bất kỳ hệ thống số nào và nạp chương trình tạo mẫu lên FPGA, ví dụ như máy tính, các bộ vi xử lý,... tuy tốc độ chậm và lãng phí diện tích hơn. Những thiết kế mức thấp hơn trong Verilog được thực hiện trên VLSI để đạt đến tốc độ cực đại và có diện tích cực tiểu. Tuy nhiên sử dụng thiết kế dùng Verilog trên FPGA sẽ tiết kiệm chi phí và thời gian thiết kế.

2.1 Các kiểu dữ liệu trong Verilog Có 2 kiểu dữ liệu: - Kiểu dữ liệu net - Kiểu dữ liệu thanh ghi Nếu các đối tượng dữ liệu net [wire, wand, wor, tri, supply0, supply1] hoặc regiter [reg] được khai báo mà không có tầm, theo mặc định các đối tượng này rộng 1-bit và được tham chiếu ở dạng vô hướng. Nếu một tầm được khai báo, đối tượng có nhiều bit và được gọi là vector. Một vector có thể được tham chiếu trong trạng thái toàn bộ, một phần hoặc từng bit riêng rẽ khi cần. 2.1.2 Kiểu dữ liệu Net Các đối tượng dữ liệu net là khả năng tổng hợp, sẽ biểu diễn và mô hình sự kết nối vật lý các tín hiệu. Một phép gán trong verilog là cơ chế cơ bản để gán giá trị đến các kiểu dữ liệu của net và register. Cụ thể là, phát biểu gán tiếp tục sẽ gán giá trị đến bất kỳ kiểu nào trong các kiểu dữ liệu của net và do vậy kết nối đến một đường dây thực tế trong mạch điện suy ra được.

Wire: Một tín hiệu kiểu wire biểu diễn cho một dây nối trong mạch thiết kế và được dùng để kết nối các cổng logic, các module. Các tín hiệu kiểu wire chỉ được đọc, không được gán trong các hàm hoặc các block. Tín hiệu kiểu wire không lưu trử giá trị của nó và nó phải được gán giá trị bằng các lệnh gán đồng thời hoặc được kết nối vào các output của các cổng logic, các module.

Cú pháp: Wire [msb : lsb ] wire_variable_list ; Wor: Mô hình OR- nối dây của vài mạch kích đang kích cùng một net. Một cổng OR sẽ được tổng hợp.

Wand: Mô hình AND- nối dây của vài mạch đang kích cùng một net. Một cổng AND sẽ được tổng hợp.

2.1.2 Kiểu dữ liệu Register Kiểu dữ liệu register lưu giữ giá trị từ một phát biểu gán thủ tục đến phát biểu gán thủ tục kế tiếp và có ý nghĩa là đối tượng này lưu giữ giá trị trên các chu kỳ delta mô phỏng. Phép gán thủ tục là một phép gán cho một kiểu dữ liệu của register và không

Ví dụ: reg [7:0] A,B; //thanh ghi A và B có 8 bit từ 0 – 7, bit cao nhất là bit 7 [MSB]. wire [3:0] data; //dây data có 4 đường từ 0 – 3. Vùng nhớ: Vùng nhớ được định nghĩa giống như vectơ của thanh ghi. Ví dụ một vùng nhớ gồm 1024 từ, mỗi từ 16 bit

reg [15:0] Mem [1024:0]; Kí hiệu Mem[0] sẽ tham chiếu đến vùng nhớ đầu tiên... Chú ý rằng không thể tham chiếu đến một bit trong 1 từ của vùng nhớ, muốn làm điều này phải chuyển dữ liệu vào một thanh ghi trung gian. 2.1 Mô tả module Định nghĩa module luôn luôn bắt đầu bằng từ khóa module. Tên module, danh sách port, khai báo port, thông số [parameter] phải hiện diện trước tiên trong định nghĩa module. Danh sách port và khai báo port chỉ hiện diện khi module có port tương tác với môi trường bên ngoài. Năm thành phần trong module là:

  • Các khai báo biến
  • Các phát biểu luồng dữ liệu
  • Thể hiện của các module thấp hơn
  • Các khối hành vi
  • Task hoặc function Các thành phần này có thể ở bất kỳ nơi nào trong module và không cần thứ tự. Phát biểu endmodule là phát biểu sau cùng trong định nghĩa module. Mọi thành phần [ngoại trừ module, tên module và endmodule] là tùy chọn, có thể trộn lẫn và tương thích theo yêu cầu thiết kế. Verilog cho phép nhiều module được định nghĩa trong một tập tin duy nhất và không cần thứ tự. 2.1 Toán tử và các phát biểu điều khiển 2.1.4 Toán tử Gồm các toán tử quan hệ so sánh 2 toán hạng và trả ra giá trị logic. Đúng là 1, sai là 0.

Nếu bất kì bit nào không xác định thì kết quả ra là không xác định > : lớn hơn. >= : lớn hơn hoặc bằng < : nhỏ hơn : dịch phải thanh ghi ?: : điều kiện Ví dụ: dùng điều lệnh assign để viết một module giải đa hợp từ 2 đường sang 4 đường [bạn có thể tự viết giải đa hợp từ 3 sang 8 hay 4 sang 16] module demux[data, in1, in0, out0, out1, out2, out3]; input data; input in0,in1; output out0,out1,out2,out3; assign out0= data&[in1]&[in0]; assign out1= data&[in1]&[in0];

Out=1'bz; end endmodule Ví dụ: một module so sánh 2 số A và B 4 bit module sosanh[A, B, A_GT_B, A_EQ_B, A_LT_B]; input [3:0] A,B; output A_GT_B, A_EQ_B, A_LT_B; reg A_GT_B, A_EQ_B, A_LT_B; always begin if[A==B] A_EQ_B=1’b1; else A_EQ_B=1’b0; if[A>B] A_GT_B=1’b1; else A_GT_B=1’b0; if[A

Chủ Đề