首页 > 其他分享 >HDLBits(9)10.13

HDLBits(9)10.13

时间:2023-02-14 14:45:24浏览次数:38  
标签:HDLBits module 99 加法器 output input 10.13 100

2 Verilog语言

2.5 更多特点

2.5.4 组合for循环

翻转输出一个长度为100的向量(使用组合always块)

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

2.5.5 组合for循环:255位总体计数

建立一个255bit输入的矢量来判断输入中 ’1‘ 的个数

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

    integer i;

    always @ (*)
        begin
            out = 8'b0000_0000;     //为了后面的计数累加,此处先初始化为0.
            for (i=0; i<255; i++)
                begin
                    if(in[i] == 1'b1)
                        out = out + 1'b1;
                    else
                        out = out;
                end
        end

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

2.5.6 生成for循环:100位二进制加法器

通过实例化100个全加器来创建一个100位二进制波纹进位加法器。加法器将两个 100 位数字和一个进位相加,产生一个 100 位和并执行。为了鼓励您实际实例化全加器,还要输出纹波进位加法器中每个全加器的进位。cout[99] 是最后一个全加器的最终进位,也是通常看到的进位。

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++) 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

generate语句:

 

2.5.6 生成for循环:100位BCD加法器

本题已经提供了一个名为bcd_fadd的BCD一位全加器,他会添加两个BCD码和一个cin,并产生一个cout和sum。

module bcd_fadd {
    input [3:0] a,
    input [3:0] b,
    input     cin,
    output   cout,
    output [3:0] sum );

实例化100个bcd_fadd来实现100位的BCD进位加法器。该加法器应包含两个100bit的BCD码(包含在400bit的矢量中)和一个cin, 输出产生sum 和 cout

标签:HDLBits,module,99,加法器,output,input,10.13,100
From: https://www.cnblogs.com/LhTian/p/16788472.html

相关文章

  • 10.13了解程序运行方式的必要性
    通过对C语言源代码和汇编语言源代码进行比较,想必大家对程序是怎样跑起来的”又有了更深的理解。而且,从汇编语言源代码中获得的知识,在某些情况下对查找bug的原因也是有帮......
  • HDLBits--Verilog习题记录5
    此题目较难,本文代码也是借鉴别人才完全理解。题目编号:verification:readingsimulations->buildacircuitfromasimulationwaveform->sequentialcircuit10题目描述......
  • HDLBits--Verilog习题记录4
    4.Circuits---SequentialLogic---LatchesandFlip-Flops----Edgecaptureregister问题描述:Foreachbitina32-bitvector,capturewhentheinputsignalchanges......
  • HDLBits--Verilog习题记录3
    3.Circuits---SequentialLogic---LatchesandFlip-Flops----Detectanedge问题描述:Foreachbitinan8-bitvector,detectwhentheinputsignalchangesfrom0......
  • HDLBits--Verilog习题记录2
    2.veriloglanguage--moreverilogfeatures--Generateforloop:100-digitBCDadder题目:YouareprovidedwithaBCDone-digitaddernamed bcd_fadd thataddst......
  • HDLBits--Verilog习题记录1
    本文档是Verilog编程题的解题记录 1.VerilogLanguage--moreVerilogfeatures---Generatefor-loop:100-bitbinaryadder2题目说明:Createa100-bitbinaryripple-c......
  • C Primer Plus 10.13第13题的一点想法
    在网上看了一些网友的答案,不是很满意!于是自己写了一个#include<stdio.h>#include<ctype.h>voidshow_arr(intarr[][5],intn);voidstore_date(doublearr[][5])......
  • HDLbits第四天
    出于对FPGA学习巩固的目的,同时也希望能锻炼自己对于Verilog的题目分析,让自己对HDL代码的理解加深,所以想坚持写一下关于HDLbits网站刷题的系列,计划是工作日每日5题目+分析,周......
  • HDLbits第三天
    出于对FPGA学习巩固的目的,同时也希望能锻炼自己对于Verilog的题目分析,让自己对HDL代码的理解加深,所以想坚持写一下关于HDLbits网站刷题的系列,计划是工作日每日5题目+分析,周......
  • HDLBits-Adder3问题
    知识点genvari;generatefor(i=0;i<3;i=i+1)begin:fadd_arrfaddfadd_inst(a[i],b[i],......