shanshe / Z3660

Amiga 4000 CPU accelerator board based on A3660 and Z-turn FPGA board
GNU General Public License v3.0
55 stars 8 forks source link

Suggestion for next hardware iteration #1

Open tkurbad opened 1 year ago

tkurbad commented 1 year ago

Hi @shanshe,

First of all, thank you very much for this cool project!

I ordered some PCBs and two of the Z-Turn boards yesterday. I will report back on how everything goes. I'm curious how this will perform in comparison to the BFG 9060. ;-)

I have a suggestion for the next PCB iteration: Would it be possible to place the headers for the Z-Turn module closer to the 68060's socket? This opens up the possibility of putting the card in an A3000.

Thank you, and best regards Torsten

shanshe commented 1 year ago

Hi @tkurbad,

Right now, BFG 9060 has superior performance on RAM data transfers. BFG 9060 uses every 060's clock cycle to talk with the DRAM (through a DRAM controller implemented on the big CPLD).

Z3660 uses 1 of each 2 clock cycles to talk directly to a state machine on the FPGA, and FPGA talks with ARMs RAM through an AXI interface. This process has a relatively high initial latency, but it can serve burst of data at 200MHz. So right now, Z3660 has a slower RAM, but it will go faster when I can use every single 060 clock cycle. (It needs more debugging on FPGA, but due to the latency it will never go as fast as BFG, maybe close, but always slower).

But... although it is slower, we are talking about 50 MB/s right now (with the 060 at 100 MHz, and the bus at 50MHz). The best Z3 RTG board can support data transfers about 13 MB/s (limited by buster and other logic). So with Z3660 you get a very fast RTG, as it uses the same fast path (it is like a very fast ZZ9000).

Thanks for the suggestion but I think that even moving the headers, I think there is no space, since Z-Turn grows a lot upwards. I don't have a A3000 to test... so... could you be the first one to test it? :) Also, 060 is very close to ethernet and HDMI connectors, so we can't move the headers so much...

I think that the evolution of this Z3660 v021 should be using the same CPU module that ZZ9000 uses (not as tall as Z-turn), but then we have to add ethernet, HDMI, SD, USB etc headers to the main board... hummm... it reminds me to the Warp 4060!!!

Thank you, and please read the schematics carefully, there are some options to choose from. Ask me please... My boards are also in transit. I'll take some photos and will post a build guide here on the wiki. The first thing you should pay close attention to, is the ultra-tiny resistor packs... Even when you see them soldered (using a microscope)... maybe they're not!!!... So you should test for continuity with a continuity tester... (from PCB pad to terminal of the resistor).

Best regards, shanshe

tkurbad commented 1 year ago

Thank you for replying so quickly.

Yes, I can see the problem with the connector placement on the Z-turn board vs. the 060 socket.

What I really like about your project is that you don't try to reinvent the wheel. The A3660 and the ZZ9000 are well tested by now, and the ZZ9000 drivers and software are getting mature over time.

I also like that you develop everything so openly and even chose GPL3 as your license. Being a Linux user for decades, I can totally relate to that.

I also like the idea of using the same Zynq module as the ZZ9000. This will be to the mutual benefit of both projects. Don't know how short the supply of those is, though.

Regarding the connectors: How about placing FCP connectors? There are already several solutions using those, e.g. the Pistorm32 lite for CM4. If you choose the right pinout you can stay compatible to all those Chinese breakout boards thar convert FCP back to HDMI, USB and whatnot. This would also reduce the height of the card assembly significantly and make it even more A3000 friendly...

Just a thought. ;)

Btw., I'm no stranger to soldering. You've probably seen me as torsti76 on various Amiga forums...

shanshe commented 1 year ago

What I really like about your project is that you don't try to reinvent the wheel. The A3660 and the ZZ9000 are well tested by now, and the ZZ9000 drivers and software are getting mature over time.

