Nghiên cứu Khoa học

Xây dựng hệ thống SoPC bằng Qsys trên Quartus II

  • 16/06/2024
  • Nghiên cứu Khoa học

SoPC Qsys gồm các phần:

  • CPU Nios II
  • Memory on chip
  • JTAG
  • SYS ID
  • Các component khác

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.

  • Mở phần mềm Qsys trên Quartus II

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

undefined

Hình 1: Mở phần mềm Qsys

 

  • Tạo vi xử lý Nios cho hệ thống

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

undefined

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

  • Thêm JTAG UART

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.

undefinedundefined

Hình 3: Thêm JTAG UART

 

  • Thêm SYS ID

        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.

undefined

Hình 4: Thêm System ID Peripheral

  • Thêm bộ nhớ On-chip memory (RAM or ROM)

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.

 undefined

Hình 5: Thêm on-chip memory

 

  • Kết nối các thành phần IP chúng ta hệ thống SoPC tối thiểu:

undefined

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;

Các tin khác