- How will the project be structured?
- Do you plan to take outside help?
- What inputs and outputs do you plan to support?
- What formats do you plan to support?
- Will the hardware design be open as well?
- What software license do you plan to use?
Well, basically the AKM fire killed the project.Stuck in dev and never completly finished.
Like camillaDSP with toslink in/out if using a Pi Zero 2 W?Digital in, digital out, with DSP in the middle, at much lower cost than the wiim mini, with config via a browser sounds great. But that sounds like a big ask, good luck.
I forgot one thing...Can I suggest a Toslink in/out interface?
In my opinion there are several use cases where it is convenient to simply add a pure DSP on an existing system, without having to go from analog to digital and vice versa.
Many already have an excellent performance DAC and just need a processor in the digital domain, without having to resort to a PC or Mac, or other expensive hardware.
For example, I would find such a DSP convenient to put between the streamer and the DAC. Or even between the TV and the soundbar.
1. Library, supporting software, complete product
- How will the project be structured?
- Do you plan to take outside help?
- What inputs and outputs do you plan to support?
- What formats do you plan to support?
- Will the hardware design be open as well?
- What software license do you plan to use?
A lot are already covered by ffmpeg. Cavern decodes a subset of Atmos, but that's .NET not C++4. This could be anything too, but special codecs like DTS/Dolby are closed source so unless we make an open source equivalent, forget about those
Might be irrelevant anyway, since this DSP platform won't be running either (at least not for the pure DSP stuff) but it is good to know that open source implementations existA lot are already covered by ffmpeg. Cavern decodes a subset of Atmos, but that's .NET not C++
These SOCs don’t have any dedicated DSP hardware, do they? The work needs to be done using the CPU? Does RISC-V offer any DSP libraries for efficient execution, like ARM cores with CMSYS? You could of course offload the DSP’ing to the ARM core, at 1Ghz it should be capable of plenty as well.Might be irrelevant anyway, since this DSP platform won't be running either (at least not for the pure DSP stuff) but it is good to know that open source implementations exist
Nope, unless you count https://blog.segger.com/emvdsp-vs-cmsis-dsp/, which isn't free nor open sourceDoes RISC-V offer any DSP libraries for efficient execution, like ARM cores with CMSYS?
Nope, since that would basically defeat the purpose of RISC-V which is to replace x86 and ARM as they are rapidly becoming legacy technologyYou could of course offload the DSP’ing to the ARM core
I very much doubt that.RISC-V which is to replace x86 and ARM as they are rapidly becoming legacy technology
RISC-V which is to replace x86 and ARM as they are rapidly becoming legacy technology
Why would they? Dedicated DSP cores are way more efficient and can be made with fewer transistors. For the cheapest stuff, that would be the way to go. So I’m talking about audio stuff where a simple DSP needs to be added, like digital input class D amps, simple EQ/filter chips, etc.And in a little bit, the cheapest and most flexible audio DSP platform will be using RISC-V.
This is technically true, but after checking out what exactly the SG2000 offers it's not all bad news either. The "main" C906 RISC-V core actually DOES have vector support, just the draft 0.7.1 version that's common among other Chinese chips using the C906/C910 cores. This was unsupported by GCC for the last few versions but GCC 14 has support for it again, but for my DSP project that's irrelevant. 0.7.1 itself is nearly identical to 1.0 just with a couple minor assembly differences. However, the "minor" C906 core not only lacks that vector support but also a lot of the cache present in the "main" one, plus a clock speed that's a third slower.And specific to audio processing, these RISC-V cores do not contain the V1.0 version of vector instructions that are very much preferred for audio processing.
The lack of VLA (vector length agnosticism) isn’t exactly minor.0.7.1 itself is nearly identical to 1.0 just with a couple minor assembly differences
It's not so much about performance but ease of development and portability. You're going to develop assembly code for an instruction set that was obsolete before there even was real hardware I would, therefore, recommend a platform that uses the now out-of-draft RVV 1.0 spec. If you rely on the compiler, it's not such a big deal (although both GCC and Clang do not offer proper and full compatibility with RVV 0.7.1, and even threw it out of their main branch), but when handcrafting assembly, it is. They are not binary compatible. Using tools like those described in the paper you linked to convert RVV 1.0 assembly to 0.7.1 seems like an unnecessarily complex solution. On the other hand, it might be a way to start development using RVV 1.0 assembly and just have it run on an older spec CPU anyway. It will be tricky to optimize this properly, probably because of the translation layer, but that may be something to worry about later on. At least you'll have something that will work on RVV 1.0 spec CPUs from day 1 So, if not choosing an RVV 1.0 spec CPU, this is probably the next best thing for now.Basically irrelevant when it comes to performance: https://arxiv.org/pdf/2304.10324 "Across most of the benchmark kernels Clang VLA (vector length agnostic) and VLS (vector length specific) settings provide very similar performance, exept for specific kernels such as ATAX, FDTD 2D and GEMVER."