Title: Virginia Commonwealth University
1 Virginia Commonwealth University School of
Engineering DEPARTMENT OF ELECTRICAL AND COMPUTER
ENGINEERING Â Embedded Systems-EGRE
631 TECHNO Toward an Interactive Environment
for Embedded Systems Design   Â
- Fadi Obaidat
- Dr. Jerry Tucker
- April 2009
- Â
2- Embedded Systems
- Embedded System is a special purpose/custom
design computer used to control certain device. - Need to be able to work with very limited
resources (memory, power) - and often has to work in a real-time environment.
- Employ a combination of hardware and software to
perform a specific function. - It is typically part of a larger system that may
not necessarily be a computer and works in a
reactive and time-constrained environment.
3Using Of Embedded Systems
- Cars Industry
- Flight Control Systems
- Mars Exploration Rover
- Medical equipments and many other applications
4FPGAs Based Embedded Systems
- High performance.
- Design Flexibility.
- Low cost.
- Reconfigurability.
5Objectives
- Establishing an interactive environment which
enables us to insert or replace HW/SW
modules/applications written in VHDL/C. - Building Real Time Hardware Simulation to allow
the user to see the results in real time.
6About TECHNO System
- Xilinx Spartan 3E FPGA 500K
- HDL custom design, coprocessor
- Soft-core MicroBlaze Processor
- C either simple applications or under uClinux
- HDL interfaces for the monitor and keyboard.
- To achieve and test the objectives of the
project, and to show the capabilities of the
system, Two HW/SW applications were implemented
and chosen because of the need to the HW speed
and time-accuracy, and the SW flexibility. - Frequency Counter
- Cycle Accurate Counter
7Components and Resources
- Input Units 8-Swithches, 4-Buttons, and or
Keyboard. - Output Units 8-LEDs, 4 digits 7-Segment-Display,
Monitor or Data Show. - Logic and Processing Resources 500K Spartan 3E
FPGA, and Softcore MicroBlaze processor (part of
500k).
8Digilent Nexys2 Board
http//www.digilentinc.com/Data/Products/NEXYS2/Ne
xys2_rm.pdf
9Spartan 3E
10Main HDL Modules
- Monitor Interface
- ROM (.coe file)
- RAM (Look Up Table)
- Character Converter
- Clock Divider
- Frequency Counter
- Cycle Accurate Counter
- ... Not in use Keyboard Interface, buttons and
7-Sigment-Display
11 Block Diagram of TECHNO
12In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
13In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
14RAM LUT(206)
- Inputs row_address5..0, column_address5..0,
input_data3..0, clock_25Mhz. - Outputs output_data3..0.
- Function takes the results of any algorithm and
time stores them in specific
registers attached to specific location
on the screen, in the same time it outs
its contents to the ROM through
character converter module.
Value to be shown on screen at this moment
Current location address on screen
row_address5..0
column_address5..0
input_data3..0
0001
output_data3..0
Data to be shown on screen
clock_25Mhz
RAM (206)
15In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
16In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
17Character Converter
- Inputs RAM_out3..0 clock_25Mhz.
- Outputs Character address5..0.
- Function Get the address of the number or
character that will be shown on screen
and pass it to the ROM to be displayed on
the screen.
Data goes to the ROM, addres of that char.
Output of RAM
RAM_out3..0
01117
100111
Char. add5..0
clock_25Mhz
Character Converter
18In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
19In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
20ROM(6488)
Inputs char_address5..0, font_row2..0
font_col2..0. Outputs rom_mux_output. Function
used to generate dots on a video display .
Each character is represented by an 8 by 8
pixels binary. Font data and its
addressees are stored in a .coe memory
initialization file.
Address of A 1
char_address5..0
000001
1 at each pixel we want to make dot on
font_row2..0
rom_mux_output
000-111
font_col2..0
000-111
ROM
21ROM contents
This is an example That show how the Binary of
the character A stored in the .coe file
(ROM) Char address 000001 Font row
000-111 Font col. 000-111
- Address Char. Data
- 000001000 00011000
- 000001001 00111100
- 000001010 01100110
- 000001011 01111110
- 000001100 01100110
- 000001101 01100110
- 000001110 01100110
- 000001111 00000000
22In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
23In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
24Monitor
Inputs red_out, green_out blue_out,
horiz_sync, ver_sync. Outputs dots drown on
screen. Function takes the outputs of the
monitor interface and draw them pixel by
pixel on screen.
?
?
?
?
?
?
Monitor Pins
25Monitor Interface (60 frame/sec)
- Inputs 3-red, 3-green, 2-blue, clock_25Mhz.
- Outputs 3-red_out, 3-green_out, 2-blue_out,
horiz_sync, ver_sync,
pixel_row9..0 pixel_column9..0. - Function generates horizontal and vertical
signals to synchronize the drown
eight bit colors on each - pixel.
go to the RAM and ROM to make sync between pixels
and Char
Tell monitor to refresh anew row of 640pixels
3-red_out
3-green_out
red
0
2-blue_out
green
0
horiz_sync_out
blue
1
ver_sync_out
clock_25Mhz
pixel_row9..0
pixel_column9..0
Monitor
Monitor Interface
http//www.altera.com/literature/univ/upds.pdf
26In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
27In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
28Clock Divider
- Inputs clock_50Mhz.
- Outputs clock_25MHz.
- Function used to generate appropriate, a 25MHz,
clock signal to be used by monitor
interface.
25 MHz
50Mhz
clock_50Mhz
clock_25MHz
Clock Divider
29In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
30In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
31TECHNO Applications
- Frequency Counter
- Measure the frequency of an external signal.
- Cycle Accurate Counter
- Measure the number of cycles needed to execute
certain C function or program.
32In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
33In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
34Frequency Counter
- Inputs IC12 pin5 external clk and 50MHz clk.
- Outputs 1-8 decimal digits represent the
frequency in Hz. - Function Counting the number of positive edges
of the guest signal and store the result
in 8 registers to be displayed on the
screen.
Reg0
Reg1
Reg2
Reg3
Reg4
Reg5
Reg6
Reg7
Guest CLK
Frq_value 32..0
frq_clk
50Mhz
clock_50Mhz
Frequency Counter
35In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
36In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
37Accurate Cycle Counter
- Inputs Start_Done C program and 50MHz clk.
- Outputs decimal digits represent number of
cycles/prog. - Function Counting the number of clocks between
the start flag and the end flag gt Logic
Analyzer . - //C_Function
- Done_Start//01
- Function()
- .
- .
-
-
- Done_Start//10
Start_Done
clks 32..0
50Mhz
clock_50Mhz
Frequency Counter
38In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
39In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
40MicroBlaze
- Soft Core - reduced instruction set computer
(RISC) - 32-bit general purpose registers
- 32-bit instruction word with three operands and
two addressing modes - 32-bit address bus
http//www.xilinx.com/support/documentation/sw_man
uals/mb_ref_guide.pdf
41In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
42In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
43Keyboard
- Inputs mechanical input by user hand.
- Outputs serial data keyboard clock
- Function send a serial data to the keyboard
interface , each 8-bit serial data
represent a scan code to the pressed
button.
If you pressed button A the keyboard send
00011100
Time 7
Time 0
?
?
Keyboard PS/2pins
44Keyboard Interface
- Inputs keyboard_clk, keyboard_data, clock_50Mhz,
reset read. - Outputs scan_code7..0 scan_ready.
- Function converts the serial data from the key
board to parallel format to produce the
scan code output.
Ex
Ex
keyboard_clk
Scan code of A 1C
scan_code7..0
keyboard_data
Serial data of A 00011100
clock_50Mhz
reset
scan_ready
read
Keyboard Interface
45In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
46In this area You can add or replace any VHDL
module or C function.
Interface
Monitor
ROM
Cycle Acc. Counter
Monitor Card
Keyboard Card
Keyboard
Conv. Number
Char. Converter
RAM
Frequency Counter
Clock Divider
50 MHz
IC12 pin5
47Converting Number
- Inputs scan_code7..0 clock_50Mhz.
- Outputs total_binary_no.7..0.
- Function level Iconvert the scan code of the
number to its real value . - level II calculate the total number
entered by keyboard .
Data from keyboard intr. After conv. it to its
real values
254 00000010 00000101 00000100
Data to VHDL Module
Scan code of 2
11111110
20E00001110
scan_code7..0
total_binary_no.7..0
(2100)(510)(4)
clock_50Mhz
Converting Number
48Device Utilization Summary
- Selected Device 3s500efg320-4 Number of
Slices             1464 out ofÂ
4656  31 Number of Slice Flip Flops   Â
1767 out of 9312  18 Number of 4 input
LUTs      2431 out of 9312  26 Â
    - -Number used as logic        Â
2085    -Number used as Shift registers Â
 90     -Number used as RAMs      Â
 256 - Number of IOs            Â
29Number of bonded IOBs      29 out ofÂ
 232  12 Number of BRAMs        Â
 7 out of  20  35 Number of
MULT18X18SIOs   3 out of  20  15Â
Number of GCLKs          4 out
of  24  16 Number of DCMs       Â
   1 out of   4  25Â
49Conclusion
- In this project we built an interactive
environment for embedded systems design. This
environment allows the end user to insert C
application and/or HDL custom design and get real
time simulation through the monitor. - It allows to test the performance of a certain
SW or/and HW application. In addition to that, it
allows evaluating the efficiency of using
coprocessor technique.
50References
- http//www.digilentinc.com/Data/Products/NEXYS2/Ne
xys2_rm.pdf - http//www.xilinx.com/support/documentation/data_s
heets/ds312.pdf - http//www.xilinx.com/support/documentation/sw_man
uals/mb_ref_guide.pdf - http//www.altera.com/literature/univ/upds.pdf
51Any Question