65xx bus timing basics!
Posted: Sat Feb 02, 2019 11:29 am
Hi all!
This is my first post here, but I've been working and exploring about this topic for some time now. I'm trying to build a system that can interact with a 65xx CPU. Basically, my idea is to replace a 6526 in a Commodore computer, so I'm dealing with old NMOS technology, and it won't need to go higher than 2MHz.
To give you some background about myself, I have some good knowledge of digital circuits theory, I have no issues with boolean algebra, logic circuits, etc. However, I'm really lacking real world experience, where propagation delays are a thing, and timing has to be taken care of.
I think I've got the bus timings more or less right... and before I start building a small prototype for testing, (And who knows, maybe blow up my computer!) I'd like some advice from you experts.
To get the most basic test case, let's suppose I only have a 74377 8bit register (With a /E input, and positive edge triggered clock) to hold 1-byte value, and a 74244 tri-state buffer to output that same value to the data bus when requested. So, for this test circuit, I use PHI2, RW, /CS (Provided, in this case, by the C64 PLA) and the data bus as inputs. We can ignore the Address bus at the moment, as my little 8bit register will appear in the whole range this chip is selected by /CS.
I'm pretty confident about the "Write" portion of my schematic, although I have some doubts about inverting the PHI2 clock. I'm doing this as the 74377 write is triggered on a rising edge, but, the 6526 latches the input on the falling edge of phi2. By the time PHI2 falls, /CS, RW, and Data will be stable so, the positive edge of my inverted PHI2 will make the 74377 latch the value in the databus.
The "Read" portion also seems OK. When /CS is low, and RW is high, the 74244 will be enabled and its contents available in the databus, so the CPU can read the value at the falling edge of PHI2.
No matter how much I read (Documentation, Datasheets, forums), I find many different solutions and I feel the only way to be 100% will be to test it, but any previous advise... will be very much appreciated!
Cheers!
This is my first post here, but I've been working and exploring about this topic for some time now. I'm trying to build a system that can interact with a 65xx CPU. Basically, my idea is to replace a 6526 in a Commodore computer, so I'm dealing with old NMOS technology, and it won't need to go higher than 2MHz.
To give you some background about myself, I have some good knowledge of digital circuits theory, I have no issues with boolean algebra, logic circuits, etc. However, I'm really lacking real world experience, where propagation delays are a thing, and timing has to be taken care of.
I think I've got the bus timings more or less right... and before I start building a small prototype for testing, (And who knows, maybe blow up my computer!) I'd like some advice from you experts.
To get the most basic test case, let's suppose I only have a 74377 8bit register (With a /E input, and positive edge triggered clock) to hold 1-byte value, and a 74244 tri-state buffer to output that same value to the data bus when requested. So, for this test circuit, I use PHI2, RW, /CS (Provided, in this case, by the C64 PLA) and the data bus as inputs. We can ignore the Address bus at the moment, as my little 8bit register will appear in the whole range this chip is selected by /CS.
I'm pretty confident about the "Write" portion of my schematic, although I have some doubts about inverting the PHI2 clock. I'm doing this as the 74377 write is triggered on a rising edge, but, the 6526 latches the input on the falling edge of phi2. By the time PHI2 falls, /CS, RW, and Data will be stable so, the positive edge of my inverted PHI2 will make the 74377 latch the value in the databus.
The "Read" portion also seems OK. When /CS is low, and RW is high, the 74244 will be enabled and its contents available in the databus, so the CPU can read the value at the falling edge of PHI2.
No matter how much I read (Documentation, Datasheets, forums), I find many different solutions and I feel the only way to be 100% will be to test it, but any previous advise... will be very much appreciated!
Cheers!