0

I'm making a hardware system that uses both analog and digital : The system will have the following components , RF ID module GSM/GPRS Bluetooth LCD Micro-controller ..... etc of several modules that have their own embedded software to run them in a proper way

I was thinking as I can apply Software engineering to make the software in a modular way , can I do this in hardware ?? i.e if I don't need the "bluetooth" in my design I will simply remove the hardware and the software >

Here's my imagination : enter image description here

xsari3x
  • 1,608
  • 5
  • 27
  • 42
  • You need to provide much more detail to get specific answers. To begin with: What chips are on each of the modules? Where are their datasheets? How much current do they need? What buses do they connect to? How many pins are needed for those buses? What speed do those buses run at? What is the microcontroller? How is the system powered? Are modules hot-swappable? – Toby Jaffey Oct 27 '11 at 09:10
  • I dont have the sheets yet or the chips , All I've is a list of features to implement , like rs232d , Bluetooth ,GSM , RF ID , ....etc I don't have nay info about currents ,even the buses , neither the pins , same for speed , didn't select the micro yet ,system will be powered from outlet , what do you mean of Hot-swappable ?? Note : This is my second Embedded system project I do – xsari3x Oct 28 '11 at 12:59
  • @JobyTaffey kindly check, sorry I had a problem in connection yesterday – xsari3x Oct 28 '11 at 13:09

2 Answers2

4

Yes, you can build hardware modules which can be fitted and detected at runtime. By connecting modules to a shared bus and probing for them at startup, you could create a dynamic system.

You could use USB for each module, or address scanning with I2C, or even SPI with jumpered chip selects.

Toby Jaffey
  • 28,796
  • 19
  • 96
  • 150
  • Is there any consideration while design I should take care ?? I've asked a hardware engineer , he said it's impossible due some "current" problems , like some devices when start up they will take lot of power ...etc – xsari3x Oct 27 '11 at 08:49
  • You will need to be much more specific about the system to answer these kinds of questions. Something like Bug Labs' modular system might do what you want, it's all open source. http://www.buglabs.net/ – Toby Jaffey Oct 27 '11 at 09:03
  • Ok , what do you need to know about the system ?? – xsari3x Oct 27 '11 at 09:05
4

Yes, many people have built many systems from a bunch of hardware modules, each system leaving out the modules that have functions not necessary for that system.

Most systems are divided up into several PCBs, with non-standard ad-hoc interfaces between the boards. Very often "sensitive analog stuff", "noisy high-speed digital stuff", and "noisy power supply stuff" are put on 3 different boards, often in 3 different boxes. (For example, cell phones with analog stuff in the Bluetooth headset, high-speed digital stuff in the handset, and power supply stuff in the wall-wart charger).

There are already several (alas, incompatible) standardized systems of hardware modules. In no particular order (and with widely varying amounts of functionality and connector costs):

  • PC/104
  • Bug Labs as mentioned by Joby Taffey
  • the JeeNode Arduino-compatible board and JeeLabs modules that plug into it: a b c d
  • R-Dev-Ino stackable Arduino compatible board
  • PlugaPodS
  • gumstix packs
  • DIP chips and breadboard-compatible plug-in modules: the 74HC00 series and many (but alas, not all) microcontrollers come in DIP packaging, such as many 8-bit and 16-bit microprocessors from Atmel, Microchip, Freescale (formerly a division of Motorola), Cypress, and the 32-bit Parallax Propeller. Combine these with solderless breadboard or stripboard or other prototyping boards.
  • "pass-through 40-Pin OOPic expansion connectors"
  • the Freescale Tower System
  • Modular interface extension (MIX) stacking and communications interface
  • VMEbus
  • STEbus
  • CompactPCI
  • GPIB IEEE-488
  • virtual cogs (they used to have some interesting parts at Sparkfun ?)
  • I've heard rumors of a "Stackable USB" (?) (USB is smaller and faster than the ISA bus used in the original PC/104)

If you are lucky, then perhaps one of the above systems will be adequate for your needs -- you can use off-the-shelf hardware for your system, and only design a few boards for functions that are not available off-the-shelf -- at least for the first prototype of your system, even if you end up custom-manufacturing every part of your system later.

While the abstract idea of "modules" is very useful in both hardware design and software design, hardware modules have some annoying differences from software modules:

  • connectors cost money. enclosures cost money. So once I have a block diagram of all the parts I need for a system, it's tempting to cram everything onto one or two PCBs so I can use a slightly smaller, cheaper enclosure, and avoid paying for a bunch of connectors.
  • In hardware, everything happens at the same time. This can create problems that are difficult to debug by people are used to serial software.
  • Connecting two chips on two separate boards with a connector between them usually has worse EMC than than the same two chips on one big board with only a short trace between them.
  • Putting a small memory on each module sounds like a good idea. That memory can hold (a) a short unique ID number for the module, and perhaps (b) hold information about the module, like Autoconfig, PC Card CIS, PCI configuration space, Display Data Channel, etc., and perhaps going further an (c) store some executable "device driver" code -- preferably in a processor-independent language, like Open Firmware, rather than in raw executable code for one particular processor, like some other kinds of option ROM. Alas, the temptation to save a few bucks by getting the same number of bytes of memory in one "big" memory chip for the entire system -- rather than one "little" memory chip per board -- often seems overwhelming. Also, you have the dilemma of either (a) reprogrammable memory such as Flash -- which risks erasing a module's local storage; or worse, re-programming it with the wrong stuff, or (b) one-time-programmable memory -- which risks sending out a bunch of hardware with a bug in that memory that is expensive to fix.
  • Hotplugging -- worth a separate question. It's much simpler to design a system that is only intended to plug and unplug modules while the power is off. Just one of the many issues involved in getting hot-plugging working right is Best options for limiting input ringing with ceramic capacitors .
davidcary
  • 17,426
  • 11
  • 66
  • 115