I would like to visualize the fixed-point data in binary or hex format using Simulink.
Kshitij Singh answered .
2025-11-20
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
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.