Home / Language / [ SC Tutorial ] 3. SystemC Data types

[ SC Tutorial ] 3. SystemC Data types

SystemC có một số kiểu dữ liệu được xác định trước để hỗ trợ các thiết kế phần cứng mở rộng từ các kiểu dữ liệu C++ gốc đến các biểu diễn số thực (fixed-point). Việc chọn loại dữ liệu tùy thuộc vào phạm vi giá trị được biểu diễn, độ chính xác được yêu cầu và các thao tác được yêu cầu. Việc lựa chọn kiểu dữ liệu cũng ảnh hưởng đến tốc độ mô phỏng, khả năng tổng hợp và kết quả tổng hợp. Các kiểu dữ liệu được sử dụng khác nhau tùy thuộc vào mức độ trừu tượng được thể hiện trong mô hình của bạn.

[1] Native Data Types

SystemC là một thư viện lớp C++, do đó, SystemC hỗ trợ tất cả các kiểu dữ liệu gốc của C++: bool, char, short, int, unsigned char, unsigned short int, unsigned int, long int, unsigned long int, double, float, …

Các kiểu dữ liệu gốc của C++ là hiệu quả nhất về mặt sử dụng bộ nhớ và tốc độ thực thi của trình mô phỏng.

[2] Arithmetic Data Types

SystemC cung cấp hai bộ kiểu dữ liệu số.Bộ dữ liệu mô hình một có độ rộng bit lên tới 64-bits; một tập hợp dữ liệu mô hình khác có độ rộng bit lớn hơn 64-bits.

[2.1] sc_int and sc_uint

Các kiểu dữ liệu số sc_int và sc_uint (không dấu) tích hợp sẵn cung cấp một cách hiệu quả để lập mô hình dữ liệu với độ rộng cụ thể từ 1 đến 64-bits.

Bất kỳ loại dữ liệu nào không có nguồn gốc từ ngôn ngữ C++ sẽ mô phỏng chậm hơn các loại gốc (Built-in types). Do đó, các kiểu dữ liệu C++ dựng sẵn (ví dụ: int, unsigned int, …) nhanh hơn sc_int và sc_uint.

NOTE: Không sử dụng sc_int trừ khi hoặc cho đến khi cần thiết. Một điều kiện cần thiết để sử dụng sc_int là khi sử dụng các công cụ tổng hợp yêu cầu đại diện phần cứng.

[2.2] sc_bigint and sc_biguint

Một số phần cứng có thể lớn hơn số lượng được hỗ trợ bởi các kiểu dữ liệu C++ gốc. SystemC cung cấp sc_bigint và sc_biguint cho mục đích này

NOTE : Không sử dụng sc_bigint cho 64-bits trở xuống. Làm như vậy sẽ khiến hiệu suất bị ảnh hưởng so với việc sử dụng sc_int

[3] Boolean Data Types

[3.1] sc_bit and sc_bv

Đối với các số 1 và 0, SystemC cung cấp sc_bit và đối với các bit-vector dài, SystemC cung cấp các kiểu dữ liệu sc_bv<> (vector bit). Các loại này không hỗ trợ dữ liệu số học như các loại sc_int và các loại dữ liệu này không thực thi nhanh như các loại bool và  std::bitset

[3.2] sc_logic and sc_lv

SystemC thể hiện các mức logic với các kiểu dữ liệu sc_logicsc_lv<> (logic vector). Các loại này được thể hiện bằng SC_LOGIC_1, SC_LOGIC_0, SC_LOGIC_XSC_LOGIC_Z. Để ít gõ hơn, nếu sử dụng namespace sc_dt, thì hãy gõ Log_1, Log_0, Log_XLog_Z hoặc thậm chí gõ ‘1’, ‘0’, ‘X’ ‘Z’.

Because of the overhead, these data types are considerably slower than their sc_bit and sc_bv counterparts. For best performance, always use built-in types such as bool. Do chi phí hoạt động, các loại dữ liệu này chậm hơn đáng kể so với sc_bitsc_bv. Để có hiệu suất tốt nhất, hãy luôn sử dụng các loại tích hợp sẵn như bool (Built-in types).

[4] Fixed-point Data Types

SystemC cung cấp các kiểu dữ liệu số thực (điểm cố định) sau: sc_fixed, sc_ufixed, sc_fix, sc_ufix và các biến thể _fast của chúng.

Các kiểu dữ liệu tích hợp không đáp ứng tất cả các kiểu thiết kế. Đặc biệt, các ứng dụng DSP thường cần biểu diễn các số có thành phần phân số. SystemC cung cấp tám loại dữ liệu biểu diễn số fixed-point (điểm cố định). Trong khi các kiểu dữ liệu gốc float và double đáp ứng các biểu diễn cấp cao, thì phần cứng có thể thực hiện được lại có các yêu cầu về tốc độ và diện tích. Ngoài ra, bộ xử lý DSP dựa trên số nguyên không hỗ trợ dấu chấm động. Số fixed-point cung cấp một giải pháp hiệu quả trong cả phần cứng và phần mềm.

__FreeSourceC.com__

About admin

Check Also

[ SC Tutorial ] 2. SystemC Components

[1] Modules and Hierarchy Trước tiên, chúng ta cần hiểu hai loại process cơ bản …

Leave a Reply

Your email address will not be published. Required fields are marked *