前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >妙用合并数组

妙用合并数组

作者头像
IC验证
发布2020-06-30 13:55:10
1.1K0
发布2020-06-30 13:55:10
举报
文章被收录于专栏:杰瑞IC验证

请问:

bit [127:0] data;

把如上定义的128bit的data数据给我拆成以字节(8bit)为单位的数,后面要以字节为单位使用,怎么写?

有人说了,怎么能问我们这么低级的问题?这个可以直接用啊?拆什么拆?

比如我要最低一个字节,那就是直接用data[7:0],再上去一个字节用data[15:8],这样啊?

有道理啊,Jerry如果有这样一个需求“给我把这个数的第3个字节加上第5个字节,然后与第8个字节做亦或、再加上第13个字节与第7个字节……“(有种鲁智深戏弄镇关西的感觉哈)

可想而知,如果是这样就比较麻烦了,要算是第几个字节然后确定这个字节应该引用第几位到第几位,很容易粗心出现问题的啊!

那怎么办呢?我们可以先把它倒到一个有编号的数组里,这样我们就可以通过引用数组的编号来解决这个问题了!!

怎么倒呢?有人说了,还是通过位数的指定来提前给好?其实这样就还是比较麻烦,也要计算第几个字节对应哪些位,要写很多行。又有人说了,可以用循环啊!好的,当然也可以。

不过jerry今天想说的是这种方法:通过合并数组!

上代码!

代码语言:javascript
复制
bit [15:0][7:0] jerry_byte;
jerry_byte  =   data;

收工!!!

如果我们要引用,太简单了!两句就搞定了啊,假如我们要用第0个字节,直接就是jerry_byte[0],我们要用第10个字节,那就是jerry_byte[10]。就是这么简单!!

合并数组还可以继续精确的引用下去,比如我要第三个字节的最低位,就直接jerry_byte[3][0]就可以了!

注意一个点,前面两个区间哪个是哪个?

比如 bit [7:0][7:0] data;

到底哪个代表位宽?分不太清楚啊!!

Jerry再提供一个心法吧:

“合并数组保持从左到右的汉字读法”

什么意思呢?“读法”这个词大家应该在小学才有吧,比如小学老师给个分数,说读作几分之几,先读分母再分子。今天jerry告诉大家合并数组的“读法”,是如同我们正常的汉字阅读从左到右的读法!

例如:

代码语言:javascript
复制
bit  [6:0][7:0]  data;//是一个7个(即[6:0])8bit(即[7:0])宽度的数拼出合并数组。
bit  [9:0][3:0]  data;//是一个10个 4bit宽度的数拼出合并数组。
bit  [15:0][4:0]  data;//是一个16个5bit宽度的数拼出合并数组。

哈哈,今天合并数组就介绍到这里,请大家注意,Jerry虽然有时介绍代码上的编写技巧,但是我们绝不能太过于执着于代码技巧,功能实现出来才是最重要的,哪怕用最low的写法。

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

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

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

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

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