https://projectf.io/posts/hello-arty-1/
It’s hands-on rather that theoretical.
258 karma · joined February 20, 2020
https://projectf.io/posts/hello-arty-1/
It’s hands-on rather that theoretical.
https://www.filfre.net/2017/10/games-on-the-mersey-part-5-th...
Forthcoming posts will cover simple 3D modelling with texturing and lighting in hardware. But that’s still a long way from a GPU.
However, from the point of view of these designs, the PLL is an internal black box that allows us to generate an (almost) arbitrary clock frequency.
We choose a frequency to meet I/O or performance requirements. In this case a pixel clock of ~25 MHz: we have to meet this to generate a valid 640x480 video signal.
None of the Exploring FPGA Graphics designs uses a CPU: the logic is all in hardware, often a finite state machine. The trick is ensuring the hardware logic completes within one clock cycle. For 25MHz, each clock cycle is 40ns. If a design is too complex to meet timing, we can break it into multiple steps, similar to pipelining on a CPU[1].
You can also run different parts of a design at different clock frequencies, but this introduces the challenge of clock domain crossing[2].
For a low-end FPGA, like an Artix-7, you can expect to run a reasonably complex design at 100-200 MHz.
Here are a few sites that helped me learn:
* https://www.nandland.com/verilog/tutorials/index.html
* https://1bitsquared.com/pages/chat (Discord)
And a few interesting blogs:
* https://blackmesalabs.wordpress.com/
* https://tomverbeure.github.io
* http://labs.domipheus.com/blog/
None of the introductory FPGA books have impressed me, so I don’t have any recommendations there. Maybe some other HN readers will have some suggestions?
The second post on Pong https://projectf.io/posts/fpga-pong/ includes collision checking between the ball and paddles at the drawing level.
I plan to cover full sprite collisions and overlap in a future post. In the meantime, there is a post that covers sprites with transparency: https://projectf.io/posts/hardware-sprites/
I haven’t looked at the FPGA re-implementations, but I am familiar with Amiga hardware: http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_gui...
I’ve not used VHDL in anger, so can’t give you a useful opinion there.
The first sprites post, https://projectf.io/posts/hardware-sprites/ does include 4-bit sprites, but again no overlapping.
I am planning another sprite post with overlapping coloured sprites combined with a framebuffer background. I will probably use approach 2, as you describe, but with hardware design, I’ve found that the best algorithm can surprise you in practice.
That seems possible. Perhaps like the UNIX of old, Solaris et al, the ultra-stable ‘enterprise’ Linux distributions will retreat to large enterprise customers?
Hearing the crowd react definitely adds to this one!
I wonder how big libc would have been if they applied Superoptimizer to all its functions.
Looking at https://www.simulant.uk/shop/amiga-addict-magazine it says 341 more orders required, so 159 orders so far.
https://www.youtube.com/watch?v=zwoyfH7TgEQ&t=3270s
Eon by TBL from Revision 2019.