Thanks for your comments. One of the reasons that made me to start this project was to use the know-how I acquired when working with ZZ9000 software. I never used Vivado before that, and Lukas explained me a lot of things. Another source of inspiration was _Bnu. He did a lot of work on graphics functions of ZZ9000. Then we moved to Pistorm... another good source of inspiration hehehe. So yes, all is yet invented, we need "only" to solve this big puzzle... My first attempt was to add some RAM to the A3660. But someone in another project told me... I can send addresses and data from the FPGA to the Amiga... hummm... I tried it and Musashi cpu emulation worked after some days. Then, I saw Amiberry cpu code for ARM7... and so on...

Regarding the connectors: How about placing FCP connectors? There are already several solutions using those, e.g. the Pistorm32 lite for CM4. If you choose the right pinout you can stay compatible to all those Chinese breakout boards thar convert FCP back to HDMI, USB and whatnot. This would also reduce the height of the card assembly significantly and make it even more A3000 friendly...

Just a thought. ;)

That's a fantastic idea!!!

Btw., I'm no stranger to soldering. You've probably seen me as torsti76 on various Amiga forums...

Oh, ok. Then your feedback on PCB building will be highly appreciated!!!

tkurbad commented 1 year ago

My PCBs arrived today. Looking good! Before I can start building the first sample, we'll have our family vacation. Assembly will start at the beginning of September.

shanshe commented 1 year ago

I have built one prototype. All working and fine, except C27, there is no space for this electrolytic capacitor. But we have enough capacitors in the board, hahaha.

Also I have verified two new features: 1.- SD-SCSI activity led connections on JP6 and JP7 (input from mother board and output for the HDD front led) 2.- LTC2990 used to measure 5V, 3V3 and 060 THERM resistor.

ottifant011 commented 1 year ago

Good day,

Thank you very much for this great project. I finished soldering my card yesterday except for the resistor networks. Everything is easy to solder :). The commissioning was a bit bumpy. At the beginning it had a 68060 Rev1 on it. Of course it didn't work because the clock rate is 100MHz. After swapping it to a 68060 Rev6, that also worked. CPU emulation worked straight away, graphics part also works and Fastram is also integrated. Network not yet tested, what doesn't work yet is the SCSI emulation, I have set up an HDF file with Winuae and formatted everything, but the image is integrated as soon as you access it, there are bad sectors. A setup with the HDToolbox is also not successful, it acts as if the config is saving but when it is opened again everything is empty again. I think I'm doing something wrong, maybe it's possible to provide an empty hdf file. File system used FFS with Amigaos 3.2.2.1 What I also noticed is that if you do a reset several times you switch between the emulations and the real CPU. How do you connect the AX sound module?

Is there a forum where you can find out more about this map or a Discord channel?

Thanks and keep it up

Can we also support you through a donation?

Many greetings from German Klaus

shanshe commented 1 year ago

