Menu Close

Verilog 语法练习(5)BCD加法器

1.

“ ? ” 是三目操作符,也可以像if和case语句一样作为选择使用。使用“ ? ” ,在4个输入中,找到最小值,并输出。

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

//使用assign语句实现

endmodule

 

2.

参考文章Verilog 归约运算符 使用缩减/归约运算符来计算输入变量的奇偶。

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

//使用assign语句来实现

endmodule

 

3.

练习使用其它的缩减运算符。

module top_module( 
    input [99:0] in,
    output out_and,
    output out_or,
    output out_xor 
);

//使用assign语句实现

endmodule

 

4.

使用for 语句,将一个100-bit的向量颠倒位序。

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

//always @(*)...

            
endmodule

 

5.

使用for语句,计算一个255-bit向量中“ 1 ”的个数。

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

//always @(*) ...
    
endmodule

 

6.

使用for语句,实现100-bit的全加器。将100-bit的输入向量a和输入向量b进行相加,除了输出100-bit的sum之外,将每1位的进位位cout也输出。

module top_module( 
    input [99:0] a, b,
    input cin,
    output [99:0] cout,
    output [99:0] sum );

//always @(*)...

endmodule

 

7.

实现BCD码 加法器,将两个 BCD 数字和ci相加,并产生sum和co。

创建一个 100 位 BCD 全加器,将两个 100 位 BCD 数字(打包成 400-bit向量,bit 0-3是第一个BCD码,bit 4-7是第二个BCD码)和1-bit ci相加,产生一个 100-bit sum和1-bit co。

module top_module( 
    input [399:0] a, b,
    input ci,
    output co,
    output [399:0] sum );


endmodule

 

参考代码:

[content_control]

solution_1.txt

solution_2.txt

[/content_control]

 

对应视频:

Posted in FPGA, FPGA 教材教案, FPGA习题库, 教材与教案, 文章

2 Comments

    • William

      如果你指的是用generate for例化模块,那么对应位置例化模块是可以的,除此之外,对应名称例化模块也是可以在gengerate for中是实现的。

发表回复

相关链接