390 likes | 571 Views
Design Review: FPGA. David Collins Josh Kimpel Brittany Ransbottom. Needs. The ability to run user-written code. The ability to identify potential use of subfunctional units within user-written code. The ability to modify user-written code to utilize subfunctional units.
E N D
Design Review: FPGA David Collins Josh Kimpel Brittany Ransbottom
Needs • The ability to run user-written code. • The ability to identify potential use of subfunctional units within user-written code. • The ability to modify user-written code to utilize subfunctional units. • The ability to execute a program regardless of the status of reconfigurability. • The ability to implement dynamic partial reconfiguration, the process of physically updating the reconfigurable partitions. • The ability to utilize subfunctional units when running the user-written code. • The ability to interface through I/O. • The physical function/code to be loaded into a reconfigurable partition
Concepts • Design Concepts Evaluated • Image Processing • Edge Detection • Grayscale Image • Segmentation (opening and closing) • Color Detection – People, Objects, Shapes • Background Detection • Pre-Processor • Processor • MicroBlaze • PicoBlaze • Open RISC • eSI-RISC • Subfunctional Units
Image Processing – Edge Detection Pseudocode: for i from 1 to (length – 1) for j from 1 to (width – 1) sum = 0 for a from -1 to 1 for b from -1 to 1 sum = sum + pix[i+a][j+b]*kernel[a][b] output[i][j] = sum Threshold Image Overlay a mask on the pixel and 8 surrounding pixels to determine the probability of an edge Kirsch Mask: 0, 5, and -3 Prewitt Mask: 1, -1, -2 Sobel Mask: 0, 1, -1, 2, -2
Image Processing - Grayscale • Average: (R+G+B)/3 • Lightness: [max(R,G,B)+min(R,G,B)]/2 • Luminosity: 0.21*R + 0.71*G + 0.07*B • Weighted values to account for Human Perception • Planar: Take R, G, or B directly
Image Processing - Segmentation Kernel for the given shape is created Convolved across the image, resulting in an image where the black regions are more connected or more separated depending on the kernel. Ideal for binary images, but can be used on grayscale or RGB values
Image Processing – Color Detection • Requires pre-determined “average” color tone for detection, i.e. searching for items of (27, 150,0) RGB • Can search for exact value, but will not capture well in photographs/images due to lighting, and shades, therefore need to determine pixel distance from desired shade • Can create Gaussian probability distribution for computation prior to image arrival, and then utilize Mahalanobis distance vector to determine likely clusters of desired color • Requires some intensive mathematical computations
Image Processing – Background Detection • If a green screen, or solid background is utilized, color detection would perform this • Edge Detection could be used to determine the largest unique region, and label this as background. This can be improved to verify the consistency of the shade of the background. • Requires many iterations over the image • Replacing the background would require creating a mask of the original image, and filtering in a background image
Pre-Processor Create a Compiler Create a separate program to analyze the code
Subfunctional Units • Partial Reconfiguration • Purpose • Loop Unrolling • Program Optimization
Design Application Level Software Hardware
Application Level File Level
Application Level SFU Selection Level
Software Level • Scripting • SFU matching • Correctly matching functionality • SFU mapping • Finding new SFUs • Connecting to Application Level
Risks Designing a compiler to recognize subfunctional units implement partial reconfiguration on the FPGA (Low) Designing a processor to utilize reconfigurable partitions for parallel computing (Low) The ability to dynamically reconfigure partitions (Medium) The ability to execute various image processing algorithms (Low) The ability to interface with a video input and output (High)