July 2009
S M T W T F S
« Sep    
 1234
567891011
12131415161718
19202122232425
262728293031  

Categories

Wave/Function Generator

Microelectronic

Georgia Institute of Technology

Function Generator Screen Shot 1

James Harris
David Colvin

Introduction

Most modern media devices store audio signals in digital form. The device later translates the digital signals into analog signals. Then, these analog signals are use to operate CD players, sound cards and video devices. To perform such tasks, those devices integrate digital-to-analog converters or DACs.

Objective

Our project will explore the TLV5628CN part which is an 8 channel, 8 bit serial device. We will employ this part to generate signals similar to a function generator. Using the keypad on the PIC-690, the user can enter data to generate signals such a sinusoid waveform on a particular channel. The PIC-690 transfers that data via serial communication to the PIC-913 chip. This chip will process that data and output the user-desired signal on the external DAC. Unlike the MSP430 counter-part which is usually found in high-end hi-fi systems, the TLV5628CN part limits the maximum output frequency. So, the major objective of our project is to accurately display the signal in a small frequency range on several channels. To overcome this challenge, we have to use the various techniques we have learned in lab.

Project Description

Normally, function generators can produce signals of any waveform at frequencies in the order of hertz. To test a particular system™s response to an incoming signal, the user would input generated-signals into the system. Some example waveforms are sinusoid, ramp, triangle and square functions.  The frequencies usually range from 1Hz to 10 MHZ or more.  Some function generator models may have waveform editors, greater frequency ranges or multiple channels.

Our function generator can produce the four basic waveforms at a frequency of ~30Hz with 64 points per period resolution. To perform this task, we used a digital-to-analog converter or DAC. Our project utilized the TLV5628CN part which is an 8 channel, 8 bit serial device. Using the keypad on the PIC-690, the user can configure the PIC-913 to output signals on the DAC.
Mainly, The PIC-690 transfers the user-inputted data serially to the PIC-913 chip. This chip processes that data and outputs the user-desired signal on the external DAC.

Technical Description

The Terra Term terminal reads incoming data from the PIC-690 UART. The PIC-690 prompts the user to choose a waveform and select a channel. The Terra Term terminal also receives instant feedback from the user pressing keys on the keypad. The PIC-690 uses two state tables. The first state table de-bounces the user input from the keypad. The second state table encapsulates the first state table. The second state table controls the overall flow of the messages which prompts the user. The user makes a selection via the keypad on the PIC-690 and presses the # key to accept the value. If the user enters a invalid value, the PIC-690 refreshes the menus and prompts the user with an error message.
The PIC-690 displays the Waveform menu first.  After the user presses the # key, the PIC-690 displays the Channel menu. After the user selects a waveform and channel the PIC-690 transfers that data to the PIC-913 using a three wire interface. The PIC-913 and PIC-690 shares two ACKs and one DATA line. The PIC-913 outputs a bit on the DATA line and toggles its ACK1 line. The PIC-690 reads the DATA line and toggles its ACK2 line. The algorithm transfers bits asynchronous on the raising and falling edges of the ACK lines.
After the PIC-690 transfers the data to the PIC-913, the PIC-913 updates the channel configuration table which is a table of table pointers. These table pointers will point to one of the four lookup tables: sinusoid, triangle, ramp and square waveform. These lookup tables contain an array of pre-calculated values of the four waveform functions. At initialization the “channel configuration table elements point to a special zerotable. When the PIC-913 is not receiving new configuration data its main loop is updating the value in each channel of the DAC using the LOAD, CLK and DATA lines.  The main loop updates each channel with the next value in its corresponding waveform lookup table.

Anomalies and Problems

In order to produce usable waveforms on all channels, some optimizations were made.  First a faster clock speed was required to execute all the code for updating the DAC in a timely manner. An external 15 MHz oscillator was used to nearly double the internal clock speed.  A lower resolution waveform was used to decrease the period of the waveform.  Originally the lookup tables contained 255 points per period, and that was reduced to 64 to decrease the time it took to output a period of a waveform.  The code for transmitting to the DAC was streamlined to reduce the number of conditional statements at the cost of program space.
After the function generation code on the PIC-913 was working the SPI interface between the PIC-690 and PIC-913 stopped working.  In order to circumvent this problem a bit-banging routine was used to transfer configuration data between the PIC-690 and the PIC-913.
The increased clock rate on the PIC-913 allowed it to initialize before the PIC-690 causing errors to occur at startup.  In order to fix this problem a delay was added in the initialization routine on the PIC-913.

