Recognition of Hand-Drawn CircuitsVijay ShahRavi PalakodetyProject Goals• Input a hand-drawn circuit• Recognize components and values• Understand connectivity• Generate primitive SPICE netlist• Output to LCD monitorLayout• Draw components on 8x8 grid• Each grid block 64x64 pixels– Component area– Text area• Monochromatic image (binary)Drawing Rules• Entire component must fit in one grid block• Appropriate borders must be crossed• Component must avoid designated text area• Drawings must be “reasonably” accurate• Limited number of components• Text must follow separate text gridRecognitionMemory HandlingComponent RecognitionText Recognition Store InformationMinor FSMs to recognize different componentsComponent Recognition• Decision tree method• Identify important characteristics– Number of terminals– Continuous?– Important “Gaps”Decision TreeOriginal ImageVertical 2-Terminal ComponentsHorizontal 2-Terminal Components1-Terminal Components (Top Edge)3-Terminal ComponentsRecognized Component Uniquely Defined by Edge CombinationEdge CheckTest for Discontinuities, Gaps, ThicknessRecognized ComponentText Recognition• Recognize text in 8x6 blocks• Use pads to recognize 10 numbers and 7 letters• Currently, users need to use straight lines• More pads will be added to allow the user greater freedom in writingVideo Block DiagramRaw Circuit DisplayIdeal Circuit Block DiagramIdeal Circuit State Transition Diagram and Example OutputSpice Display Block DiagramSpice Display State Transition Diagram and Example OutputV0 0 1 DC 5R0 1 2 100kQ0 2 3 3 NPNAnalysis Flowchart• Depth-First Search with Enqueued List• Enqueued List is 64-bit register• Stack module abstraction• Node RAM holds values for all possible nodesTimeline• Current Status: Partial component recognition, raw circuit display• April 22: Component recognition, ideal ckt display without nodes• April 26: Basic serial communication, ideal ckt display with nodes• May 2: Load circuit bitmaps over serial line, Spice Display• May 9: Save spice files over serial
View Full Document