第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是“ +:”和“-:”?

什么是“ +:”和“-:”?

我最近在verilog / systemverilog代碼中看到了此運算符。logic [15:0] down_vect;logic [0:15] up_vect;down_vect[lsb_base_expr +: width_expr]up_vect  [msb_base_expr +: width_expr]down_vect[msb_base_expr -: width_expr]up_vect  [lsb_base_expr -: width_expr]我很少見過,所以我想問一下這是什么,何時以及如何使用它?
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻2080條經(jīng)驗 獲得超4個贊

該特定語法稱為索引部分選擇。當(dāng)您需要從多位寄存器中的可變偏移量中選擇固定數(shù)量的位時,此功能非常有用。


這是語法示例:


reg [31:0] dword;

reg [7:0] byte0;

reg [7:0] byte1;

reg [7:0] byte2;

reg [7:0] byte3;


assign byte0 = dword[0 +: 8];    // Same as dword[7:0]

assign byte1 = dword[8 +: 8];    // Same as dword[15:8]

assign byte2 = dword[16 +: 8];   // Same as dword[23:16]

assign byte3 = dword[24 +: 8];   // Same as dword[31:24]

這種語法的最大優(yōu)點是可以為索引使用變量。在Verilog中選擇正常部分需要常量。因此,dword[i+7:i]不允許嘗試類似的方法。


因此,如果要使用變量選擇來選擇特定字節(jié),則可以使用索引部分選擇。


使用變量的示例:


reg [31:0] dword;

reg [7:0] byte; 

reg [1:0] i;


// This is illegal due to the variable i, even though the width is always 8 bits

assign byte = dword[(i*8)+7 : i*8];  // ** Not allowed!


// Use the indexed part select 

assign byte = dword[i*8 +: 8];


查看完整回答
反對 回復(fù) 2019-10-21
?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

該運算符的用途是當(dāng)您需要訪問總線的一部分時,MSB位置和LSB位置都是變量,但是切片的寬度是一個常量值,如以下示例所示:


bit[7:0] bus_in = 8'hAA;

int lsb = 3;

int msb = lsb+3;  // Setting msb=6, for out bus of 4 bits


bit[3:0] bus_out_bad = bus_in[msb:lsb]; // ILLEGAL - both boundaries are variables

bit[3:0] bus_out_ok  = bus_in[lsb+:3]; // Good - only one variable


查看完整回答
反對 回復(fù) 2019-10-21
  • 2 回答
  • 0 關(guān)注
  • 1105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號