Object Draw Design Project

Software Engineering Languages and Tools

The University of Iowa

Introduction
The ObjectDraw is an application, which allows users to collaborate remotely across the internet or network. The user can share their artwork with other users in the session. The software is peer-to-peer software, which allows anyone to start a new session from any location. Once the user creates the session, allow can join that remote session on the network. The user can develop new drawing tools and introduction these tools into the session at which the tool is distributed to the other users.

Any user can use these tools to doodle on the canvas. After the session is complete, the users can save their artwork. The administrator of the session can pass control to other users in which he can control who can draw on the canvas. This application is portable. The user can create or join sessions on anyone network. This application can run on multiple platforms. A user with the Linux operating system can communicate with Windows users running the same application. This application is ideal for personal and business solution.

Conclusion

The ObjectDraw is an application, which allows users to collaborate remotely across the internet or network. The first major team decision was choosing the language, Java or wxWidget for C++. The Java language was more feasible because it is cross platform. The wxWidget requires more advance C++ knowledge. Also, Java is widely used. The next decision was deciding to use DatagramSocket or Java Sockets. The DatagramSocket did not make sense for usage in our application and does not have a continuous connection. The DatagramSocket established only UDP connections. The application needed a continuous connection, so the team decided to use Java Sockets. After using Java Sockets, it did not meet the project specifications. The Java Socket crashed when sending objects across the network. This problem forced the project to use the RMI technology. RMI handled the transmission of serialized objects reliably.
The team designed the application as a dynamic server or p2p application. The dedicated server required a dedicated computer. Developing the application as a p2p application is portable and can be easily be setup by anyone running the application. The team tested the program through the whole coding process. The program was successfully completed using RMI as the backend.

Team Members
James Harris
Kiran Kasamesetty
Fan Yang
Jack Wise

 Screen Shots

Object Draw Screen Shot 1PPort Screen Shot 7Object Draw Screen Shot 7

Parallel Port IO Interface Project

Senior Design Projects
Georgia Institute of Technology

Executive Summary:

Professors, students and engineers in industry often work on projects that require sophisticated data communication interfaces to provide inputs or to measure outputs from their projects. These interfaces might be digital or analog in nature. Scenarios where multi-line digital input/output interfaces are required range from basic debugging to providing serial/parallel/I2C etc. inputs to ICs on PCBs. One might also need input/output analog interfaces to provide inconveniently valued voltages to power supply rails, for feeding a signal to an onboard part at a specific frequency or even detecting voltage values at certain nodes for debugging.

Often engineers resort to using off-the-shelf products like DAQ boards made by well known companies. These products might be reliable, user-friendly, and readily available but are often very expensive and therefore out of the limited budgets for many users like students and hobbyists working on EE projects. Furthermore, these products come with standard non-customizable functions and often converting data going into and out of these products turns into a minor project by itself. More often that not, one needs to install these DAQ cards onto the motherboard of a PC and go through complicated startup procedures in order to customize the PC to best use the card instead of the other way around. Also, in the rare circumstance that a part on these DAQ card stops working, the user neither has the required information nor the legal right to modify or replace the part.

For these reasons and many others there is a need of a cheap user friendly device that can enable a user to perform basic debugging and data monitoring tasks. The project described in this report allows users to make an easy to use IO system based on the computer’s parallel port. The device makes up for the deficiencies mentioned above by having a design that allows the user to replace malfunctioning parts. Also, the software created for this project, which the engineer would use to interface with the device is user-friendly and contains tools that allow the user to write code to make custom programs so that the user can use the board however he or she wants to for different projects. The board is priced well below off the shelf solutions and easily affordable by when compared to a typical student project budget.

