• Thư viện SystemC cung cấp các kiểu dữ liệu được thiết kế để mô hình hóa logic số (0,1) và fixed-point. SC có hai loại vector logic: logic 2 giá trị (0,1) logic 4 giá trị (0,1,x,z) và hai loại số học SystemC: số nguyên (interger) và fixed-point.

(fixed-point được sử dụng để biểu diễn các số thực (vd: 3.7545) theo cách có thể được xử lý hiệu quả bởi các hệ thống kỹ thuật số, đặc biệt là khi phần cứng dấu phẩy động không khả dụng hoặc quá tốn kém.)

Các kiểu dữ liệu SystemC được thiết kế để có thể kết hợp tự do với các kiểu dữ liệu C++ gốc (bài Các kiểu dữ liệu C++), các kiểu dữ liệu SystemC khác và chuỗi C++ (std::string). Các kiểu dữ liệu SystemC có thể được sử dụng trong các ứng dụng C++ giống như bất kỳ thư viện C++ nào khác.

  • Ngoại trừ kiểu sc_logic một bit, tất cả các kiểu dữ liệu SystemC đều có thể cấu hình độ dài trong phạm vi rộng hơn nhiều so với các kiểu dữ liệu C++ gốc (1,2,4, và 8 byte). Điểm này tạo nên sự khác biệt của kiểu dữ liệu SC. Khi chúng ta có thể tùy biến độ rộng kiểu dữ liệu mình sẽ nói ở các bài sau.

  • SystemC cung cấp các thao tác gán và khởi tạo với các chuyển đổi kiểu, cho phép các kiểu dữ liệu C++, các kiểu dữ liệu SystemC và chuỗi (std::string) C++ được sử dụng để khởi tạo hoặc trong thao tác gán cho các kiểu dữ liệu SystemC.

Ví dụ mình có thể dùng chuổi string để khởi tạo 6-bit như sau:

sc_lv<6> pos = "01xz10";
  • Tất cả các kiểu dữ liệu SystemC đều thực hiện các thao tác so sánh (>,<,==...) và thao tác bit (&,|,^,~).

  • Các kiểu dữ liệu số học SystemC (số nguyên và fixed-point) thực hiện các thao tác số học (+,-,*,/,...) và các phép toán quan hệ (>,<,<=,>=,==,!=,...). Các triển khai của SystemC cho các thao tác này tương thích về mặt ngữ nghĩa với C++. SystemC cũng hỗ trợ chuyển đổi giữa các kiểu dữ liệu SystemC và các kiểu dữ liệu C++.

# SystemC Home