How do I visualize the fixed-point data in binary or hex format using Simulink?

Illustration
technicalsource9 - 2020-07-06T13:10:40+00:00
Question: How do I visualize the fixed-point data in binary or hex format using Simulink?

I would like to visualize the fixed-point data in binary or hex format using Simulink.

Expert Answer

Profile picture of Kshitij Singh Kshitij Singh answered . 2025-11-20

The ability to visualize fixed-point data in binary or hex format is not available in Simulink.
As a workaround, once you have the value in the MATLAB workspace, you can easily display non-negative values in hex or binary using the following MATLAB commands:
 
dec2hex( value, numberOfHexCharsToDisplay )

dec2bin( value, numberOfBitsToDisplay )

However, these functions do not directly handle negative numbers. The following are two functions that will do the work of converting negative numbers to their N bit two's complement representation. 1st Function: OUTSTRING:

function outString = sdec2bin(decimalValue, numberOfBits );
branchPt = 2^numberOfBits;

ii = find( decimalValue < 0 );

decimalValue(ii) = decimalValue(ii) + branchPt;

outString = dec2bin( decimalValue, numberOfBits );

2nd Function: OUTSTRING:

function outString = sdec2hex( decimalValue, numberOfBits );
%
% Caution unlike dec2hex the second input argument is 
% number of Bits not number of hex "digits"
%
branchPt = 2^numberOfBits;

ii = find( decimalValue < 0 );

decimalValue(ii) = decimalValue(ii) + branchPt;

hexCharsToDisplay = ceil( numberOfBits / 4 );

outString = dec2hex( decimalValue, hexCharsToDisplay );

For example, if a fixed-point signal has 4 bits to the right of the binary point, then the scaling equation is:

 V = 2^-4 * Q

where V = Real World Value and Q = Stored Integer Value.
For example, if
Q = 29
then
V = 1.8125
It would almost certainly be a mistake to do the following:
 
dec2bin(V,16)
 ans = 0000000000000001

which is just the value 1 and has thrown away the 0.8125. This is not the integer that would actually live in the computer's memory. The integer that really lives in the computers memory would be given by:

dec2bin(Q,16)
 ans = 0000000000011101

There are two ways two get the stored integer value. One is to reverse the scaling equation, for example:

 Q = V / 2^-4,/pre>

The other way is to drop in the Scaling Strip block from the Data Type library of the Fixed-Point Blockset just before the To Workspace block.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!