Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How fast can it go? #4

Open
cbmeeks opened this issue Mar 13, 2019 · 2 comments
Open

How fast can it go? #4

cbmeeks opened this issue Mar 13, 2019 · 2 comments

Comments

@cbmeeks
Copy link

cbmeeks commented Mar 13, 2019

I've wondered about using a Propeller in a SBC that I have created. My computer runs between 1 and 4 MHz (6502). I have pushed it to 8 MHz with no issues.

However, I've wondered how the Propeller could keep up at higher speeds? I imagine RC2014's usually run at 3.5 - 4.0 MHz.

So my question is, how fast have you pushed this card using direct bus access? When do you think the CPU would have to have wait states before the Propeller can't handle it?

Thanks

@maccasoft
Copy link
Owner

The RC2014 standard clock is 7.3728 MHz and there aren't problems with the Propeller. However the Z80 adds a wait state to all I/O operations that helps with the timings.

I haven't run many speed tests, however there are two things to consider:

  1. Write operations (OUT instructions). The limit is about the time needed to store the data bus value after the port address condition is met, then you can use the time needed by the processor to read and decode other instructions to do all internal things. I think that the Z80 can be pushed to 10-12 MHz without problems, then it is just a matter of how many things the Propeller needs to do before being ready for the next I/O data. The fastest I/O instruction on the Z80 is OUTI which takes 16 clock cycles, plenty of time to write to the Propeller hub ram.

  2. Read operations (IN instructions). This absolutely needs wait states, there is simply not enough time to toggle the port bits so the Z80 can read the correct data. Maybe at 2MHz or less it can work, haven't tried that slow.

The standard firmware for the graphics card uses write-only operations without wait states unless the user wants to change resolution, in that case the wait line is asserted until the Propeller is ready again. The TMS9918 emulation firmware on the other hand always uses wait states because it allows to read and write to the vram.

@cbmeeks
Copy link
Author

cbmeeks commented Mar 13, 2019

Thanks for the response.

The 6502, IIRC, is around 4-7 clock cycles for a write operation. I guess I just need to do the math. Right now, I'm running at 1 MHz while I develop. So probably more than OK there in read or write.

Thanks for your input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants