65xx continuously variable clock
Re: 65xx continuously variable clock
Not quite - don't forget to distinguish between RDY and /RDY. Also, you're currently generating ~(Phi2 | /RDY) twice, when you can reuse that signal, and you should try to minimise the gate depth from Phi2 to each control signal (use 3-input ORs if you can, or swap over the ~(Phi2 | /RDY) and /VALID_ADDR if you stay with 2-input ORs).
- BigDumbDinosaur
- Posts: 9429
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: 65xx continuously variable clock
Chromatix wrote:
One of the things we want to do with an '816, as opposed to a 6502, is to qualify /OE and /WE with (VDA | VPA), so as to suppress spurious accesses during "internal operation" CPU cycles.
VDA and VPA would be used to qualify chip selects, not read/write logic.
x86? We ain't got no x86. We don't NEED no stinking x86!
Re: 65xx continuously variable clock
In other words, to treat (VDA | VPA) as an extra address line?
-
backspace119
- Posts: 346
- Joined: 25 Jan 2019
- Location: Knoxville, TN
Re: 65xx continuously variable clock
Something worth noting as we're discussing this, I don't believe triple input gates exist in the AHC family, that or I'm getting bit by mouser's filtering system again. I went looking because kicad doesn't have triple input OR gates for 74 series logic, but now I'm seeing that the AHC family doesn't even have triple input NOR or AND or NAND. I see one 8 input nand, but that's the only gate I've found with more than 2 inputs....this is a bit troubling, as I think I have a few triple and quad inputs throughout my design, I'll need to check those
This would definitely let us get a head start on getting the chips selected I believe, they're high before the rise of phi2 right?
BigDumbDinosaur wrote:
VDA and VPA would be used to qualify chip selects, not read/write logic.
This would definitely let us get a head start on getting the chips selected I believe, they're high before the rise of phi2 right?
-
backspace119
- Posts: 346
- Joined: 25 Jan 2019
- Location: Knoxville, TN
Re: 65xx continuously variable clock
There are, however, some triple input gates in the LVC series, which up until now I thought was 3.3v only, but appears to accept 5v, and output 3.8v logic high at 5v operation. The unfortunate part here is it seems most of them are single gate chips (and small SMD packages). This isn't an absolute deal breaker for using them, but it does complicate things. The really nice thing is they seem to be very fast.
EDIT: probably the best solution is to use a CPLD for these things though, since the logic is pretty complex.
EDIT: probably the best solution is to use a CPLD for these things though, since the logic is pretty complex.
Re: 65xx continuously variable clock
For my 6502 using discrete gates I've also noticed that there's very little available in terms of >2 gate inputs, at least not with my constraints (3.3V, TSSOP and high speed). And even the few things that are available are barely faster than stringing a few gates together.
I usually get stuff from Digi-Key instead of mouser, and I'm quite happy with their search features. Even if you prefer ordering from mouser, you could still try the Digi-Key site for searching.
Another option is to check out manufacturer's web sites, although quality varies and you don't have everything in one place.
I usually get stuff from Digi-Key instead of mouser, and I'm quite happy with their search features. Even if you prefer ordering from mouser, you could still try the Digi-Key site for searching.
Another option is to check out manufacturer's web sites, although quality varies and you don't have everything in one place.
Re: 65xx continuously variable clock
Arlet wrote:
Even if you prefer ordering from mouser, you could still try the Digi-Key site for searching.
BigDumbDinosaur wrote:
Chromatix wrote:
One of the things we want to do with an '816, as opposed to a 6502, is to qualify /OE and /WE with (VDA | VPA), so as to suppress spurious accesses during "internal operation" CPU cycles.
VDA and VPA would be used to qualify chip selects, not read/write logic.
( But a VIA can usually be trivially managed by tying the active-high CS directly to VDA.)
-- Jeff
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html
https://laughtonelectronics.com/Arcana/ ... mmary.html
Re: 65xx continuously variable clock
Dr Jefyll wrote:
Digikey's search is *really* good, IMO -- a tool worth spending some time with.
Re: 65xx continuously variable clock
Treating VDA and VPA as address signals rather than bus-control signals does make some sense, actually. You can generate ~(VDA | VPA) and drop it into the /OE pin of a '688, for example, instead of tying that pin low; some other comparators also have cascade inputs. I think the 74HC multiple-input gates are often fast enough to build address-decoding logic, since the addresses become valid early, so you can use those to help qualify addresses.
Then the bus-control signals are simplified to forms which don't require 3-input gates:
Bank_LE = ~(Phi2 | /RDY)
/OE = (~R/W | ~(Phi2 | /RDY))
/WE = (R/W | ~(Phi2 | /RDY))
Then the bus-control signals are simplified to forms which don't require 3-input gates:
Bank_LE = ~(Phi2 | /RDY)
/OE = (~R/W | ~(Phi2 | /RDY))
/WE = (R/W | ~(Phi2 | /RDY))
- GARTHWILSON
- Forum Moderator
- Posts: 8776
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: 65xx continuously variable clock
backspace119 wrote:
There are, however, some triple input gates in the LVC series, which up until now I thought was 3.3v only, but appears to accept 5v, and output 3.8v logic high at 5v operation.
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
- BigDumbDinosaur
- Posts: 9429
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: 65xx continuously variable clock
Chromatix wrote:
In other words, to treat (VDA | VPA) as an extra address line?
In my POC units, I used VDA || VPA = 1 to qualify chip selects for anything in the I/O range, as that is where problems are like to erupt when the '816 puts indeterminate content on A0-A15. /RD (/OE) and /WD (/WE) are qualified by Ø2.
Incidentally, VDA && VPA = 1 with the '816 is the equivalent of SYNC = 1 with the 65C02.
x86? We ain't got no x86. We don't NEED no stinking x86!
Re: 65xx continuously variable clock
Well, I know that much. VDA and VPA are not *literally* extra address lines, though they can be used to divide data and program address spaces (which is probably more useful in context of an MMU). I was merely suggesting to incorporate them into the address-decoding circuitry so that the /CE lines are effectively qualified by them; effectively creating two address spaces, one of which has no devices at all mapped to it.
If you use it specifically for I/O space, then you only really need to use VDA, since you're unlikely to execute any code directly from an I/O device. But here we're likely to want to qualify ROM space, specifically to avoid unnecessary wait-states being triggered (I think a lot of internal-operation cycles end up putting $xxFFFF on the bus, which might often map to ROM).
If you use it specifically for I/O space, then you only really need to use VDA, since you're unlikely to execute any code directly from an I/O device. But here we're likely to want to qualify ROM space, specifically to avoid unnecessary wait-states being triggered (I think a lot of internal-operation cycles end up putting $xxFFFF on the bus, which might often map to ROM).
-
backspace119
- Posts: 346
- Joined: 25 Jan 2019
- Location: Knoxville, TN
Re: 65xx continuously variable clock
Chromatix wrote:
Well, I know that much. VDA and VPA are not *literally* extra address lines, though they can be used to divide data and program address spaces (which is probably more useful in context of an MMU). I was merely suggesting to incorporate them into the address-decoding circuitry so that the /CE lines are effectively qualified by them; effectively creating two address spaces, one of which has no devices at all mapped to it.
If you use it specifically for I/O space, then you only really need to use VDA, since you're unlikely to execute any code directly from an I/O device. But here we're likely to want to qualify ROM space, specifically to avoid unnecessary wait-states being triggered (I think a lot of internal-operation cycles end up putting $xxFFFF on the bus, which might often map to ROM).
If you use it specifically for I/O space, then you only really need to use VDA, since you're unlikely to execute any code directly from an I/O device. But here we're likely to want to qualify ROM space, specifically to avoid unnecessary wait-states being triggered (I think a lot of internal-operation cycles end up putting $xxFFFF on the bus, which might often map to ROM).
GARTHWILSON wrote:
backspace119 wrote:
There are, however, some triple input gates in the LVC series, which up until now I thought was 3.3v only, but appears to accept 5v, and output 3.8v logic high at 5v operation.
Chromatix wrote:
Treating VDA and VPA as address signals rather than bus-control signals does make some sense, actually. You can generate ~(VDA | VPA) and drop it into the /OE pin of a '688, for example, instead of tying that pin low; some other comparators also have cascade inputs. I think the 74HC multiple-input gates are often fast enough to build address-decoding logic, since the addresses become valid early, so you can use those to help qualify addresses.
Then the bus-control signals are simplified to forms which don't require 3-input gates:
Bank_LE = ~(Phi2 | /RDY)
/OE = (~R/W | ~(Phi2 | /RDY))
/WE = (R/W | ~(Phi2 | /RDY))
Then the bus-control signals are simplified to forms which don't require 3-input gates:
Bank_LE = ~(Phi2 | /RDY)
/OE = (~R/W | ~(Phi2 | /RDY))
/WE = (R/W | ~(Phi2 | /RDY))
- GARTHWILSON
- Forum Moderator
- Posts: 8776
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: 65xx continuously variable clock
backspace119 wrote:
Wow, ok, so then the LVC series is probably something to look into then, although a lot of what I was seeing was single gates.
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
-
backspace119
- Posts: 346
- Joined: 25 Jan 2019
- Location: Knoxville, TN
Re: 65xx continuously variable clock
So here's my /OE /WE circuit now, as far as VDA and VPA go, I've got VDA qualifying all accesses to any IO, and VDA | VPA qualifying access to the top 8 bits (2 4M memory modules).
I've attached /OE and /WE to the /OE and /WE of all devices that use wait states, the RTC, EEPROM, and DUART (28L92). Other devices are still qualified off my READ, WRITE, and /READ, /WRITE signals, which are made by R/W and PHI2
If this checks out I'm going to look at the clock circuit, and see about either changing it back to a oscillator can or possibly leaving it, but not using it for slowing the clock to talk to devices. One last thing here, iirc using this circuit I've attached I don't need to worry about absorbing clock pulses, since the /OE and /WE of devices won't be pulsing off the clock now, is this correct?
I've attached /OE and /WE to the /OE and /WE of all devices that use wait states, the RTC, EEPROM, and DUART (28L92). Other devices are still qualified off my READ, WRITE, and /READ, /WRITE signals, which are made by R/W and PHI2
If this checks out I'm going to look at the clock circuit, and see about either changing it back to a oscillator can or possibly leaving it, but not using it for slowing the clock to talk to devices. One last thing here, iirc using this circuit I've attached I don't need to worry about absorbing clock pulses, since the /OE and /WE of devices won't be pulsing off the clock now, is this correct?