Home   News   Concept   AMIGA-Compatible   Hardware   Forum   Questions+Answers   Pictures   Contact & Team

Welcome to the Natami / Amiga Forum

This forum is for AMIGA fans interested in the new NATAMI platform.
Please read the forum usage manual.



All TopicsNewsQAFeaturesTalkTEAMLogin to post    Create account
Do you have ideas and feature wishes? Post them here and discuss your ideas.

Sound: (Not So?) Next Generationpage  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
Børge Nøst
Norway

Posts 53
28 Feb 2012 14:24


Graphics: Bigger palette, more bits per pixel, higher resolutions.
Sound: More channels, more bits per sample, higher frequency.

So far, so good.
But where is the equivalent of faster/smarter graphics algorithms, faster/smarter blits, accellerated 3d operations for sound?

I think the ideas from the AA3000+ would be worth picking up: Add a DSP of some kind with a layered ABI/API
- sound effects (echo, volume, surround, phasing, pitch change)
- playing/mixing samples of several different types
- decompression of sound formats
- synthesizing sounds (obviously a rather big range of possibilities)

This is obviously not an overnight job, but neither is adding 3d, and anything worth doing ...

Nixus Minimax
Germany

Posts 273
28 Feb 2012 14:46



I understand the point and I support the idea. To do this sort of thing we would need a DSP. If the FPGA can do fast 3D stuff, it certainly has enough processing power for consumer audio processing. However, somebody would have to implement the DSP (preferably compatible to something existing so that code as well as tools like assemblers and compilers can be reused). In view of this all I'd say that the soft-CPU should be implemented first.

Perhaps a simple solution would be to add typical DSP instructions to the soft-CPU itself which would mean that the DSP stuff would come at little cost. I think ARMv5 did something similar and added some DSP instructions to the ARM core. I was told, though, that those instructions were not very powerful.


Børge Nøst
Norway

Posts 53
28 Feb 2012 14:52


I was basically thinking of snagging any available free cores that are "out there".
 
  However, making the CPU do the job sounds like a sub-optimal idea when FPGAs are all about parallellism and you can have a specialized core for it.

Nixus Minimax
Germany

Posts 273
28 Feb 2012 15:09


Børge Nøst wrote:

I was basically thinking of snagging any available free cores that are "out there".

Are there any good ones? If so, I'm all for it.

However, making the CPU do the job sounds like a sub-optimal idea when FPGAs are all about parallellism and you can have a specialized core for it.

That is certainly true. Theoretically one unit of a CPU can work independently of others but this requires a lot of effort in the instruction fetch/decode stages of the CPU. An example of this would be the IU and FPU in the PowerPC which have their respective register sets and work like two dedicated and separated CPUs (there aren't even instructions for moving values from FPU to IU registers and back) except for the single instruction stream.


Erik Bauer
Italy

Posts 301
28 Feb 2012 15:11


Børge Nøst wrote:

  I was basically thinking of snagging any available free cores that are "out there".
   
    However, making the CPU do the job sounds like a sub-optimal idea when FPGAs are all about parallellism and you can have a specialized core for it.
 

 
  I'm with you, but let's keep in mind that Soft-CPU and  2D/3D GFX core are more important.
  I say if enough logic is left free after this, then a simple DSP could be a very good idea.

Bartek "Banter" K.
Poland
(Natami Team)
Posts 2277
28 Feb 2012 16:01


In my humble opinion improved sound is as much important as better graphics and I believe many music artist in our Team will agree:)

I would love to see a DSP-like unit - or dedicated core - in the NatAmi.

Cheers

Jakob Eriksson
Sweden
(Moderator)
Posts 1097
28 Feb 2012 16:53


Depends on what you mean by improved sound. It is much better to do sound effects with a DSP type processor or extra instance of a 680x0 processor, than to try to some kind of audio only chip.

Børge Nøst
Norway

Posts 53
28 Feb 2012 17:26


Nixus Minimax wrote:
  Are there any good ones? If so, I'm all for it.

(Cores) I don't have much knowledge of open hw, but if there are none then at least a low-gate-count RISC would do for a while as long as it is treated as a proper blackbox.

Another matter is that if all the 8 channels are exposed to regular programs then there should be another 2 hidden channels that only the DSP can access (and that should be the only hw it can access anyway).

