[Oberon] FPGA - Display.CopyBlock()
Skulski, Wojciech
skulski at pas.rochester.edu
Thu Sep 27 16:10:56 CEST 2018
Walter:
it is an excellent idea, but devil is in the details. The current implementation of the Wirth video is intentionally very simple. There is a predefined block of general RAM where the CPU writes video bits. Every screen location has an assigned address. The video controller continuously sends this entire video buffer to the video DAC (which is a one bit DAC in the original NW/PR design) without any interpretation. In particular, the concept of the "viewer" is implemented in software, but the video firmware is unaware of this. If you want to scroll up/down within the viewer, then the layout of this viewer within the frame buffer needs to become known to the video hardware controller.
One can say that the video controller only knows the entire buffer, and then the single pixel within the buffer. Any intermediate structures, such as rectangles within the buffer, are unknown to the controller.
If you wanted to implement the viewer scrolling in HW then the video controller needs to become much more complex. Note that a lot of work in this direction has been done by Pong P. Chu in his newest VHDL and System Verilog SoC books. It would be a good place to start.
Wojtek
________________________________________
From: Oberon [oberon-bounces at lists.inf.ethz.ch] on behalf of Walter Gallegos [waltergallegos at vera.com.uy]
Sent: Thursday, September 27, 2018 7:47 AM
To: oberon at lists.inf.ethz.ch
Subject: Re: [Oberon] FPGA - Display.CopyBlock()
Since we are in the arena of the FPGA; why not move this functionalities to hardware ?
A big plus of this kind of platform is co-designing systems with software and hardware. Block the hardware then replicating software solutions is not the best way.
Of course, this is the opinion of a hardware designer ;)
El 27/09/18 a las 07:59, Tomas Kral escribió:
On Mon, 3 Sep 2018 09:13:50 +0200
Tomas Kral <thomas.kral at email.cz><mailto:thomas.kral at email.cz> wrote:
`Display.CopyBlock()' is primarilly used to scroll viewer text
up/down.
Hi,
I am experimenting with vertical scroll, I have added extra case just
for scroll viewer up/down. In 4-bit colour, when 4 times more data
needs to be moved around, I have observed the viewer is erased before
scroll up, while it is not erased when scrolled down, why?
--
Walter Daniel Gallegos
Programmable Logic
Consultoría, Diseño, Entrenamiento.
More information about the Oberon
mailing list