While heterogeneous architectures that combine a processor and FPGA are extremely valuable for advanced and critical applications, programming such systems is a challenge. Challenges exist at every stage and include choosing or building the operating system, developing drivers to talk with I/O, and communicating between processor and FPGA, as well as finding the expertise needed to write FPGA programs and keep the development cycles of both targets in sync throughout the project.
NI addresses the challenges of heterogeneous software design by delivering a pre-validated software stack and high-level programming tools that you can build on, while maintaining openness and portability to future platforms. The architecture provides fully tested middleware, drivers, and a Linux OS out of the box so you can quickly port your application code to the NI platform. Continue to use your preferred application development tools and leverage the strengths of LabVIEW for real-time and FPGA programming. The true value of LabVIEW FPGA programming is that this abstracted approach to digital design empowers application-level C/C++ developers to implement the most critical portions of their applications in hardware, which they may never have done otherwise without having VHDL experts on staff.
Figure 2. Program the embedded processor with LabVIEW or any Linux compatible tools and use the NI RIO driver to communicate with LabVIEW FPGA.
Embedded system designers working with NI hardware can choose from a variety of programming languages and tools when architecting their systems. Developers can program the open embedded processor with LabVIEW, C/C++, or textual math; and they can reuse source code from past projects to save development time. Programmers can reuse C/C++ libraries from past projects by calling them from within a LabVIEW Real-Time application, which simplifies tasks like real-time thread scheduling. Alternatively, developers can develop, debug, and deploy applications to the embedded processor written entirely in C or C++ using their preferred integrated development environment (IDE).
Introducing FPGAs into embedded system design makes it possible to create high-performance digital logic without the need for custom ASIC design. Traditionally, text-based hardware description languages such as VHDL or Verilog written by digital design engineers, have been used for FPGA development. Unfortunately, due to challenging language semantics, these hardware description languages make it difficult to take advantage of the full capabilities of FPGA design. This is evidenced by the embedded industry’s quest to find higher level abstractions for FPGA design, such as C-to-gates tools, or graphical programming languages such as G in LabVIEW FPGA.
The LabVIEW graphical programming environment abstracts the complexity of FPGA hardware and delivers programming constructs familiar to software engineers so users can design high-performance embedded systems faster.