What is BADGE?
BADGE is a Graphics Engine. Basically, this means that it acts as an interface between a CPU and a graphics display unit in an embedded system, performing the same tasks as the graphics card on your computer. In short, BADGE does the following:
- BADGE controls the display, and feeds it with data from the graphics memory
- BADGE provides hardware graphics acceleration features. Hardware graphics acceleration means that BADGE accepts commands from the Host Processor for different tasks. One example is to quickly draw graphical objects such as lines, rectangles, text, etc. The result is placed in the graphics memory. The task is done faster than the CPU would be able to since BADGE performs optimized operations on the memory. It also takes a lot less CPU load when setting up the parameters for e.g. a rectangle copy compared to actually doing the copying itself. The result is that the CPU will use very little MIPS for graphics tasks when hardware Acceleration is used
- BADGE controls a graphics memory, which stores the image to be displayed.
- BADGE provides a way for the CPU to write graphics information to this memory.
This means that the CPU can spend more time on other tasks, which increases performance for the rest of the system. With hardware graphics acceleration, the performance for both graphics operations and other tasks will be increased!
BADGE comes in the form of an IP (Intellectual Property) block, which can be instantiated in an FPGA or an ASIC. This means that BADGE is modular and flexible for easy adaptation to different environments and different functionality requirements.
Since BADGE is flexible and configurable, do different versions exist?
Today we have the following base versions:
BADGE Lite
- Acts as a display-controlling device
- Pixel-by-pixel access and Hardware Cursor
BADGE 2D
- 2D Graphics Acceleration (based on BADGE Lite)
BADGE Video
- Analog and Digital Video (based on BADGE Lite)
BADGE Full
- Analog, Digital Video and 2D acceleration (based on BADGE Lite)
How much memory do I need to use BADGE?
A typical embedded system with XGA resolution (1024 x 768 pixels) and 16-bit color depth requires 2MByte of external memory. For other resolutions, color depths, and functionality (such as double buffering, font tables etc) the memory requirement may differ.
What type of memory is best for my product?
In most applications, SDRAM is the most performance/cost effective choice. Other memory types are also supported for applications with other needs.
Which Host Interfaces are provided?
The number of supported host CPU interfaces is growing. See "Features" for a list of currently available interfaces.
Do I need to have a fast 32-bits processor to add graphics functionality to my product?
No, by taking advantage of the hardware graphics acceleration features of BADGE, even a low-end CPU can be used in a system that provides fast graphics performance.
Which types of displays can BADGE handle?
The display controller can handle LCD/TFTs, STN, mono/color/dual scan displays. Electrical interfaces with parallel LVTTL (digital RGB) or serial LVDS interfaces are supported. This includes screens capable of DVI and OpenLDI. Support for other display interfaces can be developed depending on market needs or as an adaptation for you.
Is there a standard for display interfaces?
There are several different display interfaces around in many variants, where some are standardized and some are proprietary. BADGE support most TFT display interfaces including parallel LVTTL RGB and serial LVDS.
What if I need to add a new type of display next year?
BADGE is flexible and can be easily reconfigured into another FPGA bit-file (this file determines the content of the FPGA that is programmed on boot). Minor changes as display resolution, vertical timing etc can be set from software. If your PCB has been prepared for future display interface types, BADGE can in most cases be adopted for the new interface type within days.
How many I/O pins does BADGE need?
The number of I/Os on the FPGA depends on how BADGE is configured regarding:
- Host interface bus (mainly address and data bus widths)
- Memory (mainly address and data bus widths)
- Display interface (parallel LVTTL RGB or serial LVDS)
A typical configuration with 16-bit host interface to external CPU, 32-bit SDRAM, and serial LVDS display interface requires around 100 FPGA I/O pins. If the CPU is embedded in the FPGA, no FPGA I/O pins are required for the host interface.
Which FPGA types does BADGE support?
Most modern FPGAs with embedded memory and, depending on BADGE configuration, hard multipliers. BADGE has been tested in:
Altera: Cyclone, Cyclone II, Cyclone III, Stratix and Stratix II.
Xilinx: Spartan-3, Spartan-3E, Virtex, Virtex II, Virtex-IIPro, and Virtex-4.
How is BADGE delivered?
Normally, the netlist is delivered directly by e-mail to the customer. After that, a CD is delivered which includes:
- Netlist
- Source code (if purchased)
- User Guide, Programmers Guide
- Design and Simulation environment and setup (testbench, scripts etc.)
How can I know that BADGE will be supported in the future?
BitSim offers maintenance and support agreements to allow customers to benefit from recent development and enhancements. Additional security can be arranged through an Escrow agent or by purchasing the source code option.
My present standard (ASSP) graphics controller is End-Of-Life, could BADGE handle that?
How large (in FPGA-gates) is BADGE?
Depending on which BADGE configuration you choose, it will fit in different FPGA types and sizes. But in general, the BADGE IP will fit into some of the smaller versions of the Spartan-3 and Cyclone families.
Is it possible to have other functions in the FPGA?
Yes, depending on the size of the FPGA, much more functionality can be included besides BADGE. Example of such functionality is CPUs, Ethernet MACs, Flash controllers, PCI etc.
We're not so familiar with FPGAs...
Many engineers at BitSim have been developing for FPGAs since the end of the 80s. BADGE was released 2003, and we've already done several projects for customers around the world. If you need assistance, we could help you with both FPGA and PCB designs.
We can also deliver BADGE as a standard component (with all the functions pre-loaded) in a Flash-based FPGA (e.g. from Actel or Lattice).
It is also possible to use a Computer-On-Module/System-On-Module (COM/SOM), which is a complete system on a tiny PCB. It typically consists of an ARM processor, Flash-memory, SDRAM and an FPGA. In the FPGA, BitSim implements the graphics and/or video function needed, by using BADGE.
An example of a module is The Colibri module from Toradex, with an Intel Xscale PXA27x
We don't want someone to "clone" the content in the FPGA!
This problem can be handled in many different ways depending on your exact need. BitSim has the right solution for copy-protecting FPGA designs.
Do I need some kind of SW driver?
It depends on which operating system, if any, you use in your embedded system. BitSim has device drivers available for both Linux and Windows CE, but if you don't use an operating system, BitSim provides API functions for C programmers.
Do the drivers cost extra?
No, drivers for Linux, Windows CE and the bare bone API are included in the license.
How is support handled?
Included in the BADGE license is up to 40 hours of support (depending on license type).
Is there a Reference Design Kit (RDK) available?
Yes, a BADGE Reference Kit, BADGER, exists. It allows you to evaluate the IP, build, and demonstrate your own graphics even before starting the development project. Look for more info on BADGER at "Reference Design".
Applications
- Medical Instrumentation
- Automotive
- Industrial Equipment
- Defense
- Instrumentation & Measurement
- Gaming & Amusement Machines
Do you have a question? Fill in the Contact Form or send an email to badge@bitsim.com. Include your contact details. Phone can be a quick way to get good answers so include phone number. BitSim is based in Sweden, using CET.