HDLbits---Verilog language ---more Verilog features

1.Conditional

module top_module (
    input [7:0] a, b, c, d,
    output [7:0] min);//

    // assign intermediate_result1 = compare? true: false;
    wire [7:0] x ,y;
    assign x=(a<b)?a:b;
    assign y=(c<d)?c:d;
    assign min=(x<y)?x:y;
endmodule

2.Reduction

module top_module (
    input [7:0] in,
    output parity); 
 
assign parity = ^in;
endmodule

3.Gates100

module top_module( 
    input [99:0] in,
    output out_and,
    output out_or,
    output out_xor 
);
assign out_and=&in;
    assign out_or=|in;
    assign out_xor=^in;
endmodule

4.Vector100r

module top_module( 
    input [99:0] in,
    output [99:0] out
);
integer i;
    always@(*)
    for(i=0;i<100;i++)
         out[i]=in[99-i];
endmodule

5.Popcount255

module top_module( 
    input [254:0] in,
    output [7:0] out );
    reg[7:0] a;
    
integer i;
    always@(*) begin
         a=0;
        
        for(i=0;i<255;i++)
            a=(in[i]==1)?a+1:a;
    end
    assign out=a;
endmodule

6.Adder100i

module top_module( 
    input  [99:0]  a, b,
    input          cin,
    output [99:0]  cout,
    output [99:0]  sum 
);
    genvar i;
    generate
        for(i=0;i<100;i=i+1) begin:adder
            if(i==0)
                assign{cout[0],sum[0]}=a[0]+b[0]+cin;
            else
                assign{cout[i],sum[i]}=a[i]+b[i]+cout[i-1];
        end           
    endgenerate
    
endmodule

7.Bcdadd100

module top_module( 
    input [399:0] a, b,
    input cin,
    output cout,
    output [399:0] sum );
reg [99:0] cout_reg;
bcd_fadd (
            .a(a[3:0]),
            .b(b[3:0]),
            .cin(cin),
            .cout(cout_reg[0]),
            .sum(sum[3:0])
        );

genvar i;
generate
    for (i = 1;i<=99 ; i=i+1) begin:fadd
        bcd_fadd fadd(
            .a(a[4*(i+1)-1:4*(i+1)-4]),
            .b(b[4*(i+1)-1:4*(i+1)-4]),
            .cin(cout_reg[i-1]),
            .cout(cout_reg[i]),
            .sum(sum[4*(i+1)-1:4*(i+1)-4])
        );
    end
endgenerate
assign cout = cout_reg[99];
endmodule
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值