I am designing a proect for my university where 2 (or more) qy4 series chips using different clocks must communicate with one another, and am not sure how to go about accomplishing this; it seems to me that unless they are using the exact same clock, there is a strong possibility that the data will be corrupted on the way?
I'm sure there are ways around this, but don't even know where to begin. could someone suggest a place to begin reading, or suggest a protocol/method of making this work?
Thanks!
Thank you for your reply, it was very informative.
so, it sounds like my suspicions are true.
as far as the requirements of the project, i think that the processor being used is pretty much set in stone. i'm basically making a dev board for students, which at some point could be connected with other student's boards to have a large scale Conway's Game of Life thing going on, so it's not exactly a huge throughput scenario. maybe two rounds of 16 bits per iteration, at a rate of maybe 2 iterations per second. all together yeilding a max throughput of 64 bits per second.
that said, if i were to mandate that all interconnected procs use the same clock, i assume that if i were to invent my own protocol i could make this work?
my only other concern is that we are talking about having a bunch of boards with their own processors spread out on an area that could easily equal several meters, or tens of meters in the long term. i assume there would be some things to consider on something of that scale, even when operating in the kilohertz range as far as current delivery of the clock, and inteference. if i'm correct in this assumption, is there a way to overcome this?
Thanks again!
The first question is do you want peer to peer communication or can you have some type of master unit.
The second question is how many pins can you use for communication (not including ground).
Some ideas then jump out:
- For Master/slave with one pin you could use a one wire protocol like Dallas Semiconductor.
- For Master/slave with two wires you could use a two wire protocol like Philips IIC.
For Peer to Peer it gets more complicated
- with one pin I am sure there is a clever way but it is not coming to me now.
- with two pins you could use a daisy chain like approach where every node receives and passes the data along using regular UART like data with embedded clock.
- with three pins you could use something like IIC or two wire SPI with a third wire for arbitration.
Good Luck,
Peter House