View Single Post
Old 06 May 2013, 08:04   #2160
Join Date: Jun 2010
Location: out in the wild
Posts: 1,133
Originally Posted by NovaCoder View Post
With a powerful enough FPGA it's theoretically possible to take the Amiga's native low resolution PAL output and scale it up to full HD 1920x1080 without any hit on the CPU or Amiga chipset.
It's not about the FPGA, but about memory bandwidth. if you want to scale, you need to look at multiple pixels at the same time.

Indivision currently transfers about 480 MBytes per second from/to memory, and it still had some headroom (I'm confident I can push it to 570MBytes per second using 5x Amiga-frequency). I can only reach this performance by making use of the "full page burst" mode that the SD-Ram offers. This mode has a serious shortcoming: It will only transfer consecutive pixels at the desired rate. If I want to look at the "pixel above" in order to calculate an in-between pixel, I just don't have the time it would take to close the current row, open the row above and start an access; I'd easily miss 70 pixels.

The Fifo in the FPGA is currently not even one full line, but 682 pixels (plus two colour components of the next pixel). A workaround would be to increase the Fifo size to a full line (requiring up to 5KByte), and then doubling that buffer, so I always have two lines in local memory.

Trouble is that the whole memory concept of the design is that the memory controller "does not know" about lines and pixels. It just takes/delivers a stream of data that the input and output entities handle. The memory controller only makes sure that the input- and output fifos never over/underflow, which is a close call for high output rates combined with S-Hires input. Adding a second output channel that would provide required input data to a filter would almost require double memory performance. That's not an option with this design.

Schoenfeld is offline  
Page generated in 0.05170 seconds with 9 queries