Академический Документы
Профессиональный Документы
Культура Документы
Abstract
In this paper, we address the problem of designing
embedded system architecture for emerging
information appliances such as PDAs and
IMT2000
terminals.
These
systems
are
characterized by multiple-application support and
network connectivity. Programmable architecture
is an efficient way of implementing the multipleapplication support. We propose an FPGA-based
embedded system architecture using Java as a
software platform. We define a set of native
communication APIs for the communication
between Java application and the FPGA.
1. Introduction
In traditional embedded systems design, the key
objective is to find an optimal architecture to perform a
single, specific application [1] [2]. For the system
architecture, ASICs and processors are considered as
typical build blocks. The designer performs partitioning
of the application onto ASICs and processors according
to the performance metrics such as processing power,
flexibility and power consumption. Recently emerging
embedded systems in the area of information appliance
(e.g. PDAs and IMT2000 (International Mobile
Telecommunication) terminals [3]) are different from
traditional embedded systems in the following aspects:
1) They run multiple applications such as web-browsers,
audio/video communication applications, etc.
2) They require network connectivity.
Designing a multiple-application embedded system
requiring considerable processing capability for each
application is a challenging task from the viewpoint of
the traditional design approach which gives in general an
architecture that is good for only one application but is
inferior or just not suitable for other applications. Thus,
in many cases, the designer will fall into costly and
sometimes even non-convergent re-design loops to
satisfy cost and power consumption constraints, or at
best will produce over-design. One way of solving such
problem is to introduce programmability to the system
architecture so that the embedded system can be adapted
to new application.
For the purpose of introducing programmability to
the architecture, we embed FPGAs into the system. We
2. Related Work
The most closely related work can be found in [6],
where Fleischmann et al. present a prototyping
environment for a re-configurable Java-based embedded
system. The environment consists of a Pentium PC and
an FPGA prototyping board connected via a PCI bus.
Processor bus
Data
Bus
Address
decoder
Control
buffer
Input
buffer
HW
method
core
Address
Bus
Output
buffer
FPGA
Local
Memory
Shared bus
Processor
Network
Interface
FPGA
Configuration
Controller
Bitstream
Storage
Java Application
Processor
address space
System Manager
direct
physical
address
HW
methods
(FPGA)
Processor
4. HW/SW Communication
When we use Java as a software platform, the
application cannot access the underlying hardware
directly. That means, in the proposed architecture, the
application running in the JVM on processor cannot
access the physical address region mapped to buffers of
HW methods in the FPGA directly. This can be solved in
two ways:
1) Modify the JVM to have direct access service to the
physical address of the processor.
2) Develop a native communication library so that an
application can access it through Java Native
Interface (JNI) with some overhead.
While the first one will result in overhead-minimal
solution, it is a painful job to modify the JVM internals
when we consider that we should follow the latest
releases of JVM. Thus, we have developed an extra
native communication library outside of JVM and
introduced a JNI layer (Figure 4 and Figure 5). In Figure
4, XXX represents primitive Java data type such as
integer, float, double, etc.
The Java application accesses the native library
through the JNI layer shown in Figure 5. We have shown
the pseudo code for a setParam( ) method as an
example. In the figure, CID is an object that contains
buffer address information of HW method. The CID is
defined uniquely for each HW method after the
hardware/software partitioning so that the address and
size of buffers are all determined during application
design time. Furthermore, since only one configuration
controller is present in the system architecture, we cannot
program two or more HW methods into an FPGA at the
same time. For this purpose, a dummy variable
ConfigStatus is included to reflect the current status of
a configuration controller. To ensure that no multiple
methodA( )
{
// do something..
// cid2 = id of HW method m2
1 HWInteface.configHW(cid2);
2 Object P = new Integer(4);
3 HWInterface.setParam(cid2, P);
4 HWInterface.startHW(cid2); // HW start
5 int a = objA.m1(3); // SW
6 Object R = new Integer( );
7 while (HWInterface.getStatus(cid2) = 0)
8
; // wait until HW method finishes
9 HWInterface.getResult(cid2, R);
10 int b = ((Integer) R).getValue( );
11 int c = a + b;
// do something..
}
5. Experiments
We have implemented an embedded system board
with an ARM710T processor [11] and a Virtex FPGA
[12]. The board contains a network interface, and two
debug interfaces, a PCI host interface and a serial port
(Figure 7). We have ported a commercial embedded OS
and a small Java runtime environment on it.
Debugging interface (PCI)
ARM710T
Network
Interface
PLX
Network
Interface
XC 4085
UART
EPROM
sdram
Cycles
FPGA
Processor
Total
RFPGA
Configuration
controller
SRAM
SRAM SRAM
DCT
BitGen
1199
Quant
Point, PB
Zigzag
MBCollect
Dequant
BitGenerator
IDCT
SINK
1.
2.
3.
MB, TRB
4.
Restore
Inter frame
1170230
1327475
2497705
Control
Mode, MV
Intra frame
1168200
1140649
2308849
7. Acknowledgements
QP, Mode
Mode, QP
Predict
Predict
1640
Reference
Point, PB
SRC
Dquant
450
MBDist
Quant
569
Serial
port
Dct/IDct
1190
MBCollect
FPGA
5.
6. Conclusion
In this paper, we present a networked embedded
system architecture, which aims at multiple-application
6.
7.
8.
9.
10.
11.
12.
13.