FPGA là viết tắt của thuật ngữ tiếng anh “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. 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àora (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
Phần I: CƠ SỞ LÝ THUYẾT Chương 1: Dẫn nhập 1.1 Lý chọn đề tài 1.2 Ý nghĩa khoa học thực tiễn đề tài Chương : Tìm hiểu FPGA & kit DE2 2.1 FPGA 2.1.1 FPGA ? 2.1.2 Lịch sữ FPGA 2.1.3 Kiến trúc FPGA 3.1.1.1 Khối logic 3.1.1.2 Hệ thống mạch liên kết 3.1.1.3 Các phần tử tích hợp sẵn 3.1.4 Ứng dụng 3.1.5 Ý nghĩa vai trò FPGA 4.2 Kit DE2 4.2.1 Giới thiệu 4.2.2 Thành phần 4.2.3 Một vài ứng dụng Chương 3: Giới thiệu quartus II 3.1 Các bước thực thiết kế 3.2 Giới thiệu 3.3 Cách nạp chương trình cho Quartus II 3.3.1 Tạo project 3.3.2 Viết chương trình biên dịch 3.3.3 Tạo file mơ mơ 3.3.4 Cấu hình chân nạp lên board Chương 4: Giới thiệu VERILOG 4.1 Verilog ? 4.2 Các cổng Verilog 4.2 Các dạng liệu 4.3 Tốn tử, tốn hạng 4.4 Module 4.5 Khn mẫu hành vi 4.6 Khối always khối initial 4.7 Chức linh kiện Phần II: THIẾT KẾ Phần III: KẾT LUẬN PHẦN I CƠ SỞ LÝ THUYẾT Phần I CHƯƠNG CƠ SỞ LÝ THUYẾT DẪN NHẬP 1.1 Lý chọn đề tài Gần kỹ qua với phát triển khơng ngừng khoa học kỹ thuật Lĩnh vực điện tử có tiến vượt bậc góp phần khơng nhỏ vào phục vụ mặt đời sống cơng nghiệp dân dụng Sự phát triển cơng nghệ mạch tích hợp (chế tạo IC) với đời kỹ thuật số làm tăng tầm ảnh hưởng kỹ thuật điện tử Năm 1971 với đời vi xử lý, làm cho kỹ thuật số phát triển nhảy vọt đồng thời ứng dụng sống ngày đa dạng Sự đời vi mạch lập trình vi điều khiển, vi xử lý, vi mạch số lập trình…đã tạo bước ngoặc lĩnh vực xử lý, điều khiển Chúng làm cho lĩnh vực xử lý, điều khiểm trở nên tự động hóa ngày đại Trong cơng nghiệp, thiết bị điều khiểm khí thơ sơ có độ xác an tồn thiết bị điều khiển tự động với độ xác cao hơn, an tồn Nhờ suất lao động khơng ngừng nâng cao Trong đời sống ngày, vi xử lý ứng dụng nhiều vào thiết bị dân dụng máy tính, ti vi, máy điều hòa nhiệt độ, lò vi ba… qua làm cho thiết bị trở nên đa chức hơn, dễ dàng sữ dụng hơn, tiện nghi Với ứng dụng rộng rãi trên, thiết nghĩ việc tìm hiểu vi xử lý, vi điều khiển ứng dụng cần thiết Trong khn khổ hạn hẹp đề tài, kiến thức khả năng, tơi tìm hiểu ứng dụng nhỏ vi xử lý thiết kế vi xử lý đơn giản 1.2 Ý nghĩa khoa học thực tiễn đề tài 1.2.1 Ý nghĩa khoa học Qua đề tài tơi nắm vấn đề sau: - Hiểu phần cơng việc thiết kế hệ thống số - Nắm cách thiết kế hệ tống số với Altera FPGA - Hiểu thêm kit DE2 Altera 1.4.1 Ý nghĩa thực tiễn Bộ xử lý có khả thực dẫn sữ dụng nhớ thiết bị máy tính 1.5 Tình hình nghiên cứu Hiện thực tế vi xử lý nhiều người qua tâm thiết kế Đặc biệt thiết kế sữ dụng cho CPU máy tính 1.6 Phương pháp nghiên cứu Sữ dụng phương pháp phương tiện nghiên cứu để thu thập tài liệu đề tài xác định Dữ liệu thu thập chất liệu để xây dựng nên đề tài Điều cần thiết thu thập tài liệu cách đầy đủ, xác phù hợp với đề tài thực Ở tơi sữ dụng phương pháp tham khảo tài liệu chủ yếu Việc tham khảo tài liệu nhằm gom góp lại kiến thức cần thiết Sau tài liệu phải chọn lọc kỹ sở kế thừa tảng đồng thời cần khắc phục mặt hạn chế Đa phần tài liệu tham khảo sách chun nghành luận văn tốt nghiệp khóa trước Việc xây dựng đề tài thực theo cấu trúc luận văn nhà trường quy định nhằm đảm bảo tính sư phạm phù hợp với kế hoạch đào tạo nhà trường CHƯƠNG TÌM HIỂU VỀ FPGA & KIT DE2 2.1 FPGA 2.2.2 FPGA ? FPGA viết tắt thuật ngữ tiếng anh “Field programmable Gate Array”, vi mạch dùng cấu trúc mảng phần tử logic mà người dùng lập trình Vi mạch FPGA cấu thành từ phận: Các khối logic lập trình (logic block) Hệ thống mạch liên kết lập trình Khối vào/ra (IO Pads) Phần tử thiết kế sẵn khác DSP slice, RAM, ROM, nhân vi xử lý FPGA xem loại vi mạch bán dẫn chun dụng ASIC, so sánh FPGA với ASIC đặc chế hồn tồn hay ASIC thiết kế thư viện logic FPGA khơng đạt đựợc mức độ tối ưu loại này, hạn chế khả thực tác vụ đặc biệt phức tạp, FPGA ưu việt chỗ tái cấu trúc lại sử dụng, cơng đoạn thiết kế đơn giản chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng Còn so sánh với dạng vi mạch bán dẫn lập trình dùng cấu trúc mảng phần tử logic PLA, PAL, CPLD FPGA ưu việt điểm: tác vụ tái lập trình FPGA thực đơn giản hơn; khả lập trình linh động hơn; khác biệt quan trọng kiến trúc FPGA cho phép có khả chứa khối lượng lớn cổng logic (logic gate), so với vi mạch bán dẫn lập trình có trước Thiết kế hay lập trình cho FPGA thực chủ yếu ngơn ngữ mơ tả phần cứng HDL VHDL, Verilog, AHDL, hãng sản xuất FPGA lớn Xilinx, Altera thường cung cấp gói phần mềm thiết bị phụ trợ cho q trình thiết kế, có số hãng thứ ba cung cấp gói phần mềm kiểu Synopsys, Synplify Các gói phần mềm có khả thực tất bước tồn quy trình thiết kế IC chuẩn với đầu vào mã thiết kế HDL (còn gọi mã RTL) 2.2.3 Lịch sữ FPGA FPGA thiết kế Ross Freeman, người sáng lập cơng ty Xilinx vào năm 1984, kiến trúc FPGA cho phép tích hợp số lượng tương đối lớn phần tử bán dẫn vào vi mạch so với kiến trúc trước CPLD FPGA có khả chứa tới từ 100.000 đến hàng vài tỷ cổng logic, CPLD chứa từ 10.000 đến 100.000 cổng logic; số PAL, PLA thấp đạt vài nghìn đến 10.000 CPLD cấu trúc từ số lượng định khối SPLD (Simple programable devices, thuật ngữ chung PAL, PLA) SPLD thường mảng logic AND/OR lập trình có kích thước xác định chứa số lượng hạn chế phần tử nhớ đồng (clocked register) Cấu trúc hạn chế khả thực hàm phức tạp thơng thường hiệu suất làm việc vi mạch phụ thuộc vào cấu trúc cụ thể vi mạch vào u cầu tốn Kiến trúc FPGA kiến trúc mảng khối logic, khối logic, nhỏ nhiều đem so sánh với khối SPLD, ưu điểm giúp FPGA chứa nhiều phần tử logic phát huy tối đa khả lập trình phần tử logic hệ thống mạch kết nối, để đạt mục đích kiến trúc FPGA phức tạp nhiều so với CPLD Một điểm khác biệt với CPLD FPGA đại tích hợp nhiều logic số học sơ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay nhân cộng (multication and accumulation, MAC), thuật ngữ tiếng Anh DSP slice dùng cho ứng dụng xử lý tín hiệu số DSP Ngồi khả tái cấu trúc vi mạch tồn cục, số FPGA đại hỗ trợ tái cấu trúc cục bộ, tức khả tái cấu trúc phận riêng lẻ đảm bảo hoạt động bình thường cho phận khác 2.2.4 Kiến trúc FPGA Cấu trúc tổng thể FPGA minh họa hình sau Hình 3.1 Kiến trúc tổng quan FPGA 2.2.4.1 Khối logic Hình 3.2 Khối logic FPGA Phần tử FPGA khối logic (logic block) Khối logic cấu thành từ LUT phần tử nhớ đồng flip-flop, LUT (Look up table) khối logic thực hàm logic từ đầu vào, kêt hàm tùy vào mục đích mà gửi ngồi khối logic trực tiếp hay thơng qua phần tử nhớ flipflop Trong tài liệu hướng dẫn dòng FPGA Xilinx sử dụng khái niệm SLICE, Slice tạo thành từ gồm khối logic, số lượng Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA Nếu nhìn cấu trúc tổng thể mảng LUT ngồi đầu vào kể hỗ trợ thêm đầu vào bổ sung từ khối logic phân bố trước sau nâng tổng số đầu vào LUT lên chân Cấu trúc nhằm tăng tốc số học logic 2.2.4.2 Hệ thống mạch liên kết Mạng liên kết FPGA cấu thành từ đường kết nối theo hai phương ngang đứng, tùy theo loại FPGA mà đường kết nối chia thành nhóm khác nhau, ví dụ XC4000 Xilinx có loại kết nối: ngắn, dài dài Các đường kết nối nối với thơng qua khối chuyển mạch lập trình (programable switch), khối chuyển mạch chứa số lượng nút chuyển lập trình đảm bảo cho dạng liên kết phức tạp khác 2.2.4.3 Các phần tử tích hợp sẵn Ngồi khối logic tùy theo loại FPGA khác mà có phần tử tích hợp thêm khác nhau, ví dụ để thiết kế ứng dụng SoC, dòng Virtex 4,5 Xilinx có chứa nhân xử lý PowerPC, hay Atmel FPSLIC tích hợp nhân ARV…, hay cho ứng dụng xử lý tín hiệu số DSP FPGA tích hợp DSP Slide nhân cộng tốc độ cao, thực hàm A*B+C, ví dụ dòng Virtex Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18bit 2.2.5 Ứng dụng Ứng dụng FPGA bao gồm: xử lý tín hiệu số DSP, hệ thống hàng khơng, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mơ hình phần cứng máy tính Do tính linh động cao q trình thiết kế cho phép FPGA giải lớp tốn phức tạp mà trước thực nhờ phần mềm máy tính, ngồi nhờ mật độ cổng logic lớn FPGA ứng dụng cho tốn đòi hỏi khối lượng tính tốn lớn dùng hệ thống làm việc theo thời gian thực 2.2.5 Ý nghĩa vai trò FPGA 3.3.1 Tạo project Bước Vào Menu > file chọn New Project Wizard Bước Ta chọn thư mục để chứa project đặt tên cho project, xong chọn Next xem hình bên Hình 4.2 Hộp hội thoại tạo project Bước Sau ta chọn hãng sản xuất chip tên loại chip mạch Hình 4.3 Hộp thoại lựa chọn chip Bước Cuối chọn Finish để hồn tất 3.3.2 Viết chương trình biên dịch Bước Vào Menu > file chọn New Bước Sau chọn loại file mà muốn viết chương trình Ở ta chọn loại file VHDL Hình 4.4 Lựa chọn loại file cần tạo Bước Nhập mã VHDL vào cửa sổ soạn thảo văn Bước Chọn mục File > Save As để mở cửa sổ Save As Trong phần Save as type chọn VHDL File Trong phần File name nhập test Nhấp chọn Save để đưa tệp vào thư mục dự án Bước Biên dịch chương trình Hình 4.5 Biên dịch chương trình Bước Chọn OK 3.3.3 Tạo file mơ (simulate) bắt đầu simulate Bước Vào Menu > file chọn New, sau chọn Vector Waveform File Bước 2: Nhấp chọn Edit > End Time nhập vào 200 ns hộp thoại bung ra, điều cho phép thời gian mơ từ dến 200 ns Nhấp chọn View > Fit in Window để nhìn thấy tồn phần mơ từ đến 200 ns Bước 3: Nhấp chọn Edit > Insert > Insert Node or Bus để mở cửa sổ nhập đầu vào Nhấp nút Node Finder để mở cửa sổ hình 4.5 Hình 4.6 Cửa sổ chọn tín hiệu vào đưa vào dạng sóng mơ Để hiển thị tất chân : • Chọn Pins: all • Sau chọn nút List để tất chân Nút > : Chọn tín hiệu Nút >> : Chọn tất tín hiệu Nút < Nút Settings Bên trái cửa sổ Settings nhấp chọn Simulator Settings để có cửa sổ Hình 4.7, chọn Functional mục chọn chế độ mơ phỏng, nhấp OK Hình 4.8 Dạng sóng kiểm tra trước mơ Hình 4.9 Chọn chế độ mơ chức cho trình mơ Nhấp chọn Processing > Generate Functional Simulation Netlist Sau nhấp chọn Processing > Start Simulation để thực mơ Kiểm tra dạng sóng đầu có theo chức mạch hay khơng Hình 4.10 Dạng sóng mơ chức Mơ thời gian Nhấp chọn Assignments > Settings Bên trái cửa sổ Settings nhấp chọn Simulator Settings để có cửa sổ Hình 4.8, chọn Timing mục chọn chế độ mơ phỏng, nhấp OK Sau thực mơ theo cách vừa thực trên, quan sát dạng sóng đầu 3.3.4 Cấu hình chân nạp lên board Cấu hình chân Để cấu hình chân bạn tiến hành theo bước sau: Bước Chọn Assignments-> Pins cửa sổ lựa chọn chân xuất hình: Hình 4.11 Cửa sổ gán chân Bước Nhấp đúp vào cột To hình Một menu chứa danh sách chân cần gán Bạn chọn chân cần gán (ví dụ chọn tín hiệu cần gán x1) Bước Tiếp theo nhấn vào cột Location Một menu chứa danh sách chân FPGA bạn chọn chân FPGA nối với tín hiệu (ví dụ chọn chân PIN_N25) Hình 4.12 Danh sách chân gán Bước Lặp lại q trình gán hết chân linh kiện Bước Để lưu lại file cấu hình chân bạn chọn File -> Export, sau nhập tên file cân lưu Nạp lên board Bước 1: Nhấp chọn Tools > Programmer để có cửa sổ Hình 4.12 Đánh dấu vào tùy chọn Program/Configue phép nạp tệp cấu hình light.sof Hình 4.13 Giao diện trình nạp cấu hình FPGA Bước 2: Nhấp nút Start bên trái cửa sổ để nạp tệp cấu hình xuống FPGA Sau nạp thành cơng xuống FPGA, kiểm tra mạch điện thực FPGA có chạy theo chức nămg mong muốn hay khơng cách dùng chuyển mạch SW để nhập đầu vào quan sát đầu hiển thị LED CHƯƠNG TÌM HIỂU VERILOG / VHDL I Tìm hiểu Verilog HDL/VHDL Verilog HDL hai ngôn ngữ mô phần cứng thông dụng nhất,được dùng thiết kế IC, ngôn ngữ VHDL HDL cho phép mô thiết kế dễ dàng, sửa chữa lỗi, thực nghiệm, cấu trúc khác Các thiết kế mô tả HDL kỹ, thuật độc lập, dễ thiết kế, dễ tháo gỡ, thường dể đọc dạng biểu đồ, đặc biệt mạch điện lớn Verilog thường mơ tả thiết kế bốn dạng: • Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for,while…) • Chuyển đổi ghi (kết nối biểu thức Boolean) • Các cổng kết nối( cổng: OR, AND, NOT…) • Chuyển mạch (BJT, MOSFET) Ngôn ngữ rõ cách thức kết nối, điều khiển vào/ra mô Cấu trúc chương trình dung ngơn ngữ Verilog: // Khai báo module Module tên chương trình (tên biến I/O); // tên chương trình trùng tên file.v Input [msb:lsb] biến; Output [msb:lsb] biến; Reg [msb:lsb] biến reg; Wire [msb: lsb] biến wire; // Khai báo khối always, khối initial … lệnh … Endmodule Những tập tin văn nguồn Verilog bao gồm biểu thuộc tính từ vựng sau đây: a Khoảng trắng: Khoảng trắng ngăn từ chứa khoảng cách, khoảng dài, dòng mớivà dạng đường dẫn Do đó, lệnh đưa nhiều dòng phức tạp mà đặc tính đặc biệt b Chú giải: Những giải đònh hai cách: ( giống C/C++).Chú giải viết sau hai dấu gạch xiên (//) Được viết dòng.Được viết /* */, viết nhiều dòng giải c Chữ số: Lưu trữ số đònh nghóa số bit, giá trò là: sốnhò phân, bát phân, thập phân, thập lục phân d Từ định danh: Từ đònh danh người dùng quy đònh cho biến số, tên hàm, tên môđun, tên khối tên trường hợp Từ đònh danh bắt đầu mẫu tự đường gạch ’_’ ( không bắt đầu số $ ) kể chữ số mẩu tự, số đường gạch dưới, từ đònh danh Verilog phân biệt dạng chữ Ngơn ngữ VHDL thiết kế phần cứng Ngơn ngữ VHDL cung cấp để hổ trợ phát triển hệ thống phần cứng dựa loại mạch(chip) tích hợp tốc độ cao(VHSIC-Very High Speed Integrated Circuit) Việc sử dụng loại chíp kiểu thay dần IC logic mà thường sử dụng việc thiết kế mạch số, đem lại nhiều lợi ích tiện việc phát triển hệ thống số mà phương thức thiết mạch số truyền thống khó khơng thể thực VHDL loại ngơn ngữ mơ tả phần cứng Hiện có nhiều loại ngơn ngữ mơ tả phần cứng sử dụng verilog hay ABEL… ngơn ngữ có ưu điểm thuận tiện cho người sử dụng Ở khơng so sánh ngơn ngữ miêu tả phần cứng với Việc quan phải nắm bắt sử dụng thành thao loại ngơn ngữ bắt đầu tiếp cận với việc thiết kế hệ thống mạch số dựa chip tích hợp VHDL khơng phải ngơn ngữ lập trình cung hỗ trợ cấu trúc, cú pháp giống ngơn ngữ lập trình thơng dụng C hay Basic Do VHDL phải lược bỏ phần khơng thích hợp áp dụng cho việc thiết kế phần cứng khơng phải phần mềm VHDL ngơn ngữ miêu tả phần cứng thơng dụng tương thích với nhiều mơi trương ( cơng cụ) phát triển cho chip nhiều hãng sản xuất chip khác Sử dụng VHDL để miêu tả phần cứng tức rõ cách thức giao tiếp mạch cứng với mạch bên ngồi hoạt động, cấu trúc bên mạch để đáp ứng xử lý tín hiệu lắp ghép vào hệ thống Cách thức giao tiếp bao gồm việc thống kê số lượng chân giao tiếp với mạch bên ngồi định dạng cho chúng chân nhập xuất tín hiệu.Sự miêu tả có mức miêu tả cấu trúc (Structural) miêu tả cách thức, đặc tính (behavioral) Miêu tả cấu trúc hệ thống tức miêu tả hệ thống thơng qua tập hợp cổng logic thành phần hỗ trợ cách thức kết nối giũa thành phần với Hình thức miêu tả sử dụng nhiều cơng cụ thiết kế phần cứng truyền thống ngơn ngữ VHDL việc sử dụng cách thức miêu tả thơng qua tốn tử logic (AND, OR, ) tương ứng với thành phần logíc kết hợp tốn tử để hình thành lên cấu trúc số Hình thức miêu tả cao behavioral Hình thức cách thức xử lý tín hiệu qua hệ thống Mơ tả behavioral chia thành hình thức miêu tả dataflow Algorithmic Người thiết kế kết hợp hình thức miêu tả với file thiết kế Mức mơ tả behavioral thường người thiết kế sử dụng với hình thức mơ tả người thiết kế khơng phải quan tâm nhiều đến cấu trúc phần cứng bên hệ thống mà tập chung vào mổ tả hay định hình việc xử lý liệu hệ thống Còn mức mơ tả cấu trúc đòi hỏi người thiết kế phải nắm bắt xây dựng cấu trúc hệ thống thơng qua phần tử logic bản, đòi hỏi người thiết kế phải có nhiều kinh nghiệm việc thiết kế mạch số q trình phân tích hệ thống khó khăn Thơng thường người thiết kế thường sử dụng kiểu mơ tả để ghép nỗi phần thiết kế hệ thống vời Cấu trúc file thiết kế dữa ngơn ngữ VHDL thơng thường bao gồm phần: -phần khai báo thư viện sử dụng thiết kế -phần khai báo đối tượng thiết kế -phần mơ tả cấu trúc đối tượng Trên thiết kê có nhiều đối tượng thiết kế lặp ghép với Mỗi đối tượng (entry) hiểu module mạch hay tổ hợp logic Các chân giao tiếp đối tượng phải định nghĩa phần khai báo đối tượng Trong phần mơ tả cấu trúc đối tượng người thiết kế sử dụng mức mơ tả đề cập phía để mơ tả cấu trúc bên hay cách thức xử lý tín hiệu đối tượng thiết kế Bài viết khơng đề cập sâu cú pháp hay kỹ thuật lập trình ngơn ngữ VHDL mà trình bày cách tổng quan cách thức sử dụng ngơn ngữ miêu tả thiết kế phần cứng có sử dụng vi mạch tổ hợp ... FPGA ? FPGA vi t tắt thuật ngữ tiếng anh “Field programmable Gate Array”, vi mạch dùng cấu trúc mảng phần tử logic mà người dùng lập trình Vi mạch FPGA cấu thành từ phận: Các khối logic lập... 2.2.4 Kiến trúc FPGA Cấu trúc tổng thể FPGA minh họa hình sau Hình 3.1 Kiến trúc tổng quan FPGA 2.2.4.1 Khối logic Hình 3.2 Khối logic FPGA Phần tử FPGA khối logic (logic block) Khối logic cấu thành... phụ thuộc vào cấu trúc cụ thể vi mạch vào u cầu tốn Kiến trúc FPGA kiến trúc mảng khối logic, khối logic, nhỏ nhiều đem so sánh với khối SPLD, ưu điểm giúp FPGA chứa nhiều phần tử logic phát huy