diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index cca97b72c6..a9d6694d58 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -7,7 +7,7 @@ Version 2.1 Image release: pynq_z1_v2.1 -Documentation updated 14 Feb 2018 +Documentation updated 21 Feb 2018 * Overlay Changes * All overlays updated to build with Vivado 2017.4 @@ -26,6 +26,7 @@ Documentation updated 14 Feb 2018 * Updated to Ubuntu 16.04 LTS (Xenial) * Updated kernel to tagged 2017.4 Xilinx release. * Jupyter now listens on both :80 and :9090 ports + * opencv2.4.9 removed * Microblaze Programming * IPython magics added for Jupyter programming of Microblazes * Microblaze pyprintf, RPC, and Python-callable function generation added. diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 579ead5ac3..158d23d6d2 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -42,8 +42,8 @@ Micro SD card preloaded with the PYNQ-Z1 image, you can skip this step. To make your own PYNQ Micro-SD card: - 1. `Download the PYNQ-Z1 image - `_ + 1. `Download the PYNQ-Z1 v2.1 image (released 21 Feb 2018) + `_ 2. Unzip the image 3. Write the image to a blank Micro SD card (minimum 8GB recommended) @@ -59,7 +59,7 @@ Board Setup :align: center 1. Set the **JP4 / Boot** jumper to the *SD* position by - placing the jumper over the bottom two pins of JP4 as shown in the image. + placing the jumper over the top two pins of JP4 as shown in the image. (This sets the board to boot from the Micro-SD card) 2. To power the PYNQ-Z1 from the micro USB cable, set the **JP5 / Power** @@ -225,8 +225,6 @@ When prompted, the username is **xilinx** and the password is **xilinx**. The following screen should appear: .. image:: images/samba_share.JPG - :height: 600px - :scale: 75% :align: center To access the home area in Ubuntu, open a file broswer, click Go -> Enter diff --git a/docs/source/images/samba_share.JPG b/docs/source/images/samba_share.JPG index 6f505ae71c..954564c2a5 100755 Binary files a/docs/source/images/samba_share.JPG and b/docs/source/images/samba_share.JPG differ diff --git a/docs/source/images/zynq_interfaces.png b/docs/source/images/zynq_interfaces.png index e8b065a2c8..b27035f236 100644 Binary files a/docs/source/images/zynq_interfaces.png and b/docs/source/images/zynq_interfaces.png differ diff --git a/docs/source/overlay_design_methodology/pspl_interface.rst b/docs/source/overlay_design_methodology/pspl_interface.rst index 11e5cae773..ff1ab18d2a 100644 --- a/docs/source/overlay_design_methodology/pspl_interface.rst +++ b/docs/source/overlay_design_methodology/pspl_interface.rst @@ -10,6 +10,7 @@ ports, 2x AXI Slave GP ports and 1x AXI Master ACP port. There are also GPIO controllers in the PS that are connected to the PL. .. image:: ../images/zynq_interfaces.png + :height: 500px :align: center There are four ``pynq`` classes that are used to manage data movement between diff --git a/docs/source/pynq_libraries.rst b/docs/source/pynq_libraries.rst index a86978a160..81a8aafe62 100644 --- a/docs/source/pynq_libraries.rst +++ b/docs/source/pynq_libraries.rst @@ -61,6 +61,6 @@ driver provided, before the peripheral can be used. pynq_libraries/arduino.rst pynq_libraries/grove.rst pynq_libraries/logictools.rst - pynq_libraries/pynq_microblaze.rst + pynq_libraries/pynq_microblaze_subsystem.rst pynq_libraries/pynqmb_python.rst pynq_libraries/pynqmb_reference.rst diff --git a/docs/source/pynq_libraries/pynq_microblaze.rst b/docs/source/pynq_libraries/pynq_microblaze.rst deleted file mode 100644 index 4b08b03839..0000000000 --- a/docs/source/pynq_libraries/pynq_microblaze.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _pynq-microblaze: - -PYNQ MicroBlaze -========================= - -The PYNQ MicroBlaze subsystem can be controlled by the PynqMicroblaze class. This -allows loading of programs from Python, controlling executing by triggering the -processor reset signal, reading and writing to shared data memory, and managing -interrupts received from the subsystem. - -Each PYNQ MicroBlaze subsystem is contained within an IO Processor (IOP). An IOP -defines a set of communication and behavioral controllers that are controlled by -Python. There are currently three IOPs provided with PYNQ: Arduino, PMOD, and -Logictools. - -Block Diagram -------------- - -A PYNQ MicroBlaze subsystem consists of a MicroBlaze processor, AXI -interconnect, Interrupt controller, an Interrupt Requester, and External System -Interface, and Block RAM and memory controllers. - -The AXI interconnect connects the MicroBlaze to the interrupt controller, -interrupt requester, and external interface. - -* The Interrupt Controller is the interface for other communication or - behavioral controllers connected to the MicroBlaze Processor. -* The Interrupt Requester sends interrupt requests to the Zynq Processing System. -* The External Interface allows the MicroBlaze subsystem to communicate with - other communication, behavioral controllers, or DDR Memory. -* The Block RAM holds MicroBlaze Instructions and Data. - -The Block RAM is dual-ported: One port connected to the MicroBlaze Instruction -and Data ports; The other port is connected to the ARM® Cortex®-A9 processor for -communication. - -If the External Interface is connected to DDR Memory, DDR can be used to -transfer large data segments between the PS (Python) and the Subsystem. - -.. image:: ../images/mb_subsystem.png - :align: center - -Examples --------- - -In the :ref:`base-overlay`, three IOP instances with PYNQ Microblaze Subsystems -are available: iop1 (PMODA), iop2 (PMODB), and iop3 (Arduino). After the overlay -is loaded these can be accessed as follows: - -.. code-block:: Python - - from pynq.overlays.base import BaseOverlay - from pynq.lib import PynqMicroblaze - - base = BaseOverlay('base.bit') - - mb = PynqMicroblaze(base.iop1.mb_info, - "/home/xilinx/pynq/lib/pmod/pmod_timer.bin") - mb.reset() - -More information about the PynqMicroblaze class, and its API can be found in the -:ref:`pynq-lib-pynqmicroblaze` section. - -:ref:`pmod`, :ref:`Arduino`, and :ref:`Grove` classes are subclasses of the -PynqMicroBlaze class, and further example notebooks can be found in those -sections. - -Creating a New PYNQ Microblaze ------------------------------- - -Any hierarchy that contains a Microblaze and meets the above requirements of -having AXI-accessible code memory, a PS interrupt line and a reset line can be -used in PYNQ. However in order to use your Microblaze with the IPython magic -you must provide a board support package (BSP). BSPs are generated from Xilinx -SDK and contain all of the drivers and configuration data for the peripherals -attached to the Microblaze. - -PYNQ provides a TCL script to generate the BSP from the hardware description -file which can be found in the ``boards/sw_repo`` directory of the repository, -along with the drivers needed for Python/C communication and the ``pynqmb`` -hardware abstraction library. Creating and using the BSP requires the following -steps: - -1. Export Hardware from Vivado to generate the HDF file - -2. In the ``boards/sw_repo`` directory run ``make HDF=$HDF_FILE``. If no HDF - is provided then the Base Overlay BSPs will be generated. - -3. Copy the generated BSP on to the board and ensure it is name - ``bsp_${hierarchy}`` where ``${hierarchy}`` is the name of the Microblaze - hierarchy in your design. If you have multiple Microblazes it can all be a - prefix common to all hierarchies. - -4. Call ``add_bsp(BSP_DIR)`` in Python. This can be done as part of initialisation of your overlay. - -These steps will integrate the BSP into the PYNQ runtime and allow the IPython -``%%microblaze`` magic to be used with the new Microblaze subsystem. - -If you wish to reuse an existing subsystem, as long as it is named in -accordance with the Base Overlay - e.g. ``iop_pmod*`` or ``iop_arduino*`` then -the correct BSP will be used automatically. diff --git a/docs/source/pynq_overlays/base_overlay.rst b/docs/source/pynq_overlays/base_overlay.rst index 253fca5d10..ea7576d5a7 100644 --- a/docs/source/pynq_overlays/base_overlay.rst +++ b/docs/source/pynq_overlays/base_overlay.rst @@ -206,7 +206,7 @@ Assuming PYNQ has been cloned: source ./build_base_ip.tcl source ./base.tcl -To build from the command line, open the Vivado 2016.1 Tcl Shell, and run the +To build from the command line, open the Vivado 2017.4 Tcl Shell, and run the following: .. code-block:: console diff --git a/docs/source/pynq_overlays/logictools_overlay.rst b/docs/source/pynq_overlays/logictools_overlay.rst index bef8714174..6b56dc98de 100644 --- a/docs/source/pynq_overlays/logictools_overlay.rst +++ b/docs/source/pynq_overlays/logictools_overlay.rst @@ -121,7 +121,7 @@ Assuming PYNQ has been cloned: source ./build_logictools_ip.tcl source ./logictools.tcl -To build from the command line, open the Vivado 2016.1 Tcl Shell, and run the +To build from the command line, open the Vivado 2017.4 Tcl Shell, and run the following: .. code-block:: console diff --git a/docs/source/pynq_package/pynq.lib/pynq.lib.arduino.rst b/docs/source/pynq_package/pynq.lib/pynq.lib.arduino.rst index c9a326e36c..65fa6956fa 100644 --- a/docs/source/pynq_package/pynq.lib/pynq.lib.arduino.rst +++ b/docs/source/pynq_package/pynq.lib/pynq.lib.arduino.rst @@ -30,15 +30,7 @@ pynq.lib.arduino.arduino_grove_buzzer Module :members: :undoc-members: :show-inheritance: - -pynq.lib.arduino.arduino_grove_color Module -------------------------------------------- - -.. automodule:: pynq.lib.arduino.arduino_grove_color - :members: - :undoc-members: - :show-inheritance: - + pynq.lib.arduino.arduino_grove_ear_hr Module -------------------------------------------- diff --git a/docs/source/pynq_package/pynq.lib/pynq.lib.pmod.rst b/docs/source/pynq_package/pynq.lib/pynq.lib.pmod.rst index 80a8473adb..4d4e65fe22 100644 --- a/docs/source/pynq_package/pynq.lib/pynq.lib.pmod.rst +++ b/docs/source/pynq_package/pynq.lib/pynq.lib.pmod.rst @@ -127,14 +127,6 @@ pynq.lib.pmod.pmod_grove_buzzer Module :undoc-members: :show-inheritance: -pynq.lib.pmod.pmod_grove_color Module -------------------------------------- - -.. automodule:: pynq.lib.pmod.pmod_grove_color - :members: - :undoc-members: - :show-inheritance: - pynq.lib.pmod.pmod_grove_dlight Module -------------------------------------- diff --git a/docs/source/pynq_package/pynq.lib/pynq.lib.pynqmicroblaze.rst b/docs/source/pynq_package/pynq.lib/pynq.lib.pynqmicroblaze.rst index cd3addada8..facd144bc7 100644 --- a/docs/source/pynq_package/pynq.lib/pynq.lib.pynqmicroblaze.rst +++ b/docs/source/pynq_package/pynq.lib/pynq.lib.pynqmicroblaze.rst @@ -1,9 +1,51 @@ .. _pynq-lib-pynqmicroblaze: -pynq.lib.pynqmicroblaze Module -============================== +pynq.lib.pynqmicroblaze.pynqmicroblaze Module +============================================= -.. automodule:: pynq.lib.pynqmicroblaze +.. automodule:: pynq.lib.pynqmicroblaze.pynqmicroblaze :members: :undoc-members: :show-inheritance: + +pynq.lib.pynqmicroblaze.compile Module +====================================== + +.. automodule:: pynq.lib.pynqmicroblaze.compile + :members: + :undoc-members: + :show-inheritance: + +pynq.lib.pynqmicroblaze.rpc Module +================================== + +.. automodule:: pynq.lib.pynqmicroblaze.rpc + :members: + :undoc-members: + :show-inheritance: + +pynq.lib.pynqmicroblaze.magic Module +==================================== + +.. automodule:: pynq.lib.pynqmicroblaze.magic + :members: + :undoc-members: + :show-inheritance: + + +pynq.lib.pynqmicroblaze.streams Module +====================================== + +.. automodule:: pynq.lib.pynqmicroblaze.streams + :members: + :undoc-members: + :show-inheritance: + +pynq.lib.pynqmicroblaze.bsp Module +================================== + +.. automodule:: pynq.lib.pynqmicroblaze.bsp + :members: + :undoc-members: + :show-inheritance: + \ No newline at end of file diff --git a/docs/source/python_environment.ipynb b/docs/source/python_environment.ipynb index f6c6174723..d8fd5efc04 100755 --- a/docs/source/python_environment.ipynb +++ b/docs/source/python_environment.ipynb @@ -259,7 +259,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[3, 13, 23, 43, 53, 73, 83, 103, 113, 163, 173, 193, 223, 233, 263, 283, 293, 313, 353, 373, 383, 433, 443, 463, 503, 523, 563, 593, 613, 643, 653, 673, 683, 733, 743, 773, 823, 853, 863, 883, 953, 983, 1013, 1033, 1063]\n" + "[3, 13, 23, 43, 53, 73, 83, 103, 113, 163, 173, 193, 223, 233, 263, 283, 293, 313,\n", + "353, 373, 383, 433, 443, 463, 503, 523, 563, 593, 613, 643, 653, 673, 683, 733, 743,\n", + "773, 823, 853, 863, 883, 953, 983, 1013, 1033, 1063]\n" ] } ],