图1:异构架构将处理器、FPGA和I/O与高级编程工具相结合。
Intel处理器可运行NI Linux Real-Time,NI Linux Real-Time是一款基于标准内核的实时操作系统,经过专门设计,可在长期部署中实现可靠的确定性操作。它包含标准的Linux功能,如对安全增强型Linux的本地支持。NI-DAQmx驱动程序提供了一个单一的编程接口,支持获取波形和编程模拟输入、模拟输出、数字I/O、计数器和控制。
用户可编程的FPGA支持对高级控制、信号处理、滤波、高级定时和其他逻辑的实时进程进行分载。NI使用Xilinx最新的FPGA技术,配备含多达326060个逻辑单元和840个DSP片的芯片。
虽然结合了处理器和FPGA的异构架构对于高级应用程序和关键应用程序来说,非常具有价值,但此类系统的编程却是个不小的挑战。挑战无处不在,体现于各个编程阶段,包括选择或构建操作系统,开发与I/O对话的驱动程序,在处理器和FPGA之间进行通信,以及寻找编写FPGA程序所需的专业知识,在整个项目中保持两个终端的开发周期同步。
NI通过提供预先验证的软件堆栈和高级编程工具,解决了异构软件设计的挑战,您可以在此基础上进行开发,同时保持未来平台的开放性和可移植性。该架构提供了经过全面测试的中间件、驱动程序和Linux操作系统,开箱即用,可以快速将应用程序代码移植到NI平台上。您可以继续使用自己喜欢的应用程序开发工具,借助LabVIEW的优势实现实时的FPGA编程。LabVIEW FPGA编程的真正价值在于,这种抽象的数字设计方法使应用程序级的C/C++开发人员能够在硬件中实现应用程序最关键的部分,以往,如果脱离VHDL专家的支持,他们可能无法做到这一点。
图2.使用LabVIEW或任何与Linux兼容的工具对嵌入式处理器进行编程,并使用NI RIO驱动程序与LabVIEW FPGA进行通信。
使用NI硬件的嵌入式系统设计人员在对系统进行架构设计时有许多编程语言和工具可以选择。开发人员可以使用LabVIEW、C/C++或文本数学对开放的嵌入式处理器进行编程,还可以重复利用过去项目的源代码,节省开发时间。程序员可以在LabVIEW Real-Time应用程序中调用过去项目中的C/C++库,实现代码重复利用,简化实时线程调度等任务。 另外,开发人员也可以在其首选的集成开发环境(IDE)中完全使用C或C++编写、开发和调试应用程序,并将其部署到嵌入式处理器。
在嵌入式系统设计中引入FPGA,使高性能数字逻辑创建成为可能,不需要自定义ASIC设计。传统上来说,FPGA开发一直在使用由数字设计工程师编写的VHDL或Verilog等基于文本的硬件描述语言。但遗憾的是,由于语言语义具有挑战性,这些硬件描述语言很难充分发挥FPGA设计的全部功能。这一点从嵌入式行业为FPGA设计寻找更高层次的抽象就可以看出,如C-to-gates工具或图形化编程语言(如LabVIEW FPGA中的G语言)。
LabVIEW图形化编程环境抽象了FPGA硬件的复杂性,提供了软件工程师熟悉的编程结构,因此用户可以更快地设计高性能的嵌入式系统。
由于NI硬件运行的是标准Linux操作系统,您可以使用任何与Linux兼容的工具构建自己的嵌入式应用程序,从而可以灵活地重复使用您的IP、专业知识和开发工具。不过,您需要了解这些工具的位置以及可以如何与LabVIEW Real-Time和LabVIEW FPGA集成。
图3:根据IP重复使用和实时编程专业知识选择软件设计模式。
您必须使用LabVIEW FPGA编程Xilinx FPGA,但也可以使用C/C++或LabVIEW Real-Time与LabVIEW FPGA程序进行通信。在处理器应用程序和LabVIEW FPGA程序之间的通信层既有C API,也有LabVIEW API。因此,设计NI Linux Real-Time系统的第一步是选择一个顶层软件设计模式。
选择LabVIEW编程实时应用程序有很多优势,因为LabVIEW Real-Time包含了内置的多线程、实时线程调度结构,以及许多专门用于构建可靠的确定性代码的其他功能。此外,LabVIEW可以与其他语言编写的共享库和应用程序连接,从而在LabVIEW Real-Time设计模式中也可以重复使用这个宝贵的IP。
然而,如果顶层应用程序只能使用C/C++编写,LabVIEW则只能用于编写FPGA中的I/O,您可以评估哪些关键任务应该转移到硬件中,而不是在处理器上执行。
LabVIEW明显适用于FPGA编程,因为它可清晰地表现出并行性和数据流。借助LabVIEW FPGA,具有C语言专业知识的工程师和科学家可以在其设计中利用FPGA的优势,不必学习硬件设计,减轻负担。此外,FPGA接口C API在FPGA和实时应用程序之间提供了一个通信层,用于I/O控制和数据串流。通过这个API,您可以使用LabVIEW图形工具编程FPGA,也可以选择LabVIEW或C/C++工具对系统内的处理器进行编程。
LabVIEW FPGA可帮助您自行定制测量和控制硬件,无需使用底层硬件描述语言或板卡级设计。使用该自定义硬件,可以实现:独特的定时和触发例行程序、超高速控制、数字协议连接、数字信号处理和许多其他要求具备高速硬件可靠性和高度确定性的应用程序。