传统的嵌入式产品只能完结某种特定的功用,不能满意用户可变的五光十色的运用需求。为处理这个问题,本文规划并完结了一种运用Java作为软件渠道的依据FPGA的可编程嵌入式体系,以完结体系对多种本地运用和网络的支撑。
1. 概述
传统的嵌入式体系规划的首要方针是找到一种优化的体系结构来完结单一的,特定的功用。对这样的体系来说,ASIC和中心处理器是作为特别的构件模块加以考虑的:规划者依据运用的要求挑选恰当的ASIC,依据给定的功用要求比方处理器主频,体系稳定性,以及对功耗的要求等选用恰当的处理器内核。
但是,在当今移动通讯现已进入每个人的日子的今日,现在的嵌入式体系比方PDA等现已不同于传统意义上的嵌入式体系了,它们有自己的共同特征。客观需求要求它们能够支撑多种运用功用如网页阅读,播映音频/视频文件,以及进行无线网络通讯等。
这样看来,传统的规划思路由于只面向单一的运用,无法满意多运用嵌入式体系的需求。而处理这一问题的杰出途径就是向嵌入式体系引进可编程才能,以使得体系能够依据用户的不同要求完结对不同运用的支撑。
为了向体系中引进可编程才能,咱们考虑在体系中嵌入FPGA,由于FPGA具有下列特征,使得它成为咱们的首选:
1.现在的FPGA的处理才能和逻辑容量现已接近于专用ASIC,功耗也比较低,能够满意咱们体系规划的要求;
2.由于FPGA具有的可重编程才能,运用了FPGA的嵌入式体系能够满意各种不同的运用要求;
从嵌入式体系办理的视点来说,对网络通讯的支撑也是很有必要的,也是很有特征的一个运用,由于它使得从远端服务器下载新的运用程序并在本地运转成为可能。为完结对这个功用的支撑,咱们选用Java作为软件渠道。由于Java运转在Java虚拟机之上,它能够下载并履行新的运用程序代码,而且无需在下载后重新发动体系。
综上所述,这个新的嵌入式体系是依据Java的,有一个FPGA和规范处理器相连。咱们经过网络下载Java代码和能够对FPGA进行编程的比特流。该体系也支撑对FPGA的动态重新配置。为了完结硬件(FPGA)和软件(Java运用程序代码)之间的通讯,又界说了一组本地API,以使得从Java运用层能够拜访到底层的硬件。为了调用这些本地API,选用了Java本地接口(JNI)。在本文中,将一些Java函数(Java method)用FPGA可编程硬件来完结,称之为硬件办法(HW method)。
2. 体系规划
完结一个Java函数功用的对应的硬件办法完结的逻辑结构图如图1所示。
输入缓存和输出缓存别离用来接纳输入参数和存储输出成果。操控缓存用于对硬件办法的操控和检测,比方向硬件办法宣布发动指令,查看其所在的状况并判别操作是否完结等。该模块中的一切缓存都映射到处理器物理地址空间中,处理器能够运用正常的读写指令完结对这些缓存的拜访。
图2是该嵌入式体系的硬件渠道,由一个规范处理器,一个FPGA和一个体系存储单元构成。它们之间经过同享的体系总线衔接在一起。
当处理器向一个硬件办法宣布读写操作指令时,该硬件办法在其自己的地址解码器的协助下向数据总线上发送对应的呼应信号。在这里,咱们能够认为是处理器建议的硬件/软件通讯指令,而FPGA则是作为一个隶属单元做出回应。由于在处理器建议初始指令后,就由可配置办理器来担任办理FPGA编程。这样一来,就完结了处理器和FPGA的并行运转。
如图3所示,咱们挑选Java作为软件渠道,而且装载了一个嵌入式操作体系为Java实时运用程序供给根本的服务,比方线程和其它硬件办理等。
经过体系办理器,能够从长途服务器下载Java运用程序。体系办理器首要完结了下面3种协议: