replication operator

The concatenation operator allowed concatenating together vectors to form a larger vector. But sometimes you want the same thing concatenated together many times, and it is still tedious to do something like assign a = {b,b,b,b,b,b};. The replication operator allows repeating a vector and concatenating them together:

{num{vector}}
This replicates vector by num times. num must be a constant. Both sets of braces are required.

Examples:

{5{1'b1}}           // 5'b11111 (or 5'd31 or 5'h1f)
{2{a,b,c}}          // The same as {a,b,c,a,b,c}
{3'd5, {2{3'd6}}}   // 9'b101_110_110. It's a concatenation of 101 with
                    // the second vector, which is two copies of 3'b110.
1 module top_module (
2     input [7:0] in,
3     output [31:0] out );
4     assign out = { {24{in[7]}} , in };   //对于这个位数还有点疑惑,也就是
5     //Build a circuit that sign-extends an 8-bit number to 32 bits. 
6     //This requires a concatenation of 24 copies of the sign bit (i.e., replicate bit[7] 24 times)
7     //这个要求有点没看懂
8 endmodule

 

posted @ 2023-04-18 19:36  江左子固  阅读(23)  评论(0)    收藏  举报