Tuesday, January 24, 2012

Floating Point Algorithm Development Made Easy in System Generator

System Generator 13.3 added support for bit and cycle accurate, single, double and custom precision-floating-point on many blocks in the Xilinx Blockset. It now has a new "Floating-Point" library under "Xilinx Blockset" in the "Simulink Libary Browser", which lists all blocks supporting floating point numbers (see the "Floating Point Library in Xilinx Blockset" snapshot below).
The list is really informational in that if some of these blocks are already in your fixed point model you don't need to swap them out with the blocks in the "Floating-Point" library to change it to a floating point model. In most of cases all you need to do is to change the input data type of the "Gateway In" blocks in the model to one of the supported floating point types and the tool will automatically generate the floating point model and netlist for simulation and implementation. The "Adder Example with all Supported Data Types" figure below shows that outputs of the same "AddSub" block are automatically adjusted to match the input data type.
PS: it is very handy to turn on the port data type display using "Format->Port/Signal Displays->Port Data Types" menu.
PPS: Click "Edit->Update Diagram" menu or pressing "CTRL-D" to update the data type display when the data types of some blocks are changed.
Floating Point Library in Xilinx Blockset

Added Example with all Supported Data Types

Below is a YouTube video from Xilinx on this new feature in case you are interested:


  1. Hi Jim. Thanks for this page. I have a question. I designed a fuzzy logic controller using GUI in Simulink/Matlab environment and I want to Implement it on FPGA. I couldn't write its VHDL code. How I can implement it on FPGA using system generator tool? it is essential to mention that because fuzzy controller has not any equation to describe its basic components, I couldn't devide this to basic components. is there any way that I can use system generator for my design?

  2. If you can't decompose your simulink model into building blocks in the Xilinx Blockset, System Generator may not be a good fit for your application. Matlab has tool called HDL Coder http://www.mathworks.com/products/hdl-coder/ that can convert Matlab functions and Simulink blocks to HDL. You may want to look into that. Once you have the HDL, you can import it to System Generator as a blackbox.

  3. Smaller sized update patches should be made available. I use ISE 13.2(0.61xd) when i click update its > 5 GB.

  4. Hi Jim,

    i wanted to implement the same design with same spcifications as shown in the Xilinx Video i.e. Floating-Point FIR filter. as i am naive tos ystem generator, i could not understand how the designer has enclosed the 4-taps into the same BLUE coloured Block. I would be grateful if you can tell me, what we call it in Simulink, either top level design or instentiation?.


  5. @Mohsin I recommend you go through the training video on System Generator below


    You may also find the Xilinx DSP Tools forum useful:


  6. Hello Jim,

    what are the FPGAs supported by Xilinx System Generator 13.3 for floating-point DSP operations?