Amiga.org
Amiga computer related discussion => Amiga Hardware Issues and discussion => Topic started by: ferrellsl on April 29, 2009, 03:00:28 PM
-
Has anyone considered using the fpgaarcade system to implement a lot of the Natami softcore code for testing. It already has many of the hardware features we're looking for in the Natami and it already runs Minimig softcores. But it's a bit more advanced than the Minimig in that it supports IDE, DVI, more RAM, etc.....
Any Natami team members on here who would like to comment?
See http://www.fpgaarcade.com
-
They are more than welcome if they wish to.
The FPGAArcade Amiga core will be enhanced and supported by me. With the patch daughter card it is possible to quickly wire up the original custom chips and check the behavior of the soft cores. We are doing this with the 68K soft core to start with, and I am building a 68030 onto the patch card as well to verify future 32 bit processor cores.
My Atari chips are cycle accurate, and hopefully we can get the open source Amiga core to the same state.
/Mike
-
I'm just having this fpgaarcade board lust. I so want want want :)
-
Man, that is sweet! I can't wait to get one with '030 and AGA or SAGA support.
-
@MikeJ
Mike, you and Gunnar von Boehn should talk!
See: http://www.natami.net/knowledge.php?b=3¬e=6493
-
The hardware 68030 is to verify the accuracy of the softcore.
It won't be needed to run up the system. The optional daughter board will contain Ethernet and USB interfaces instead. If performance becomes an issue we might add an SRAM onto the expansion board (there are 120 odd pins to the FPGA) so the platform is expandable. The patchboards are also available so people can add other interfaces if they wish to.
/Mike
-
I should also add that the aim is to get this out as soon as possible. The time taken so far has been developing the hardware. Also, although this is an Amiga group, the aim is to also run other platforms such as the arcade games, Atari ST etc.
I have also ordered a 800x480 resolution 4.3" LCD with touch screen which will sit on the top board. I thought it would be fun, I always wanted a true portable Amiga - and software emulation doesn't count :)
Four prototype systems are in existence and have/will be shipped to developers who are working in this area.
Another 10 or so will be built next month.
/Mike
-
I want one of your boards once they're out Mike. I think it'll be a great piece of kit for running MiniMig and expanding upon it. Not to mention the numerous other possibilities for platforms!
The idea for the NatAmi is that it'll be fully open sourced I believe. So as long as there's room in the FPGA there should be no impediment to porting SAGA or the parts the people want across too a MiniMig/AGA core.
Andy
PS: it's really great seeing the continual progress on your site :-)
-
@MikeJ
Mike,
I think you and Gunnar should collaborate. See his post here: http://www.natami.net/knowledge.php?b=3¬e=6493
Steve
-
I think any joint venture is dependent on what license (GPL?) that will be used. Also I have a gut feeling that fpgaarcade will be out faster and cost less than NatAmi.
-
The aim is to be shipping by early summer.
The only license issues are with the C64 SID at the moment but this will be resolved.
Target price is 200Euro. Early samples might be slightly more, depends if a PCB respin is required or not. Volume production is possible at a much lower price.
/Mike
-
I just read the thread "What is the max RAM on an A2500 and what determines it?" (http://www.amiga.org/forums/showthread.php?t=41373). It should be possible to create an Zorro expansion slot card to fit those extra i/o pins. Would be an incredible fun thing to test physical expansion cards on a FPGA board ;)
A an 100 ohm resistor in series should let the protection diodes of the FPGA handle the 5V -> 3.3V conversion. And 3.3V to 5V can be handled directly due compatible levels. The powersupply and other stuff should be straightforward.
What's up with C64 SID?
-
Yep, what's wrong with the SID ?
I am finishing my own C64 implementation in VHDL (got the VSP and AGSP tricks working last weekend :-) ).
Do you use somebody else's SID ?
The SID is not so complex to implement compared to the VIC-II. I had quite a lot of head scratching with the filter but I figured it out now.
Regards,
Frederic
-
The NatAmi project looks very interesting. We are going in a slightly different direction - they are making a more powerful Amiga, while I wish to clone the original machines as accurately as possible for a low cost.
I can add some new features such as high screen resolutions and interfaces, but I don't plan a 3D engine etc :)
I'll have a chat to the guys.
My C64 code is based on Peter's design (same codebase as used in C-one) however the SID is not available. I had some code from another party but I can't open source that either, so I decided to write my own. There is some pretty detailed documentation from the die scans now. Frederic, if you wish to share your code I would be more than happy to come to some deal. Mail me directly.
Best,
Mike.
-
Hello Mike,
let me finish the testing of the SID first.
I have seen the die scans but no detailled documentation except for the analog filter.
I am thinking about implementing a pseudo stereo mode too.
I also have the VIC-1541 being implemented in VHDL but it still has some bugs (IEC lock-ups). My guess is that the 6522 or 6526 implementations are not perfect.
Regards,
Frederic
-
Hello Mike,
I have one question : what is the part number for your slide switch ?
I am using one that is rated for 500mA 6V (which is enough for my design) but the one on your board seems a lot better.
BTW, I am still working on the SID. It looks like I need to have part of the digital audio processing with signed numbers...
Regards,
Frederic
-
Yeah, it took me a while to find a suitable small switch.
It is eswitch ra tl1105-rf100q digikey EG1837-ND fits.
I prefer to use offset maths for DSP work, it is easier to see in the simulator.
Say your input is 8 bit 0 to 255.
This could mean the signal is -128 to 127 if the value 128 is taken as 0.
If you want to use signed numbers you can still use std_logic_vector (in VHDL) - just remember that the number is signed so invert and add one where appropriate.
It's just wires, so it's how you treat the value which matters.
/Mike
-
Bare in mind the FPGAArcade board has no hardware 68060 CPU. Meaning anything you create on this board will be as slow as hell.
Plus isnt Natami just "vapourware"?
We've seen no real evidence that they are doing anything, other than talk bollocks most of the time.
Non of the "technical" discussions they have ever go beyond the "high level idea" stage. There are no posts of technical investigations, nor implementation level ideas.
-
FrenchShark wrote:
mikej wrote:
The only license issues are with the C64 SID at the moment but this will be resolved.
Yep, what's wrong with the SID ?
Was the SID in v0.27 of FPGA-64 non functional?
-
alexh wrote:
Plus isnt Natami just "vapourware"?
We've seen no real evidence that they are doing anything, other than talk bollocks most of the time.
Non of the "technical" discussions they have ever go beyond the "high level idea" stage. There are no posts of technical investigations, nor implementation level ideas.
Thomas demo'd the orignal C-one developed Natami FPGA work with a 68030 quite a while ago now so the basics of the AGA and some of his extended modes have already been shown. The new revisions are the "vapour" part of it in that it's not done yet.
The rest of your critique feels a bit harsh though. Most of what gets discussed in the public part of the forum is really high-level because no-one wants to get bogged down discussing every little detail in there. That was part of the reason for Thomas not wanting to involve others in the project originally.
Plus everyone's a volunteer so the updates that get done are just done in 5 minutes by whoever has a spare moment. Some weeks no development gets done at all because everyone's got a life, family and jobs.
Lately there's been a flurry of activity with people writing test cases for the cpu simulation so that it can eventually get to compatibility with something like a 68EC040. But thats not planned for another year or so probably. The current 060 based natami is still being built by Thomas with the 060 on a daughter board "060 card" (http://www.natami.net/gfx/NAe60R/NAe60R_1.jpg) and that's what'll be released first for people to get to use, just a few boards to begin with.
The much over discussed 3DCore will either be at a basic level by then (maybe just missing a lot of features and modes) or it'll just be released later. The softCPU planned, calling it 680x0 whatever may come even later than that, although its the part seeing the most development right now.
I'm not saying that everything is perfect and going to be out immediately or that there isn't a lot of rubbish talked about it but it is happening. It's just pretty damned difficult to do so it's taking a long time. :-)
Andy
-
I haven't checked Peter's latest release. In the last version of the code I ported the SID wasn't present due to some license issues. I asked Peter if things would change and he is working on it. In the meantime I can't redistribute that code, and I don't believe in releasing binaries.
/Mike
-
AJCopland, Where are these "test cases for the cpu simulation" ..?
Test programs to verify 68020 compatibility would be great. They can be built with existing computers without access to FPGA hardware or skills.
Softcore MMU-68841 and FPU-68881 would be great for unix.
-
They're checked into the SVN repo' and you can see the titles of the posts in the "Team" tab of the NatAmi forums. There's a lot of bug reports about them at the moment but there's been a lot of those resolved too :-D
The guys doing that stuff are testing them on Amiga's as well I believe, I don't do anything with that side of things at the moment.
Andy
PS: there's no plans for an MMU or FPU at the moment. They're just aiming for EC-type compatibility such as 68EC040 (http://www.bboah.com/index.php?sid=600&lang=en&action=artikel&cat=68&id=2968&artlang=en).
-
mikej wrote:
I haven't checked Peter's latest release. In the last version of the code I ported the SID wasn't present due to some license issues.
The last release was C-One binary only :-(
I thought that if you go back a few versions the SID HDL was present albeit without filters?
http://pacedev.net/
-
mikej wrote:
Yeah, it took me a while to find a suitable small switch.
It is eswitch ra tl1105-rf100q digikey EG1837-ND fits.
Thanks! I will update my PCB with it:-).
I prefer to use offset maths for DSP work, it is easier to see in the simulator.
Say your input is 8 bit 0 to 255.
This could mean the signal is -128 to 127 if the value 128 is taken as 0.
If you want to use signed numbers you can still use std_logic_vector (in VHDL) - just remember that the number is signed so invert and add one where appropriate.
In the SID, I generate the waveform with unsigned then, before multiplying it with the envelope, I flip the MSB.
Then, I mix the 3 voices (and the DC offset) together and multiply the result with the volume. Finally, I flip back the MSB to have unsigned for the 1-bit DAC.
The 1-bit DAC has a 64x oversampling (linear interpolation) and a first order sigma-delta. I will try a second order later.
It's just wires, so it's how you treat the value which matters.
/Mike
-
As for SID cloning. This seems to be the most serious:
http://en.wikipedia.org/wiki/MOS_Technology_SID#Hardware_reimplementations
"The PhoenixSID 65X81 (http://myhdl.jandecaluwe.com/doku.php/projects:phoenixsid_65x81) project (2006) aimed to faithfully create the SID sound using modern hardware. The workings of a SID chip were recreated on an FPGA, based on interviews with the SID's creator, original datasheets, and comparisons with real SID chips. It was distinguished from similar attempts by its use of real analog circuitry instead of emulation for the legendary SID filter. However, the project was discontinued, because George Pantazopoulos (http://www.myhdl.org/doku.php/users:george_pantazopoulos), who was the head of this project, died on April 23, 2007, at the age of 29."
-
I had a number of email conversations with George before he died. He was very proud of his SID, and we had an agreement I could release the code when it was finished. Sadly this never happened.
This is why I never released Peter's C64 code (which was missing a SID at the time) on my website, and why I have started to look at it again for the new board.
/Mike
-
Now that he's dead it maybe it can be useful to release any code such that others may continue where he didn't finish?
Btw, why did he die?, he was way to young to die from natural causes.
-
mikej wrote:
I had a number of email conversations with George before he died. He was very proud of his SID, and we had an agreement I could release the code when it was finished. Sadly this never happened.
This is why I never released Peter's C64 code (which was missing a SID at the time) on my website, and why I have started to look at it again for the new board.
/Mike
I have seen his website too.
Concerning the filter, the digital version of the state variable filter should be close enough.
There is a good explanation here:
http://www.earlevel.com/Digital%20Audio/StateVar.html
We certainly need some non-linearities in the feedback loop. I am thinking about using a look-up table made with a block RAM and some interpolation.
BTW, mike the part number you posted was not the slide switch next to the power connector. It is a momentary switch (for a reset button maybe ?).
Regards,
Frederic
-
I've no idea what happened to George, he just stopped writing me emails one day :(
I'm an idiot, I have the part numbers the wrong way round in the BOM. That would confuse the production people.
The correct part number is
mountain switch 102-1261-ev. Digikey EG1837-ND fits the footprint.
Best,
Mike.
-
I have seen his website too.
Concerning the filter, the digital version of the state variable filter should be close enough.
There is a good explanation here:
http://www.earlevel.com/Digital%20Audio/StateVar.html
We certainly need some non-linearities in the feedback loop. I am thinking about using a look-up table made with a block RAM and some interpolation.
BTW, mike the part number you posted was not the slide switch next to the power connector. It is a momentary switch (for a reset button maybe ?).
Regards,
Frederic
Hello,
I have my VHDL SID working now (without the filter).
The last bug was an excessive amplitude that saturated the line driver. I just divided the output by 2.
Now, I am working on the filter. It does not seem to be too complicated.
Once I am done, I post an MP3 (any SID tune preference ?).
Regards,
Frederic
-
"Do It" by Nelly Furtado produced by Timberland
(Aka "Acidjazzed Evening" remixed by Glenn Gallefoss composed by Janne Suni)
-
Something from Rob Hubbard or Martin Galway (Delta or Arkanoid)
MfG
Jens
-
Something from Rob Hubbard or Martin Galway (Delta or Arkanoid)
MfG
Jens
I just finished implementing the filter.
It sounds like it works !
Frequency goes from 30Hz to 12500Hz and Q factor from 0.707 to 1.707. There is no distortion in the feedback loop (yet).
I have tried Arkanoid and Great Giana Sisters with PSID64. They really sound great !
The C64 with the VIC-1541 only take 30% of my Cyclone III.
It is late, I will record the MP3 tomorrow.
Regards,
Frederic
-
I put up some more (fuzzy) pictures of the processor daughter board.
http://www.fpgaarcade.com
/MikeJ
-
Nice!
-
cool!