Hi, fantastic news. Yeah, resistor networks are so tiny... it is the most difficult solder part. Some week ago I have done some tests about changing clock frequency. My first attempt was to change the frequency on the fly... but so many times I hang the Amiga when changing to some "magic" frequencies. So I have lowered my expectations and now I can change frequency but rebooting the machine. Stables frequencies are in increments of 10 MHz. So, right now I can switch to these frequencies: 100 MHz, 90 MHz, 80 MHz, 70 MHz, 60 MHz and 50 MHz, but with some reserves... Mother board frequency is 1/4 of CPU frequencies for 100 MHz to 70 MHz. But with 60 MHz and 50 MHz, mother board gets 1/2 of CPU frequency. (So 60 MHz -> mother board gets 30MHz, a bit of overclocking). All this will be available in some weeks (I'm now too busy at work).

SCSI: please don't use it until I publish the new version. Right now it has some issues with cache coherency with ARM's RAM and Amiga RAM. It has different behavior when using EMU and real 060 CPU. When using real 060 CPU I have to ensure cache coherency only with 060 RAM, but it is the same than ARM RAM, so I can use ARM MMU to do that in a very convenient way. But when using EMU... hummm... EMU is running in one ARM, and SCSI in the other ARM. The RAM are the same, but we have two MMU to play with, one MMU for each ARM... The only way I have right now to make it work properly is to flush cache EVERY single SCSI call... It works, but you can't get the 20 MB/s you get with 060 CPU (it is like 11 MB/s).

AX: yeah this part is a good part... I have emulated it inside one of the ARM!!! Yeah, I have done some low pass filters, band pass filters, etc., so you can get all functions that AX makes on ZZ9000 (AHI sound, but also MHI mp3 decoding with graphic EQ with AmigaAMP). What I can't do obviously is to sample Amiga native audio and mix it with AHI.

There is no Discord channel because we are a few people right now, but we can open it when we want...

Donations: I make this because I like it, I am the first one that wants that this thing works perfectly, because I want to use it every day. And actually, Z3660 is my default CPU accelerator, because I can make with it all I want. Probably for me and others, it could be easy to buy a Warp 4060 (well, when it is on the market) and be happy with it... But when I was very close to development of ZZ9000 firmware, and Pistorm CPLD firmware and Musashi emulator software, I saw Jay Miner in a dream (hahahaha just kidding) and I said "these projects are the perfect way we can develop a lot of things". So I went to the way of open source. I have developed this but I have learned a lot from _Bnu (he was also working in ZZ9000 and Pistorm projects), but he left Amiga and all his work... Also I learned a lot of HDL from Lucas (ZZ9000).

Well, that all said, I'm only an Amiga enthusiast that has some spare time (tiny spare time :) ). I can develop some things but I need help to develop this even more... so I don't accept donations in cash, I accept donations on time to help me to make this work :)

And finally, I have to say thank you for your kind words and your feedback, it is very important to me...

shanshe commented 1 year ago

"What I also noticed is that if you do a reset several times you switch between the emulations and the real CPU."

I forgot that part. Yes, I have done some kind of switch. If you maintain reset for a few second, you will notice some beeps. 1 beep is 060, 2 beeps is Musashi EMU, 3 beeps UAE, and 4 beeps UAE with JIT. In the new firmware I have been working on, we can choose some mp3 files to play some message. For example I have converted some text to speech Siri-like (or Alexa or others from a web). So when you maintain reset for a few seconds you can see on HDMI a progress bar and you can hear Siri to say "060 CPU selected". I'm not sure if this is a very demanding feature, hehehe, but it was to test that I can fire MHI mp3 decoding from one ARM... and yes we can... hehehe

ottifant011 commented 1 year ago

Thank you very much for helpful explanations. I still have a few questions. With the 68060 CPU clocking, is it possible to set the default to 50MHz in the Boot.bin? Can you turn off caching on SCSI? AHI requires AHI6 or AHI4 is also possible, I installed AHI 4.16 and the X3660ax is not displayed. But what works well is MHI and that's very cool even over HDMI. Will it also be possible to play Flac files in the future?

Overall a great card, thank you again for that!!!!

Discord Channel would be a great thing, would be better for exchange.

Thanks and keep it up

shanshe commented 1 year ago

Oh sorry about AHI, I have reset driver number version to 1.0 and then AHI doesn’t show any Audio mode. Version number of driver must be equal or greater than AHI version… I will change it in the next commit. By default I used 100 MHz, but it can be any other frequency, and in fact it is a good idea to start at 50 MHz. Later you can select it in the config file, or via SD env directory… or ZTop app. SCSI is working fine right now (in my development version) and I think that disabling CACHE will make some performance issues in other parts of ARM. Flac… or other format could be possible if we can get the source. I have even a MPEG-2 video player in ARM working (only as a test, but it is included in this project)… but finally we will need some Amiga software to play it. MHI is maintained by the same person that makes AmigaAMP, so we could ask him about Flac or other formats. But… we have the source code of axmp3 command line app, so it could be adapted to other formats… it could not be so difficult, as this app only sends a stream to the ARM… ARM is the one that decodes audio and plays it…

