I am attempting to use the MC9S12XEP100 to control a VGA monitor as part of a university project. I need to shift out bytes of data (through a port in parallel) at a frequency of 3.15 MHz. I have set the bus frequency to 50 MHz giving me 16 cycles per byte.
In that 16 cycles I need to increment a couple of counter variables, perform a couple of logical tests and shift a byte of data out. In addition I would either have to use an interrupt or at least check for a timer flag.
My question is, does this sound at all possible using the main CPU. From reading the CPU RM i found that many simple assembly instructions require at least a couple of bus cycles. Therefore it doesnt sound likely to me.
An alternative would be to use the XGATE. Would this be benefitial? My guess is that many cycles would be required to deal with the interrupt epilogue/prologue and the gained cycles could be lost.
How do XGATE instruction compare in execution time to CPU ones with regards to the simple tasks above.
XGATE is likely a good choice for this application but it depends on your software architecture. XGATE performs most arithmetic (shift, add, parity) functions much more quickly than the CPU when executing from RAM and has much shorter event prolog/epilog times. However, it has the same overhead when writing to the I/O because that timing is fixed to the CPU bs speed. Have a look at AN3493 which performs a similar task. You can write the application task in C and then run it on each core in turn to see which is the more efficient.