1.
“ ? ” 是三目操作符,也可以像if和case语句一样作为选择使用。使用“ ? ” ,在4个输入中,找到最小值,并输出。
|
1 2 3 4 5 6 7 8 |
module top_module ( input [7:0] a, b, c, d, output [7:0] min ); //使用assign语句实现 endmodule |
2.
参考文章Verilog 归约运算符 使用缩减/归约运算符来计算输入变量的奇偶。
|
1 2 3 4 5 6 7 8 |
module top_module ( input [7:0] in, output parity ); //使用assign语句来实现 endmodule |
3.
练习使用其它的缩减运算符。
|
1 2 3 4 5 6 7 8 9 10 |
module top_module( input [99:0] in, output out_and, output out_or, output out_xor ); //使用assign语句实现 endmodule |
4.
使用for 语句,将一个100-bit的向量颠倒位序。
|
1 2 3 4 5 6 7 8 9 |
module top_module( input [99:0] in, output [99:0] out ); //always @(*)... endmodule |
5.
使用for语句,计算一个255-bit向量中“ 1 ”的个数。
|
1 2 3 4 5 6 7 |
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也输出。
|
1 2 3 4 5 6 7 8 9 |
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。
|
1 2 3 4 5 6 7 8 |
module top_module( input [399:0] a, b, input ci, output co, output [399:0] sum ); endmodule |
参考代码:
[content_control]
[/content_control]
对应视频: