Skip to content

Commit

Permalink
vhpidirect/arrays/matrices/framebuffer: remove virt_vga, ref dbhi/vbo…
Browse files Browse the repository at this point in the history
…ard:vga
  • Loading branch information
umarcor committed Oct 23, 2020
1 parent 0587b41 commit 00ad357
Show file tree
Hide file tree
Showing 14 changed files with 12 additions and 594 deletions.
37 changes: 6 additions & 31 deletions doc/vhpidirect/examples/arrays.rst
Original file line number Diff line number Diff line change
Expand Up @@ -259,34 +259,9 @@ Moreover, two different architectures are provided for the testbench (:cosimtree
signal; from left to right: black, red, green, yellow, blue, magenta, cyan and white.

.. TIP::
These examples are written in C, but equivalent solutions can be implemented using Python libraries. See :ref:`COSIM:VHPIDIRECT:Examples:shared:pycb`.

:cosimtree:`Virtual VGA screen <vhpidirect/arrays/matrices/framebuffer/virt_vga>`
---------------------------------------------------------------------------------

In practical designs, it is desirable to separate sources for synthesis from simulation and testing resources. This
subexample extends the usage of a shared frame buffer, to test a synthesizable VGA pattern generator (or any other design
with VGA output).

.. figure:: img/matrices_virt_vga.png
:alt: Example :cosimtree:`virt_vga <vhpidirect/arrays/matrices/framebuffer/virt_vga>`
:align: center
:width: 500px

Block diagram of example :cosimtree:`virt_vga <vhpidirect/arrays/matrices/framebuffer/virt_vga>`.

The UUT instantiated in the testbench is composed of a clock frequency conversion (``vga_clk``), sync and index generator
(``vga_sync_gen``) and a pattern generator (``pattern``). The implemented pattern is the same eight bar test described above.
This UUT is expected to be synthesizable, even though the provided architecture for entity ``vga_clk`` is not.

The *virtual VGA screen* is implemented in module ``vga_screen``. A separate sync and index generator is used to capture the
RGB signal and to write RGB24 integers to the frame buffer. The first edges of VSYNC is used to sync frames of the capture. After
each frame is filled, ``save_screenshot`` is executed. The visualization of the captures depends on the chosen C
implementation: either PNG/GIF or X11, as explained above.

.. TIP::
VHDL package :cosimtree:`vga_cfg_pkg <vhpidirect/arrays/matrices/framebuffer/virt_vga/cfg_pkg.vhd>` contains a table
(described as an array of records) with parameter values (pulse, porch, pixel clock rate, polarity, etc.) for +60 VGA/VESA/SXGA/XGA
modes. This table is used in ``vga_pattern`` and ``vga_screen``, to provide generics to ``vga_syn_gen``. At the same time,
``vga_screen`` allows to set the size of the X11 window through generics. By default, the size of the window matches the
resolution of the selected mode.
In `dbhi/vboard: VGA test pattern <https://github.com/dbhi/vboard/tree/main/vga>`_ a *virtual VGA screen* is implemented based
on this shared frame buffer example. A test core is provided, which captures the VSYNC, HSYNC and RGB signals of a UUT, and writes
RGB24 integers to the buffer. Then, apart from Imagemagick, `Tkinter <https://docs.python.org/3/library/tkinter.html>`_
is supported. Tkinter is the Tcl/Tk interface built in Python. Hence, `dbhi/vboard: vga/test/tkinter <https://github.com/dbhi/vboard/tree/main/vga#tkinter-desktop-window>`_
shows how to combine this framebuffer example with :ref:`COSIM:VHPIDIRECT:Examples:shared:pycb`. The result is similar to
using ``X11/Xlib.h``, but `NumPy <https://numpy.org/>`_ and `Pillow <https://python-pillow.org/>`_ are used, instead of coding in C.
2 changes: 1 addition & 1 deletion doc/vhpidirect/examples/img/matrices.drawio
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2020-04-29T04:13:10.298Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.6.5 Chrome/80.0.3987.86 Electron/8.0.0 Safari/537.36" etag="Gdrbb72mqqy3YBR8C9TX" version="12.6.5" type="device"><diagram id="C-xXtRXsVBNM-cboXoND" name="Page-1">7V1bc6PGEv41rjzZxTAMl8ddr53sOcfJVpzdJE8uhLBEFgkFIV/21x/uEtONwIgZkCxtqmIhCdn9fX2dnp4Ler14+Tm0V/O7YOr6F6oyfbmgny5UVVN0Gv8vufKaXTE0K7swC71pdolsL9x7P9z8opJf3XhTd115YxQEfuStqhedYLl0nahyzQ7D4Ln6tsfAr37ryp7l36hsL9w7tu+Ct/3pTaN5dpVSZeftv7jebJ5/taab+UcWdvHu/K3ruT0Nnncu0ZsLeh0GQZT9tHi5dv1EeoVgss/d1rxa/mahu4zafMCaz278f76H9ov+4+5uvXqe/vjzkhnZbZ5sf5P/yU9eGG3s5JOTwA6n8Q1Xbuit5m5o++v8T4leCwGFwWY5dZOvUC7ox+e5F7n3K9tJXn2OKRFfm0cLP35G4h+f3DDyYuF+8L3ZMr4WBckbHj3fvw78IEzvSB8fXd1x4uvrKAy+uzuvTA1roiRfk//O8d3cl1ppkFLGMTvdYOFG4Wv8luIDqpnjkjNTtQqgnrdAG3p+bb6DcUzrnGA5uWbl3bfij3/IEcDReP139skzP/3624p9fSX/zD+vpl8vCQDjPxvfsyUI3bYV5fERE7phKMr1dfyKnX/eiSXshsktgmVUwS15lOgAKBDAatGxmFUFR9chOCpDwDFEYaMCbFb+ZuYtEz3ZeP40Fol6G25iMxTKUBKW/MPw0tMHhCd79AMPUUgVHs2C8DAN0x0mCh8K8PnyGs2DBB9pqEyZa041DBVTndAUlT6kT5QrVpE/sRD1oJh6EGH6oQH5R+46mrhLZy5DH0zHxZ3GxGQaU3qSvEqA5BHmU9VCJE9FSZ4ByX/9+geQeYOU7fUqi58evZcEmdR83OcfJ8XzLD5TtxQvgqK+DIvGC1hVFBMImCgYtRVRAtaBgD/89Tm+cGevE0+oKt+uD6M4IO1t+oBGfHu9Sn9FYcrNbT8YqLoKMCAQAwvhuDCKwyg1Q+Det5/c0wOAAgD0gQEwAQBA4O5y+iHJuJIQ0bfXa8+pypiTpJI+4uuxoMLXv3Kc0id/J0+uWPH008vui59e82cAs+0dX7zor/xbk5+z+xksf7q9X/KkuF0tcOtgEzpus/2N7HDmRs0kdqdFyllDg90YCrFzxbXQ9e3Ie6omqhjw+Td8Cbz4L9uyjAKWxTlR9S7Zn55/cDe15O+lQcZqtHqvTDzgXikbyz++O0EtgQTN6aRU6LSfTSWpSZXUandWdyeo3pKgbFwE1TVAKosj1SEE5e8lmKBFRWuHod5ytYmunPVTz86rpMyuk1oGy/jjH2ehPfXcLdHzy3Xch1FeNS483NtpBgz5CAXezkSIJq4OAwsxwSY6g4WCpQ8NFqzMjNL0D2H5idHS9OvjMv0GTEH4eKK16WeQspJjEwJrU70zlLyBoXsi546x+AEMtVoytLDJI6GoBkpB3SmqMb6gB0Nx0RSF5bs7O/LtyYWq+7HkPk7C+KdZ8tNvTpQm3fz15WaxeoWX8xUM/vLV1dVhjpQvCy686dR3kZqs7ZqPaGVQd0x30tOCBTMAhFjhCltOEle3IrAy2J/d6d3L4b5WFZW1F4xvNjzKqAwPA+U5Yhkd83YN1gCk+0ZYXD06jgqrLLXn6Lico06Q+K0jR5nVHAuK5igsP6/CICbhB+jX1pG3iD3eYb5tT5JYQ3UkeezBq1ETejVkKQDzasIq0URkKfrY0z2lrb0YVy2aITka7RhMU735XqLtBSxG19uLNJY+VWOBLFtJNRYqLLr2biyONfNuWxoq2DwSW0GR5Wmzo63A7A5/L8G2QoWl5rJvaYC+MlkdTEDuZcfvLosK6lU6yIgwY6ECKE6xhQmoT1ma3xG9VoTrcprHVFghfXIe7Bev54bjSRBFwQJ3gW/3o/zyzG4T7NRez9PfMm2u4ltn+wCSQh0yIJAq1oUprhdNhXXEI25Gg6piQglLbkZTYVHvtLvRQIlKRVoupTZDqXUNgSfajgb6MCjiMeQiACsyQOLvth9NbVs1VEe26ksB0TTejLZv+IGkLZZDZEX2R1KoGqQlrfBizRzVxsVRnQFe6RyvDuEofy/RHIWVqoUdhd4LLFTZjuOu18luwOSXSQIN/h3ffvny+dPn32+uYbz3nlqkdFAGowprFzWK2xwloQ52rEVz2tpdjqw/1gCRMXBx7ZukQKoj211SWAjrnaLHWqqlbTu41XHVajVYbOpMUQ3WakF0KJqisEB4YKI3siYmuIJTDjrYrQ0ihNGFeS6RvZOS+kOaDI0dRvD3Ty/fen7xRxxgPdTjtB4MKf3wEVL7lR5oiRTJDg6WRstVYeXE2kZgaRqp2UldCaYieyGPPAIu9L7RQNBxJeMa3CYAlLp928jwBgKWlWvbRkLXcb3T6RwB9gKrMMu1FyIrzEeejqht0xE6rgIzhQEFZR3tBRZQ8PcSbC8YTEcKQ+EVdiIp1c22xbr4e8qXAJ1jbY32GYiitAZtAFjfrs1rMItUtVl1StODndFMHeyzQewMxkBVlJ1hWH7DgRi66eS122mwmfju+gxmCqYFklVsdR4dQiUMTBjiAzAzEM8YpppmgNWU4RUSSxQ4DNfR9MEPZp7z8OQ6UXA2rxkkun5VbHXdB6dFkrVviYhiW4w4RNNGo8tV5qrPYKLd3BiW26xJDpRdo/KaItsOfl3D6C7BfC0+zbOG2tby2LhSdYOYpdJvF7s7FvOIBm9m8pmg6OC7a3dHCyZ2YJT8JJC1niqkjoqJjELykK5M1AzkZrz1E83ErqOv2jNRRmFTBhPHtYCv6eRK7Y2JVgtaC2Zi8XVNuew5wsoQA9UIjcIIi8pMfnSsCeOcwO5JYDWgdRiIUjNYvUVd8JzBtmx1x9C0mNSkR29RIjznr3z+aljAuWJYSk5gdaxC+J4S2CJGaJ5IN66RJgaxgKXXu3ajEA3cjMpOG/SuDRGnksAWZrWZiSMbAEUhE7WuTNQM5Gb8DmvRTOw6AupUEtj2TBxXKUWLnSfwsZ2ZaLWgtWgmwvLybD71L51g7S1+Khdet204T5ulF6X71B+eHLhXfdxRVhhEMfpBcrdLq6+wC3byKEZxqTGEpqyegoeFXbBa++1rDB2GqR2G9usZ0wqmvGIqKiuvNaNaJlX9nwsCU925HU6f4z83vrrIjyPMTNCozq47eHwKjwhDTq+TPD/FgHnqac5PAbJnUPaSB6gYMK88D1BpHqACkEQ6iCRPUDFgXnbUE1SAiJGdAJJHqBjv7UAvCksXyL4uuSd6vbMjveA6gY54DbkQnA/1ajbDzad6jWuUahJt80wz+JDvLRMqAG1VLpgXnJMb55O9mj1ZM0vH1fqQjFEBxDI4Yh3EUv5mgllaxI3nQSq9DlIBsBJYdJA7ScWUMKbiWPeRmq195rj2hSWTVBrd3FtGqQztM01YFuudpMe6edFsO/e6MOkjIamGFJ46kzQZptIYJYomKSwXntw0Fei/Bh6nYnbtPzmPU+F5e2wGhCFlINa13ZhhXk7yxDATVkpPeKBKmwqe1AkJpsiTu449Em7b5WaOKy9PJqo0qvVbRqoMbiPecHTXyc1UaVNxlmsyJIxEPta8xGidl4yr4Eyx1aWuI5HRsELyTGQTKzifJ3I0m5xkIkeb1V5RIzms+ezG/+d7aL/oP+7u1qvn6Y8/L2G5buIt7eTGt+6L62wiO93MpMC2oT4z0cOahQAECFC1qFi6xekTAgm6y6wPN4BiAhP/4kxp4TInE5u4Km769ZsPt5i2cSpTdqj0AQ7jwGFIVI9a7z46iVBwYIHgvSsMQ7YNyVUYmOgWZ8QJl7mimLZSEysxI31FpsIYhX5so4OhFQamwe9MYcrC8Xg8DMz67uzItycyZG7rJq4w1wZl0hUGehisxVGqwsAk8J0pDAzJkGUBuQoDc56e12Iycdf08fbrEoaPoQo43y/FgU8YPogiMBWMb/Qx/U+81FnyD5O6nj5aeIXsIUpnBvcKRD3rDB9HDe4WCMwGe9rSU79Jp25bT2MVLIOuByBIeVpBgYSFVc4tBAm1j00LOBT4aueD43/vGYl9KxMiHDihnDWiCtLmZ6LSFiVsfBT/w8L2Dky6RyBtjZM2wY5eN6SaGZivffv8+x8P337+kK3mP83sh7UTuu5yJN2yAJlW/bCHAWdavJogMRWmJn10E+G4wVQu2atWQrayo1g6B2pMS7vPb3Cr29B2GAblCKHSMyCBE8U8A5jv0h8KMHnzHlaJX8BWuRNcJPmM3VKGEFOm8aZMQUYUYxqhicKiALmCxfp16ezYsfjZw8yV4kf2IiAufmIUOHRk0yemJaYwYGD214t1Gt6fG0DYgysBTOUKO7Re2cuKtPV/N0FUiPlynck5UZVlEC7SUaH5G8oTTR7mtXYtVa317gS87PtqVuSP0eSx8Zk8uJzrPTw1Y3QCYOjjU70WJ5Bc/++/rRpWDkDkDb0sfeBAi56dfQmkqEG6eIsDjAOAfHc63XLhDDTNMf5F8s74bSWL6y5r7GnbW7PY7WnbQ9uhWtgsyq3HWGbH/jXL5O/Ej7Tqr3kN51296y0V/ebXk1d/OrT693Bqca9TNDW1yW4kz764oRcLIAGmb1OAHUK8p6YwlCkg1LKurJ0HN6VV4dc/3nBmSV1NWZZp6GHr12GcvFIUWuUlNYbmZREwHTsvrc681Hle8sGpaF62OHDt9/s/Tt5nsaF9Vg/7ufr0WYZiDu2z2oavA9sGrajDl1ziy2itrUE5RnIwa9DDucs7Hoftcoo08anYdXhFCN1h8GXiudT9JI6fCGQiQeb87KHscF4KrC12j5dAoYt3cYKZqLUopfxy//ev1yfmmUxQ1JJ4oA2ORIsI4du7QAJpQ5GLxMhihHbbMXsxwVrrYMAY1ASburI3Ueha2iJlvjpUaKD1ERocQr40DtCqDCSDZ7Ba6wx21MQkSmdi8n2TlrhzD3EEsG3tfAb788dT804gQDOgd5KawWo9jArt0zuZ6tAZbMHM0dsGg6+GWF2tgWmRYd1UIZMdFv5EfjpiRac6SAhgqUqVqejsbUM4T3R1tSBac1FAHVS5Kexb7arc1Kpb6ZOl3OpQzKuwqPuZjf2Uo9q6FW3QdX0Qoqhm58Lo8Mx725KyaOalsXyFfbpuDFoibc3JYUukBkijO58iCiNwyUvK7G1LynKtoUm14+DjsItHhsGRiHSdCbonI5TFR1goHttI4cNCcavNFiBRA4VxkfdREZZ+cnU/Go5M7NtDy6E0XFUMPgrqfm51sSG4tpzcWcPjp2GQdPpv3x5r4/wu3eJNb/4P</diagram></mxfile>
<mxfile host="Electron" modified="2020-10-23T04:44:52.786Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.5.7 Chrome/83.0.4103.122 Electron/9.1.2 Safari/537.36" etag="STxWlgEHhSQK3eOWZQUo" version="13.5.7" type="device"><diagram id="C-xXtRXsVBNM-cboXoND" name="Page-1">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</diagram></mxfile>
Binary file removed doc/vhpidirect/examples/img/matrices_virt_vga.png
Binary file not shown.
9 changes: 5 additions & 4 deletions doc/vhpidirect/examples/shared.rst
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,9 @@ As a result, at runtime, when VHDL calls the external function, the Python callb
testbench instead.

.. TIP::
In :ref:`COSIM:VHPIDIRECT:Examples:arrays:matrices:vga` two "virtual screen backends" are shown: writing PNG/GIF with
ImageMagick or drawing a window with ``X11/Xlib.h``. Those are written in C, but equivalent solutions can be implemented
using Python libraries such as `matplotlib <https://matplotlib.org/>`_, `panda3d <https://www.panda3d.org/>`_,
`pygame <https://www.pygame.org>`_, `cocos2dpy <http://cocos2d.org/#cocos2dpy>`_, `pyglet <http://pyglet.org/>`_, etc.
In `dbhi/vboard: VGA test pattern <https://github.com/dbhi/vboard/tree/main/vga>`_, this example and :ref:`COSIM:VHPIDIRECT:Examples:arrays:matrices:vga`
are combined for providing a *virtual VGA screen* using Python's `NumPy <https://numpy.org/>`_, `Pillow <https://python-pillow.org/>`_
and `Tkinter <https://docs.python.org/3/library/tkinter.html>`_.
Equivalent solutions can be implemented using Python libraries such as `matplotlib <https://matplotlib.org/>`_,
`panda3d <https://www.panda3d.org/>`_, `pygame <https://www.pygame.org>`_, `cocos2dpy <http://cocos2d.org/#cocos2dpy>`_, `pyglet <http://pyglet.org/>`_, etc.
Do you want to take up the challenge? `Propose a PR <https://github.com/ghdl/ghdl-cosim/compare>`_!
2 changes: 0 additions & 2 deletions vhpidirect/arrays/matrices/framebuffer/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,3 @@ if [ -n "$DISPLAY" ]; then
echo "> Execute tb_testX11"
./tb_testX11
fi

./virt_vga/run.sh
Empty file.
14 changes: 0 additions & 14 deletions vhpidirect/arrays/matrices/framebuffer/virt_vga/run.sh

This file was deleted.

138 changes: 0 additions & 138 deletions vhpidirect/arrays/matrices/framebuffer/virt_vga/screen.vhd

This file was deleted.

Loading

0 comments on commit 00ad357

Please sign in to comment.