I have x and y with word length 4 and fractional number of bits 3:
% set fixed point variable display behavior
p = fipref;p.NumericTypeDisplay = 'short';p.FimathDisplay = 'none';p.LoggingMode = 'on';format compact% Set integer and fractional number of bits
DataWordLength = 4DataFracLength = 3 MultWordLength = 8MultFracLength = 7AccWordLength = 10AccFracLength = 8% Apply bit widths to named types
Tdata = numerictype('WordLength', DataWordLength, 'FractionLength', DataFracLength)Tmult = numerictype('WordLength', MultWordLength, 'FractionLength', MultFracLength)Taccum = numerictype('WordLength', AccWordLength, 'FractionLength', AccFracLength)% Accumulator sum/mult characteristics
F = fimath('ProductMode','SpecifyPrecision', ... 'ProductWordLength',AccWordLength, 'ProductFractionLength',AccFracLength, ... 'SumMode','SpecifyPrecision', 'SumWordLength', AccWordLength, ... 'SumFractionLength',AccFracLength)% experiment
Fdata = fimath('ProductMode','SpecifyPrecision', ... 'ProductWordLength',DataWordLength, 'ProductFractionLength',DataFracLength, ... 'SumMode','SpecifyPrecision', 'SumWordLength', DataWordLength, ... 'SumFractionLength',DataFracLength)% set data values
x = fi(-1, Tdata, F)y = fi(-1, Tdata, F)z = fi(-1, Tdata, Fdata)acc = fi(0, Taccum, F)mult = fi(0, Tmult, F)% multiply two numbers
mult = x * yacc = x * y
and the output is
mult = 1 s10,8 acc = 1 s10,8
How can I make sure that the result of the multiplication has specified properties (word length and fraction length)?
Best Answer