HDLBits 答案 ---Vectors

Vector0

module top_module (

    input wire [2:0] vec,

    output wire [2:0] outv,

    output wire o2,

    output wire o1,

    output wire o0  ); // Module body starts after module declaration

 assign  outv =  vec[2:0];

assign  o2 =  vec[2];   

assign  o1 =  vec[1];

assign  o0 =  vec[0]; 

endmodule

Vectors in more detail

`default_nettype none     // Disable implicit nets. Reduces some types of bugs.

module top_module(

    input wire [15:0] in,

    output wire [7:0] out_hi,

    output wire [7:0] out_lo );

 assign out_hi   = in[15:8];   

assign out_lo   = in[7:0];  

endmodule

Vector part select

module top_module(

    input [31:0] in,

    output [31:0] out );//

assign out = {in[7:0],in[15:8],in[23:16],in[31:24]};

endmodule

Bitwise operators

module top_module(

    input [2:0] a,

    input [2:0] b,

    output [2:0] out_or_bitwise,

    output out_or_logical,

    output [5:0] out_not

);

 assign out_or_bitwise = a|b;

assign out_or_logical = a||b;

assign out_not = ~{b,a};

endmodule

Four-input gates

module top_module(

    input [3:0] in,

    output out_and,

    output out_or,

    output out_xor

);

assign    out_and  =  in[0]&in[1]&in[2]&in[3];

assign    out_or   =  in[0]|in[1]|in[2]|in[3];

assign    out_xor  =  in[0]^in[1]^in[2]^in[3];   

 endmodule

Vector concatenation operator

学习位拼接

module top_module (

    input [4:0] a, b, c, d, e, f,

    output [7:0] w, x, y, z );//

   assign w={a[4:0],b[4:2]} ;

    assign x={b[1:0],c[4:0],d[4]} ;

    assign y={d[3:0],e[4:1]} ;

    assign z={e[0],f[4:0],2'b11} ;

endmodule

Vector reversal1

学会使用generate语法结构

module top_module(

    input [7:0] in,

    output [7:0] out

);

generate

genvar i;

    for(i=0; i <= 7;i = i+1)begin:geniiii

        assign out[7-i] = in[i];

     end

endgenerate

endmodule

Replication operator

看到复制运算符的一个常见地方是,将较小的数字符号扩展为较大的数字,同时保留其符号值。这是通过将较小数字的符号位(最高有效位)复制到左侧来完成的。例如,将4'b0101(5)符号扩展至8位会产生8'b00000101(5),而将4'b1101(-3) 符号扩展至8位会产生8'b11111101 (-3)

module top_module (

    input [7:0] in,

    output [31:0] out );//

assign out = {{24{in[7]}},in}; //注意括号,要不然报错

endmodule

More replication

module top_module (

    input a, b, c, d, e,

    output [24:0] out );

assign out = ~{{{5{a}},{5{b}},{5{c}},{5{d}},{5{e}}}^{{5{a,b,c,d,e}}}};

endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值