Why? Without supporting information this sounds like cargo-culting. What are the timing requirements and why can't they be achieved with current microcontrollers?
- Trivial reconfigurable pinout for different input sensor and output driver use cases (e.g. DOHC direct-injected V6 vs. 4 rotor rotary engine with split ignition and staged injectors). The physical output drivers can be made universal, but making the software dynamic and correct is challenging. No, being able to reconfigure GPIO muxes on an AVR isn't the same.
- Truly parallel calculations (e.g. engine rotation modeling, engine aspiration modeling) and parallel driver outputs. Possible in a multi-core "microcontroller", but now you're synchronizing things.
- Ability to easily create complex chained high resolution timers for input capture, and outputs. Certain microcontrollers have hardware to do this (e.g. STM32F334) but you're limited by what the designers had in mind (e.g. the F334 was designed for digital power conversion).
- Ability to do PID and other complicated math with sensor feedback in specialized hardware (see: parallel calculations above). Try implementing flexible knock sensing for a complex engine without a dedicated DSP. It sucks.
It's one thing if you're building a product for production, with one specific application and pricing constraints, but these aftermarket ECUs tend to have many applications as almost every use-case is in some form a 'one off'.
FPGAs are cheap now. It makes sense to use them. They help prevent you from having to write a ton of interrupt handling code that looks like node.js call-back coleslaw.
- reconfigurable pinouts, why is gpio muxes not the same? I understand that if you want to be extremely flexible with pwm'ing peak and hold injectors, that is probably easier with an intermediate hardware interface, but all the other output settings seem trivial to change in software
- I would argue parallel computation isn't really even necessary. These chips are fast, and the computations aren't that intense. That aside, I personally manage that parallelism by using the dma controller to bitbang outputs
- Chained high resolution timers -- I'm not really sure where you're going with this. I personally dma input capture timestamps, and can't imagine needing more precision.
- PID and other software. If you're talking about an AVR, I completely agree that these chips are largely too anmemic by themselves, and extra hardware would help. A modern cortex m4 or m7, however, has plenty of oomf, and it all goes back to maintainence cost of software vs RTL+software.
Either way, FPGA's are certainly a valid way to solve these problems, but personally I like not being locked into specific hardware arrangements. My design is just a hobby design that nobody should use, but it can easily manage 1/4 uS output precision with plenty of spare cpu capacity.
edit: as an additional aside, its pretty hard to have a free and open source project if you depend on an fpga. The toolchains are all proprietary, which would limit the goals of a project to something like the lattice with the icestorm toolchain.
Please tell me you've got a link to some place I can read more about this, I'm a huge Mazda fan.
[0] http://www.definedautoworks.com/mazda-rx7-engines-4-rotor.ht...
Check out this HCCI engine tuning algorithm which runs 240,000 samples per second to provide realtime feedback to an fpga/raspberry pi hybrid board. An Arduino just ain't going to cut it: https://www.raspberrypi.org/blog/machine-learning-engine-con... - at $40 for an TinyFPGA BX it's probably worth it vs the Arduino pro-mini at $10 if you're going to tune something worth more than $1000
Depends on their goals. I'd oersonally assume that most people who are considering a DIY-friendly ECU are either looking to replace a carburetor or gain better tunability on a vehicle that has an '80s or '90s era EFI setup.
It's not like anyone's suggesting this be used on a brand new car. It's a relatively inexpensive option for a tinkerer to play around with. I'd be willing to bet that a lot of the cars this will go in to shipped with 8 bit ECUs from the factory. Ford used 'em as late as the early 2000s.
Also for the most part the people who are doing this sort of thing don't need to care all that much about emissions or any of the other things that make production ECUs so much more complicated. All it needs to do is deliver the right amount of fuel and trigger spark at the right times. A carefully programmed microcontroller can do this.
> Check out this HCCI engine tuning algorithm which runs 240,000 samples per second to provide realtime feedback to an fpga/raspberry pi hybrid board. An Arduino just ain't going to cut it
Considering there are absolutely zero HCCI engines in mass production I don't think that's really a concern for anyone other than those developing the technology.
edit: to be clear, of course I am definitely not saying I'm in any way against a DIY ECU project supporting FPGAs, obviously they enable even more potential capability, but I think you're making it out to be way more important than it is for the market that's likely to use these things. This is basically an open alternative to MegaSquirt 2
I'm in this demographic and am confused why are you selling me on something less capable.
>Considering there are absolutely zero HCCI engines in mass production
This is false and trivially googled.
>You're making it out to be way more important than it is
The parent was requesting a concrete example which quite clearly can not be done on an Arduino but is trivial with an FPGA.
Mazda's really close, no? Skyactiv-X is supposed to be HCCI, I think.
https://ca.finance.yahoo.com/news/mazda-touts-gasoline-engin...