Introduction:

The goal of this project is to create a device that can be easily built and used by student project groups, professors and hobbyists for digital and analog data monitoring and debugging applications. This is achieved by implementing the hardware design described in this report on a Printed Circuit Board which can be connected to the parallel port of a PC. The PC would run the necessary device drivers imported by a user interface both designed as a part of this project. This software would allow the user to communicate with the hardware on the PCB through control signals and general input/output lines on the parallel port thereby enabling the user to use the inputs and outputs as he or she wishes. The figure below is a basic big picture representation of the project.

PPort Schematic

In order to enable the above mentioned functionality, flexibility and platform independence the following design specifications need to be met.

  • The PCB should have 8 Analog inputs and 8 Analog outputs.
  • The PCB should have 8 Digital inputs and 8 Digital outputs.
  • The PCB should be able to operate at 3.3V and 5V power supply levels in order for the board to interface with TTL and CMOS parts.
  • PC parallel ports operate at TTL logic levels and the parts on board should be able to interface with the Parallel port smoothly without causing damage to the PC Parallel Port or the board. In order to do this, the inputs to the board need to be buffered and the required voltage conversion needs to performed on the inputs.
  • In order to provide the user with the option of using more than 8 input / output ports the PCB should have the ability to be cascaded with identical boards thereby providing input/output ports in multiples of 8.
  • The hardware should be equipped with the required device drivers and User Interface software which can be installed on the target PC, that the user can use in order to communicate with the parts.
  • Parts need to be chosen so that they are easily replaceable in the event of a part malfunction.

PPort PCB

Conclusion

It was concluded that the product design is promising although the actual PCB prototype was unsuccessful. The hardware design of the product is innovative and allows for cascading multiple boards. It is recommended that the same basic hardware design be used in future version of the project. The hardware design uses a minimal number of parallel port pins and most importantly allows the implementation of the cascading feature which is a very marketable and useful feature. The software is also very user friendly. Since the protoboard implementation of the project was successful, it is recommended that the PCB implementation of the project be concentrated on in the future with a few minor changes in hardware and software designs as deemed necessary. In hindsight, it would have been more advisable to assign more than one person to work on the software as had been done for all other tasks. This would reduce dependence on one person and result in better coordination. Moreover, it would have been advisable to allocate more time to PCB development, testing and debugging. This was not done due to minor changes made to the hardware on inclusion of the transceivers. Moreover, since the proto-board implementation had been successful, confidence prevailed on the chances of the PCB prototype being instantly successful as well. The issues presented by the PCB prototype testing were more or less unanticipated. The only cause of the PCB prototype being unsuccessful was a soldering problem with the transceivers. Expert help should have been sought while soldering the remarkably tiny transceiver parts. The parallel port group believes that on eliminating soldering related issues on the PCB, all tests would be successful. Although this problem was discovered on investigation, it could not be fixed due to lack of time.

Screen Shots of Software
PPort Screen Shot 1PPort Screen Shot 2PPort Screen Shot
PPort Screen Shot 4PPort Screen Shot

Team Member
James Harris
Zaheer Ahmed
Pranav Rastogi
Amol Desai
Ankit Khanna

Su-doku Rain v1.2

Sudoku Rain LogoÂ

The new Su-doku Rain 1.2 packs better music, unlockable levels, adventure mode, better graphics, records best times and more than 110% percent better than the original Su-doku Rain. Read about all the features that make the new Su-doku Rain the best puzzle game ever.

Solving a Su-doku puzzle can be extremely tricky; however, the rules of the game are pretty simple. Su-doku is a grid of 9-by-9 squares made up of nine 3-by-3 regions. Some of the regions numbers are given. Solving a Su-doku puzzle does not require knowledge of mathematics. The goal is to fill in the empty square, so that each column, row, and region contains the numbers 1 through 9 exactly once.

Sudoku (sÅ«-do-ku), also known as Number Place, is a logic-based placement puzzle. The aim of the puzzle is to enter a numerical digit from 1 through 9 in each cell of a 9×9 grid made up of 3×3 subgrids (called “regions”), starting with various digits given in some cells (the “givens”); each row, column, and region must contain only one instance of each numeral. Completing the puzzle requires patience and logical ability.

