{"id":24227,"date":"2019-05-09T09:23:24","date_gmt":"2019-05-09T16:23:24","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=24227"},"modified":"2023-02-08T03:52:32","modified_gmt":"2023-02-08T11:52:32","slug":"programming-python-on-arty-z7-20","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/programming-python-on-arty-z7-20\/","title":{"rendered":"Programming Python on Arty Z7-20"},"content":{"rendered":"<p>If you have been looking to get started with Python and Field Programmable Gate Arrays <a href=\"https:\/\/digilent.com\/shop\/fpga-programmable-logic\/\">(FPGA),<\/a>\u00a0you may have found that such a venture can be a bit tricky, to say the least. However, with the new PYNQ framework, Python developers are finally invited to utilize the capabilities of programmable logic by integrating the language into their designs. A <a href=\"https:\/\/www.hackster.io\/adam-taylor\/programming-python-on-zynq-fpga-ec4712\">recent project on Hackster.io<\/a> by Adam Taylor exemplifies how one can combine this powerful hardware and Python for the implementation of their ideas.<\/p>\n<p>To get started with the tutorial, one must first pick up an <a href=\"https:\/\/digilent.com\/shop\/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists\/\">Arty Z7-20<\/a> as well as a MicroSD card. The first steps involve getting the PYNQ image up and running on the Arty. Once this is complete, the ISO File must be burned to the MicroSD card (which should be at least 8 gig if possible).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-24229\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/arty_z7-20_board_TIb7X5TuZ2-600x449.jpg\" alt=\"\" width=\"600\" height=\"449\" data-wp-pid=\"24229\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/arty_z7-20_board_TIb7X5TuZ2-600x449.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/arty_z7-20_board_TIb7X5TuZ2.jpg 680w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Once these steps are complete its time to insert the card into the Arty. Next, the tutorial explains how to leverage Python on the Arty by using Jupyter notebooks.<\/p>\n<blockquote><p>To connect to the\u00a0<a href=\"https:\/\/digilent.com\/shop\/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists\/\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;Arty Z7-20&quot;,&quot;href&quot;:&quot;https:\/\/digilent.com\/shop\/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists\/&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">Arty Z7-20<\/a>\u00a0and its\u00a0<a href=\"http:\/\/jupyter.org\/\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;Jupyter&quot;,&quot;href&quot;:&quot;http:\/\/jupyter.org\/&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">Jupyter<\/a>\u00a0notebooks, we need to open a browser on the same network as the\u00a0<a href=\"https:\/\/digilent.com\/shop\/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists\/\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;Arty Z7-20&quot;,&quot;href&quot;:&quot;https:\/\/digilent.com\/shop\/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists\/&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">Arty Z7-20<\/a>, entering the address Pynq:9090 this will open the initial page as shown below. It is from here that we can develop our\u00a0<a href=\"https:\/\/www.python.org\/\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;Python&quot;,&quot;href&quot;:&quot;https:\/\/www.python.org\/&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">Python<\/a>\u00a0based applications.<\/p><\/blockquote>\n<p>In addition to getting you started with utilizing the PYNQ framework, the tutorial explains how the programmable logic can be used to provide several interfaces and programmable logic overlays.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-24230\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/ice-600x341.jpg\" alt=\"\" width=\"600\" height=\"341\" data-wp-pid=\"24230\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/ice-600x341.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/ice.jpg 680w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>This includes developing custom overlays, which can be done in either\u00a0<a href=\"https:\/\/www.xilinx.com\/products\/design-tools\/vivado.html\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;Vivado Design Suite including SDK and High-Level Synthesis using Vivado HLS &quot;,&quot;href&quot;:&quot;https:\/\/www.xilinx.com\/products\/design-tools\/vivado.html&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">Vivado Design Suite including SDK and High-Level Synthesis using Vivado HLS\u00a0<\/a>or\u00a0<a href=\"https:\/\/www.xilinx.com\/products\/design-tools\/software-zone\/sdsoc.html\" rel=\"nofollow\" data-ha=\"{&quot;eventName&quot;:&quot;Clicked link&quot;,&quot;customProps&quot;:{&quot;value&quot;:&quot;SDSoC Development Environment&quot;,&quot;href&quot;:&quot;https:\/\/www.xilinx.com\/products\/design-tools\/software-zone\/sdsoc.html&quot;,&quot;type&quot;:&quot;story&quot;,&quot;location&quot;:&quot;story&quot;},&quot;clickOpts&quot;:{&quot;delayRedirect&quot;:true}}\">SDSoC Development Environment\u00a0<\/a>so users can fully harness the power of both Python and FPGA.<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-24227 jlk' data-task='like' data-post_id='24227' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-24227 lc'>+1<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-24227 jlk' data-task='unlike' data-post_id='24227' data-nonce='d8c4d58d14' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-24227 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-24227 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Take the power of Python to your FPGA hardware with this getting started tutorial!<\/p>\n","protected":false},"author":36,"featured_media":24230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4323,35,1563],"tags":[],"ppma_author":[4485],"class_list":["post-24227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","category-fpga","category-guide"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/04\/ice.jpg","jetpack_sharing_enabled":true,"authors":[{"term_id":4485,"user_id":36,"is_guest":0,"slug":"mirandamay7","display_name":"Miranda Hansen","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bcab037c32924b9f9b3ca4898e179f2764cb7d9a82aa2bd475170c8aaa884e1c?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=24227"}],"version-history":[{"count":1,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24227\/revisions"}],"predecessor-version":[{"id":29659,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24227\/revisions\/29659"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/24230"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=24227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=24227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=24227"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=24227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}