As the title states, I am wondering if there is a "simple" way to make your own IC or program an IC to mirror data. To me it sounds simple, but that is my opinion. Such as, data is sent, then the chip reads it and processes "mirrors/splits" the same thing to two data devices. Any direction would be greatly appreciated.
mah300274 5 Junior Poster
rubberman 1,355 Nearly a Posting Virtuoso Featured Poster
IC's (integrated circuits) are just that, electronic circuits constructed of a myriad number of transistors, capacitors, and resistors. Yes, if you know enough electrical engineering to design a device with discrete components (transistors, capacitors, resistors) to implement the device in question, that could be translated to an integrated circuit; however, the physical processes of building such a device as an IC requires a LOT of specialized equipment. Some major university EE departments have such, so if you are a student at such an institution then you could (might be able to) build the device. If you aren't, then it is effectively impossible unless your work in the R&D department of a major research institution, government lab, or semiconductor manufacturer. FWIW, I have 30+ years developing software for the semiconductor industry, consulting with most all semiconductor manufacturers, and am a director of an IEEE affiliate organization, so this is a subject that I am intimately familiar with.
rubberman 1,355 Nearly a Posting Virtuoso Featured Poster
So, my previous answer aside, you COULD create a bit of software to emulate such a device. That could be implemented in firmware or a programmable gate-array (LPGA) to do what you want. Much more feasible than creating a custom IC to do it... :-)
In any case, it is apparent that you have some good ideas, but are effectively clueless on how to implement them in reality. In my opinion, you have a LOT of intensive studying to do before you move on to the next step. Good luck! I do mean that. I started my career in much the same manner, asking "why can't we do that?", and searching for methods / means to do so. Fortunately, I had a number of friends to help me on my way, some of whom are stellar lights in the semiconductor field.
jwenting 1,889 duckman Team Colleague
if you're handy with a soldering iron you can create an electronic circuit that performs the same functionality as any IC, it'll just be quite a bit larger.
Of course you also need to know how to design the circuit.
ddanbe 2,724 Professional Procrastinator Featured Poster
Here are the instructions of building a fairly simple (but famous!) 555 timer IC. It was e.g. used in the first Apple computers. It has some 20 transistors in it. I would not even think about buildding it up from transistors, just give me the chip.
mike_2000_17 2,669 21st Century Viking Team Colleague Featured Poster
There isn't much point in delving into ICs unless you plan to mass produce. They are just electronic circuits made to be much smaller, far less energy-hungry and much cheaper to produce. If your interest is semi-conductor physics than that's one thing, but if your interest is electronics, do electronics, not integrated circuits. I.e., concentrate on the "circuit" part forget the "integrated" part, until you work for a big firm or research center, as rubberman pointed out.
If you want to do really low-level electronics stuff, you would normally build the circuit around a number of simple (and cheap) ICs for specific purposes (level converters, gate arrays, standard transistor bridge configurations, etc.). You would build the circuit as a custom PCB (Printed Circuit Board), which you can easily and cheaply make either through a company (you send them the plans and some money, and you get a shiny PCB in the mail a few weeks later) or by yourself (you can buy some home do-it-yourself chemical PCB etching kits).
If you are more interested in programming this kind of thing, then go with programmable logic instead. With a good micro-controller and a little bit of electronics work, you have what is needed to write the firmware for this. In fact, I'm not sure you could create a RAID module without a micro-controller of some kind (I don't know enough about RAID).
If I had to do this (i.e., most effective home-made solution), I would probably just replicate the USB connection of two identical external drives to have identical data on both drives. A simple PIC would do the job. I guess the same could be done with the SATA connection directly, although I'm not sure how easy that would be compared to USB.
Such as, data is sent, then the chip reads it and processes "mirrors/splits" the same thing to two data devices.
Yeah, that sounds simple. Don't be fooled though, it's harder than you think. What goes through those lines is not just electric current that you just need to split like you cross-wire some power cables. They digital signals, so obviously, you need some digital logic circuit to do the "splitting" (or replication). However, replicating the signals that go through is not going to work just like that. The computer and the hard-drive are two devices that are talking to each other. So, if one person talks to two twins, it's not sufficent that the sound goes through. There must be perfect synchronization such that the combined voices sound as one, and the twins must be perfectly identical in every way (exact same thoughts, reactions, response times, etc..). This is not something you can rely on, even for two identical hard drives (there are always fluctuations, differences, etc.). So, you need arbitrage, like a middle man that talks to both twins independently, achieves concensus, and then talks to the other person in a single voice. That's why you will most likely need some "programming" (PIC / micro-controller, LPGA / FPGA, or a very elaborate electronic circuit). Don't get me wrong, this isn't super complicated logic, but it's definitely far from just cross-wiring two connectors.
Oh, and also, it's not only "data" that goes through that connection. There are protocols for lots of things like asking the hard-drive for basic info like the serial number or the address of specific clusters on the drive. My point is, these are things on which two (even identical) hard drives will disagree on, and so, you will probably have to "fake" those values, which means you will have to write a complete interpreter for the protocol, a mere arbiter won't be enough. It's a lot more programming than electronics, really.
There is no doubt that this is an interesting project, and you would learn a lot from it. I wish I still had the patience to re-invent the wheel like that. If you do, then go ahead, give it a shot.
ddanbe commented: Good explanation +14
mike_2000_17 2,669 21st Century Viking Team Colleague Featured Poster
Just to add to that, the first step would probably be to write a software driver to basically make two hard-drives appear as one. You'd have a hard time doing this with internal hard drives because their drivers are pretty much baked into the firmware of the computer, but you might be able to do so by writing a driver for two USB external hard drives. That should give you a pretty good idea of the kind of logic you'll need to make this work. Basically, implement a software RAID driver first, and then you'll know what you're getting into if you want to move to hardware / firmware.
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.