MATLAB: How to convert from decimal to binary for HDL Coder

HDL Coder

I am creating a Simulink model for HDL code generation. I would like to convert a signal into a vector of bits so that I can perform operations on each individual bit. There is no block that performs this operation, so I would like to create a custom implementation. What is the best way to do this that will not generate excessive code?

Best Answer

A convenient way to perform this operation is to use the MATLAB Function block. There is an example implementation of this type of block within the eml_hdl_design_patterns example library. The Integer to Bits block within this library can be added to a model to convert a scalar to a vector of bits. Refer to the following for more information on this example:
Note that the following modifications may be required to ensure compatibility with an existing model:
  1. Specify output vector length by creating variable maxWordLength or directly entering a value in the block's mask.
  2. This block outputs a 1xN vector. If downstream blocks expect an Nx1 vector, either the MATLAB function can be edited to switch vector dimensions, or the output signal can be reshaped to the expected dimensions.