Imperium Accelero 9K Group Members Ian Ferguson Nathan Liesch Luis Ramirez Mark Willson
Overview Image Processing / DSP on a FPGA IA9K operates on 96x64 8-bit Grayscale Uncompressed Bitmaps IA9K attempts to streamline sequential filtering algorithms by taking advantage of 2 memory controllers 3x3 Convolution and Linear Filters are the basis of the IA9K Image Processing
Features 8-bit Video Display RS232 Upload / Download LCD User Interface 2 LPM RAM Memory Controllers 3x3 Convolution Module Linear Filter Module
RS-232 Detects data sent serially from PC and converts to 24-bit signal sent to RAM Data can be received at 9600 or baud depending on clock dividers Will only accept data inside valid RS232 packets by sensing start and stop bits. No parity. 10 second timeout
From SDRAM to LPM_RAM SDRAM: Much more capacity (128MB) Pre-built SDRAM controller Requires a complex memory controller LPM_RAM: Easy to implement Can be simulated Simple interface Limited capacity to 106,496 bits
Memory Controller Controls access to ram Developed 3 access modes: Write Read (no handshake signals) Read (with handshake signals) Random access of memory is not required Design implements two instances of the memory controller
Display 96 x 64 image expanded to 576 x 384 resolution 8bit grayscale output 33MHz pixel clock
User Interface User Commands are sent via 2 push buttons (Enter and Select) Menu and Status Messages are displayed using a 2x16 char LCD IA9K Modules are disabled at startup and enabled / disabled as needed by the User Interface Modules are responsible for their own Interactions with other modules
UI Control Flow
UI Data Flow
Filters 3x3 Shift Register 3x3 Convolution Calculation Pixel-by-Pixel Calculations 2 stages of buffering are used in the reading and writing of image data in order to achieve one result every clock cycle
Pixel-by-Pixel Manipulations Sequential access of pixel data Calculate new pixel value independently of surrounding pixels NegativeThreshold
3x3 Shift Register Shift Register is large enough to store 2 complete rows of image data plus 3 additional pixels
2D Convolver the heart of the system is the fully programmable 3x3 convolver 8bit image data and 9bit signed coefficient kernel weights allows for a wide range of filters to be applied blur, sharpen, edge enhance, find edges, and emboss required significant pipelining to match rest of system uses adder trees, pipelined multipliers and dividers to yield one result per clock cycle
Java Convolution Demo
Summary of Filters Light BlurHeavy BlurEdge Enhance EmbossSharpenFind Edge Images generated by GIMP Original
IA9K Stats 7544 / 8320 (91%) Logical Elements Used 98k / 106k (92%) Memory Elements Used 3x3 Convolution Filter takes approx 190us Linear Filter takes approx 185us Max Simulated Frequency ~50MHz RS232 currently runs 9600 bps
Questions? From anyone other than Jason?
Accomplishments 3 forests killed Quad 720 O synchronized rolly chair spin 90m 5-storey paper airplane flight 4:42:54 max simulation length 29 Sun workstation crashes 1500 man-hours of work 24L of beer consumed