HƯỚNG DẪN Giới thiệu phần mềm Quartus II: Quartus II là công cụ phần mềm phát triển của hãng Altera, cung cấp môi trường thiết kế toàn diện cho các thiết kế SOPC hệ thống trên 1 chip kh
Trang 1THỰC HÀNH
KS Bùi Hữu Hiên
www.hutech.edu.vn Tài Liệu Lưu Hành Tại HUTECH
Trang 2THỰC HÀNH HỆ THỐNG NHÚNG
Ấn bản 2013
Trang 4MỤC LỤC
MỤC LỤC I HƯỚNG DẪN II
BÀI 1: MỘT HỆ THỐNG MÁY TÍNH ĐƠN GIẢN 1
BÀI 2: CHƯƠNG TRÌNH ĐIỀU KHIỂN XUẤT/NHẬP 21
BÀI 3: CHƯƠNG TRÌNH CON VÀ NGĂN XẾP 41
BÀI 4: HỎI VÒNG VÀ NGẮT 54
BÀI 5: GIAO TIẾP BUS 60
TÀI LIỆU THAM KHẢO 84
Trang 5HƯỚNG DẪN
Giới thiệu phần mềm Quartus II:
Quartus II là công cụ phần mềm phát triển của hãng Altera, cung cấp môi trường thiết kế toàn diện cho các thiết kế SOPC (hệ thống trên 1 chip khả trình - system on a programmable chip) Đây là phần mềm đóng gói tích hợp đầy đủ phục vụ cho thiết kế logic với các linh kiện logic khả trình PLD, FPGA của Altera, gồm các dòng APEX, Cyclone, FLEX, MAX, Stratix Quatus ii cung cấp các khả năng thiết kế sau:
Môi trường thiết kế gồm các bản vẽ, sơ đồ khối, công cụ soạn thảo các ngôn ngữ: AHDL, VHDL, và Verilog HDL
Thiết kế LogicLock
Là công cụ mạnh để tổng họp logic
Khả năng mô phỏng chức năng và thời gian
Phân tích thời gian
Phân tích logic nhúng với công cụ phân tích SignalTap® II
Cho phép xuất, tạo và kết nối các file nguồn để tạo ra các file chương trình
Tự động định vị lỗi
Khả năng lập trình và nhận diện linh kiện
Phần mềm Ọuartus II sử dụng bộ tích hợp NativeLink® với các công cụ thiết
kế cung cấp việc truyền thông tin liền mạch giữa Quartus với các công cụ thiết kế phần cứng EDA khác
Quartus II cũng có thể đọc các file mạch (netlist) EDIF chuẩn, VHDL và Verilog HDL cũng như tạo ra các file netlist này
Quartus II có môi trường thiết kế đồ họa giúp nhà thiết kế dễ dàng viết mã, biên dịch, soát lỗi, mô phỏng
Với Quartus có thế kết hợp nhiều kiểu file trong 1 dự án thiết kế phân cấp Có thể dùng bộ công cụ tạo sơ đồ khối (Quartus Block Editor) để tạo ra sơ đồ khối mô tả thiết kế ở mức cao, sau đó dùng các sơ đồ khối khác, các bản vẽ như: AHDL Text
Trang 6Design Files (.tdf) EDIF Input Files (.edfh VHDL Design Files (.vhd) and Verilog HDL Design Files đế tạo ra thành phần thiết kế mức thấp
Quartus II cho phép làm việc với nhiều file ở cùng thời điểm, soạn thảo file thiết kế trong khi vấn có thế biên dịch hay chạy mô phỏng các dự án khác Công cụ biên dịch Quartus II nằm ở trung tâm hệ thống, cung cấp quy trình thiết kế mạnh cho phép tùy biến đế đạt được thiết kế tối ưu trong dự án Công cụ định vị lỗi tự động và các bàn tin cảnh báo khiến việc phát hiện và sửa lỗi trở nên đơn giản hơn
Sau khi cài Quartus II, giao diện như hình vẽ:
Giao diện Quartus II
Trang 8BÀI 1: MỘT HỆ THỐNG MÁY TÍNH ĐƠN
GIẢN
1.1 MỤC ĐÍCH YÊU CẦU:
Mục đích của bài tập này là để tìm hiểu làm thế nào để tạo ra và sử dụng một hệ thống máy tính đơn giản Hệ thống sẽ bao gồm một bộ xử lý Altera NiosII và một chương trình ứng dụng Chúng tôi sẽ sử dụng phần mềm Quartus II và SoPC Builder
để tạo ra phần cứng của hệ thống Chúng tôi sẽ sử dụng phần mềm Altera Debug Client để biên dịch, tải và chạy các chương trình ứng dụng
1.2 PHẦN I:
Trong bài tập này, bạn sẽ sử dụng Builder SoPC để tạo ra hệ thống như trong hình, trong đó bao gồm một bộ xử lý Nios II/e và một khối bộ nhớ Bộ vi xử lý Nios II/e xử lý dữ liệu Khối bộ nhớ lưu trữ chương trình và dữ liệu
Hệ thống Nios II trong SoPC Builder
Các bước thực hiện như sau:
Trang 91.2.1 Tạo một dự án Quartus II mới Chọn Cyclone IIEP2C35F672C6 như chip mục
tiêu, đó là FPGA chip trên board DE2 Altera
Trước tiên, ta phải tạo project trên Quartus trước, Chọn chip Cyclone II EP2C35F672C6, đó là chip FPGA trên mạch Altera DE2
giao diện thiết lập New Project
Sau đó, ta tạo một file mới block diagram cho toàn bộ hệ thống Đặt tên file là nios_2.pdf
Tạo file pdf cho hệ thống
Tạo hệ thống Nios II sử dụng Altera SoPC Builder:
Click vào biểu tượng SoPC Builder để tạo hệ thống Nios II
Trang 10SoPC Builder
Giao diện SoPC Builder
Trang 111.2.2 Sử dụng Builder SoPC để tạo ra một hệ thống có tên là hệ thống nios_system,
trong đó bao gồm các thành phần sau:
On-chip memory – RAM: Bộ nhớ trên chip, chế độ RAM với kích thước bộ nhớ là
32 Kbytes và độ rộng dữ liệu là 32 bits
Trên tab Component Library (bên tay trái của tab System Contents), trong
Memories and Memory Controllers, mở On-Chip, và click vào On-Chip Memory (RAM or ROM)
Click Add Bảng cấu hình thông số xuất hiện như hình vẽ
Trong danh sách Block type, chọn Auto
Trong hộp thoại Total memory size, đánh vào 30 để có 30 KB, chọn data with 32
Giao diện cấu hình tham số on-chip memory
Trang 12 Bộ xử lý Nios II/e với JTAG Debug Module Level 1
Trong tab Component Library, mở Processors, và click vào Nios II
Processor
Click Add Xuất hiện hộp thoại cấu hình thông số cho Nios II như hình vẽ
Dưới phần Select a Nios II core, chọn Nios II/e
Trong danh sách Hardware multiplication type, chọn Embedded Multipliers
Tắt mục Hardware divide
Trong phần Reset Vector chọn onchip_mem
Trong phần Exception Vectorchọn onchip_mem
Các mục khác để mặc định
Giao diện cấu hình tham số CPU Nios II /s Core
Trang 13Giao diện cấu hình tham số JTAG Debug Module
Click Finish Quay trở lại tab SoPC System Contents, và một con CPU Nios II
đã xuất hiện trong bảng system contents
1.2.3 Từ menu System, chọn Auto-Assign Base Addresses Bây giờ bạn có hệ thống
như trong hình vẽ:
Hệ thống Nios II hoàn chỉnh
Trang 141.2.4 Tạo ra hệ thống, thoát khỏi Builder SoPC và trở về phần mềm Quartus II
Click vào tab System Generation
Chọn None cho Create simulation model
Click Generate Click Save và chờ hệ thống hoàn tất Nếu hệ thống yêu cầu đặt
tên thì đánh nios
Click Exit Quay trở lại giao diện thiết kế của quartus
1.2.5 Tích hợp hệ thống SoPC Builder vào project Quartus II:
Trong phần này, chúng ta sẽ phải thực hiện các bước sau để hoàn thành thiết kế hardware
Tích hợp SoPC system vào project quartus II
Gán chân
Compile project
Tích hợp SoPC system vào project
Để tích hợp hệ thống SoPC vào hệ thống quartus bdf, thực hiện các bước sau:
Chọn hộp thoại Symbol trên thanh công cụ
Dưới mục Libraries, mở Project
Chọn nios2_sys Hộp thoại Symbol sẽ hiển thị symbol nios2_sys như hình vẽ
Symbol nios
Trang 15 Click OK Quay trở lạ bdf schematic Symbol nios2_sys sẽ nằm trong không gian
thiết kế của quartus
Nối các chân ngõ vào với các chân của Nios Đưa chuột tới gần chân để nối dây
từ chân đó
Lưu lại file bdf hoàn chỉnh, clickSave trên menu File
Hệ thống hoàn chỉnh
1.2.6 Gán chân:
Để gán chân FPGA, Thực hiện các bước sau:
Trong menu Processing, Vào Start, và click chọn Start Analysis & Elaboration
để chuẩn bị cho việc gán chân Quá trình này có thể mất vài phút và kết thúc khi
có hộp thoại xác nhận xuất hiện
Click OK
Trên menu Assignments, click Pin Planner Bảng Quartus II Pin Planner xuất hiện
gán chân như hình vẽ
clk - PIN N2 (đó là chân xung clock 50 MHz)
reset n - PIN G26 (đó là chân nút nhấn KEY0)
Trang 16Hộp thoại Pin Planner
Trên menu Assignments, click Device Bảng hội thoại Device xuất hiện
Click Device and Pin Options, Bảng hội thoại Device and Pin Options xuất hiện
Click vào trang Unused Pins
Trong danh sách Reserve all unused pins , chọn As input tri-stated with
weak
pull-up Với lựa chọn này, tất cả các chân không dùng trên thiết bị FPGA sẽ có
trạng thái tổng trở cao Chú ý, luôn luôn dùng option này để tránh làm hư các chân
IO và linh kiện trên board do các chân không dùng có mức điện áp xung đột
Click OK để đóng các hộp thoại
Biên dịch hệ thống và kiểm tra timing:
Chúng ta phải biên dịch hệ thống để tạo ra file sof mà có thể download xuống board Sau khi biên dịch xong, chúng ta phải kiểm tra timing của thiết kế có làm việc dưới điều khiện của phần cứng hay không Để đảm bảo thiết kế đạt yêu cầu về timing.ta thực hiện các bước sau:
Trên menu File, click New
Trong danh sách file, Chọn Synopsys Design Constraints File (*.sdc)
Đặt tên là hw_leo.sdc và click OK Mở file trong chương trình Editor
Trang 17 Thêm dòng lệnh create_clock: create_clock -name sopc_clk -period 20 [get_ports CLK]
Click Save
Trong menu Assignments , chọn Settings
Trong mục Timing Analyzer Setting ,chọn TimeQuest Timing Analyzer
Browse file hw_leo.sdc và nhấn add để thêm vào danh sách
Bật mục Enable multicorner timing analysis during compilation như hình
vẽ:
Time Quest Timing Analyzer
Click OK và bắt đầu biên dịch
Trang 18Sau khi biên dịch xong sẽ hiện ra bảng thông báo như hình vẽ:
Compilation Report
Đến đây, chúng ta đã hoàn tất thiết kế và sẵn sàng nạp chương trình xuống board DE2 để thử nghiệm
1.2.7 Biên dịch các dự án Quartus II:
Trong phần này, chúng ta sẽ download file sof xuống board DE2 Thực hiện các bước sau:
Kết nối board DE2 với máy tính host bằng cáp USB-Blaster, Sau đó cắm nguồn vào board
Trên menu Tools của phần mềm Quartus II, click Programmer Công cụ Quartus
II Programmer xuất hiện với file cấu hình mặc định (nios_2.sof) như hình vẽ:
Trang 19 Màn hình Welcome có thể xuất hiện Đóng nó bằng cách nhấn vào"Workbench" mũi tên ở góc trên bên phải
Vào menu File - New - Project
Trang 21 Chọn "Nios IIC/ C + +Application" và nhấp "Next"
Đặt tên cho chương trình
Trong mục select target hardware chọn đường dẫn tới file nios.ptf vừa tạo ở
phần trên
Trong mục select project template chọn Blank project
Click Next
Chọn Create a new system library name Click finish
Vào menu File, chọn New, chọn Source File
Trang 22 Đặt tên lab1.s, click Finish
Trang 23Assembly-language code that counts consecutive ones
Type đoạn code chương trình trong hình trên vào cửa sổ như hình bên dưới:
Trang 24Thực hành đoạn code theo các bước sau:
Mở và cấu hình Altera Debug Client để sử dụng hệ thống đã tạo ở Phần I với code trong hình 2
Biên dịch và chạy chương trình
Hãy xem quy trình thay đổi dữ liệu thanh ghi của bộ xử lý Lưu ý rằng khi kết
thúc chương trình, ở thanh ghi r16 phải có giá trị là 4
Gán 0x00000008 cho Program Counter Điều này cho phép thực thi chương trình một lần nữa (ở bước 6), mặc dù bỏ qua hai bước đầu
Lúc này thêm một điểm ngắt tại địa chỉ 0x28 Chương trình sẽ tự động dừng khi thực hiện xong
Gán 0xabcdef90 cho thanh ghi r7 Nhấn F3 và quan sát có bao nhiêu bit 1 liên
tiếp?
1.4 PHẦN III
Hướng dẫn biểu diễn chuỗi số 1 và số 0, tương tự như dữ liệu Trong phần này, chúng ta sẽ khảo sát quy trình được thực hiện như thế nào
Thực hiện như sau:
Chạy lại chương trình (bằng cách chọn Actions > Load) để xóa các chỉnh sửa bộ nhớ đã thực hiện trong phần II Sau đó, thực thi chương trình chỉ một lần
Sử dụng Nios II Processor Reference Handbook có sẵn trên trang web của Altera
để biểu diễn ngôn ngữ chương trình máy theo ngôn ngữ Assembly: and r3, r7, r16;
sra r7, r7, r3
Sử dụng chức năng memory-fill của Altera Debug Client để đặt hai chỉ thị tại vị trí bộ nhớ 0 và 4 Chúng ta nên lưu ý rằng sẽ không nhìn thấy những giá trị này được cập nhật trong giao diện của Debug Client
Đặt 0x00000000 cho Program Counter Điều gì sẽ xảy ra thời gian này? Là để xác minh câu trả lời mà bước trước đã hướng dẫn bạn đặt ở địa chỉ 0 và 4 (để xem kết quả của chúng) và sau đó thì thực hiện phần còn lại của chương trình
Trang 25 Sử dụng chức năng memory-fill để thay đổi nhánh cuối cùng để trở về đầu chương trình thay thế Điều này sẽ loại bỏ các chỉnh sửa thủ công Program Counter
Chạy lại chương trình cho đến khi số 1 và các dữ liệu đang được thử nghiệm vẫn không đổi
Bây giờ lặp lại các bước từ 1 - 6 , nhưng sử dụng chỉ dẫn srl r7, r7, r3 thay vì
sra r7, r7, r3 Sự khác biệt ở đây là gì?
1.5 PHẦN IV
Trong hầu hết các chương trình ứng dụng, nhiều thành phần code sẽ được thực thi nhiều lần từ các vị trí khác nhau trong một chương trình Code có thể được thực thi như một chương trình con Một chương trình con có thể chạy từ bất cứ nơi nào trong chương trình bằng cách sử dụng một lệnh gọi Sau khi thực thi hoàn thành chương trình con, chương trình chính quay trở lại thực hiện các lệnh tiếp sau vị trí gọi chương trình con Bây giờ chúng ta sẽ tạo ra một chương trình con để tính toán số bit 1 liên tiếp, và sử dụng nó để tính toán số bit 1 và số bit 0 liên tiếp trong một thông tin dữ liệu nhất định
Bắt đầu với chương trình Phần II và chỉnh sửa nó như sau:
Dùng code tính toán số bit 1 liên tiếp và tạo một chương trình con Sử dụng
thanh ghi r4 để nhận dữ liệu đầu vào và thanh ghi r2 để xuất kết quả
Gọi chương trình con vừa tạo hai lần, một lần để tính toán số lượng bit1 liên tiếp
và một lần để tính toán số lượng bit 0 liên tiếp Để tính toán số lượng bit 0 liên tiếp các dữ liệu đầu vào phải đảo trước khi chạy chương trình con
Ghi số lượng bit 1 liên tiếp vào thanh ghi r16 và số lượng bit 0 liên tiếp vào thanh ghi r17
1.6 PHẦN V
Đôi khi chúng ta quan tâm đến các chuỗi xen kẽ 1 và 0 dài nhất Ví dụ, số nhị phân 101101010001 có một chuỗi gồm 6 số xen kẽ giữa 1và 0, được đánh dấu ở đây:
101101010001 Sử dụng chương trình con được tạo ra trong Phần IV để đếm số
lượng các bit xen kẽ 1 và 0 liên tiếp Ghi kết quả vào thanh ghi r18 Giả định rằng hai
Trang 26bit cuối cùng có thể là một phần của chuỗi dài nhất Ví dụ, 1010 có 4 bit xen kẽ 1 và
0 liên tiếp (Gợi ý: Điều gì xảy ra khi dịch sang phải hoặc trái 1 và XOR với số ban đầu)
1.7 PHẦN VI
Thực hiện các phần trước của bài tập này bằng cách sử dụng ngôn ngữ lập trình C Tạo một hàm có tên là count_ones, dùng hàm này đếm số bit 1 liên tiếp
Trang 27BÀI 2: CHƯƠNG TRÌNH ĐIỀU KHIỂN
XUẤT/NHẬP
2.1 MỤC ĐÍCH YÊU CẦU:
Mục đích của bài tập này là nghiên cứu việc sử dụng các thiết bị cung cấp khả năng nhập và xuất cho bộ xử lý, và được điều khiển bởi phần mềm Chúng ta sẽ khảo sát các hoạt động I/O chương trình điều khiển từ cả hai quan điểm phần cứng và phần mềm Chúng ta sẽ sử dụng giao diện song song, PIOs, trong một hệ thống Nios
II thực hiện trên một board Altera DE2 Các kiến thức cơ bản cần thiết để làm bài tập
này có thể thu được từ hướng dẫn: Giới thiệu về bộ xử lý mềm Altera Nios II và Giới thiệu về Altera SoPC Builder, có thể được tìm thấy trong phần chương trình Đại học
của trang web Altera Giao diện PIO được sử dụng trong bài tập này, đó là một bộ phận có thể được tạo ra bằng cách sử dụng các Builder SoPC để truyền nhận dữ liệu
Ta có thể thiết lập cho chúng là đầu vào hoặc đầu ra ( hoặc cả hai hướng) Việc truyền nhận được thực hiện song song và nó có thể bao hàm từ 1 đến 32 bit Số lượng bit, n, và hướng truyền dẫn được quy định bởi người sử dụng thông qua SoPC Builder Altera Giao diện PIO có thể chứa bốn thanh ghi thể hiện trong hình vẽ
Trang 28Mỗi thanh ghi có độ dài là n bit Những thanh ghi có mục đích sau đây:
Thanh ghi dữ liệu (Data register) chứa n bit dữ liệu được chuyển giao giữa các
giao diện PIO và bộ vi xử lý Nios II Nó có thể được thực hiện như một đầu vào, đầu
ra, hoặc thanh ghi hai chiều bởi SoPC Builder
Thanh ghi trực tiếp (Direction register) xác định hướng chuyển giao cho mỗi bit
dữ liệu n khi một giao diện hai chiều được tạo ra
Thanh ghi Interrupt-mask được sử dụng để cho phép ngắt từ dòng đầu vào kết
nối với PIO
Thanh ghi Edge-capture cho biết khi có một sự thay đổi của giá trị logic được
phát hiện trong các tín hiệu trên đường dây đầu vào kết nối với PIO
Không phải tất cả các thanh ghi này được tạo ra trong một giao diện PIO nhất định Ví dụ thanh ghi Direction được bao gồm chỉ khi một giao diện hai chiều được định rõ
Những thanh ghi PIO có thể truy cập như thể chúng là bộ nhớ tọa độ Bất kỳ địa chỉ cơ sở có ít nhất bốn - bit có ý nghĩa bằng 0 có thể được giao cho một PIO (điều này có thể được thực hiện tự động bởi SoPC Builder) này trở thành địa chỉ của thanh ghi dữ liệu Địa chỉ của ba thanh ghi còn lại có hiệu số của 4, 8, hoặc 12bytes ( 1, 2, hoặc 3 từ) Mô tả đầy đủ của các module PIO có thể được tìm thấy trong các tài liệu PIO Core with Avalon Interface Mỗi một giao diện đó đều có sẵn trong phần tài liệu của trang web Altera
Nhiệm vụ ứng dụng trong bài tập này bao gồm thêm cùng một tập hợp các số 8 - bit đã được nhập thông qua các thiết bị chuyển mạch chuyển đổi trên board DE2 Altera Kết quả tổng được hiển thị trên đèn LED đơn và LED 7 đoạn
2.2 PHẦN I: XÂY DỰNG HARDWARE
Sử dụng 8 công tắc đảo chiều, SW7-0, ở đầu vào để nhập số Sử dụng đèn màu xanh, LEDG7-0, để hiển thị số được xác định bởi các công tắc đảo chiều Sử dụng 16 đèn đỏ, LEDR15-0, để hiển thị tổng tích lũy Một hệ thống Nios II, trong đó bao gồm
ba giao diện PIO, là phần cứng cần thiết cho công việc của chúng ta Một mạch PIO kết nối với các công tắc đảo chiều, sẽ cung cấp các dữ liệu đầu vào có thể được đọc bởi bộ xử lý Hai mạch PIO còn lại, kết nối với đèn màu xanh và đỏ, sẽ đảm nhiệm
Trang 29như giao diện đầu ra để cho phép hiển thị số lựa chọn các thiết bị chuyển mạch và tổng tích lũy tương ứng
Thực hiện các yêu cầu phần cứng bằng cách thực hiện một hệ thống Nios II trên board DE2, như sau:
(1) Tạo một dự án Quartus II mới Chọn Cyclone II EP2C35F672C6 như chip mục tiêu, đó là chip FPGA trên bảng Altera DE2
(2) Sử dụng Builder SoPC để tạo ra các mạch mong muốn, được gọi là
nios_system, trong đó bao gồm:
Bộ xử lý Nios II/s với JTAG Debug Module Level 1, chọn các tùy chọn sau:
- Embedded Multipliers for Hardware Multiply
- Hardware Divide
Bộ nhớ On-chip - chế độ bộ nhớ RAM và kích thước 32 Kbytes
Một mạch PIO 8 - bit đầu vào
Một mạch PIO 8 - bit đầu ra
Một mạch PIO 16 - bit đầu ra
SoPC Builder sẽ tự động gán các tên như Pio_0 , Pio_1 và Pio_2 đến ba thành phần PIO Ta có thể thay đổi các tên này thành một tên khác có ý nghĩa hơn trong khi thiết kế Ví dụ, chúng ta có thể chọn new_number, green_LEDs và red_LEDs
(3) Từ menu System, chọn Auto - Assign Base Addresses Nó sẽ gán địa chỉ cho tất cả các thành phần trong hệ thống được thiết kế Kết quả sẽ là một hệ thống như thể hiện trong Hình vẽ
(4) Khởi tạo Nios_system tạo file Verilog/VHDL, xác định các yêu cầu kết nối
cho thiết bị chuyển mạch và đèn LED trên kit DE2
(5) Xác định các chân cần thiết để làm các kết nối cần thiết, bằng cách nhập
các tập tin pin - assignment thư mục DE2_pin_assignments_csv
(6) Biên dịch dự án Quartus II
(7) Lập trình và cấu hình FPGA Cyclone II trong board DE2 để khởi tạo hệ thống
Trang 30Hệ thống NIOS II được tạo bởi SoPC Builder
2.2.1 Bước 1: Tạo project trên Quartus II
Tạo Project mới
Mở phần mềm > Chọn “Create a New Project”
Đặt tên Project
Trang 31Trong công cụ Quartus II chọn File New Project Wizard, đặt tên project là
“lab2” (lưu ý: đường dẫn đến thư mục lưu project không chứa khoảng trắng)
Vào File > New > Chọn “Block Diagram/Schematic File”
Chọn FPGA là Cyclone II EP2C35F672C6
Project sau khi tạo xong có giao diện như hình vẽ
Trang 322.2.2 Bước 2: Tạo hệ thống SoPC
Trong công cụ Quartus II chọn Tools SoPC Builder hoặc nhấn vào biểu
tượng
Trong công cụ Altera SoPC Builder Đặt System Name là nios_system, Targer HDL là Verilog Altera SoPC Builder gồm 2 tabs System Contents và System Generation Tab System Contents có giao diện như hình vẽ
(1) Component Library: chứa các IP Cores đã được thiết kế sẵn của Altera
(2) chứa các IP Cores dùng được tích hợp vào hệ thống
(3) Target/Clock Settings: chứa các thông số hệ thống
Trang 33Thêm CPU NIOS II vào hệ thống bằng cách gõ “nios” vào khung tìm kiếm, chọn Nios II
Processor Add chọn NIOS II/s Finish Thông số cấu hình được minh
họa như hình vẽ
Thêm bộ nhớ On-chip Memory vào hệ thống bằng cách gõ “On-chip Memory” vào
khung tìm kiếm, chọn On-chip Memory Add chọn Total Memory size là 32
KB Finish Thông số cấu hình được minh họa như hình vẽ
Trang 34Thêm giao tiếp JTAG UART vào hệ thống bằng cách gõ “JTAG UART” vào khung tìm
kiếm, chọn JTAG_UART Add Finish
Cài đặt lại thông số cho Nios II Processor bằng cách double-click vào cpu_0 chọn Reset Vector và Exception Vector trỏ vào on-chip_memory2_0 Finish
Thông số cấu hình được minh họa như hình vẽ
Thêm vào hệ thống giao tiếp IO đơn giản PIO bằng cách vào tab System Content
Peripherals Microcontroller Peripherals PIO (Parallel I/O) hoặc gõ chữ
“PIO” vào khung tìm kiếm trong tab Basic Settings chọn độ dài thanh ghi là 8
bits Direction là Finish
Tương tự cho 8-bit PIO output và 16 - bit PIO output
Trang 35Sau khi add khối PIO, tại cột Module Name, nhấn R để đổi tên pio_0, pio_1 và
pio_2 lần lượt thành new_number, green_LEDs và red_LEDs như hình vẽ
2.2.3 Bước 3: gán địa chỉ tự động và gán IRQs
Chọn System Auto - Assign Base Addresses và Auto - Assign IRQs
Hệ thống SoPC sau khi thiết lập xong được minh họa như hình dưới
Cột Use báo hiệu thành phần nào được kết nối vào hệ thống SoPC
Cột Connection mô tả kết nối master/slave giữa các thành phần trong hệ thống
Cột Description mô tả tên gọi và kết nối của các thành phần trong hệ thống
Cột Clock báo hiệu xung clock cấp cho từng thành phần trong hệ thống
Cột Base, End báo hiệu địa chỉ bắt đầu và kết thúc của các thành phần trong hệ thống
Cột IRQ mô tả ngắt (interrupt) được sử dụng trong hệ thống Các ngắt được đánh số từ 0 trở đi Ngắt 0 có mức ưu tiên cao nhất, rồi đến ngắt 1, 2, …
Trang 36Kiểm tra hệ thống SoPC còn lỗi hay không thông qua cửa sổ
Information
2.2.4 Bước 3a: Tổng hợp hệ thống SoPC
Chọn Tab System Generation nhấn vào nút Generate Save Nếu Generate
hoàn tất sẽ hiện ra thông báo
Sau khi thành công kiểm tra thư mục sẽ sinh ra file nios_system_inst.v hoặc xxx_yyy_inst.v Đây là mẫu sử dụng file top module chính của cả hệ thống
Trong bước tạo SoPC cũng sinh ra file sopcinfo đây là khai báo cấu hình phần cứng dùng để tạo driver phần mềm trong NIOS II IDE
2.2.5 Bước 4: Tích hợp hệ thống SoPC vào Project quartus
Trong Quartus chọn File> New…> Verilog HDL File Mở xxx_yyy_inst.v và copy
toàn bộ nội dung vào trong file mới tạo trong quartus:
Trang 37Set file này thành top module
2.2.6 Bước 5: Gán chân
Gán chân (pin) cho FPGA bằng cách vào Assignments Import Assignements
… Add file DE2_pin_assignments.csv vào
2.2.7 Bước 6: Tổng hợp và biên dịch hệ thống SoPC để nạp xuống FPGA
Tiến hành biên dịch và tổng hợp bằng cách vào Processing Start Compilation
hoặc nhấn Ctrl+L
2.2.8 Bước 7: Nạp xuống FPGA
Khi compile xong sẽ sinh ra file sof, nạp file này xuống board
Chúng ta đã có một con vi điều khiển hoàn chỉnh, giờ chỉ cần viết phần mềm nữa
Trang 38 (1) Viết chương trình đọc nội dung của thiết bị chuyển mạch, hiển thị giá trị tương ứng trên các LED màu xanh, thêm con số này vào tổng tích lũy, và hiển thị số tổng trên các đèn LED màu đỏ
(2) Sử dụng phần mềm Altera Debug Client để cài đặt và tải về chương trình
(3) Bước đơn thông qua các chương trình và xác minh tính chính xác của nó bằng cách nhập vào một vài số Lưu ý rằng bước đơn thông qua chương trình sẽ cho phép chúng ta thay đổi các con số đầu vào mà không đọc cùng một số nhiều lần
Sử dụng phần mềm của Altera có tên Nios II Software Build Tools for Eclipse (gọi tắt Nios II)
a Mở Nios II
b Chọn: File… > New > Nios II App and BSP from template
c Hiện hộp thoại
Trang 39Như nói ở trên trong mục
Trỏ đến file sopcinfo được tạo trong PART 1, trong thư mục project
d Chọn Next
Trang 40BSP (Board Support Package!) đây là project chứa một số driver cho một số IP core có sẵn trên hệ thống, cũng chứa thông tin cấu hình hệ thống ở dạng code C, project này được tạo tự động
Chọn Finish
Thấy rõ điều này trong Project Explorer