Giáo trình Kỹ thuật số - Bài 3: Giới thiệu về Quartus II và quy trình thiết kế trên FPGA
1. Mục tiêu
Bài thí nghiệm này giới thiệu về phần mềm Quartus II và tổng quan về các bước thực hiện trên CAD cho quy
trình thiết kế mạch số. Ví dụ về thiết kế mạch đơn giản minh họa cho từng bước dùng phần mềm Quartus II
và thực hiện trên FPGA của Altera.
2. Kiến thức cần trang bị
- Cơ bản về thiết kế số,
- Cơ bản về ngôn ngữ mô tả phần cứng VHDL,
- Nắm rõ cách sử dụng kit DE1.
Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 2 - Tổng hợp: Công cụ thực hiện chuyển các biểu diễn mạch điện ở trên thành dạng tệp netlist, trong đó biểu diễn các thành phần logic cần cho mạch cùng các kết nối giữa các thành phần logic. - Mô phỏng chức năng: Mạch đã tổng hợp được kiểm tra để phân tích tính chính xác về chức năng; trình mô phỏng không quan tâm đến vấn đề thời gian. - Fitting: Công cụ CAD Fitter xác định vị trí đặt các thành phần logic đã đưa ra trong tệp netlist vào trong FPGA, đồng thời xác định các đường đi dây trong FPGA để kết nối các thành phần logic. - Phân tích thời gian: Trễ đường truyền theo các đường khác nhau trong mạch đã được fit ở trên được phân tích để xác định khả năng hoạt động mong muốn của mạch. - Mô phỏng thời gian: Mạch đã được fit được kiểm tra để phân tích cả về chức năng và cả về mặt thời gian. - Lập trình và cấu hình: Mạch logic mong muốn được triển khai trên FPGA/CPLD thực tế thông qua chương trình nạp và cấu hình cho FPGA/CPLD. Cụ thể các bước thiết kế với Quartus II Phần 1: Tạo mới một dự án Bước 1: Chọn mục File > New Project Wizard để mở cửa sổ tạo mới dự án giống như Hình 2. Chú ý là dự án cần có tên giống với tên của thực thể thiết kế, nó cho thấy thực thể là mức đỉnh. Chọn tên light làm tên cho dự án và thực thể mức đỉnh, nhấp chọn Next. Hình 2. Cửa sổ chọn đường dẫn và tên dự án Bước 2: Trong cửa sổ Family & Device Settings, chúng ta sẽ chọn loại chip, là chip FPGA Cyclone EP2C20F484C7N có trên kit DE1 mà chúng ta sử dụng trong bài thí nghiệm. Nhấp chọn Next để chuyển sang cửa sổ chọn kế tiếp. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 3 Hình 3. Cửa sổ chọn loại chip FPGA dùng cho dự án Bước 3: Trong của sổ kế tiếp, chúng ta có thể chọn lựa bất kỳ công cụ của hãng thứ ba nào cần dùng. Công cụ CAD thông dụng dùng cho phần mềm thiết kế mạch điện tử là EDA tools. Vì chúng ta không cần thay đổi gì trong việc lựa chọn công cụ, nhấp chọn Next. Bước 4: Quan sát bảng tổng kết các thiết lập vừa thực hiện. Nhấp chọn Finish để quay trở về màn hình chính của phần mềm Quartus II. Phần 2: Nhập thiết kế dùng mã VHDL Trong bài thí nghiệm này, chúng ta sẽ tạo một mạch điều khiển đèn hai chiều như trong Hình 4. Mạch có thể dùng để điều khiển một đèn LED khi một trong hai chuyển mạch x1 hoặc x2 đóng, tương ứng với mức logic “1”. Chú ý rằng chỉ cần dùng hàm XOR cho hai đầu vào x1 và x2, tuy nhiên chúng ta sẽ xây dựng lại bằng các cổng logic rời rạc. Hình 4. Mạch logic điều khiển đèn và bảng chân lý của mạch Bước 1: Chọn mục File > New, trong cửa sổ New, chọn VHDL File, và nhấp chọn OK. Sau khi nhấp chọn OK thì cửa sổ soạn thảo sẽ hiện ra. Nhập vào mã VHDL như dưới đây vào trong cửa sổ soạn thảo văn bản. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 4 Bước 2: 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 light. Nhấp chọn Save để đưa tệp này vào trong thư mục của dự án. Phần 3: Thêm các tệp thiết kế vào một dự án Bước 1: Chọn mục Assignments > Settings > Files, điều này dẫn đến cửa sổ như trong Hình 4. Một cách khác là chọn Project > Add/Remove Files trong Project. Nếu bạn dùng trình soạn thảo để tạo tệp và chọn vào hộp có nhãn Add file to current project, thì tệp light.vhd đã có trong dự án, ngược lại tệp này cần thêm vào dự án. Hình 5. Cửa sổ các cài đặt có thể dùng để nhập tệp thiết kế vào dự án Bước 2: Nhấp chọn nút bên cạnh phần File name để có cửa sổ chọn tệp cần thêm vào. Nhấp chọn tệp light.vhd và nhấp chọn Open. Tệp đã chọn sẽ hiện tên trên phần File name. Nhấp chọn Add và OK để đưa tệp này vào dự án. library IEEE; use IEEE.STD_LOGIC_1164.all; entity light is port( x1, x2: in std_logic; f : out std_logic); end light; architecture Behavioral of light is begin f <= (x1 and not x2) or (not x1 and x2); end Behavioral; Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 5 Phần 4: Biên dịch mã VHDL Bước 1: Nhấp chọn mục Processing > Start Complication. Biên dịch thành công (hay không thành công) sẽ được thông báo trên hộp thoại bung ra sau khi quá trình biên dịch kết thúc. Xác nhận bằng cách nhấp nút OK. Bước 2: Khi biên dịch hoàn thành, một báo cáo biên dịch được đưa ra. Cửa sổ này cũng có thể mở ra bất kỳ lúc nào bằng cách nhấp chọn Processing > Complication Report. Trong báo cáo này bao gồm một số danh mục ở bên trái cửa sổ, nhấp vào các danh mục này để thấy thông tin chi tiết của danh mục này hiện lên ở bên phải cửa sổ. Phần 5: Sửa các lỗi Bước 1: Mở tệp light.vhd, dòng có câu lệnh gán biểu thức logic cho f, ta bỏ dấu chấm phẩy ở cuối dòng lệnh, lưu thay đổi với tệp light.vhd rồi biên dịch lại dự án. Lúc này phần mềm sẽ thông báo là biên dịch không thành công và báo cáo tổng hợp đưa ra kết quả biên dịch dự án bị hỏng. Bước 2: Chọn mục Analysis & Synthesis > Messages để hiển thị thông báo lỗi. Nhấp đôi vào thông báo lỗi đầu tiên, dòng lệnh lỗi sẽ được đánh dấu trên trình soạn thảo văn bản, sửa lại cho đúng rồi biên dịch lại dự án. Phần 6: Gán chân Chúng ta sẽ gán các chuyển mạch gạt SW0 và SW1 làm các đầu vào x1 và x2 cho mạch điện. Các chuyển mạch này nối với các chân L22 và L21 của FPGA. Và chúng ta sẽ gán đầu ra f tới LEDG0, được kết nối với chân U22 của FPGA. Bước 1: Nhấp chọn Assignments > Assignment Editor. Trong Category chọn Pin. Nhấp đôi vào >. Nhấp chọn x1 từ danh sách trải xuống làm chân đầu tiên được gán. Tiếp đến nhấp đôi vào hộp bên phải hộp dành cho x1 (cột Location). Chọn chân PIN_L22 từ danh mục hoặc có thể gõ trực tiếp L22 vào hộp Location. Hình 6. Cửa sổ Assignment Editor dùng để gán chân Bước 2: Tương tự như trên, thực hiện gán chân cho đầu vào x2 cho chân L21 và đầu ra f cho chân U22. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 6 Bước 3: Sau khi hoàn thành việc gán chân, nhấp chọn File > Save. Đóng cửa sổ Assignment Editor, nhấp chọn Yes và biên dịch lại mạch. Phần 7: Mô phỏng mạch thiết kế Bước 1: Mở cửa sổ Waveform Editor bằng cách nhấp File > New, trong cửa sổ chọn dạng tệp, chọn Vector Waveform File và nhấp OK.Cửa sổ Waveform Editor sẽ hiện ra trên giao diện chính. Lưu tệp này với tên Light.vwf. Bước 2: Nhấp chọn Edit > End Time và nhập vào 200 ns trong hộp thoại bung ra, điều này cho phép thời gian mô phỏng từ 0 dến 200 ns. Nhấp chọn View > Fit in Window để nhìn thấy toàn bộ phần mô phỏng từ 0 đến 200 ns. Bước 3: Nhấp chọn Edit > Insert > Insert Node or Bus để mở cửa sổ nhập các đầu vào ra. Nhấp nút Node Finder để mở cửa sổ như trong hình 7, đặt phần Filter là Pins: all. Nhấp chọn nút List để tìm các đầu vào và ra trên phần bên trái cửa sổ. Hình 7. Cửa sổ chọn các tín hiệu vào ra đưa vào dạng sóng mô phỏng Bước 4: Nhấp chọn các đầu vào ra bên cửa sổ bên trái rồi nhấp nút > để đưa đầu tín hiệu đó vào dạng sóng kiểm tra. Khi đã có đủ các đầu vào và ra, nhấp chọn OK để quay trở lại cửa sổ Waveform Editor. Bước 5: Đặt x1 bằng ‘0’ trong đoạn từ 0 ns đến 100 ns, tiếp đến đặt x1 bằng ‘1’ trong đoạn từ 100 ns đến 200 ns bằng cách đặt chuột ở vị trí bắt đầu đoạn này và nhấp kéo đến hết để đánh dấu vùng đặt giá trị, và chọn giá trị ‘1’ trên thanh công cụ. Tương tự như vậy đặt x2 bằng 1 từ 50 ns đến 100 ns và từ 150 ns đến 200 ns. Bước 6: Thực hiện mô phỏng Mô phỏng chức năng Nhấp chọn Assignments > Settings. Bên trái của cửa sổ Settings nhấp chọn Simulator Settings để có cửa sổ như trong Hình 8, chọn Functional trong mục chọn chế độ mô phỏng, và nhấp OK. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 7 Hình 8. Dạng sóng kiểm tra trước khi mô phỏng Hình 9. Chọn chế độ mô phỏng chức năng cho trình mô phỏng - Nhấp chọn Processing > Generate Functional Simulation Netlist. Sau đó nhấp chọn Processing > Start Simulation để thực hiện mô phỏng. Kiểm tra dạng song đầu ra f có đúng theo chức năng của mạch hay không. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 8 Hình 10. Dạng sóng mô phỏng chức năng Mô phỏng thời gian - Nhấp chọn Assignments > Settings. Bên trái của cửa sổ Settings nhấp chọn Simulator Settings để có cửa sổ như trong Hình 9, chọn Timing trong mục chọn chế độ mô phỏng, và nhấp OK. - Sau đó thực hiện mô phỏng theo cách vừa thực hiện như trên, quan sát dạng sóng đầu ra f và nhận xét sự khác biệt so với dạng sóng này khi thực hiện mô phỏng chức năng. Phần 8: Nạp và cấu hình FPGA Bước 1: Gạt chuyển mạch RUN/PROG sang vị trí RUN. Nhấp chọn Tools > Programmer để có cửa sổ như trong Hình 11. Đánh dấu vào tùy chọn Program/Configue để cho phép nạp tệp cấu hình light.sof. Hình 11. Giao diện của trình nạp và 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 này xuống FPGA. Sau khi nạp thành công xuống FPGA, hãy kiểm tra mạch điện này thực hiện trên FPGA có chạy đúng theo chức nămg mong muốn hay không bằng cách dùng các chuyển mạch SW0 và SW1 để nhập đầu vào rồi quan sát đầu ra hiển thị trên LEDG0. Khoa Điện tử-Viễn thông, Đại học Bách khoa Hà nội Người biên soạn: KS. Nguyễn Minh Tiến và TS. Hoàng Mạnh Thắng 9 1. Các gợi ý mở rộng: Thiết kế và thực hiện mạch điện trên bằng cách vẽ mạch trực tiếp thay vì viết mã VHDL? 2. Tài liệu tham khảo - Altera. (06/2009). Quartus II Introduction Using VHDL Design [Online]. Available: - Altera. (2006). DE1 Development and Education Board User Manual [Online]. Available: 3. Các câu hỏi đánh giá hiểu biết: Tại sao phải phân tích và mô phỏng thời gian cho thiết kế ?
File đính kèm:
- giao_trinh_ky_thuat_so_bai_3_gioi_thieu_ve_quartus_ii_va_quy.pdf