HDLBits——Replication operator位扩展 (非常有用的一道题目)

A Bit of Practice
One common place to see a replication operator is when sign-extending a smaller number to a larger one, while preserving its signed value. This is done by replicating the sign bit (the most significant bit) of the smaller number to the left. For example, sign-extending 4’b0101 (5) to 8 bits results in 8’b00000101 (5), while sign-extending 4’b1101 (-3) to 8 bits results in 8’b11111101 (-3).

Build a circuit that sign-extends an 8-bit number to 32 bits. This requires a concatenation of 24 copies of the sign bit (i.e., replicate bit[7] 24 times) followed by the 8-bit number itself.

本道题目的意思就是扩展位
正确解答

module top_module (
input [7:0] in,
output [31:0] out );

assign out = { {24{in[7]} },in[7:0] };

endmodule

在看错误解答前先看下面这段话
1、{ }表示拼接,{第一位,第二位…};
2、{{ }}表示复制,{4{a}}等同于{a,a,a,a};
所以{24{1‘b1}}就表示将24个1拼接起来,即24’b111111111111111111111111。
注意正确答案assign out = { {24{in[7]} },in[7:0] }; 和两个错误答案assign out = { 24{in[7]} ,in[7:0] }; assign out = { {24in[7] },in[7:0] }; 的中括号的使用

以下是两种典型的错误
1、

module top_module (
input [7:0] in,
output [31:0] out );

assign out = { 24{in[7]} ,in[7:0] };

endmodule

这里的{in[7]}是没有任何意义的,本来一个中括号对{}表示拼接的意思,但是这里in[7]只有它自己,所以拼接了个寂寞。
2、

module top_module (
input [7:0] in,
output [31:0] out );

assign out = { {24in[7] },in[7:0] };

endmodule

这里的{24in[7]}也表示拼接,但是这个24in[7]完全是一个错误的东西。

注意:

位扩展是一种非常有用的东西,尤其是在FPGA中,很多时候我们进行一些乘法加法运算会因为寄存器的位数不够而导致“高位截瘫”,这个时候我们就需要合理的对寄存器进行位扩展,位扩展有些是单纯的补0,而有些是补符号位,这要根据自己的场景来补。总而言之位扩展非常重要,希望各位朋友能万分重视,时刻注意自己运算的数是否会溢出而造成结果不准!

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

HDLBits——Replication operator位扩展 (非常有用的一道题目)

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » HDLBits——Replication operator位扩展 (非常有用的一道题目)
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