Presentation Part A - High Speed Digital Systems Lab

High Speed Digital Systems Lab.
Performed By: Itamar Niddam and Lior Motorin
Instructor: Inna Rivkin
Bi-Semesterial.
Winter 2012/2013
Technion
Israel Institute of Technology
Department of Electrical Engineering
Electronics
Computers
Communications
Core 0 : A9 ARM
Core 1 : A9 ARM
Processing
System
running Android
Software
application
AXI4 BUS
Peripherals
Controllers
Hardware
accelerator
Programmable Logic
Standard SOPC approach
• The Hardware is constant
• The user can only switch between application
Task specific - Software
2
Using Dynamic Partial Hardware Reconfiguration
Core 0 : A9 ARM
Core 1 : A9 ARM
Processing
System
running Android
Application
#1
#2
AXI4 BUS
Peripherals
Controllers
Custom IP
Hardware
Acceleratior
#1
#2
Programmable Logic
New approach
• Partial dynamic hardware reconfiguration by OS (Android)
• Hardware system dynamically changed & adapted to a specific application.
The user controls the software and the hardware
• The hardware change is done at runtime by application & OS
Task specific - Software & Hardware
3
for(i = 0; i < height, i++){
for(j=0; j < width; j++){
x_dir = 0;
y_dir = 0;
if((i > 0 && (i < (height-1)) && (j > 0) && (j < (width-1))){
for(rowOffset = -1; rowOffset <= 1; rowOffset++){
for(colOffset = -1; colOffset <=1; colOffset++){
x_dir = x_dir + input_image[i+rowOffset][j+colOffset]* Gx[1+rowOffset][1+colOffset];
y_dir = y_dir + input_image[i+rowOffset][j+colOffset]* Gy[1+rowOffset][1+colOffset];
}
}
edge_weight = ABS(x_dir) + ABS(y_dir);
output_image[i][j] = edge_weight;
}
4
Sobel Filter
5
6
Core 0 : A9 ARM
Core 1 : A9 ARM
Processing
System
running Android
Sobel
Software
application
AXI4 BUS
Peripherals
Controllers
Sobel
Hardware
module
Programmable Logic
Sobel Filter
7
8
9
HDMI
Core 0 : A9 ARM
Processing System
FMC
Core 1 : A9 ARM
AXI4
UART
LogicBricks
HDMI
Controller
Custom IP
Programmable Logic
USB 0
10
Processing
System
•
•
•
•
•
•
•
The Xilinx ZC-702 Board for Zynq-7000 have
Android apps communicates with hardware
the ability
Android
relies
to run
on Android
Linux kernel
OS on
2.6.
it.
by System services.
Android porting
Hardware
accelerator
supplied
drivers
by Iviea
are
System service represents an Hardware
FMC Touch screen
implemented
by loadable
controller
kernel
supplied
modules.
by
abstraction layer between the App and the
Xylon. interact with hardware by memoryDrivers
kernel driver
mapped IO.
Linux Kernel
Programming
Logic
ARM CPU0
Xylon GPU
Driver
Xylon
Hardware
Zynq
ZC-702
11
Partial ReConfiguration
Service
Processing
System
Custom IP
Module
Driver
Programming
Logic
Custom IP
Linux Kernel
ARM CPU0
Xylon GPU
Driver
Xylon
Hardware
Partial
Configuration
Driver
Zynq
ZC-702
12
App
Code
Bitstream
Processing
System
Partial ReConfiguration
Service
Custom IP
Module
Driver
Programming
Logic
Custom IP
Linux Kernel
ARM CPU0
Xylon GPU
Driver
Xylon
Hardware
Partial
Configuration
Driver
Zynq
ZC-702
13
APP
System
service API
Binder
System Server
Custom
Service
JAVA
JNI
C
• Make
ourbasic
system
service
available
The
custom
service
run within
Supplies
Hardware
functions
Abstraction
on
Layer
thethe
through
the SDK.type, using the
System
server.
given hardware
API.
Supplies
abasic
basic
interface
• The
end the
user
application
provided
Enables
system
server
to
driver.
interface
between
Theby
custom
linux
device
driver.
the
APP
and
the
custom
the
client.
reach
the
HAL.
• between
Provided
the
service
by
and
the
the
driver
custom
developer.
new
.ko service
file located
in
/dev/…
has been
created.
• Bridging
methods
called
by
A sharedthat
hardware.
library
located
in the
in JAVA
nativethe
code
in
• user
/system/lib...
Essential
for to
bridging
native
order
to use
the HAL.
and Java
code.
HAL API
HAL module
Driver
module
14
Xilinx Platform Studio
Xilinx SDK
VIVADO HLS
C/C++ for Android Kernel
Java Eclipse
15
Xilinx Platform Studio
Xilinx SDK
VIVADO HLS
• XPS & SDK - Setup and configure the base system (which can run
Android OS).
• Xilinx Vivado HLS - implement a custom IP module using a native
programming language (C).
• XPS & SDK - Integrate the custom IP with the system.
16
C/C++ for Android Kernel
• Developing the custom device driver in C.
• Developing the HAL (Hardware Abstraction Layer) which
supplies a simple interface between the user App and the
custom hardware.
• Customizing the Android Kernel in order to provide the partial
reconfiguration OS support.
17
Java Eclipse
• Developing a custom android application in java, which can use
the HAL in order to get the services provided by the custom IP
we implemented.
• Developing the system service which is a part of the HAL.
18
 Setting up a development environment to modify and compile
Android OS & Linux kernel.
 Configuring a Fully working Android OS system on ZYNQ with a touch
screen.
 Custom IP development & Hardware integration using Xilinx tools.
 Developing a simple Linux device driver (char device) which can be
accessed (Read / Write) by the Android on Zynq.
 Solving Android privileges limitations by writing a service which can
communicate with our char device.
 Enabling a smooth access to the custom hardware from any typical
Android JAVA code.
20
• Learning the partial reconfiguration technology deeply in
order to get the ability to operate it by the OS.
• Developing the Partial reconfiguration driver and service in
order to support Dynamic Hardware.
• Writing more complicated Android drivers to support AXI-4
Streaming for video processing
• Writing efficient hardware with Vivado HLS and integrate it
with the system.
Thank you !
22