Fixed-Point Blockset | ![]() ![]() |
Automatically change the scaling for each fixed-point block that does not have its scaling locked
Syntax
autofixexp
Description
The autofixexp
script automatically changes the scaling for each block that does not have its scaling locked. This script uses the maximum and minimum data obtained from the last simulation run to log data to the workspace. The scaling is changed such that the simulation range is covered and the precision is maximized. The script follows these steps:
FixPtTempGlobal
is created to "steal" parameters (such as data type) from variables not known in the base workspace. For example, assume the FixPt Sum block has its output data type specified as DerivedVar
. DerivedVar
is derived in the mask initialization based on mask parameters and the block is under a mask.
The value of the parameter DerivedVar
is retrieved by temporarily
replacing DerivedVar
with stealparameter(DerivedVar)
in the block
dialog. A model update is then forced. When stealparameter(DerivedVar)
is evaluated, it returns the value of DerivedVar
without modification and
stores the value in FixPtTempGlobal
. The stolen value is immediately used
by this procedure and is not needed again. Therefore, the procedure can
move from one block to the next using the same global variable.
RangeFactor
variable allows you to specify a range differing from that defined by the maximum and minimum values logged in FixPtSimRanges
. For example, a RangeFactor
value of 1.55 specifies that a range at least 55 percent larger is desired. A value of 0.85 specifies that a range up to 15 percent smaller is acceptable.
You should be aware that the scaling is not exact for the radix point-only case since the range is given (approximately) by a power of two. The lower limit is exact, but the upper limit is always one bit below a power of two.
For example, if the maximum logged value is 5 and the minimum logged
value is -0.5, then any RangeFactor
from 4/5 to slightly under 8/5 would
produce the same radix point since these limits are less than a factor of two
from each other. The radix point selected will produce a range from -8 to +8
(minus a bit).
FixPtSimRanges
is retrieved from the workspace. This is the variable that holds the maximum and minimum simulation values.
SlopeBits
and BiasBits
, which specify the number of bits to use in representing slopes and biases. If these variables are not found, then they are automatically created with default values of 7 and 8, respectively.
FIX
, then radix point-only scaling is performed. If the data type class is INT
, then slope/bias scaling is performed. To find out a data type's class, refer to its reference page in this chapter.
See Also
![]() | Alphabetical List of Functions | fixptbestexp | ![]() |