verilog语言中请问这是什么意思啊?请大家帮帮忙

h11_est_i2={h11_a_re[11],h11_a_re,4'h0}+{{3{h11_a_re[11]}},h11_a_re,2'h0}+{{5{h11_a_r... h11_est_i2 = {h11_a_re[11],h11_a_re,4'h0}+{{3{h11_a_re[11]}},h11_a_re,2'h0}+{{5{h11_a_re[11]}},h11_a_re}+{{4{h11_b_re[11]}},h11_b_re,1'h0}+{{5{h11_b_re[11]}},h11_b_re}; 展开
 我来答
古今创造
2014-09-11 · TA获得超过354个赞
知道答主
回答量:144
采纳率:0%
帮助的人:45.1万
展开全部
这个赋值语句主要是由拼接操作符{},重复操作符{{}}和位选构成。这个赋值语句的具体意思是:
其中{h11_a_re[11],h11_a_re,4'h0}就是h11_a_re的第11位(0或1)和h11_a_re(本身),以及4位的0(0000)拼接在一起组成一个数加上后面的部分,其中{3{h11_a_re[11]}}由重复操作符{{}}构成,即{h11_a_re[11],h11_a_re[11],h11_a_re[11]}也就是有3位。要理解这个只要将拼接操作符和重复操作符,位选弄懂就很容易看懂了。举个例子:定义 wire [15:0] h11_a_re = 16'b1010_0111_1011_0000;其中位选第15位h11_a_re[15] =1,第11位h11_a_re[11] = 0;
wire a = 3'b101; wire b = 2'b01; {a,b}即a和b的拼接等于{3'b101,2'b01}=5'b10101; {h11_a_re[11],a,b}即{0,101,01} = 6‘b010101; 重复操作符{2{b}}= {2'b01,2'b01}= 4'b0101;也就相当与复制。弄懂这3个看上面的就没问题了。
追问
有人跟我说这个赋值语句的后边完成的功能是:a*21+b*3,那请问下这个乘法怎么实现的啊?
追答
这个说后边的功能是a*21+b*3是没有管h11_a_re[11]和h11_b_re[11],后边加4个零相当于乘16,2个零乘4,一个乘2,所以不管h11_a_re[11]和h11_b_re[11],相当于h11_a_re*16 + h11_a_re*4 + h11_a_re + h11_b_re * 2 + h11_b_re = h11_a_re*21 + h11_b_re * 3 。整个表达式还要看h11_a_re和h11_b_re的位数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式