前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >a[0+:8] 、b [15-:8] 什么意思?怎么用?

a[0+:8] 、b [15-:8] 什么意思?怎么用?

作者头像
IC验证
发布2020-06-30 13:56:52
9520
发布2020-06-30 13:56:52
举报
文章被收录于专栏:杰瑞IC验证杰瑞IC验证

之前jerry讲过怎么最方便的把一个128bit位宽的数,拆成字节使用的技巧(不知道的可以复习下前面的文章哦~)。今天反过来讲讲怎么把字节为单位的数拼成128bit?

这个问题其实也是很简单的,相信关注Jerry的同学都会,比如最容易想到的移位来解决这个问题:

可以这样写:

代码语言:javascript
复制
bit [7:0] jerry_byte[16];
bit [127:0] data;
for(int i=0; i<15 ; i++)
begin
    data[127:0] ={data_mid[119:0],jerry_byte[i]};
end

如果是对应关系相反,我们可以把移位那句话这样写:

代码语言:javascript
复制
data[127:0] ={jerry_byte[i],data_mid[127:8],};

这些都是没问题的,但是今天jerry重点想给大家说一个新的写法:

代码语言:javascript
复制
bit [7:0] jerry_byte[16];
bit [127:0] data;
for(int i=0; i<15 ; i++)
begin
    data[i*8 +:  8] = jerry_byte[i];
end
如果对应关系相反,我们可以循环这样写:
for(int i=0; i<15 ; i++)
begin
    data[(127-i*8) -: 8] = jerry_byte[i];
end

我们观察下这种写法和前面说的直接区别:首先是代码少写了几个字,然后是我们不使用移位的方式,移位的位数可以不用计算了。(这样写的优势j其实还好吧,就主要介绍下这个方法给大家装X用吧~)

好了,对于很多初学者可能还不太清楚这个写法什么意思吧,

我们来介绍下:

拿刚才例子中:

代码语言:javascript
复制
data[0 +: 8]   含义就是data[7:0] 
data[8 +: 8]   含义就是data[15:8]
data[127 -: 8]   含义就是data[127:120]
data[119 -: 8]   含义就是data[119:112]

原来是这样啊,加号冒号、减号冒号的前面就是起始的bit数,后面的数就是往前后找几位。如果是加号冒号,就是往增大的方向找后面数字的位数。减号就是往减小的方向找后面数字的位数!

但是Jerry又要说一个重点细节,data[0 +: 8] 含义是data[7:0],为什么不是指的是data[0:7] 呢??这个也完全符合定义啊!

告诉各位原因:因为我们刚才这样定义的: bit [127:0] data;

我们定义的就是[127:0] 而不是[0:127] !!!

如果我们定义的是 bit [0:127] data;

代码语言:javascript
复制
data[0 +: 8]   含义就是data[0:7] 
data[8 +: 8]   含义就是data[8:15]
data[127 -: 8]   含义就是data[120:127]
data[119 -: 8]   含义就是data[112:119]

好了相信现在大家对这个知识点应该是清楚了,最后再啰嗦的总结一遍,大家可以朗读下jerry的心法注释,强化理解和记忆:

data[0 +: 8]

代表从0bit开始,向上加8bit的数,也就是0:7。

data定义如果是高位到低位,那这个数就代表data[7:0],反之则代表data[0:7];

data[8 +: 8]

代表从8bit开始,向上加8bit的数,也就是8:15。

data定义如果是高位到低位,那这个数就代表data[15:8],反之则代表data[8:15];

data[127 -: 8]

代表从127bit开始,向下减8bit的数,也就是127:120。

data定义如果是高位到低位,那这个数就代表data[127:120],反之则代表data[120:127];

data[119 -: 8]

代表从119bit开始,向下减8bit的数,也就是112:119。

data定义如果是高位到低位,那这个数就代表data[119:112],反之则代表data[112:119];

好了,今天Jerry就聊到这里,还是那句话,Jerry有时分享代码编写技巧,不是推崇沉迷于技巧,功能实现才是根本目的哈,黑猫白猫,抓住一只耳的才是好警长~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杰瑞IC验证 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档