Главная »
ПЛИС » Умножение и сложение чисел фиксированной точности
§ Предварительные сведения
Числа представлены в 16-битном формате, имеют фиксированную точность.
Бит Описание
15 Знак 0-плюс 1-минус
14..12 Целое от 0 до 7
11..0 Мантисса (дробная часть)
Можно представить числа от -7,9997 до 7,9997.
§ Модуль умножения
1module mult
2(
3 input wire [15:0] a,
4 input wire [15:0] b,
5 output wire [15:0] c
6);
7
8wire [31:0] res = a[14:0] * b[14:0];
9assign c[15] = a[15] ^ b[15];
10assign c[14:0] = res[26:12];
11
12endmodule
§ Модуль сложения
Данный модуль складывает числа. Чтобы вычесть, необходимо обратить бит 15 для второго слагаемого b.
1module summ
2(
3 input wire [15:0] a,
4 input wire [15:0] b,
5 output reg [15:0] c
6);
7
8wire [15:0] ab = a[14:0] - b[14:0];
9wire [15:0] ba = b[14:0] - a[14:0];
10
11always @* begin
12
13 case ({a[15], b[15]})
14
15 2'b01: c = ab[15] ? {1'b1, ba[14:0]} : {1'b0, ab[14:0]};
16 2'b10: c = ba[15] ? {1'b1, ab[14:0]} : {1'b0, ba[14:0]};
17 default: c = {a[15], a[14:0] + b[14:0]};
18
19 endcase
20
21end
22
23endmodule