ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HDLBITS————Verilog language——More verilog features

2022-02-24 10:59:15  阅读:252  来源: 互联网

标签:features language top module 99 Verilog output input generate


1. reduction operators
这儿是算校验位(第8位),如果8位in已经是偶数个1了,则补0,如果是奇数个,则补1;用单目异或缩位运算,11得0

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

endmodule

在这里插入图片描述
在这里插入图片描述
2. Popcount255
找位是1的个数,for之前可初始化值

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

3. 100bit adder
这部分来熟悉generate用法,它是在物理上放了那么多个例化模块

module top_module( 
    input [99:0] a, b,
    input cin,
    output [99:0] cout,
    output [99:0] sum );
    
    generate
        genvar i;
        for(i=0;i<100;i=i+1)begin:loop
            if(i==0)begin	//第一个
        		full_adder inst( 
                    .a(a[i]), 
                    .b(b[i]), 
            	    .cin(cin),
                    .cout(cout[i]), 
                    .sum(sum[i])
       	    	);
            end
            else begin
        		full_adder inst( 
                    .a(a[i]), 
                    .b(b[i]), 
                    .cin(cout[i-1]),
                    .cout(cout[i]), 
                    .sum(sum[i])
       	    	);                
            end
        end
    endgenerate
    
endmodule

module full_adder( 
    input a, b, cin,
    output cout, sum );
	
    assign {cout,sum} = a + b + cin;
        
endmodule

4. bcd_add100
在这里插入图片描述

module top_module( 
    input [399:0] a, b,
    input cin,
    output cout,
    output [399:0] sum );
    
    wire [99:0]link_cout;
    
    generate
        genvar i;
        for(i=0;i<100;i=i+1)begin:loop
            if(i==0)begin	//第一个
        		bcd_fadd  inst( 
                    .a(a[4*i+3:i]), 
                    .b(b[4*i+3:i]), 
            	    .cin(cin),
                    .cout(link_cout[i]), 
                    .sum(sum[4*i+3:4*i])
       	    	);
            end
            else begin
        		bcd_fadd  inst( 
                    .a(a[4*i+3:4*i]), 
                    .b(b[4*i+3:4*i]), 
                    .cin(link_cout[i-1]),
                    .cout(link_cout[i]), 
                    .sum(sum[4*i+3:4*i])
       	    	);                
            end
        end
    endgenerate  
	
    assign cout = link_cout[99];
    
endmodule

标签:features,language,top,module,99,Verilog,output,input,generate
来源: https://blog.csdn.net/qq_41793792/article/details/123097070

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有