exocyt0sis commented 11 months ago

Hi! Just wanted to drop in and say that this looks like a really interesting project, so I'm crossing my fingers for an A3000 version too!

The BFG9060 seemed promising, but from what I understand it suffers from SCSI lockups when installed in an A3000 (which, in turn, seems to be the result of buggy Buster and Ramdac chips that currently have no modern, bug-free drop-in replacements).

If the Z3660 can provide for a rock stable solution for the A3000, than this board seems like a no-brainer for any A3000 owner to install 👍.

tkurbad commented 11 months ago

@exocyt0sis Unfortunately, in its current form, the card doesn't fit the A3000 physically. But I agree with you that the design per se is a (probably much) better choice for the A3000 than the BFG9060. Now let's all test the card in the current release to make it worth @shanshe's while to keep on with this nice development. :100:

shanshe commented 11 months ago

Thanks @exocyt0sis!!! As I don't have an A3000 it is difficult for me to say if Z3660 will work or not. But firstly, as @tkurbad says, it doesn't fit physically inside of an A3000. We need someone with an A3000 (or ReA3000 or AA3000 for example) that could try the DMA CPLD firmware (I have tried it with a new A4091, and it works) and that he/she could make some develop on the CPLD firmware if there is some trouble with A3000... And finally, we need to merge both (DMA and no DMA) firmware in one. About new version I have been working on... 1.- I have fixed some issues with scsi emulation. Main issue was the ARM's cache. 2.- Now I can change the 060 frequency in 5Hz steps. There are a lot of parameters to change phase and duty cycles of 6 clock signals: AXICLK, PCLK, CLKEN, BCLK, CLK90, CPUCLK. Each one of these signals have to be modified for every single frequency we can choose... so now, I have 11 parameter sets (for 50 - 55 - 60 - 65 - 70 - 75 - 80 - 85 - 90 - 95 - 100 MHz). Some of them are very stable in my system, and some aren't stable... I measure them with an logic analyzer that samples at 800 MHz. When I use some unstable frequency, I change on the fly those parameters to try to make that frequency stable... it is a very annoying task, and I don't know if it will work for every one. When I upload the new version people could tell me about how it is working in their system...

ottifant011 commented 11 months ago

WhatsApp Bild 2023-11-20 um 19 54 06_5a43311d WhatsApp Bild 2023-11-20 um 19 54 06_a7540542

ottifant011 commented 11 months ago

The height could be just right

shanshe commented 11 months ago

Hummm, well I see that the fan grows up... is there enough space for the floppy drives?

exocyt0sis commented 11 months ago

@shanshe - it looks really promising! I'm an A3000 user myself, however I'm afraid I'm nowhere near your engineering skills. That being said, I'm crossing my fingers that the Z3660 will provide a rock solid 68060 upgrade path for A3000 users. From what I understand, the BFG9060 isn't a viable solution for the Amiga 3000 since it doesn't play well with the onboard SCSI hardware; from what other A3000 users testify, putting a BFG9060 inside an A3000 is like throwing a pair of dice; you might just be lucky to get it stable, but chances are SCSI I/O will freeze the entire system.

Here's where I hope that the Z3660 project will find it's place. Since 50 MHz rated 68060s with MMUs seem to be reasonably priced, and since a lot of Amiga 3000 users are still stuck with their base CPU configuration (i.e. the stock 68030), a brand new 68060 upgrade path that is designed for the A3000 in the first place would be most welcome! 👍

I'll absolutely keep close tabs on your progress - best of luck!

ottifant011 commented 11 months ago

Hmmm, nun ja, ich sehe, dass der Lüfter größer wird... ist noch genug Platz für die Diskettenlaufwerke?

Yes, you're right, you need a flat fan if you want it in the 3000s. Unfortunately, what you can't change is the network connection, which is a bit high but it could just work. will test later. What I learned from another tester is that the internal SCSI part is also very unstable and there are also problems with Zorro cards. for example there are problems with the Freeway Triton when the flash is active. But I think some problems can be solved. Let's wait for the next update.

shanshe commented 11 months ago

@ottifant011 Yeah SCSI is completely not working in the last version I have uploaded. I don't know why it was working in my system... but suddenly I lost some partition. I have been working on it, and discovered a solution (was a cache related issue as I explained before). The freeway... maybe it is using DMA? I have tested DMA only with 060 and A4091, so probably it will need more testing... I have not implemented DMA on CPU emulators (it will need bus request and relinquish, but I have only done bus request at emulation start, and never attends to other's bus requests, from 060 or DMA). Also, I should merge the two versions of CPLD firmware (DMA and non DMA) in one firmware...

ottifant011 commented 11 months ago

sorry, you misunderstood me, I didn't mean your part from the SD to SCSi, but the onboard SCSI from the Amiga3000D

shanshe commented 11 months ago

Ah ok, sorry... So, finally I think that I will need some A3000 to test it... Someone from here (Spain) told me about to send me one to test... but he is a bit far from my home, and I don't want to damage an A3000 with a shipment... hehehe The alternative is that one that has an A3000 can measure some signal from the bus with a cheap logic analyzer... or even measure it with the FPGA... hummm that would be very interesting... it would be like transform to the Amiga into a logic analyzer hehehe

ottifant011 commented 11 months ago

Hi, a general question: how is the jumper on the mainboard internal or external?

shanshe commented 11 months ago

Hi, a general question: how is the jumper on the mainboard internal or external?

External, like A3660.

TurricanA1200 commented 10 months ago

Good day

I also wanted to get in touch about the great card.

I built two of them and so far I'm thrilled with how stable the card works in this stadium.

I tested the z3660 on my TX1.1 and found that the Zorro3 doesn't work (yet). Yesterday I wanted to test the RAM and removed it from the TX and had different RAM areas in the system, sometimes 1152MB sometimes 1280MB. But if the onboard RAM is on the TX then the RAM is correct again with 256MB Z3 and 256MB TK RAM.

MFG Daniel

PS: Sorry for making another post :)) Is my first message in Github.

shanshe commented 10 months ago

Hi everyone ( @TurricanA1200 @tkurbad @exocyt0sis @ottifant011 )

If you want we can talk here about Z3660: https://discord.com/invite/EQUTeMb8

I know that today (dec 25th) is not a good day for talking about our hobbies, it's a day for the family... But tomorrow I'm ready to get back to the Z3660 development (at least a week of fun!!!)

exocyt0sis commented 9 months ago

Hi everyone ( @TurricanA1200 @tkurbad @exocyt0sis @ottifant011 )

If you want we can talk here about Z3660: https://discord.com/invite/EQUTeMb8

I know that today (dec 25th) is not a good day for talking about our hobbies, it's a day for the family... But tomorrow I'm ready to get back to the Z3660 development (at least a week of fun!!!)

Thanks for the invite. Unfortunately, Discord doesn't support AmigaOS. That being said, if you don't mind I'd like to post a question in this thread. Today's update (1.02) states "[...] a lot of improvements on SCSI emulation. It fixes LBA and 64 bit stuff, and mainly it fixes a bug in filesystem loading that was expanding the hdf files, filling up the SD."

What, if anything, does this mean for Amiga 3000 users with stock Commodore chips? Will the BFG 9060 work stable now?

shanshe commented 9 months ago

No, it is nothing about A3000. Nor BFG 9060... do you mean z3660, right? Well I don't have an A3000, and even I don't have a BFG 9060... but maybe one day... hehehe This update is about SCSI emulation that is made inside one ARM, the same one that read/write to the SD. There were some problems (I forgot to enable LBA, and 64 bit) with fatfs library, but the worse part was the filesystem hunk reload from the z3660_scsi.rom. That part (that is a copy from pistorm-musashi) doesn't work properly in the Zturn ARMs, and was making to grow the first hdf you use (fillinng up the SD, and corrupting your hdf files...). So, I have push those fixes, becuase the systems that we are testing, now are working correctly (mostly A4000 TX and CR from Hese).

exocyt0sis commented 9 months ago

No, it is nothing about A3000. Nor BFG 9060... do you mean z3660, right? Well I don't have an A3000, and even I don't have a BFG 9060... but maybe one day... hehehe

So sorry - you are absolutely right. I was so focused on the BFG 9060 I forgot what this Github repository is all about 🤦 . That being said, please excuse me and let me rephrase the question/statement:

The BFG9060 isn't ideal for the Amiga 3000. From what I've read about it so far, it seems to make the system really unstable. The ZZ9000 hasn't really delivered either, unfortunately. For that reason, I hope the Z3660 will be the upgrade solution Amiga 3000 deserve. Despite a lot of people express their like in the A3000, it seems as if the last few years have been all about the A4000.

For all of these reasons, I'm crossing my fingers that the Z3660 will deliever on all accounts. Personally, I have a spare MC68060 I would really like to put to good use in my Amiga 3000, and with a bit of luck the Z3660 is the card I'm looking for.

By the way, do you see any reason it will not be fully hardware compatible with the A3000?

shanshe commented 9 months ago

Hi, Z3660 is working with A3000 (with both 060 and emulator) as reported by @kavanoz64 (kavanoz at discord channel). Probably, internal A3000 SCSI is not working as it would require DMA CPLD version (I tried on a separately branch, currently I'm merging it to the main branch). Finally, Z3660 should be compatible with A3000 in the same way A3660 is... (well, with the exception of SCSI DMA, that A3660 has nothing to do here)

exocyt0sis commented 9 months ago

Hi, Z3660 is working with A3000 (with both 060 and emulator) as reported by @kavanoz64 (kavanoz at discord channel). Probably, internal A3000 SCSI is not working as it would require DMA CPLD version (I tried on a separately branch, currently I'm merging it to the main branch).

Thanks for clarifying. Although it's good to know that the Z3660 is mostly compatible with the Amiga 3000, there still always seems to be some caveat 😶. The BFG works with the A3000 - sort of, if you have upgraded custom circuitry. The Z3660 works with the A3000 - if you give up your onboard SCSI controller.

I really appreciate your efforts here and I'm glad for every Amiga 4000 owner who has found this project, but at the same time I really wish someone would make an MC68060 board that will work with the A3000 without any compromises at all. Again, though, the Z3660 looks like a really cool project and I love the onboard RTG, AHI and Ethernet features. In fact, I could probably not ask for a better card - the only thing that's missing is USB that is fully compatible with Poseidon and similar USB stacks.

kavanoz64 commented 9 months ago

My Github username is @Kavanoz64 I know it's confusing, but when you refer to Discord name, maybe don't use @ symbol.

shanshe commented 9 months ago

edited :)

kakemoms commented 8 months ago

Hi!

I'm going to make a Z3660 and have started ordering a few things (060, CPU connector, DCDC). JLCPCB seems to have the best price at the moment.

Anything I should be aware of before I mush it all together? Can I use pin headers for the CPU or is that a bad idea.

TurricanA1200 commented 8 months ago

Please do not use pin headers.... If I have a dealer who has the correct 68060 socket, I can send it to you later.--Diese Nachricht wurde von meinem Android Mobiltelefon mit WEB.DE Mail gesendet.Am 12.03.24, 07:57 schrieb kakemoms @.***>:

Hi! I'm going to make a Z3660 and have started ordering a few things (060, CPU connector, DCDC). JLCPCB seems to have the best price at the moment. Anything I should be aware of before I mush it all together? Can I use pin headers for the CPU or is that a bad idea. —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>