Toán tử này được gọi là gì


14

Tôi đang trải qua trường hợp thử nghiệm Verilog và tìm thấy một tuyên bố

assign XYZ = PQR_AR[44*8 +: 64];

Toán tử "+:" được gọi là gì. Tôi đã cố gắng tìm điều này trên google nhưng không nhận được câu trả lời nào liên quan.

Câu trả lời:


22

Cú pháp đó được gọi là một phần được chọn . Thuật ngữ đầu tiên là bit offset và thuật ngữ thứ hai là chiều rộng. Nó cho phép bạn chỉ định một biến cho phần bù, nhưng chiều rộng phải không đổi.

Ví dụ từ LRM SystemVerilog 2012:

logic [31: 0] a_vect;
logic [0 :31] b_vect;

logic [63: 0] dword;
integer sel;

a_vect[ 0 +: 8] // == a_vect[ 7 : 0]
a_vect[15 -: 8] // == a_vect[15 : 8]
b_vect[ 0 +: 8] // == b_vect[0 : 7]
b_vect[15 -: 8] // == b_vect[8 :15]

dword[8*sel +: 8] // variable part-select with fixed width

2

Cuối cùng tôi đã nhận được trang nguồn cho việc này, đây được gọi là phần Vector được lập chỉ mục Chọn ("+:") .

Để giải thích thêm một chút

PQR_AR[44*8 +: 64];

Với phần chọn vector được lập chỉ mục, được thêm vào trong Verilog 2000, bạn có thể chọn một phần của xe buýt thay vì chọn toàn bộ xe buýt.

Phần 44 * 8 là điểm bắt đầu của biến chọn phần và 64 là chiều rộng của phần chọn andis hằng. Điều đó có nghĩa là nếu ban đầu chúng ta đã khởi tạo

input [415:0] PQR;

chúng tôi đang chọn một phần cụ thể của PQR bằng cách sử dụng

PQR_AR[44*8 +: 64];

đó là PQR_AR [352+: 64] hoặc điều đó có nghĩa là chúng tôi đang tham gia một phần từ 352 đến 415 trong số 0 đến 415.


Từ câu trả lời dwikle có nguồn gốc từ LRM, khi chúng tôi khởi tạo một bus như: input [415: 0] PQR; Sau đó, PQR_AR [44 * 8 +: 64] phải là PQR_AR [352: 288] chứ không phải PQR_AR [415: 352]. Xin hãy sửa tôi nếu tôi đi sai hướng.
ABX

@ABX Tôi đồng ý về hướng, ngoại trừ PQR_AR [352: 289] là xe buýt rộng 64 bit
peterbc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.