|
|
Re: ECB-DMA [message #6760 is a reply to message #6759] |
Tue, 12 November 2019 16:14   |
jcoffman
Messages: 332 Registered: October 2015
|
Senior Member |
|
|
Phil,
I'm just going from memory, but I believe there was an error on the SBC v1 that prevented its use with DMA. SBC v2 supposedly corrected the error. It looks like I tried to support DMA on the Z180 Mark IV, but that board uses >16 address lines. SBC-188 does not support external DMA; it uses the on-chip DMA controller for floppy access. Kiss-68030 does not support DMA.
IMHO, the DMA controller should be on the same motherboard as the CPU. Take a very good look at SBC v2. Address & data lines look okay; as do /MREQ, /IORQ, /RD, & /WR. /M1 does not tri-state; I hope the CPU keeps it high.
============================================================ ==================================
None of the existing backplanes support DMA or Z80 interrupt priority arbitration out of the box. All must have the /IEI-/IEO & /BAI-/BAO jumper wires soldered in place. Also, the DMA board must be placed on the correct side of the CPU board, and adjacent to it, to get the priority chains to work. The CPU board will have to be modified to ground /IEO & /BAO to initiate the priority chains.
The 3-slot, 8-slot, and 12-slot backplanes will need to have the priority chain jumpers soldered in place. AFAIK, no one has ever done this, since there is no DMA board or board generating interrupts using the Z80 interrupt priority scheme.
--John
|
|
|
|
Re: ECB-DMA [message #6778 is a reply to message #6745] |
Fri, 15 November 2019 20:34   |
b1ackmai1er
Messages: 396 Registered: November 2017
|
Senior Member |
|
|
Hi everyone,
>>> The CF adapter is the big win.
I did not actually have anything particularily in mind for this but was wondering if it could be used for ROMWBW bank to bank memory copy. If dma is currently not used on the MKIV then maybe there is the opportunity to play with that (cp/m 3 disk buffers? . CF adapter is a good suggestion since I presume that is what most people are using. Been working off floppy disk drives the last couple of days and had forgotten how slow they are 
>>> I'm just going from memory, but I believe there was an error on the SBC v1 that prevented its use with DMA. SBC v2 supposedly corrected the error.
Yes I remember reading about this as well.
>>> IMHO, the DMA controller should be on the same motherboard as the CPU.
Agreed, I really like the idea of dropping the 8255 off the SBC V2 (connecting IDE directly to the bus as Sergeys suggestion) and replacing with DMA chip. That might be within my capability.
>>> Address & data lines look okay; as do /MREQ, /IORQ, /RD, & /WR. /M1 does not tri-state; I hope the CPU keeps it high.
Had assumed the SBC V2 would be good to go. Would not know how implement tri-state on /M1 as there is no more room for another buffer/driver chip. Wonder what S100 designs do.
>>> None of the existing backplanes support DMA or Z80 interrupt priority arbitration out of the box.
I had installed all links on the boards I had constructed not really understanding the full use. Fortunately easy to install for those haven't. Now I'm wondering if they should only we installed in locations where the ecb-board is not using /IEI-/IEO & /BAI-/BA
>>> Also, the DMA board must be placed on the correct side of the CPU board, and adjacent to it, to get the priority chains to work.
I wasn't aware of this requirement. I think some of Wolgangs design have /IEI-/IEO & /BAI-/BA linked on the ecb-board. It seems to me that that is the correct way to go to make them position independant and removes the need for the links on the backplane?
>>> The CPU board will have to be modified to ground /IEO & /BAO to initiate the priority chains.
Not really understanding this yet ... will get the datasheet out and read up more. Thank you for your insightful comments.
At the moment feeling like I have bitten off more than I can chew ...
Maybe a good place to start would be with the Data Gear DMA add on board https://velesoft.speccy.cz/data-gear.htm
regards Phil.
PS I have gone ahead and ordered 5xData Gear DMA boards.
[Updated on: Fri, 15 November 2019 21:18] Report message to a moderator
|
|
|
|
|
Re: ECB-DMA [message #6783 is a reply to message #6778] |
Sat, 16 November 2019 07:45   |
jcoffman
Messages: 332 Registered: October 2015
|
Senior Member |
|
|
b1ackmai1er wrote on Fri, 15 November 2019 20:34Hi everyone,
Agreed, I really like the idea of dropping the 8255 off the SBC V2 (connecting IDE directly to the bus as Sergeys suggestion)
====Yes. This was the approach on the Mark IV, and the idea worked.
>>> Address & data lines look okay; as do /MREQ, /IORQ, /RD, & /WR. /M1 does not tri-state; I hope the CPU keeps it high.
Had assumed the SBC V2 would be good to go. Would not know how implement tri-state on /M1 as
====With CPU & DMA on the same board, you don't need to worry about the chip signals. DMA knows to keep hands off of /M1. BTW: S-100 get the board priority done the right way. Each board is jumpered for its priority, and board may be plugged in anywhere on the backplane.
>>> None of the existing backplanes support DMA or Z80 interrupt priority arbitration out of the box.
I had installed all links on the boards I had constructed not really understanding the full use. Fortunately easy to install for those haven't. Now I'm wondering if they should only we installed in locations where the ecb-board is not using /IEI-/IEO & /BAI-/BA
====Yes they should.
>>> Also, the DMA board must be placed on the correct side of the CPU board, and adjacent to it, to get the priority chains to work.
I wasn't aware of this requirement. I think some of Wolgangs design have /IEI-/IEO & /BAI-/BA linked on the ecb-board. It seems to me that that is the correct way to go to make them position independant and removes the need for the links on the backplane?
>>> The CPU board will have to be modified to ground /IEO & /BAO to initiate the priority chains.
==== Don't forget, /BAO goes out from the CPU board; in on the next backplane slot on /BAI; hence the need for the soldered jumper on the backplane. [BAO and BAI should actually be on Axx & Cyy, respectively, where xx == yy. Similarly for IEO & IEI. However, the two are backwards on the Kontron backplane. IEO is on pin Caa and IEI on Abb (aa == bb). Note: BAI->BAO goes from row A->C; IEI->IE0 goes from row C->A. The backplane wiring would be easier if these signals came into a board from one side, and both left from the other side, and each change on the SAME NUMBERED PIN; i.e., Axx->Cxx and Ayy->Cyy respectively. Kontron really missed the mark on the chaining scheme. They require soldered jumpers, or more than a 2 layer backplane.
Not really understanding this yet ... will get the datasheet out and read up more. Thank you for your insightful comments.
====Wolfgang published the schematics of a couple of Kontron boards. Reading the schematic would tell you immediately how this is done.
--John
|
|
|
|
|
|
|
|
|
|
|
Re: ECB-DMA [message #6793 is a reply to message #6792] |
Sun, 17 November 2019 10:06   |
wsm
Messages: 232 Registered: February 2017 Location: AB, Canada
|
Senior Member |
|
|
@jcoffman : Having implemented both "fly-by" and "flowthrough" DMA controllers in CPLDs, I agree that "flowthrough" is somewhat easier to implement and understand but would respectfully disagree that "fly-by" transfers are not easy. The system bus address and control signals, such as RD and WR, reflect memory signals. The trick is to have unique peripheral control signals such as ATA's CSx, DAx, DIOR and DIOW. The potential problem becomes bus loading issues. Of course there's also the issue of whether a generalized DMA controller supports "fly-by" and can interface in this way.
@etchedpixels : Perhaps there are signal quality issues but when I see different logic families behave differently, I tend to first look at factors like propogation delays, enable/disable times and bus loading. For example, the HCT245 propogation delay is longer than the LS245. One thing to note with ATA is the relatively long address setup times before the DIOR/DIOW signal.
I would recommend keeping the DMA extended addressing completely independent of the MMU. After all, the basic concept of DMA is to allow simultaneous I/O and processor activity, especially in a multi-tasking environment. There simply needs to be two address latches for the DMA extended addressing, one for reads and one for writes. The only relatively insignificant DMA restriction then becomes the 64K boundary since it would take a lot of extra logic for the DMA controller to be able to increment the external address latches.
Phantom memory which replaces parts of the address space can create a different set of problems compared to purely linear extended addressing since it requires the address decoding and chip select logic to be aware of processor versus DMA activity.
|
|
|
|
Re: ECB-DMA [message #6796 is a reply to message #6792] |
Sun, 17 November 2019 21:28   |
jcoffman
Messages: 332 Registered: October 2015
|
Senior Member |
|
|
etchedpixels wrote on Sun, 17 November 2019 07:41
@wsm: I don't think its necessarily modes and timings that are the problem. I see the same problems with the Memotech MTX CFX-II and with the backplane based CF cards in RC2014. In both cases getting the CF adapter closer to the CPU helps which to me suggests it also involves signal quality. Likewise on some buffered adapters people have found that 74LS or 74ALS works and 74HC/HCT does not for certain cards.
I have twice had bad experiences with 74ACT logic; i.e., flaky to non-operational boards. First, for low power, I used a 74ACT373 address latch. Flaky operation was cured by switching to 74ALS373. Similar problem on the Z280 design from Tilmann Reh. Getting rid of 74ACT logic in favor of 74ALS / 74LS solved the problem.
My take on the situation is as follows: both of these boards distribute power & ground via wide traces, not power & ground planes. 74ACT probably has micro power use when not switching, but large current surges when it switches. 74LS and 74ALS logic, although using more power, do not produce these surges. I notice that DRAM strips (KISS-68030 & 80386EX) have rather large electrolytic, or tantalum, caps right on the strips to provide the high current surges which occur when the chips switch.
I'm surprised to hear that HC & HCT may exhibit a similar problem, although there may be another explanation. Many of the buffer driver chips in the 74LS series have hysteresis on their inputs. ACT, HCT, HC, F, AS, ALS do not.
Chips with 74LS hysteresis: '240, '241, '244, '245
Chips with hysteresis in all chip families: '13, '14, '132
--John
|
|
|
Re: ECB-DMA [message #6867 is a reply to message #6796] |
Thu, 12 December 2019 17:52   |
 |
rcini
Messages: 64 Registered: October 2015 Location: Long Island, NY
|
Member |
|
|
Just FYI, I put together a schematic for a SCSI host adapter which uses DMA. It has not been tested, but is based on a reference design I found on-line, although it was for a 6502-based system. So, I had to adapt it a bit for the ECB. The schematic is attached, I feel that the DMA part of it needs some work, and maybe the chip-select logic. Other than that, it's a simple design.
When looking at it, if anyone sees something that needs to be changed, let me know.
Rich
Rich Cini
|
|
|
|
|
|
|
Re: ECB-DMA [message #8524 is a reply to message #6913] |
Mon, 26 April 2021 09:03   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
Hi (possible necro-post)
This question of DMA for the ECB has been kicking around in one form or another for several years on this forum and the preceding mailing list. I'd like to suggest a community project to determine if the Wolfgang Kabtazke's ECB-DMA board works or not. However the issue of no DMA capable peripheral boards is a limiting factor. So my first question is "are there any DMA capable ECB boards" as part of RBC wiki or elsewhere? Do we need a DMA capable peripheral or would an ECB memory board suffice for testing the ECB-DMA?
I suspect there are no DMA capable peripherals (please correct me if I am wrong). Testing the ECB-DMA would also require a purpose-built peripheral that's DMA capable. Is that correct?
Maybe the way forward is to design a second DMA capable peripheral board specially designed to verify the ECB-DMA board. Once the ECB-DMA & DMA peripheral pair is working, the concept could be extended to other peripherals such as the ECB-SCSI and/or other peripherals like serial, parallel boards, memory, video boards, etc.
Does that sound like a reasonable approach? Otherwise I don't see a way to test the ECB-DMA and ensure it works. This could open up a whole bunch of new possibilities for RBC
Thanks, Andrew Lynch
[Updated on: Mon, 26 April 2021 10:14] Report message to a moderator
|
|
|
|
|
|
|
Re: ECB-DMA [message #8692 is a reply to message #8687] |
Sat, 19 June 2021 05:33   |
b1ackmai1er
Messages: 396 Registered: November 2017
|
Senior Member |
|
|
Findings so far:
I have managed to do a small memory to memory transfer using dma.
The data bus direction logic is not correct. I added an inverter on the 74LS245 direction pin and that was sufficient to getting the memory transfer to work but am unsure if the problem is deeper than that.
Memory Transfer fails after 5MHz clock speed (Using 10Mhz crystal with clock divider)
Memory Transfer fails on copy size greater than ~800 bytes.
Activity LED works.
The board decodes two ports. Base port is for programming the DMA chip. Second port triggers the transfer after programming.
I'm honestly surprised to have gotten this far 
[Updated on: Sat, 19 June 2021 06:39] Report message to a moderator
|
|
|
|
|
|
|
|
Re: ECB-DMA [message #8736 is a reply to message #8735] |
Fri, 02 July 2021 04:49   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
Congratulations Phil
This is really great news. I think the memory to memory sector transfers could help all sorts of device drivers. the RAM and ROM drives use a pseudo DMA like transfer with the CPU, LDIR if I recall. A real DMA option is could really open things up.
The IO transfers I think are the big gain though. It will require new drivers to exploit. Possibly new peripheral boards as some may not be suitable for DMA at all. I'd like to see an IDE especially CF that could use DMA and also an FDC. I think the current FDCs are limited to DD only at 4 MHz but a DMA capable FDC could do HD as well.
Is there any hope of using DMA with PPIDE or is the nature of the device just not able to use DMA?
I would certainly like to add DMA to the Z80 MBC. Very, very cool. Great work Phil, much appreciated
Thanks, Andrew Lynch
PS, I would stick with the DIP-40 DMA chip because those are a lot more common than the PLCC version. Is there a CMOS DMA chip?
[Updated on: Fri, 02 July 2021 04:50] Report message to a moderator
|
|
|
|
|
|
Re: ECB-DMA [message #8786 is a reply to message #8760] |
Wed, 07 July 2021 03:27   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
Hi Phillip
Awesome, this is great work and I am looking forward to robust testing of the new DMA board design. I would very much like to port the design over to the Z80 MBC and my plan is the DMA will be the next board after the Z80 FDC. Speaking of Z80 FDC, I am designing the Z80 FDC to be PIO and DMA compatible with the important DMA signals (TEND# and FDC_DMA) being exported as "flying signals" over-the-top. The Z80 DMA board will be an adaptation of the ECB-DMA board with a corresponding connector.
Probably this is not the greatest DMA-FDC design ever but the goal is to demonstrate it working and if successful we can make further adaptations in the inevitable PCB respin cycle. There are already a bunch of DMA related signals in the Z80 FDC design so I am hoping everything is covered. If someone is knows more about DMA and FDCs would please take a look at these features of the Z80 FDC and also the ECB-DMA and post feedback or send me an email.
Again, this is wonderful and its great to see this DMA issue finally getting its due after literally years of discussion. Great job and keep going!
Thanks, Andrew Lynch
PS, oh yeah, what I originally meant to say is these complicated direction logic circuits can drive you nuts trying to figure them out and get it straight. For me it was the bus direction on the original Z80 SBC with all the rules for internal and external IO, memory, etc. More recently, on the Z80 MBC it has been the chip select logic on the Z80 ROM and Z80 RAM were an odd combination that even on two separate boards had to work together. What I did was write up logic truth tables in my notes to get all the scenarios straight and ensure the outcome is what I was expecting and wanted to happen. Actually on the Z80 ROM and Z80 RAM boards I ended up putting the truth tables on the schematics because it was so difficult to explain how those two boards interact. You might consider a similar approach to make your design logic more visible and enable others to help you. Just a thought meant to help
[Updated on: Wed, 07 July 2021 03:34] Report message to a moderator
|
|
|