lnDSO: float, arm, riscv, wait states
This is an updated version of a previously dealt with topic.
Internally, lnDso is using float to represent voltage.
One could argue that it's useless and you can do int->int as the final results are pixel coordinates, but i like to have the actual measurements available for later processing if need be.
It means we have to do ADC value (int)=> volt(float) => pixel(int)
In each case the processing is something along
output=intput*ramp+offset
Let's see how the different chip we can use for lnDSO are performing
(we use rvfp and qfp to have optimised software float lib)
- GD32F303/Cortex M4-FPU@72 Mhz : 7 kCycles
- GD32F303/Cortex M4-NOFPU@72 Mhz : 18 kCycles (~ emulating a cortex M3)
Ok, no surprise here,the FPU helps a lot
Last but not least , the original MCU on the DSO 150 :
- STM32F103 @72 Mhz : 27 kCycle
Ouch. Most probably the flash wait states.
- GD32VF103/RiscV-NOFPU@108 Mhz : 40 kCycles
(10 kCycles but the sysTick = cpuClock/4)
Not great...
Comments
Post a Comment