Генератор Verilog для бинарных умножителей на базе иерархического метода
Выберите битность входов умножителя (от 4 до 64):
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Выбранная битность: 4 (Максимальное значение на выходе: 256)
module hierarchical_binary_multiplication_4 (A, B, out); input [3:0] A; input [3:0] B; output [7:0] out; wire [1:0] A_1, A_2, B_1, B_2; wire [3:0] S_1, S_2, S_3, S_4; assign A_1 = A[3:2]; assign A_2 = A[1:0]; assign B_1 = B[3:2]; assign B_2 = B[1:0]; //переход на нижний модуль hierarchical_binary_multiplication_2 m_4_2_1 (A_1, B_1, S_1); hierarchical_binary_multiplication_2 m_4_2_2 (A_1, B_2, S_2); hierarchical_binary_multiplication_2 m_4_2_3 (A_2, B_1, S_3); hierarchical_binary_multiplication_2 m_4_2_4 (A_2, B_2, S_4); //суммирование assign out = {S_1, 4'b0} + {S_2, 2'b0} + {S_3, 2'b0} + S_4; endmodule module hierarchical_binary_multiplication_2 (A, B, out); input [1:0] A; input [1:0] B; output [3:0] out; wire [0:0] A_1, A_2, B_1, B_2; wire [1:0] S_1, S_2, S_3, S_4; assign A_1 = A[1:1]; assign A_2 = A[0:0]; assign B_1 = B[1:1]; assign B_2 = B[0:0]; //переход на нижний модуль assign S_1 = A_1 * B_1; assign S_2 = A_1 * {1'b0, B_2}; assign S_3 = {1'b0, A_2} * B_1; assign S_4 = {1'b0, A_2} * {1'b0, B_2}; //суммирование assign out = {S_1, 2'b0} + {S_2, 1'b0} + {S_3, 1'b0} + S_4; endmodule module atest_bench(); wire [7:0] out; reg [3:0] in1; reg [3:0] in2; integer i, j, k, l, m, n; integer fori, forj, forz; reg dummy; hierarchical_binary_multiplication_4 r1(in1, in2, out); initial begin /* Full range */ for (fori = 0; fori < 16; fori = fori + 1) begin for (forj = 0; forj < 16; forj = forj + 1) begin in1 = fori; in2 = forj; #1 dummy = 1; l = fori*forj; $display ("!!! Input = (%d, %d) Res = (%d) Expect = (%d)", fori, forj, out, l); i = out; if (i != l) begin $display ("!!! Error (%d, %d, %d, %d)!!!", fori, forj, i, l); end #1 dummy = 1; end end end endmodule
Описание
:
На главную