воскресенье, 16 июня 2013 г.

Сложение и умножение чисел

Главный смысл: все операнды и результат должны быть signed.
Сложение. При сложении двух чисел с базой N, получившиеся число будет иметь базу N+1.
Exported from Notepad++
module main( ); parameter N = 8; reg signed [ N-1: 0 ] a = {1'b0, {(N-1){1'b1}}}; //127 reg signed [ N-1: 0 ] b = {1'b1, {(N-1){1'b0}}}; //-128 wire signed [ N : 0 ] sum = a + b; //-1 wire signed [ N : 0 ] dif = a - b; //255 wire signed [ N : 0 ] min = b + b; //-256 wire signed [ N : 0 ] max = a + a; //254 endmodule












Умножение. При умножении двух чисел с базой N, получившееся число будет иметь базу 2*N.
Exported from Notepad++
module main( ); parameter N = 8; reg signed [ N-1: 0 ] a = {1'b0, {(N-1){1'b1}}}; //127 reg signed [ N-1: 0 ] b = {1'b1, {(N-1){1'b0}}}; //-128 wire signed [2*N-1: 0 ] ab = a * b; //-16256 wire signed [2*N-1: 0 ] a2 = a * a; //16129 wire signed [2*N-1: 0 ] b2 = b * b; //16384 endmodule