đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, đối tượng và phạm vi nghiên cứu, bố cục đồ án. Chương 2: Cơ sở lý thuyết Chương này giới thiệu các linh kiện, thiết bị sử dụng thiết kế. Chương 3: Thiết kế và tính toán Thiết kế mô hình điều khiển toàn mạch, ứng dụng kit FPGA và ngôn ngữ VHDL để tạo ra các module điều khiển bảng led quang báo. Chương 4: Thi công hệ thống 4 do an Thi công phần cứng, lắp ráp và kiểm tra mạch.
Viết tài liệu hướng dẫn sử dụng phần mềm Quatus II để tạo ra module mà phần mềm hỗ trợ. Chương 5: Kết Quả, Nhận Xét và Đánh Giá Trình bày hình ảnh đồ án đã hoàn thiện và kết quả đạt được. Chương 6: Kết Luận Và Hướng Phát Triển Trình bày những gì đã hoàn thiện và chưa hoàn thiện so với mục tiêu và nêu hướng phát triển đồ án. 5 do an Chương 2.
Tổng quan về FPGA 2.1 Giới thiệu về FPGA FPGA là viết tắt của "Field Programmable Gate Array", là 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. 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.2 Kiến trúc chung của một FPGA Cấu trúc tổng thể của FPGA bao gồm: - Khối logic có thể tái cấu hình. - Khối kết nối có thể lập trình. - Khối I/O khả trình.
1 Cấu trúc tổng thể của một FPGA 6 do an a. Khối logic có thể tái cấu hình Mục đích của việc lập trình khối logic trong FPGA là để cung cấp các tính toán và các phần tử nhớ cơ bản được sử dụng trong hệ thống số. Một phần tử logic cơ bản gồm một mạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch). 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) hoặc các bộ ghép kênh (multiplexers).
Tất nhiên, cấu hình bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên trong khối đó. Khối kết nối có thể lập trình Các liên kết trong một FPGA dùng để liên kết các khối logic và I/O lại với nhau để tạo thành một thiết kế. Bao gồm các bộ ghép kênh, các transistor và cổng đệm ba trạng thái. Nhìn chung, các transistor và bộ ghép kênh được dùng trong một cụm logic để kết nối các phần tử logic lại với nhau, trong khi đó cả ba đều được dùng cho các cấu trúc định tuyến bên trong FPGA.
Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên định tuyến phức tạp hơn. Khối I/O khả trình I/O cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài. Một trong những vấn đề quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ. Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông qua việc bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớ trong (Block RAMs), logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng.
Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó. Tổng quan về ngôn ngữ VHDL 2.1 Giới thiệu ngôn ngữ VHDL VHDL viết tắt của VHSIC Hardware Description Language. VHSIC là viết tắt của Very High Speed Integrated Circuit. VHDL là ngôn ngữ mô tả phần cứng được phát 7 do an triển dùng cho chương trình VHSIC (Very High Speed Integrated Circuit) của bộ quốc phòng Mỹ.
VHDL là một ngôn ngữ mô tả phần cứng (HDL) được sử dụng để mô tả một hệ thống thiết kế logic. Được dùng trong thiết kế CPLD hoặc FPGA, phần mềm sẽ nạp chương trình vào CPLD hoặc FPGA để có được một hệ thống logic mà chúng ta đã thiết kế. Trước khi VHDL ra đời, có nhiều ngôn ngữ mô tả phần cứng được sử dụng nhưng không có một tiêu chuẩn thống nhất. Vì các ngôn ngữ mô phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mang các đặc trưng gắn với các thiết bị của nhà cung cấp đó và thuộc sở hữu của nhà cung cấp.
Trong khi đó, VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, bộ mô phỏng hay công nghệ phần cứng nào. Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi vẫn sử dụng một ngôn ngữ duy nhất.2 Một số ưu điểm của ngôn ngữ VHDL Tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE, VHDL không thuộc sở hữu của bất kỳ cá nhân hay tổ chức nào. Do đó VHDL được hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống. Ðây là một ưu điểm nổi bật của VHDL, giúp VHDL trở nên ngày càng phổ biến.
Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế: VHDL cho phép thiết kế bằng nhiều phương pháp như phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện có sẵn. Như vậy VHDL có thể phục vụ tốt cho nhiều mục đích thiết kế khác nhau, từ việc thiết kế các phần tử phổ biến đến việc thiết kế các IC ứng dụng đặc biệt (Application Specified IC). Ðộc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức độ cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tùy thuộc vào công nghệ chế tạo phần cứng nào được sử dụng.
Ðây cũng là một ưu điểm quan trọng của VHDL nó cho phép người thiết kế không cần quan tâm đến công nghệ phần cứng khi thiết kế hệ thống, như thế khi có một công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế. 8 do an Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế. VHDL cũng cho phép dùng lại các phần đã có sẵn.3 Cấu trúc một chương trình sử dụng ngôn ngữ VHDL Cấu trúc gồm 3 thành phần chính như sau: - Khai báo LIBRARY (thư viện): tương tự như C, chúng ta cần khai báo thư viện cho chương trình VHDL.
Một số thư viện sau thường dùng cho thiết kế: IEEE, STD, work,. Thư viện phải được khai báo vào đầu mỗi chương trình. - Khai báo ENTITY (thực thể): Khai báo các chân I/O của mạch thiết kế, các tham số tĩnh dùng chung (generic) của một chương trình VHDL. - Khai báo ARCHITECTURE (kiến trúc): là phần mô tả chính của một chương trình VHDL.
Mô tả các chức năng chính của thiết kế hay còn gọi là hàm. Sau đó trên từng dòng kế tiếp sẽ khai báo các gói thư viện con mà thiết kế sẽ sử dụng, mỗi dòng phải kết thúc bằng dấu chấm phẩy. Ví dụ như trong thư viện IEEE gồm các gói sau: Gói std_logic_1164: định nghĩa các kiểu dữ liệu chuẩn. Gói std_logic_arith: cung cấp các chức năng số học.
Gói std_logic_unsigned: Thực hiện các phép toán với kiểu dữ liệu std_logic_vector, dữ liệu coi là không dấu. Khai báo ENTITY (thực thể) Khai báo thực thể trong VHDL là phần định nghĩa các chỉ tiêu phía ngoài của một phần tử hay một hệ thống. Khai báo Entity là chỉ ra tên và liệt kê các cổng vào/ra. Các cổng là các (dây) tín hiệu mà qua đó entity giao tiếp với môi trường bên ngoài.
Ví dụ, một mạch cộng bán phần được chỉ ra ở hình 2.18: 9 do an Hình 2. 2 Mạch cộng bán phần Khai báo Entity như sau: entity HALF-ADDER is port (A, B: in bit; SUM, CARRY: out bit); end HATF-ADDER; Mạch cộng bán phần này gồm có hai đầu vào là A và B; và hai đầu ra là SUM và CARRY, BIT là một kiểu cấu trúc ngôn ngữ được định nghĩa trước của FPGA. Khai báo ARCHITECTURE (kiến trúc) Phần thứ 3 trong chương trình VHDL là khai báo Architecture. Mỗi một khai báo Entity đều phải đi kèm với ít nhất một Architecture tương ứng.
Khai báo Architecture trong chương trình phải kết hợp tên của Architecture và một Entity trong chương trình đó. Phần thân Architecture có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Tên của Architecture là nhãn được đặt tuỳ theo người viết chương trình. Cấu trúc bên trong của Architecture có thể được viết theo một trong số các kiểu mẫu sau: - Tập hợp kết nối bên trong của các thiết bị.
- Tập các câu lệnh đồng thời. - Tập các câu lệnh tuần tự. - Kết hợp của ba dạng trên. Các kiểu mô hình này sẽ được mô tả cụ thể như sau: 10 do an Kiểu kiến trúc Kiểu này được xây dựng dựa trên một tập các thành phần được kết nối.
Ví dụ như mạch cộng bán phần được chỉ ra sau đây: architecture HA-STRUCTURE of HALF-ADDER is component XOR2 port (X, Y: in BIT; N: out BIT); End component; Component AND2 Port (L, M: in BIT; N: out BIT); End component ; Begin X1: XOR2 port map (A, B, SUM); A1: AND2 port map (A, B, CARRY); End HA-STRUCTURE; Kiểu luồng dữ liệu Trong kiểu này, luồng dữ liệu qua Entity trước tiên được biểu diễn bằng các phép gán đồng thời.