Marcel Verdaasdonk
Netherlands

Posts 3979
28 Feb 2012 18:21


This sounds like something the copper should be doing if it has some minor modifications.

Like being independent of the screen position.

SID Hervé
France

Posts 663
28 Feb 2012 19:06


Børge Nøst wrote:

  Graphics: Bigger palette, more bits per pixel, higher resolutions.
    Sound: More channels, more bits per sample, higher frequency.
   
    So far, so good.
    But where is the equivalent of faster/smarter graphics algorithms, faster/smarter blits, accellerated 3d operations for sound?
   
    I think the ideas from the AA3000+ would be worth picking up: Add a DSP of some kind with a layered ABI/API
    - sound effects (echo, volume, surround, phasing, pitch change)
    - playing/mixing samples of several different types
    - decompression of sound formats
    - synthesizing sounds (obviously a rather big range of possibilities)
   
    This is obviously not an overnight job, but neither is adding 3d, and anything worth doing ...
 

 
  The sound part has already been the object of numerous requests, for example:
   
  - Audio Output Connector : CLICK HERE   
  - Natami Sound : CLICK HERE   
  - Back to the Sound : CLICK HERE   
  - Audio DSP for the NatAmi : CLICK HERE   
  - Audio Test : CLICK HERE 
 
  Mainly for reasons of cost (financial and space available in the actual FPGA), it seems to me that other enhancements are roughly scheduled as follows:
 
    v1 for compatibility,
    v2 for new coprocessors (eg : 3Dcore) and
    v3 except errors, for audio and others.
 
  NB : this is the roadmap that I understood.
 

Børge Nøst
Norway

Posts 53
28 Feb 2012 23:49


SID Hervé wrote:
    The sound part has already been the object of numerous requests, for example:

None of those were direct links and the forum search wasn't helpful, but thanks to Google I finally found more old discussions.

Seems this has been around the block a few times, but I'll add in my distilled point anyway:
I believe that when you get up and running you will come to the conclusion that you need virtual and "unlimited" soundchannels. Anything that is multitasking should not be told "hw channel X is locked - go away" - it should simply stutter and fall over when you try to feed it too many channels.

This is more or less what you have already done with the blitter: You can keep feeding blits without knowing or caring what or who it does right now. (Thought I still think it is a bad idea not to use memory structures to operate it, but that is an implementation detail in many ways.) I'm not sure it would work to "layer"(mix) samples by writing registers multiple times since the mechanics for stopping samples clashes with that.


Matt Hey
USA

Posts 735
29 Feb 2012 02:46


Gunnar von Boehn wrote:

The main 68K CPU can do all what the DSP can do and a lot more.
 
  Adding an enhanced FPU to the 68K Core or adding enhancements as SIMD instructions to the 68K Core do make the 68K even more superior.
 
  A 2nd 68000 is much easier to program and to support than a extra alien DSP core. Therefore if there is a desire for a dedicated Audio core the most sensible solution, in my opinion, is adding an extra 68K core.

CLICK HERE 

Here is discussed DSP like instruction additions for the N68k:

CLICK HERE 

Possible DSP additions included:

abs (integer absolute value)
Doesn't save much with branch predication but is commonly used in DSP like algorithms. It might be used more if choosing integer OpenGL-ES.

asli, asri, lsli, lsri, rori, roli (immediate shifts >8)
The flexibility makes compiler writing (and optimizations) much easier. The assembler can optimize immediate <8 in a data register to the shorter existing versions that would act like quick shifts (without the q). Commonly used and improves code density.

bitcnt, popcnt or bfco (count one bits)
Not common but slow in software.

min or max (find min or max of 2 numbers)
Would have some general purpose applications as well as a few DSP like algorithms. Probably would not save a branch with branch predication as discussed.

multiply+add
Very common use but code fusion may be as fast. More options like shifts could give more advantage than just better code density although ease of use starts to suffer IMHO.

better saturation instructions
The ColdFire SATS instruction doesn't improve the 68k's weak handling of integer saturation math very much. This is useful for DSP algorithms as well as OpenGL-ES using fixed point integers. Perhaps creating sticky overflow and/or carry flags with the unused bits in the CC would be useful for at least detecting these conditions after multiple math operations. An unused bit in the CC could be written to enable the sticky bits for nearly 100% compatibility. The additional sticky CC flags would have to be manually tested and cleared of course. Using OpenGL with floating point (and making fp faster) would be the best choice. How about a 2nd fp unit ;) ?


