Hi!
65f02 wrote:
dmsc wrote:
For example the iCE40 up5k is a small FPGA with 128kB of SRAM (in addition to the 15kB of embedded RAM). The Upduino board is US$7.99 plus shipping, so this is really cheap. I made a 6502 computer at 12.5MHz with VGA output, 64kB of main RAM plus 64kB of video RAM, 256 bytes of boot ROM, serial, PS/2 keyboard and using the included SPI flash for program storage, all using one third of the available FPGA resources
Nice! I originally started my 65F02 concept around the iCE40, since it is cheap and small, and comes in an easily soldered package. But synthesizing Arlet's core for it suggested that the iCE40 architecture would be slower than what I was looking for; so I am actually reassured that you got to similar speeds in a real-world test.
Yes, the up5k is a slow FPGA, you can't reach very high speeds in the 6502 core.
Quote:
Your design including the RAM is about as fast as I got with the CPU core only, if I recall correctly. So the routing penalty to access the RAM seems smaller than in the Spartan-6, probably because the RAM is not as scattered across the chip? (Or is it because any routing delays are dominated by logic/switching delays anyway?)
I'm running the P&R with constraints in the two clocks: VGA clock (25.2 MHz) and CPU clock (12.6 MHz), the output of nextpnr is:
Code:
Info: Max frequency for clock 'clk25': 28.02 MHz (PASS at 25.18 MHz)
Info: Max frequency for clock 'sys1.cpu_clk_$glb_clk': 16.54 MHz (PASS at 12.60 MHz)
So, I have slack in both clocks. The SRAM in the iCE40 is at the boundary, so you have to cross throw the chip to access it, but it has a fast access time of about 7ns (and 70MHz cycle time).
Have Fun!