HCS_C: Getting Started Assembling an HCS_C Main Board
Bob Morrison (c) 2004 revised 4/16/04
Index
FAQ: HCS_C_FAQ
Page 1: Getting Started building HCS_C
Page 2: Hardware Parts
Page 3: Software
Page 4: Known Bugs
This is the detailed Hardware assembly page that will help people who enjoy building electronic projects and want to save some money. If you are trying to decide if this is a project you want to get into, start first with the FAQ (HCS_C_FAQ). Reading this page may scare you because building this board requires significant engineering assembly experience. Rest assured, if you want to get into Home Automation using HCS_C, you will have a terrific time, and you don't have to build it (you won't have to look at this page at all! I do recommend some engineering experience, or access to a "guru" who is willing to help you with this project. You can buy a fully functional board with already programmed software (see the order form: HCS_C Ordering Page).
The first step is to decide whether you want to build it yourself and save a bit of money (I will build a small number of boards for $299 each. If you want to get on a build list, send me a filled out HCS_C order form: Order_HCS_C). If you decide to build your own, you'll need to get some PC boards made (about $164 for two minimum order from AP Circuits). As soon as you send that order off, you need to get all of the parts, see the bill of materials for HCS_C. Note that the current HCS_C build is A.03 and has a few haywires on it, see this section for instructions how to do that.
Required equipment to build: ESD protection is essential!! Don't skimp here, you need a good grounded floor mat and work surface anti-ESD mat. Make sure both are grounded to a real earth ground through a resistor (direct connection is an electrocution safety hazard). If you take a shortcut, dont do it here! Note that winter and dry weather increases the probability of damage, even an anti-static mat won't always protect you. Touch a grounded surface before handling HCS_C or any components. Don't ever use styrofoam or scotch tape in your work area. Use black anti-static foam for carrying parts, and handle boards by edges or put it in an antistatic bag before carrying it.
This is a double sided surface mount board, so it is not a project for inexperienced project builders. You will really will make a really big mess (you must trust me on this!!) if you do not have a good surface mount soldering iron. Short tip length is essential--max 2" from handle to tip end--the Metcal is highly recommended. The cheapest Metcal SP200 is about $300 and works just fine--get a fine point tip 1/128". and a binocular microscope (or if you have very good eyes, a 3x headmount lens can be used). You will almost certainly be unsuccessful if you just use a magnifier of some sort, you need a binocular lens for depth vision. You also will need fine pitch solder, flux remover, and probably a resin solder wick. Then--you also need neuro-surgeon dexterity and patience! The biggest danger is wicking a solder blob underneath a SMT part--if this happens, it's almost impossible to repair without removing the part. I have found that methods of mass soldering pins create big messes, I strongly discourage that. Just solder each pin, it goes fast with practice and it keeps control of where the solder goes. If you use AP circuits to make your PC board, be aware that the traces will easily self-destruct with heat--you can readily destroy a board. You can remove an SMT part ONLY BY HEATED AIRFLOW about once or twice, more than that, and the traces no longer adhere to the board. Trying to remove an SMT part with a soldering iron is guaranteed to ruin the board.
All right, you are ready to go. First check that there are no shorts on the blank board. Check GND, +5V, +3.3V, +2.5V, and +1.8V, all combinations between these. NOTE that I generally put ground plane grids on the bottom and power (+3.3V) on the top side. There are several testpoint pads for GND and +3.3V around the board for connecting logic probes or other test instruments. Get the placement guide, and install the parts in the following order (check and double check orientation, then tack down a couple of pins. Then check the orientation once more!!). See the parts placement guide for the correct orientation of parts HCS_C_parts_placement. If you make a mistake and solder down an SMT part wrong, you will run the risk of ruining the board (even if you use forced hot air, the best way to remove a part). So check several times before you solder it down. I tack a few pins down, then check again. Here are front and back side photos to also help reassure you that parts are installed correctly (I still have some parts missing such as the daughtercard connectors and the voice circuits, these photos will get updated when those go in)
Closeup top side to help with loading your own: (big files, 250K each)
I highly recommend frequent checking for shorts between power/ground planes as you assemble. If you do get a short, they can be very hard to locate, so it helps to check often (thus helping pinpoint where the short probably occurred). Using an ohm-meter will not usually locate shorts on power ground planes. If you do get a short at anytime during the assembly process, the best way to pinpoint it is using the four wire impedance measurement technique, but you have to be very careful--NEVER apply this method if the short is intermittent since it's possible to damage components on the board. The four wire technique simply uses a current limited powersupply to feed a few 100mA into the short (make sure the voltage limit is not greater (or reversed) than what is expected--for example if there is a short between 3.3v power and ground, set the max volts to 3.3 even though the short will make that close to zero). Now use a voltmeter to find the lowest local voltage across the short, moving around the board will show the direction of the short. Since it is shorted, your voltage reading will be only in the millivolts--but this is a fast way to pinpoint a short reliably even if there is more than one (look for the local minimum).
NOTE: when checking for shorts with an ohm-meter, you must realize that the ohm-meter will put out voltage that could be damaging to components. Only use low voltage (preferably 1.5V battery powered) ohm meters. Some ohm-meters have a continuity buzzer feature that puts a full 3V or more into the probes, this is not recommended for HCS_C, use the ohm measurement setting instead. Use caution when probing for shorts on a loaded board with an ohm-meter.
Before soldering any parts, drill out the four corner mounting holes and the PS2 and X10 mounting holes. The drill size in the PC layout was not correctly generated. Unfortunately, the board hole specification for A.03 PC layout got ignored for the PS2 connector mounting holes, the X10 connector mounting holes, and the four corner mounting holes and were not drilled big enough. I drilled them out for boards I supplied, but if you got your own board you'll have to drill these. The X10 holes didnt even appear on the board so you'll have to use your X10 connector to locate these (about .4" spaced horizontally, down .25" from the lower X10 signal pad). The PS2 mounting holes (x3) are about 3/32" and do have existing locator holes that are too small. The four corner mounting pads didnt get a hole drilled, so use a 5/16" drill for these.
As of this writing, there is one unroutable haywire required and one mistake on the A.03 board. The fixes are:
1. Add a haywire to pullup the unused reset input on the topside righthand Flash Eprom. A wire goes from the Eprom pad at pins 12,14 should be connected to the pullup resistor between the two topside Flash devices (see the loaded board pictures images/chcs_c_loaded 003.jpg)
2. The PS2 connector has two signals that go to the 74LVC05 opencollector buffer. Unfortunately both signals got swapped at the buffer. You need to swap pins 8 and 9 as well as pins 12 and 13. This is best done on the back side where a little delicate work will handle this easily. See the PS2_fix diagram that shows how to do this. Two pullups will have to be added, the existing pullups should not be loaded. See these pictures: images/ps2_fix_step1.jpg (cut these traces here) and images/ps2_fix_step2.jpg (orange dots are solder blobs (do solderblobs at low soldering temperature, just high enough to melt solder) or small haywires)
Now you are ready to go:
a: FPGA first! When done, before soldering any more parts, check for shorts between all power supplies. Don't rush! Don't take short cuts! It's much easier to track down a short if you know what you just soldered. If you want to get the orientation wrong, this is NOT the chip to do it on!!!! Tack it down, check orientation, then solder it down.
b: ARM processor next. Check for shorts to GND and 1.8V or 3.3V.
c: Flash EPROM, SRAM are next.
d: Put in all SMT buffers, both sides. Be sure to check orientation!! I have them in every possible orientation to make the two layer layout possible. Tack it down with only two pins, check the orientation, THEN solder it down. At this point, check for power short.
e: Put in all bypass caps. Note there are no pads for the bypass caps, I just place them across the power and ground bars. Don't scrimp here--since this is a 2 layer board, good power and ground planes are not possible. By using lots of bypassing you help recreate the effect of a power/ground grid and help ensure reliable operation. Especially note the extensive bypassing under the FPGA and the processor. Check for power shorts after soldering down every 10-20 caps.
f: Put in all SMT resistors. I've listed them here for your convenience, please let me know if I've forgotten some:
1.1K topside near lower left corner of FPGA (DONT forget this one or the buffer on the back will overheat)
2. 1K x 4 on either side of the DIP switch
3. 100 x 5 for the power LED low right corner top, and bottom side under status LEDs
4. 1K x 5 pullups for Flash Eprom top side (near Flash Eprom)
5. 2K x 4 pullups near configuration Eprom. Put thes on before you put on the config Eprom socket.
6. 5K topside by the reset switch to the +3.3V plane (just below the reset switch trace). Also attach a .1uF right next to it going to the GND plane (right above the reset switch trace).
7. There is a PC layout mistake right underneath the 74LVC05 in the upper right corner. This requires a cut and solderblob fix for the two PS2 keyboard signals (the inputs and outputs to the 74LVC05 got switched). As a result, it will be necessary to tack on a couple of 1K resistors to the pins 8 and 12 of the 74LVC05 on the top side going to the +3.3 power plane. This is a little tricky so check your work with a microscope.
8. 5K x 2 topside right above the X10 connector. There are three pullup pads to +3.3V, but one is output, so you only need to put resistors on the pads to the left and in the middle, leave the right one empty.
9. Under the relay you need to short out the resistor pad (these are +5V relays, so there is enough impedance in the relay coil that no current limiting resistor is required. This resistor pad (to be shorted) is under each relay which is in a different position for each relay. Looking at the board from the bottom so the relays are in the upper left corner, the relay to the left has (left to right): diode, 100pF, short. The relay to the right (looking at the backside) is short, 100pF cap, and diode. The diode pad is a back-biased diode (anode bar line is closest to the edge of the top of the board).
g: put in the Voice chip socket, relays, opamp, and audio amplifier chips. The LM386 audio amplifier requires a 47uF SMT cap from pins 1-8, but I didnt leave enough space so this SMT must be mounted sideways. Be careful not to short to the nearby power plane. There is a radial cap that has pads rather than holes, an oversight in the layout. It covers two testpoints, so you may find it handy to mount this between the testpoints (bend the leads to allow this). The voice chip can be stacked, so you'll see an extra set of 1uF cap pads on the topside. The only ones you have to load are the 5 1uF pads on the bottom side under the voice chip.
h: put in all RS232 and RS485 driver chips. Check for power shorts. Underneath, there are four 1uF pads. The pads are too small so this is a little tricky. An SMT soldering iron will make this easy. Make sure no caps touch adjacent GND planes.
i: Put in the 5V power connector before installing the 3.3V regulator. Unfortunately the holes are too small, so the connector wont go through. DONT DRILL IT! Put it in part way and solder it down from the top side. Now install the 3.3V regulator, the 2.5V regulator, and the 1.8V regulator. Note that if you have an A.01 or A.02 board, the ground and output of the 3.3V regulator was switched to accomodate a higher current regulator, the LT1584CT-3.3. Be careful here, be sure you've got the right regulator for your board or you will potentially send 5V to the 3.3V plane, a bad thing!
j: put in the RTC chip and the oscillator. I recommend raising the osc a bit from the board. You may want to increase the frequency at some point--removing an SMT oscillator that is soldered directly to the board is hard. By using a small piece of scrap wire under each pad you will make it easier to swap out. NOTE: The oscillators I ordered have the wrong polarity enable pin 1, so DONT connect pin 1! I raised the osc enough to just leave this corner hanging. Or, put a little cardboard under it when you solder down the other three corners.
k: put in the X10 and PS2 connectors. BE SURE TO CHECK FOR POWER SHORTS HERE. DO NOT PUSH THE PS2 CONNECTOR IN HARD. The grounded case is closer than I intended to the power plane, if you get an intermittent short when plugging the keyboard in, especially after many reinsertions, you may want to resolder the PS2 connector and raise it a millimeter or two.
l: Put in all connectors.
1. 8 pin molex console UART connector
2. 20 pin molex emulation JTAG connector
3. 2 pin molex Voice Record Input connector
4. 6 pin molex Voice output connector
5. 8 pin molex Aux RS232 connector
6. 8 pin molex LCD panel display connector
7. 3 pin molex Seetron LCD display connector
7. 3 pin molex RS485 network connector (x3)
7. 10 pin molex JTAG Configuration Eprom connector
7. 3 pin molex Caller ID connector
11. 26 pin long molex daughtercard IF connector
12. 40 pin long molex daughtercard IF connector
8. 40 pin molex User input, output connectors (x2)
m: Put in the status LEDs, the power LEDs, and the reset switch. Be sure to mount the switch so that the common pins (2 pairs on this switch) are vertically oriented (the switch connection is horizontal). The status LEDs mount so that +V is to the left (toward the edge of the board). Usually LEDs are manufactured with the longer lead as the +V direction.
n: Put in the Configuration EPROM pullup resistors in before putting on the socket (they are a little too close to the socket to install after you put in the socket). Put on the Configuration EPROM socket, and load the configuration EPROM. The socket is tricky because you have to solder it down through the holes from the top of the socket, this takes a little practice, but is very doable. Just be careful not to have the iron touch the plastic parts of the socket--you'll need a very steady hand here... Check for power shorts. NOTE--be sure to install this with pin 1 facing up (toward the relays and the PS2 connector). If you get this rotated--it CANNOT be removed even by forced air without destroying the socket. If this happens, don't panic, cut a notch in the socket so the PLCC config EPROM will go in. You'll just have to remember that pin 1 always faces up away from the front of the board.
Now if all has gone well, you are ready for a turn on. This is where you are most likely to smoke something, so you MUST use a current limited power supply to turn on the board!!! Do NOT use a switching supply, wall wart transformer, or similar. Set the current limit for about .6A or slightly higher. Turn on the supply and see if you reach 5V at the supply--if you don't, turn everything off immediately and check for shorts or mis-installed parts. If the power LED in the lower right corner comes on, you're probably in good shape. If you get 5V, check for 3.3V, 2.5V, and 1.8V. If any one of these is not present (or worse, is too high) shut down immediately. Then carefully test to see if any part is excessively warm (use caution--I sense for heat before actually touching a part)--although this is unlikely if you are using a current limited supply. Using a current limited supply is your best insurance against total disaster--I've even survived backwards installed parts when the current was limited.
Now you need to get or make the necessary cables. You will need a power cable to connect to the main power connector on the HCS_C board. This is a three pin connector that should have guage 18 or better power connections that will carry about 1A (don't use wimpy wire, you will sacrifice HCS_C reliability!). The connector pin assignments are as follows
Power connector
1: Ground
2: +5V
3: Ground
Obviously you can plug in the connector either way and there will be no problems, but if you somehow don't center the connector, you will reverse power. Make sure the power connector is correctly centered. Always double or triple check before turning on power. As mentioned previously, don't do power connections when you are not fully alert, tired, mad, etc, this is when you are most likely to wipe out your investment in HCS!
You also need a serial cable that plugs into the console serial port. To conserve board space, HCS_C has a simple 8 pin serial interface connector with RS232 compatible levels, the pinout is as follows:
1: Serial input to HCS_C
2: Serial output from HCS_C
3: Ground
Here are the pinouts for the other connectors (this will get updated this weekend)
console UART connector
emulation JTAG connector
Voice Record Input connector
Voice output connector
Aux RS232 connector
LCD panel display connector
Seetron LCD display connector
RS485 network connector (x3)
JTAG Configuration Eprom connector
Caller ID connector
daughtercard IF control connector
daughtercard IF addr/data connector
User input, output connectors (x2)
Finally, you will need the JTAG adaper and cables. The JTAG adapter will work in either the ARM emulator JTAG connector or the FPGA config EPROM JTAG connector. Normally you only want to plug the JTAG adapter directly on the ARM emulator JTAG connector. DO NOT connect both at the same time!! You only need to hook up the FPGA config EPROM JTAG connection when you want to update the FPGA circuitry--make sure that the adapter is removed from the ARM JTAG emulator connector when doing this. If you have a preprogrammed configuration EPROM part (the boards I build are always preprogrammed for you), you are ready to start the turn on verification process and do not need to program the FPGA Configuration EPROM. If you don't, you need to first program the FPGA Configuration EPROM, see the Programming the FPGA Configuration EPROM below. .As indicated, you will normally operate in the ARM JTAG emulator configuration. Plug the adapter directly on to the ARM JTAG connector, making sure you are correctly lined up (the connector is keyed to prevent mis-insertion).
NOTE: IF YOU ARE PROGRAMMING THE CONFIGURATION EPROM, BE SURE THAT THE JTAG ADAPTER IS *REMOVED* FROM THE EMULATION JTAG CONNECTOR ON THE HCS_C BOARD!
Programming the FPGA Configuration EPROM (if you received a built board from me, you can skip this step unless you have new FPGA circuitry bits and you want to update the FPGA functionality). The JTAG adapter MUST BE REMOVED from the ARM JTAG connector. Plug the FPGA Configuration EPROM JTAG cable into the config EPROM JTAG connector on the JTAG adapter, and plug the other end of the cable into the FPGA JTAG Configuration connector on the HCS_C board. You will need to use the Altera Quartus programming software and set the JTAG mode to byte-blaster. Select the new hcs_c.pof file for programming (not the default sof file, it's the wrong format). Under the Quartus processing menu, select the start programming function. This should take about 15 seconds to complete if there are no errors.
Once the EPROM is configured, check the oscillator output for ~29Mhz. If this looks good, check the processor clock output--if this is also 29Mhz, then you are ready to begin board debugging using the JTAG emulator connection. Plug the JTAG cable into the emulation JTAG connector, and set the adapter to the emulate (E setting). You will need to connect the console serial port to your PC to communicate with the ARM processor. Refer to the HCS_C Users Guide for more details on how to use the emulator and to program HCS_C.
NEXT >> Page 1 Page 2 Page 3 Page 4
mail to: zetaengineering