SID Hervé
France

Posts 663
29 Feb 2012 08:35


Børge Nøst wrote:

... None of those were direct links and the forum search wasn't helpful ...

Hello and sorry for the inconvenience,

    - Audio Output Connector: CLICK HERE   
    - Natami Sound: CLICK HERE   
    - Back to the Sound: CLICK HERE   
    - Audio DSP for the Natami: CLICK HERE   
    - Audio Test: CLICK HERE 
that should work now.

Nixus Minimax
Germany

Posts 273
29 Feb 2012 11:10


Matt Hey wrote:
Possible DSP additions included:
[...]
How about a 2nd fp unit ;) ?

I have never actually coded for a DSP but I seem to remember that (some? many? most?) DSPs use a fixed point format different from the normal binary representation. I believe there were some notable differences from "normal" integer fixed point arithmetics. Would that have a big impact on the 68k implementation? Or are the resulting problems really just saturation and shift problems?

IIRC on ARM the Neon extension is far more powerful for DSP applications than the (earlier) standard ARM with the added DSP instructions. Has a vector extension been considered for the soft-CPU?


Jakob Eriksson
Sweden
(Moderator)
Posts 1097
29 Feb 2012 11:38


It has been considered, but no work has been done in that direction. In my personal opinion, we need to focus on getting the 68050 running first normal integer code and then FPU code.

After that, it would be, also in my personal opinion, really good to add SIMD capabilities to the Natami in some technology which is cheap to implement in FPGA.

Matt Hey
USA

Posts 735
29 Feb 2012 14:02


Nixus Minimax wrote:

  I have never actually coded for a DSP but I seem to remember that (some? many? most?) DSPs use a fixed point format different from the normal binary representation. I believe there were some notable differences from "normal" integer fixed point arithmetics. Would that have a big impact on the 68k implementation? Or are the resulting problems really just saturation and shift problems?
 

 
  I'm no expert concerning DSPs, but it looks like the number formats and saturation techniques vary widely. I've seen defined fixed point formats with hardware support, extra precision bits in integer registers, saturating (signed or unsigned) calculations, all kinds of CC flags (some sticky) for calculation results, allowing shifts in combination with multiply, multiply+add, etc. and simply supporting floating point math. Some of the techniques made the DSPs difficult to program. The high latency, high throughput of DSPs tends to make them more difficult to program and get maximum speed as well. I'll take the N68k ease of use any day but I think we can add a few DSP like additions to the N68k that will add some of the advantages without the disadvantages. The DSP was popular when the gate/logic count and cost were important. Gates are much cheaper now and processors have moved away from DSPs toward more full featured CPUs. Some of the extra features on the CPUs (and gfx GPUs) are DSP like though.
 
 
Nixus Minimax wrote:
 
  IIRC on ARM the Neon extension is far more powerful for DSP applications than the (earlier) standard ARM with the added DSP instructions. Has a vector extension been considered for the soft-CPU?
 

 
  Yes. A vector or SIMD extension for the N68k was brought up in the 2nd link I posted. Extending and reusing the FPU registers as SIMD registers was discussed but was pretty preliminary. There are a lot of other higher priorities right now I expect.
 

Louis Dias
USA

Posts 217
29 Feb 2012 18:57


Let's walk before we run.
SIMD, DSP ... etc... can all be done on Natami II with a bigger and faster FPGA.

Claudio Wieland
Germany
(Natami Team)
Posts 705
29 Feb 2012 19:43


Whatever the later hardware additions will be, it'd be better to encapsulate those in e.g. "audiodsp.library" etc. Coders should not need to care about the gory details of a mechanism. It results in better programs. And no, we don't live in 1986 anymore when each cycle counted and hardware was poked directly :p .

Cheers

SID Hervé
France

Posts 663
29 Feb 2012 21:11


Off topic : But what about the fun to put his hand in the engine?

Marcel Verdaasdonk
Netherlands

Posts 3979
29 Feb 2012 21:51


putting one's hands in a running engine is asking for trouble.

posts 304page  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16