TomE,
> Are you using the FEC to get to the WiFi hardware?
The quick answer is no. The reason is because the WiFi module itself provides that functionality. The WiFi module has it's own embedded processor that does operate at a very high frequency (it must do so). It provides WiFi access plus Ethernet access. The interface between my CPU and the WiFi is to be CMOS logic UART data. Thus the 50 MHz min Fsys does not apply.
I will agree as follows, when dealing with typical benchmark code, the following is THEORY for CMOS processors:
mean{ CPU power } proportional to mean{ instructions per second } proportional to mean{ CPU frequency }
When I was in CMOS classes, this was repeated over and over, when I worked at Intel everybody would repeat the same.
In the real world, things are apparently NOT always the same.
// But you wanted to use the software from way back then? Actually that's unfair. Software 21 years back way way better
// than that. :smileyhappy:
No, I'm not using 21 year old software. Processor Expert does not exist in CodeWarriors for the MCF523x processor, so I've had to do everything from scratch. Even if Processor Expert existed, I would have rewritten the code. Many of my queries to this forum have been because I have no code examples to work with. But I think you meant that in jest.
>> The correct answer for external memory access is found from figure 7-11
> Figure 7.1 of what manual? There's no "7.1" in the Data Sheet (MCF5235EC.pdf) or Reference Manual
> (MCF5235RM.pdf).
> Do you mean something like "Figure 16-3. Secondary Wait State Reads" in the Reference Manual that shows burst
> reads (4 32-bit reads in 10 clocks total)?
My mistake. I meant Figure 17-11, on page 17-11 of the MCF523x_Reference_Manual.pdf, the timing diagram for back-to-back bus cycles show that the external memory take place in 6 Fsys cycles (Fsys/2 is shown directly above the diagram). From the manual "For example, when a longword read is started on a word-size bus, the processor performs two back-to-back word read accesses." (Page 17-10). My memory is x16, this would apply.
From Figure 17-13 on page 17-13, a burst read cycle with internal termination can actually be competed in 2 Fsys cycles! I'm not so sure I believe this... I didn't write the manual.
Again, the bus can't maintain this rate, but those are the values. (The Figure 16-3 values include a wait state, equal to 2 Fsys clocks for a total of 4 Fsys clocks).
Rather than read any more documentation, I scoped my firmware Flash memory, on instruction fetch, and the time from the rising edge of CS0 to the next rising edge of CS0 is 12 Fsys cycles. Well, I would like to have some empirical data to back up Figure 17-11, but I just don't have it. Underneath Figure 17-11, it says "the initiatiation of a back-to-back cycle is not user definable", so I'm probably not in luck spending more time on that.
I would agree with you in general: Wait loops within a cycle of code in general are not desirable. When you've executed the current "embedded cycle", and are waiting for the next cycle to arrive, use the "waiting" part of the CPU at that junction.
My application is extremely I/O intensive, but is not fast. There are from 12 to 30 analog signals that I read. Accuracy is required, but not speed. The analog signals go through analog muxes into a two channel delta-sigma A/D converter. I can only get 15 A/D channel readings per second from that A/D converter. This is my main bottleneck I'm dealing with, and it's orders of magnitude over the not so pressing for me 20 to 30 uS QSPI timings. My world is dealing with filling in that 66 mS of wait time with useful code, before the A2D converter signals back to me that there is another conversion ready to be shifted out, and I process the analog data.
I'm looking into a better solution for UART TXD. Maybe an interrupt scheme with a buffer, maybe there is a way to get at those FlexCAN buffers and use them.
Yet, I'm still able to process a cycle of code with plenty of time to spare. A cycle for me is from 5 seconds to 30 seconds. I have to read some of the analog channels many times in a cycle, but it is done. I did not select this processor because of speed, mostly because of functionality, and those eTPU channels.
There are some problems with running at 150 MHz, I just list a few of them. I will admit these are applications specific:
1.
I have an eTPU unit, four DMA channels, and a CPU core that all run completely as parallel processes. There are many other peripherals that are "mostly" parallel, such as UART, etc... When my processor is issued the STOP instruction, all clocks stop. Everything comes to a dead halt, but that is not an option I have available. So only one of the low power modes that halts the core and keeps the peripherals running would work. The core uses up 135/235 = 57.5% of the overall power of the processor (if the linear regulator that supplies the 1.5 V for the core from the 3.3 volt supply is added into the equation). The other 43.5% of the overall CPU power is used in the peripheral bus, and, being CMOS logic, it, in THEORY should draw power proportional to the frequency it is clocked at (Fsys/2). I don't mean to be too precise as the actual results can vary widely in the real world.
2.
My application is cost sensitive. I have no memory bus buffers like the demo board has. The documentation says that the MCF523x does not have a lot of drive capability on the memory bus, compared to the 68332 processor. While the SRAM is directly underneath the CPU, and the Flash chips are directly above, with a short bus, the capacitance of the pads is the dominant factor. With full I/O drive strength, the rise time on my memory bus is 8 nS (the scope probe capacitance probably causes some of this). This becomes an issue if the memory needs to be accessed really fast. Mine does not.
3.
I'm currently in the solar thermal world, tons of I/O, but overall not fast. I just don't need the speed. If my processor is capable of 64 MHz, and it looks like it is (maybe with a wait state or two running from external SRAM, but assuming the wait states don't bog down the more typical 12 Fsys cycles, something I'm going to have to research), that is enough to claim "capable of anything reasonable" status in this world I'm currently in.
This is all I have time for.
The whole issue of "speed" is reletive to the the application at hand. Not a universal rule.
Dogbert256