h      g
Home    Background Information    Project Planning and Development    About Us

Project Design

Description
  
Figure 1
Side view of the LED simulation design
    This product will consist of two 8x4 LED arrays driven by an Arduino microcontroller. Each LED array will consist of 32 red LEDs arranged in a 4x8 grid, with 84 smaller yellow and 72 smaller green LEDs connecting the red LEDs in groups of 3.  These smaller LEDs will represent  wordlines (yellow) and bitlines (green). Two red LEDs will represent one memory cell as the red LEDs are direct analogues to the capacitors in DRAM.  There will also be 8 blue LEDs to represent the sense amps.  These will be  placed in the sense amp gap between the two arrays.  

Figure 2
Top view of the LED simulation design
    Two of the bitlines on the right hand side of each array will be used to represent the spare cells in a DRAM memory array.  The bottom word line in each array will also be held in reserve for spare cells in the memory array.

    This LED array will be controllable through two different control schemes, a non computer interface accessed from the body of the product, and a computer GUI.
    The PC GUI will have the ability to insert cell defects into the array, simulated by deactivating a red LED, allow for selection and programing of a single memory cell, represented by activation of the selected red LED, allow for programing of the spare memory cells, and display the waveform of the operation selected as it would appear in a real DRAM module.  This will be accomplished through direct interaction with a virtual array on the screen, with the memory cells clickable to activate or deactivate.  There will also be a drop down menu to select a pre-programmed read/write cycle, a refresh routine, and a cycling automatic pseudo-random read/write operation.
    The Non computer interface will utilize the on-device LCD screen and buttons to allow basic user control of the device.  

The screen will display basic menus, which can be navigated using the directional control pad, the select button, and back button.  From these menus the user will be able to select different options for device operation such as the refresh rate time and whether defects are present.  

The program will default to a sequence of reads and writes on random bit values, but users will be able to select other modes including:  store to 1 specific cell; read from 1 specific cell; perform single refresh routine; and random read/write with refresh routine disabled.  


Figure 3
Flowchart of the user interface

    Because the number of LEDs that must be driven are much larger than the number of outputs on most microcontrollers the LEDs will be connected in a charlieplexed array.  Charlieplexing allows n(n-1) outputs to be driven with n output pins.  It is important to note that only a single output may be driven at a time, so that it is necessary to rapidly switch between LEDs at a rate the eye cannot detect.  

Figure 4
Wiring of the LEDs
   

    The LED’s will be wired in a charlieplex matrix to PWM digital I/O pins on the arduino.  Of these LEDs, 72 will be wired to be turned on independently.  These 72 LED’s will be used to represent the cells and sense amps of the DRAM in the device itself.  There also exists 16 bitlines, with 9 LEDs per bitline, and 8 wordlines with 21 LED’s per wordline.  Each bitline and wordline will have all the LEDs in the line illuminate at once, but because the forward voltage of the LED’s selected is 2.1 V and the supply voltage of the digital I/O pins is 5 V no more than 2 LED’s may be wired in series on a single output pin/input pin combination.  For the LED’s in the bitlines and wordlines, 2 LEDs per output were wired which left a remainder of 16 individual LEDs at the end of each bitline and 8 LEDs at the end of each wordline left over.  These remaining LEDs were wired in the same fashion as those of the cells and wordlines.  

Between each pin on the arduino and the LED array is placed a resistor R1.  These resistors are selected to limit the current through the LEDs that are placed in series with each other in the bitlines and wordlines.  For the LEDs that are not in series with another LED, a resistor R is placed in series with the LED to help fine tune the current through those resistors.  The resistors were selected to ensure the current through the device is what is needed for the forward voltage.  


To drive all these LEDs, an Arduino Mega was chosen for its large amount of preexisting ouptus, as well as its excellent online documentation.  

Figure 5
Wiring of the Arduino Mega

The Arduino Mega will use digital I/O pins 2 through 13 to drive the LEDs on the face of the board.  Each of these pins will run in either high impedance mode, input mode, or PWM output mode depending upon the LED being lit.  The duty cycle the pwm output each pin drives will depend upon the desired brightness of each LED.    Because there are more output LEDs to drive than 14 bit charlieplexing can achieve, some digital pins will be needed to be configured for PWM manually using timed bit switching.  

Digital pins 48 - 53 will be configured as digital outputs and used to drive the LCD output display.  The 5 V supply and ground pin will also be used in the operation of the LCD output display.  

Analog input 0 will be used in concert with the 5 V supply and the ground pin to both provide power to the input buttons and read the output of which button is pressed.  

The device will be powered by a 9 V battery via a battery to 5.5x2.1 mm center-positive barrel jack adaptor.  

The device will interface with the computer via a USB cable attached to its USB I/O port.  


Figure 6
Wiring of the LCD screen

    The LCD screen will receive power from the + 5V pin of the arduino via its Vcc pin, and will be grounded via a connection between the arduinos ground and its Vss pin.  It will be tied to a read mode via a grounding of its R/W pin.  The enable pin (E) and the register select (RS) pin that control the LCD’s memory storage will be attached to digital pins of the arduino.  The brightness of the display control (LED+ and LED-) will also be attached to the arduino output pins.  The contrast control of the LCD (Vo) will be wired to a potentiometer that receives its power from the arduino 5 V pin.  Of the data pins that control the values written to/read from the registers of the LCD screen (DB0-DB7), DB5-DB7 will be connected to digital I/O pins and DB0-DB3 will be unconnected.  

   
Figure 7
Wiring of the input buttons

The button inputs of the device are driven by the 5 V pin of the arduino.  When no button is pushed, the circuit is open and the arduino reads 5 V from its analog input.  When the first button is pushed, the entirety of the 5 V is dropped across the top resistor and 0 V is read.  When the second button is pushed the 5V voltage drop is divided between the first and second button and an intermediate voltage is read.  The lower buttons also cause a voltage division, but with more resistance before the read voltage such that the lower the button is pressed the closer it gets to 5V.  Note that if 2 or more buttons are pressed simultaneously only the top button will be registered as being pressed by the arduino, so only a single button at a time should be pressed.


    The system will be powered by an alkaline battery due to ease of replacement and well controlled power discharge.
    The system will be encased in dark plastic to provide contrast to the LED array and protect the microcontroller and routing circuitry. Plastic was selected for it’s ease of use and the ease of creating an opening for the computer to microcontroller connection, the buttons and Dpad, and the text display.