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

   日期:2020-08-24     浏览:102    评论:0    
核心提示:A Bit of PracticeOne 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 le

本人持续更新HDLBits其他题目,详细讲解我们使用Verilog编程时会遇到的各种错误,若有兴趣可以移步我的博客中心浏览本人的其他文章,感谢赏光!

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,而有些是补符号位,这要根据自己的场景来补。总而言之位扩展非常重要,希望各位朋友能万分重视,时刻注意自己运算的数是否会溢出而造成结果不准!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服