Features

  • Three difficulty levels (Easy, Normal, Hard)
  • Sudoku Puzzle Generator
  • Sudoku Puzzle Solver
  • Print your favorite puzzle
  • Save your Puzzle to solve later
  • Un-Lockable Levels
  • Adventure Mode
  • Better graphics, music and effects
  • Twice the fun compare to Su-doku v1.0
  • A wonder gift for children and adults

Screen Shots
Sudoku Rain Screen Shot 1Sudoku Rain Screen Shot 2Sudoku Rain Screen Shot 3
Sudoku Rain Screen Shot 4

Implementing Graph Algorithms for Satellite Images

Graph Algorithms & Combinatorial  Optimization Project

The University of Iowa

Introduction

Shortest path graph algorithms are very important component of satellite image processing. Imagine of a satellite taking aerial photos of city streets and highways. Graph algorithms can identify those streets, roads and highways. A GPS device can take those images and find the shortest path from one destination to another, so the device has to perform graph search algorithms on the image, which will find the shortest path.

The device can run breadth-first search algorithm, which is one of the simplest algorithms for searching a graph. This algorithm can start at the source point and systematically search the edges to every reachable vertex. The algorithm iterates this same process on each reachable vertex to the next reachable vertex.  It uses a FIFO queue to store the vertex. The FIFO stores the reachable vertexes in the queue.

The device can run a heuristic graph search such as A* algorithm. This algorithm will only search vertexes with minimum distance from itself to the end vertex. For simplicity of this algorithm, it first establishes a priority queue, which sorts every vertex in the queue from smallest to greatest distance, so it searches the vertexes with the minimum distances first.

Breath-First-Search

Breath-First-Search

A* Algorithm
A* Algorithm

Embedded System VoIP Project

Embedded Systems Design

The Georgia Institute of Technology

The Idea
Design a VoIP Phone using the state-of-the-art operating system, Windows CE 6.0. The VoIP Phone uses a character-based LCD, keypad with handset and ICOPTechs eBox. This device can be used to receive and make calls over the internet. From anywhere around the world, the calls are virtual free.
The Proposal
We are designing an embedded VoIP application as an alternative to other telephony applications, which are often pay services. We will be using the eBox to mimic the hardware that would be present in a real phone. Windows CE will provide most of the VoIP functionality and protocol processing. The user interface includes a headset, keyboard, and a Phidgets LCD display. The display will provide call information to the user such as number dialed, length of call, and user id.
For demonstration purposes, we will use only two eBoxes to simulate a call between two users. However, the application will have support for multiple users.
Possible future extensions to this project include a DNS server to allow dynamic IP addresses for the eBoxes or a headset that has speech recognition to allow the user interface to include voice dialing.
The Device
Our device is state-of-the-art, and its one of the first devices to uses the new Windows CE 6.0 Operating System. This project uses the Microsoft Real-Time Connection library with built-in Voice Over Internet Protocols. This Library allow the developer to create a session and add multiple participants to this session which allow conference calls. The methodology is similar to a chat room. First, the user connects to the client. Then the user creates an alias. With this alias, the user can participate in a VoIP session.Design Specifications:Our goal was to build a VoIP telephony device that would emulate the feel of a standard telephone on an eBox base running Windows CE 6.0. We accomplished this goal by implimenting the following parameters.
RTC Client API: The RTC Client API allows the developer to build application that can make phone calls sessions over the Internet.
Phidgets Blue LCD: This device integrates a 20X2 Blue Phidget Text LCD with USB ports that is required to control and power this device. The LCD displays the status of the call: Idle, Connecting, Receiving or In Progress. Once in progress, the timer keep track of the call time length.
Simple Handset: The user can use the headset to talk privately to the participant on the other end.
USD Keypad: The device integrates a 18 key number-based keypad. The user can use the keypad to enter the IP address of the receiving participant, connect and disconnect.

VoIP Picture

Developers

Eshwar S.
James H.
Nick M.
Jeremy J.