如何实现b是a的一半,a、b的数据类型[1:0]

2019-07-16 00:15发布

比如说a[1:0]  b[1:0]  如果a是10的话  b就是01  也就是说b是a的一半
举个例子
assign b[1:0]=a[1:0]/2;
这样是不可以的 我应该怎么才能实现这个

a和b的值都是不确定的  怎样才可以实现b是a的一半

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
camp
1楼-- · 2019-07-16 00:39
本帖最后由 camp 于 2014-12-30 09:43 编辑

可以
parameter MSB = 2; //位宽
assign b[MSB-1:0] = {1'b0,a[MSB-1:1]};
bddukai
2楼-- · 2019-07-16 01:39
camp 发表于 2014-12-30 09:42
可以
parameter MSB = 2; //位宽
assign b[MSB-1:0] = {1'b0,a[MSB-1:1]};

这个是什么意思呢 我想做的是a[15:0]是b[15:0]的一半  b[15:0]值是不确定的 这个怎样改
camp
3楼-- · 2019-07-16 04:20
bddukai 发表于 2014-12-30 09:50
这个是什么意思呢 我想做的是a[15:0]是b[15:0]的一半  b[15:0]值是不确定的 这个怎样改
...

那反过来啊
parameter MSB = 16;

...
assign a[MSB-1:0] = {1'b0,b[MSB-1:1]};

就是,去除b中最低位,把所有b每一位往地位移动,高位补0. 就是b/2了。
1. 这个拼接{} 可以看一下语法:
2. 高位往低位移动1位(最低位去除),相当于除以2. (移动2位相当于除以4、移动3位相当于除以8) 自己可以琢磨一下这个算法
bddukai
4楼-- · 2019-07-16 09:12
 精彩回答 2  元偷偷看……

一周热门 更多>