Search the web
Sign In
New User? Sign Up
lpc2000 · LPC ARM Group
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Hear how Yahoo! Groups has changed the lives of others. Take me there.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Re: Simple test program - is now instruction pipeline/VPB question   Message List  
Reply | Forward Message #4000 of 45972 |
I/O Speed - An Explanation


Here is an explanation of the I/O toggle speed that is observed in
these devices.

Richard

The I/O speed has a maximum at ~3.7 Mhz because of several reasons,
none specific to our parts. It is caused by interactions between the
ARM pipeline, the VPB bus, the ARM AHB wrapper (interface between the
ARM7TDMI-S core and the AHB bus), and the instruction timing itself.
For the minimum 3-instruction loop below, a Store (Write to I/O pin)
followed by another Store (toggle the I/O pin) and a Branch back to
the first Store, the timing is as follows (Fe for Fetch, De for
Decode, En for execution clock n):

Pass1:

STR: Fe-De-E1-E1-E2-E2-E2-E2-E2
STR: Fe-De----------------------------E1-E1-E2-E2-E2-E2
B: Fe-----------------------------De-----------------
-----E1-E1-E2-E3

Pass2:
STR
Fe-De

And so on...

An STR to VPB space takes 8 clocks because the last 2 phases (STR is
a 4 phase instruction) are Non-Sequential (NS) accesses and the AHB
wrapper adds one wait state for every NS access. This means the 3rd
phase of the instruction takes 2 clocks, and the fourth phase takes 4
because of the wait state and the VPB operations being 3 clocks.

The second STR can be fetched and Decoded in the pipeline but will
then stall because the execution pipeline stage is busy (the first
Store has not completed yet). The Branch instruction can also be
fetched in the Decode slot of the second STR but it will then stall
because the Decode stall is occupied by the second STR.

After the first STR completes, the second STR will start its
execution phase and finally will allow the Branch instruction (which
also has one NS phase) to proceed.

End result: This takes 16 clocks (266.7 ns at 60 MHz with VPB clock
set to 1) with a duty cycle of 6:10 .


Code:

.loop:
str r2, [r7, #0]
str r2, [r6, #0]
b .loop









Wed Nov 10, 2004 9:27 pm

philips_apps
Offline Offline
Send Email Send Email

Forward
Message #4000 of 45972 |
Expand Messages Author Sort by Date

Hi Leon, I'm "on the air" now too with LPC2106 ! Here is a prelim. current consumption figure I took : I measure 6.5 mA @ 10 MHz setting and clearing P0.0 in a...
microbit
microbit@...
Send Email
Nov 22, 2003
6:14 pm

... I was going to play with bus optimization next anyway so I thought I'd measure the results and pass them along. All of these with a 10MHz clock PLL'd to...
Robert Adsett
robertadsett
Offline Send Email
Nov 22, 2003
10:48 pm

Here is an explanation of the I/O toggle speed that is observed in these devices. Richard The I/O speed has a maximum at ~3.7 Mhz because of several reasons, ...
philips_apps
Offline Send Email
Nov 10, 2004
9:27 pm

Hello, first many thanks for your explanation ! We had a similar thread in this mailinglist at 1st of Feb 2004 (name: Optimization of capture routine...). ...
capiman@...
capiman26061973
Offline Send Email
Nov 11, 2004
6:58 am

Is there any published documentation which contains this information (e.g.: that VPB operations are 3 clocks)? ... the ... the ... itself. ... pin) ... is ... ...
lp2000c
Offline Send Email
Nov 11, 2004
5:41 pm

... Got it. Cleaning up by support and generalizing it so I could place it with some newlib support and I realized that I had misplaced the pll divider field...
Robert Adsett
robertadsett
Offline Send Email
Dec 3, 2003
11:42 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help