6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Nov 23, 2024 5:02 am

All times are UTC




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Sat Mar 06, 2004 4:16 am 
Offline

Joined: Sat Jan 04, 2003 10:03 pm
Posts: 1706
http://www.falvotech.com/Kestrel/async-bus.html

The link above resolves to a document containing the proposed bus interface system for the ForthBox Kestrel computer kit I'm designing. It provides a 68000-like asynchronous bus interface to the otherwise very synchronous 65816 bus interface signals. It provides zero performance hit for suitably fast devices, while it automatically generates wait states for slower devices. The bus can be clocked at arbitrary speeds; for any given transaction, the CPU will slow to the speed of the currently addressed device.

If people are interested, I can market chips (both bus controller and DTACK-generators for devices) designed to couple to implement this bus system for you. Please let me know what you think.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 12:55 am 
Offline

Joined: Fri Aug 30, 2002 2:05 pm
Posts: 347
Location: UK
Very nice, this makes the 65816 much more like the 68008 which I've used before.

The only addition I can suggest is make RDY = !AS & !DTACK. For the cost of this one gate you have the complete four phase system, no more worries about keeping !DTACK shorter than the next clock edge.

The only other thing I can think of is cycle time for some devices is near, or more than, twice the access time so how would read/modify/write in this case be handled?

Cheers,

Lee.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 1:05 am 
Offline

Joined: Sat Jan 04, 2003 10:03 pm
Posts: 1706
leeeeee wrote:
Very nice, this makes the 65816 much more like the 68008 which I've used before.


Thanks.

Quote:
The only addition I can suggest is make RDY = !AS & !DTACK. For the cost of this one gate you have the complete four phase system, no more worries about keeping !DTACK shorter than the next clock edge.


This is true; however, I wanted to ensure a minimum latency design; 12MHz is sufficiently close to the 65816's 14MHz rating that I don't want to push things to the edge. With discrete component logic, even that circuit might be too much.

Quote:
The only other thing I can think of is cycle time for some devices is near, or more than, twice the access time so how would read/modify/write in this case be handled?


Your question is hard for me to parse. I don't understand what you're asking. I can't even guess at what you're trying to ask.

Can you rephrase the question?


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 1:54 am 
Offline

Joined: Fri Aug 30, 2002 2:05 pm
Posts: 347
Location: UK
The cycle time for a device is the minimum time between successive accesses. E.g. with 150ns DRAM the access time is 150ns as you would expect but the cycle time, the time from the start of one access to the start of the next, is often 250 to 300ns.

Go here .. http://www.arstechnica.com/paedia/r/ram_guide/ram_guide.part2-1.html .. for DRAM timing notes.

I've just been lookign at the 65816 timing and it seems that any 16 bit access to a slow device could cause a problem as the next access cycle starts on the next clock after the last cycle has finished. At 12.6MHz this would mean less than 40ns from the end of the last cycle to the start of the new, possibly not enough time.

Most of the time you would get away with this but it will fail unexpectedly and often not repeatably.

Hmmm not very clear, but it is 01:53 here 8^)=

Cheers,

Lee.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 2:15 am 
Offline

Joined: Sat Jan 04, 2003 10:03 pm
Posts: 1706
leeeeee wrote:
The cycle time for a device is the minimum time between successive accesses. E.g. with 150ns DRAM the access time is 150ns as you would expect but the cycle time, the time from the start of one access to the start of the next, is often 250 to 300ns.


Ahh, I see what you are saying now.

This would be solved exactly as it would be with a 68000 -- you hold off the DTACK signal until you know it can be satisfied. If this means disabling bus drivers temporarily, letting the chip complete the last cycle, then that's the job of the DTACK signal generator. Consequently, the complexity of the DTACK signal generator for that device is directly proportional to the complexity of the device it's bound to.

--
Samuel A. Falvo II


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 2:39 am 
Offline

Joined: Fri Aug 30, 2002 2:05 pm
Posts: 347
Location: UK
Of course, that makes sense, then the added complexity is there only if needed.

Could !DTACK be open collector driven so that additional devices could be wire-ored onto it, or would that slow it down too much?

I'm going to try a minimal 65816 design with one ACIA, (D)RAM and ROM soon. I want to try a maximum memory design using 4 x 4MB 30pin, 60ns, SIMMs and a fastest possible design with 1MB of 15ns cache RAM.

Cheers,

Lee.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 3:04 am 
Offline

Joined: Sat Jan 04, 2003 10:03 pm
Posts: 1706
leeeeee wrote:
Could !DTACK be open collector driven so that additional devices could be wire-ored onto it, or would that slow it down too much?


I remember reading somewhere that WDC decided to make /IRQ and /NMI regular logic signals because otherwise response times were too slow for the higher clock speeds. I suspect the same kind of thing would happen with /DTACK. That being said, maybe if you time things just right, you can make your DTACK-generator bring DTACK low one cycle early, and rely on the R-C time constant to delay it just long enough to get the proper timing. I'm not sure.

Depends on how good you are with your logic design skills, I guess. :)


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Mar 09, 2004 7:27 am 
Offline

Joined: Fri Aug 30, 2002 2:05 pm
Posts: 347
Location: UK
I've done some typical case delays for your circuit for standard LS and ALS 74 series parts. Times are LS/ALS(ns)

From VDA/VPA to !RDY is 33/10ns
From DTACK to RDY is 23/8ns

If you change RDY to be !AS & !DTACK the times become ..

From VDA/VPA to !RDY is 41/13ns
From DTACK to RDY is 31/11ns

This gives you ..

80-33-23-10 = 14ns max for !DTACK (LS)
80-10-8-10 = 52ns max for !DTACK (ALS)

.. assuming an 80ns (12.5MHz) clock cycle for your circuit or ..

80-41-31-10 = -2ns max for !DTACK (LS)
80-13-11-10 = 46ns max for !DTACK (ALS)

.. with the extra AND gate. Ok so it won't quite work at 12.5MHz using LS parts.

Cheers,

Lee.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 36 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: