Minimig Discussion Forum

Discussing the Open Source FPGA Amiga Project
It is currently Wed Dec 13, 2017 8:46 pm

All times are UTC




Post new topic Reply to topic  [ 7 posts ] 
Author Message
 Post subject: A quick rundown
PostPosted: Wed May 17, 2017 10:35 pm 
Offline

Joined: Wed May 17, 2017 3:53 am
Posts: 3
Hey all,

It seems I'm a bit late to the party. I see there's not much activity on the forum right now, but I'll give it a shot here anyway.

So Minimig project is pretty old now, and I guess quite mature at this point. It's at least 10 years old now, and over the past 10 years a lot of people tinkered with it and created all kinds of modifications and variations, I've been Googling for the past couple days and found a lot of old posts, and many broken links. So I need a little bit of help getting a clear picture of current Minimig landscape of versions and forks.

What's the current maturity state of ECS implementation? AGA? What are the best available 68k cores right now?

I don't own a Minimig board yet, but I would like to take a shot at building one using evaluation boards. I have an old Digilent Nexys2 board with Spartan 3E 1200K gate FPGA on it. My understanding is that original Minimig was also based on Spartan 3, a 400K gate part. The FPGA and board is somewhat similar in capability to Terasic DE1 board.

Someone else previously inquired about porting to Nexys2 board, but never reported back with results. That was 7 years ago.
http://www.minimig.net/viewtopic.php?t=303

Someone else discussed the board and the PSRAM on it. I've done a few video and memory projects and had success with it. The 16Mbyte PSRAM chip works well as a 70ns async SRAM. The 16Mbyte onboard flash also works well and has 75ns access time. PSRAM and flash share the 16bit data bus and share the address bus, so FPGA can enable and access them only one at a time.

If I were to use this for Amiga, would this mean that I would have chip RAM, slow RAM, and no fast RAM? How would this memory layout work?
Onboard flash suitable for Kickstart?

I would like to take the "softcore everything" approach, and not use a PIC or ARM. Which fork/release is best for starting for a softcore approach?

I have a Gotek floppy emulator on hand that works with my A500, would this simplify initial implementation if I don't have to emulate the floppy on the board?

Question about the original Minimig board, it used a 68EC000 manufactured by Freescale, a 20MHz part I believe. What was the actual frequency it operated at in the Minimig circuit?

Any insight, suggestions and recommendations are welcome.

PS What's the most active forum where Minimig and derivatives are discussed?


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Tue May 23, 2017 7:47 am 
Offline

Joined: Tue Nov 09, 2010 3:10 pm
Posts: 316
Hi,

There are a couple of variants of FPGA boards running minimig, probably the three most prominent of them are the original Minimig board, the MiST board and TurboChameleon64. Besides those, you have the FPGAArcade Replay board, which runs a variant of an updated minimig core, but their sources are unfortunately not available. Plus, a bunch of minimig variants on various development boards, like the Terasic DE1 board etc.

Unfortunately, there is no central repository for all these minimig versions. What's more, they all differ in some details, so you can't really take code from one of them and hope to run it without changes on a different board. People have tried to merge at least some of these different cores in a central repository, without much luck. Probably just lack of free time, I guess (at least that's true for me ;)). Some time in the future, I hope I will have a repository with support for at least the original Minimig, the DE1, MiST and DE1-SoC boards. Can't say when that will happen though ;)

As for the maturity of the project, I can only comment on the minimig variants I'm familiar with. The ECS core on the original minimig and the MiST board is pretty good, vast majority of games run without problems, most demos too. There are some demos that don't work correct, but they are in the minority. Most problems are in some corner cases of register timings - writes to some registers sometimes don't have an effect on real Amigas, depends on stage of DMA pipeline. Blitter also has some problems, and would need an overhaul. Besides that, I'd say the minimig is pretty good at matching an ECS Amiga. The original board also has the real 68000 IC on it, so it is really close to an actual Amiga. Minimig variants that use the tg68k softcore are a little less compatible, but not by much. And to answer your question, the tg68k core is the most complete 68000/68020 core that I know off, but it is not perfect, and it is not cycle-accurate.

Your Nexys2 board should be able to run at least the ECS variant of minimig, plus the 68000 softcore and a control CPU. I would suggest building/buying an SD card adapter, and forget about the flash on the board. The kickstart image can be loaded to memory from SD card. You will need a softcore control CPU core.
You can look at MMrobinsonb5's minimig_c3 repository on Github, which has an added control softcore: https://github.com/robinsonb5/minimig_c3
Or my work on the minimig-DE1 here: https://github.com/rkrajnc/minimig-de1
There are different variants of softcore control CPUs used with minimig: the original minimig-de1 by Tobiflexx used a second tg68k core, MMrobinsonb5 used ZPU, and in my version of minimig-de1 I used the OR1200. Take your pick :)

For start, I would suggest to stick with the floppy emulation in minimig, which is tested & working. Once you have that running, you can work on the real floppy support.

The original minimig board's 68EC000 runs at the same ~7MHz frequency as the real Amiga, but can be overclocked to ~50MHz.

As for the most active minimig forum, I think this is it :) There are some limited discussions on other Amiga-, MiST- or other retro-related forums, like eab.abime.net, amibay.com, atari-forum.com, mist-fpga.net.

Feel free to ask any additional questions, and I (and others here) will try to help as much as I can.


Good luck with your project and have fun! :)

_________________
** my minimig builds: http://somuch.guru/ **


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Wed May 24, 2017 6:09 am 
Offline

Joined: Wed May 17, 2017 3:53 am
Posts: 3
Thanks for such an informative reply!

So I have downloaded the source for original Minimig and your DE1 release, both from your GitHub repo, and ran diff on the main Minimig Verilog files, and found quite a lot of differences. As you've said each version had a lot of various changes.

So if I don't use the onboard flash on my board (and that's okay, for now) my memory situation is basically more similar to the original Minimig, just the SRAM (Minimig has two banks, but on the same bus it looks like). It looks like you're using the flash, SRAM *and* the SDRAM on the DE1.
What would be the quickest way to modify the DE1 release so everything is on the one SRAM like on my board?

Yes, I have an SD breakout module that I can use with the FPGA board, that won't be a problem.

Wow, that's impressive overclocking on that 20MHz 68EC000 part. Is that at 3.3v and on Minimig board? Does the rest of the system (memory and softcore Amiga chipset) remain at the original speed or are they sped up also? Is the CPU able to run at faster clock than memory and Amiga chipset? How's this possible?


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Wed May 24, 2017 8:58 am 
Offline

Joined: Tue Nov 09, 2010 3:10 pm
Posts: 316
Ah yes, I forgot about the memory bandwidth. Existing minimig variants have either SRAM and an external control CPU (with its own memory), or use SDRAM running at ~114MHz, where the control CPU and minimig chipset share the memory. I'm not aware of anyone successfully porting minimig to a board with PSDRAM.

I took a quick look at the PSDRAM datasheet used on your board, and while I think the random access 70ns timings will suffice for the minimig chipset and CPU (chipRAM) accesses, the datasheet does mention burst access mode. But it seems that even in that mode, you have no control over refresh cycles, and must continuously monitor the wait signal - which means unpredictable timings.

While porting minimig to that board could be doable, it is going to be "fun" - i.e. lots of work, with no guarantee of success. If you want to go ahead with it, I would suggest to at least start with an external control CPU, perhaps get a cheap development board with the AT91SAM7S256 ARM microcontroller, just to make the initial work of porting the minimig core to your board easier.

_________________
** my minimig builds: http://somuch.guru/ **


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Wed May 24, 2017 9:39 am 
Offline

Joined: Wed May 17, 2017 3:53 am
Posts: 3
Thanks for the reply!

Not sure what you mean about the memory. This PSRAM in default configuration works in async 70ns mode, just like regular SRAM, no refresh or wait states. According to specs for original Minimig board the SRAM is 70ns also.

chaos wrote:
I'm not aware of anyone successfully porting minimig to a board with PSDRAM.

I took a quick look at the PSDRAM datasheet used on your board

It's PSRAM for Pseudo SRAM, as in SRAM implemented using cheap SDRAM technology internally, *not* PSDRAM or Pseudo SDRAM (I'm not sure if that's even possible). You can safely forget about the "P" if you don't want anything faster than 70ns.

Yes, there is burst mode, but it has a complicated setup and has limitations, no refresh collisions here either from what I remember. Not sure why I'd need it considering we already have 70ns SRAM functionality.

There is also page mode and synchronous modes. Page mode will have page boundary wait states as well as refresh collisions, and synchronous will have refresh collisions just like regular SDRAM, except there is no control of refresh, it's automatic. Even though synchronous is pretty fast I avoid it because I will hit a refresh in the middle of a scanline fetch in a video system, and that's no good.

The only practical way to use it is the default 70ns async mode, and in that mode there are no wait states or refresh collisions. Is this good enough? This will operate at ~14MHz.

Yes, I'm looking into building an ARM module and the 68EC000 for reference. At that point it will basically be the original Minimig board.

So is 70ns SRAM not good enough? Or do we want more bandwidth for CPU cache and memory for softcore control CPU?


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Wed May 24, 2017 10:22 am 
Offline

Joined: Tue Nov 09, 2010 3:10 pm
Posts: 316
r00tb33r wrote:
It's PSRAM for Pseudo SRAM, as in SRAM implemented using cheap SDRAM technology internally, *not* PSDRAM or Pseudo SDRAM (I'm not sure if that's even possible). You can safely forget about the "P" if you don't want anything faster than 70ns.

Thank you for the correction. So it's PSRAM. Doesn't change the fact that you need more bandwidth if you would want to use it for the control CPU also. Like I said, minimig ECS with just chipRAM and slowRAM (that is, no fastRAM) should be doable with an external microcontroller.

_________________
** my minimig builds: http://somuch.guru/ **


Top
 Profile  
 
 Post subject: Re: A quick rundown
PostPosted: Thu May 25, 2017 8:30 am 
Offline

Joined: Sun Oct 11, 2009 3:19 pm
Posts: 20
r00tb33r wrote:
Thanks for the reply!

Not sure what you mean about the memory. This PSRAM in default configuration works in async 70ns mode, just like regular SRAM, no refresh or wait states. According to specs for original Minimig board the SRAM is 70ns also.

So is 70ns SRAM not good enough? Or do we want more bandwidth for CPU cache and memory for softcore control CPU?


You will need more than that. Just get yourself a more modern board,
if you like xilinx, get something with artix7, ddr3 and hdmi.
You will have much more fun with it, and after you managed to get the memory working, you also have enough bandwidth
to get a nice resolution on your screen.

Getting PSDRAM working is nice, but the same problem as getting the ddr3 to work.

Just my, 0.00000 cent...


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

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


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:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Translated by Xaphos © 2007, 2008, 2009 phpBB.fr