Nghiên cứu Khoa học
Xây dựng hệ thống SoPC bằng Qsys trên Quartus II
SoPC Qsys gồm các phần:
Với các thành phần trên chúng ta đã có 1 hệ thống cơ bản có thể chạy chương trình HelloWorld.
Sau khi mở phần mềm Quartus II, ở giao diện chính à trên Tab thanh công cụ chọn Tool à Qsys. Lúc này chương trình Quartus sẽ mở lên công cụ phát triển lõi IP Qsys
Hình 1: Mở phần mềm Qsys
Chọn kiểu lõi Nios: tùy vào quy mô và tính năng của project chúng ta sẽ chọn lõi cho phù hợp với project. Trong project này không cần dùng nhiều chức năng nên ta sẽ chọn lõi có phiên bản đơn giản nhất là phiên bản Nios II/e như hình bên dưới
Hình 2: Thêm NIOS II processor
Đối với kiểu NIOS đơn giản ta tiếp tục next đến phần chọn thành phần JTAG. Trong bài này ta sử dụng phiên bản NIOS II/e nên chỉ cho phép chọn JTAG level 1. Rồi nhấn next để hoàn thành khai báo
Trong dự án này chúng ta không dùng quá nhiều tính năng nên sẽ chọn các thông số mặc định. Sau đó nhấn finish.
Hình 3: Thêm JTAG UART
Lõi ID hệ thống với giao diện Avalon là một thiết bị chỉ đọc đơn giản, cung cấp cho hệ thống Qsys một mã định danh duy nhất. Hệ thống bộ xử lý Nios II sử dụng lõi ID hệ thống để xác minh rằng một chương trình thực thi đã được biên dịch nhắm vào hình ảnh phần cứng thực tế được định cấu hình trong FPGA đích. Nếu ID dự kiến trong tệp thực thi không khớp với lõi ID hệ thống trong FPGA, có thể phần mềm sẽ không thực thi chính xác.
Hình 4: Thêm System ID Peripheral
Nios II chỉ là một lõi vi xử lý chứ chưa phải là vi điêu khiển do đó nó cần phải có tối thiểu ô nhớ dữ liệu và bộ nhớ chương trình để có thể hoạt động được. Để đơn giản nhất là dùng On-Chip Memory bằng cách double_click “On-Chip Memory(RAM or ROM)”. Nhưng lưu ý nên chọn dung lượng bộ nhớ phù hợp từng ứng dụng. Chiều rộng mỗi ô nhớ là 32bit nếu là kit DE2, nếu là DE1 ta chọn bộ nhớ là 16KB. Sau đó chọn Finish để hoàn thành. Khi tạo bộ nhớ xong, ta tạo kết nối giữa Nios II và bộ nhớ nếu nó chưa được kết nối. Chú ý là phải kết nối cả hai bus instruction_master vàdata_master.
Hình 5: Thêm on-chip memory
Hình 6: Hệ thống SoPC tối thiểu
Với hệ thống cơ bản trên, chúng ta đã có thể chạy được chương trình HelloWorld sau:
#include <stdio.h>
int main() {
// Hiển thị chuỗi "Hello, World!" trên terminal
printf("Hello, World!\n");
// Trả về giá trị 0 để báo hiệu kết thúc chương trình một cách thành công
return 0;