datasheets.com EBN.com EDN.com EETimes.com Embedded.com PlanetAnalog.com TechOnline.com  
Events
UBM Tech
UBM Tech

Ultimate Screw-ups

Comment


ReneCardenas

12/31/2010 1:08 AM EST

Even when specs define all supported configurations and features, you need to ...

More...



Robert.Reavis

11/12/2010 7:53 PM EST

Reminds me of testing a portion of the Space Station. One requirement for one ...

More...

First data's in the register, then it's not

Dwight Bues

11/10/2010 8:34 AM EST

An engineer designing a VME bus-based interface card repeats an earlier mistake and remembers why you should always read the manual

Back in the mid-1980s, there were a few competing computer bus technology standards. The company I worked for at the time chose the VME (Versa-Module Europa) Bus, figuring that it would be a long-lived standard. Their intuition proved correct, as we still utilize that technology for certain applications today.

As part of the design team for an avionics test set project, I was called upon to design a VME Bus-based multi-purpose interface card that enabled the test set to talk to the unit under test as well as to control the external test equipment (signal generators, spectrum analyzers, etc.). This was in the era of through hole-mounted DIPs (Dual In-line Packages); Pin Grid Array packages were not very prevalent yet. That meant that processors were usually 64 pin, 800 mil-wide packages and interface controller chips were 36-48 pin, 600 mil-wide packages.

For this reason, it was unlikely that a board manufacturer would sell a CPU with the SCSI interface on board (that would come later). Since the NCR 53C80 SCSI interface chip and the SCSI terminators took up so much circuit card real estate, SCSI was usually offered as a separate card with a DMA controller and a bunch of memory. Since we were building for a ruggedized application, we designed our own card and combined functions where convenient. As I recall, the circuit card included a MIL-STD-188/114 (a variant of RS-232) interface, an IEEE-488 (also called HPIB or GPIB) interface, and a SCSI (Small Computer Systems Interface) controller for disk drive access, as well as the VME System Controller functionality (bus arbitration and system reset).

The 53C80 interface was deceptively simple as it included a bi-directional, 8-bit data bus and a few address and control lines. When we got to the point that we were testing the hardware with the software, we started having trouble reading back the data that we wrote to the device. It seemed that one moment the data was in the register, and the next, the register contained zeros. We tried doing back to back reads and got some really weird results: the data could be the desired number, zeros, or even a different number, seemingly at random.

As I discovered after thoroughly poring over the data sheet, the 53C80 has two control lines specifically set up for DMA (Direct Memory Access) controller support, to speed up large block transfers of data. This gave the system designer the option of dumping the SCSI data in shared memory and allowing the CPU to do some more important activities, while the DMA controller transferred the data to the SCSI chip. Since ours was a test system, performance was not deemed to be critical, so we chose not to implement the DMA interface.

Apparently, I should have pulled up the DMA-related inputs: DACK* (DMA acknowledge) and EOP* (End of Process). Since these lines were floating during a normal write cycle, the chip randomly processed their state as an additional DMA write, loading zeros or other random data into the registers. Four years earlier in my job as a Test Engineer, I was trying to figure out a problem we were having with a MIL-STD-1553 interface (a Manchester-encoded, 3 Mbps, serial interface – commonly used in avionics). Some brands of 1553 Transceivers would work with the Harris 1553 CODEC and some would not (no output was seen from the device).

I discovered the problem when probing the output of the CODEC. My finger touched the output enable pin and the signal came back. I even fussed out the engineer in front of the program manager for forgetting to pull up the output enable. Years later, I made the same mistake and that engineer was now my boss! Good thing he had a sense of humor. Another important lesson learned: Always read the manual thoroughly!

Author Dwight Bues is a Georgia Tech Computer Engineer with 27 years experience in Computer Hardware, Software, and Systems and Interface Design.





Rick_Hille

11/10/2010 1:10 PM EST

To further underline your "thoroughly" assertion, one should also cover all of the fine print footnotes into which some vendors seem to take pleasure in hiding certain functional...er, let's just call them "distractions".

Your story seminded me of a problem I ran into with an HDLC controller chip from the same era. In that case, however, even a close study of the datasheet and application notes (including the footnotes) would not have revealed the cause, although this does not diminish the valid point you make.

Sign in to Reply



sharps_eng

11/11/2010 5:21 PM EST

Even reading the datsheet doesn't help sometimes. It was/is a little-known fact that the CD4538 monostable is different from the MC14538 monostable. That's right:- same chip, different vendors, standard logic family. One chip can retrigger before the pulse ends and the other can't; sometimes that REALLY matters! For all I know that is still the case with SM descendents and derivatives, depends on if RCA or Motorola were the design ancestor, e.g. NXP triggers like RCA, AFAIR. Never seen this quirk discussed or documented anywhere.

Sign in to Reply



Frank Eory

11/12/2010 4:15 PM EST

The lesson? Never leave inputs floating. I wonder how many designs...and designers...have been burned by this simple oversight.

Sign in to Reply



Robert.Reavis

11/12/2010 7:53 PM EST

Reminds me of testing a portion of the Space Station. One requirement for one of the boxes was to test the RS-422 signal for squareness with an oscilloscope. My lead engineer had it all setup through the switching matrix, but got ugly waveshape. Then, when manually debugging the test, the waveshape was perfect. Not knowing the history and not yet understanding the objective of the test, I asked why he had the scope probe tied to ground and also being switched to the other side of the RS-422 pair. The answer hit him like a lightning bolt. We cured the problem with a differential probe that measured the two data lines without pulling one of them to ground. Simple mistake, simple change, and a dramatic change in waveshape.

Sign in to Reply



ReneCardenas

12/31/2010 1:08 AM EST

Even when specs define all supported configurations and features, you need to verify with prototyping early enough in your project.
Unless you welcome surprises at the worst possible moment when the time pressure builds to a boil and no amount of money is able to justify a new tape out of Silicon.
We had a case of complex telephony ASIC that was documented as supporting 8,16 or 32 bit wide flash memory. Unfortunately for us the smallest configuration was never tested by vendor!

Sign in to Reply



Please sign in to post comment

Navigate to related information

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)