Giới thiệu về Quatus II và quy trình thiết kế FPGA
Trang 1BÀ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
3 Các kiến thức thu được
- Biết cách tạo một dự án trên phần mềm Quartus II
- Biết cách tổng hợp mạch logic từ mã VHDL dùng trình tổng hợp tích hợp sẵn của Quartus II
- Biết cách thực hiện mô phỏng cho mạch logic
- Biết cách gán chân cho FPGA để đưa các tín hiệu vào ra mạch logic nối với các chân trên FPGA
- Biết cách nạp và cấu hình cho FPGA
4 Các bước thực hiện một thiết kế
Các bước thể hiện quy trình thiết kế số trên các IC có thể lập trình (FPGA/CPLD) như sau:
Hình 1 Quy trình thiết kế CAD thông dụng
- Nhập thiết kế: Mạch logic mong muốn được mô tả bằng ngôn ngữ mô tả phần cứng như VHDL/Verilog hoặc bằng sơ đồ mạch
Trang 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
Trang 3Hì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 x 1 hoặc x 2 đó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 x 1 và x 2, 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
Trang 4Bướ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;
Trang 5Phầ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 SW 0 và SW 1 làm các đầu vào x 1 và x 2 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 LEDG 0, đượ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 <<new>>
Nhấp chọn x 1 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 x 1 (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 x 2 cho chân L21 và đầu ra f cho chân U22
Trang 6Bướ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 x 1 bằng ‘0’ trong đoạn từ 0 ns đến 100 ns, tiếp đến đặt x 1 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 x 2 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
Trang 7Hì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
Trang 8Hì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 SW 0 và SW 1 để nhập đầu vào rồi quan sát đầu ra hiển thị trên LEDG0
Trang 91 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
http://www.altera.com
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ế ?