{"id":17693,"date":"2016-11-17T10:00:17","date_gmt":"2016-11-17T18:00:17","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=17693"},"modified":"2021-06-11T11:03:45","modified_gmt":"2021-06-11T18:03:45","slug":"how-to-add-wifi-to-your-digilent-fpga-or-zynq-board","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/how-to-add-wifi-to-your-digilent-fpga-or-zynq-board\/","title":{"rendered":"How to Add WiFi to your Digilent FPGA or Zynq Board"},"content":{"rendered":"<p style=\"text-align: left;\">In a <a href=\"https:\/\/digilent.com\/blog\/introduction-to-pmod-ip-cores\/\">previous post<\/a>, I discussed using the dedicated Pmod IP cores that we now have for over 25 of our Pmod modules. These IP cores, plus our <a href=\"https:\/\/digilent.com\/reference\/learn\/programmable-logic\/tutorials\/pmod-ips\/start\">written tutorial<\/a>, make it quick and relatively painless to add Pmods to your Digilent <a href=\"https:\/\/digilent.com\/shop\/fpga-programmable-logic\/\">FPGA or Zynq<\/a> board using <a href=\"https:\/\/en.wikipedia.org\/wiki\/MicroBlaze\">MicroBlaze<\/a>. In that post, I discussed some of the benefits of adding a soft processor, such as MicroBlaze, to your FPGA. Now I\u2019d like to augment the list of benefits by including the ability to add WiFi, quickly turning your Digilent FPGA board into a powerful IoT platform!<\/p>\n<p><strong>This is so exciting just tell us how it\u2019s done!<\/strong><\/p>\n<p>Fair enough. We feel the same way! To explain in detail here would be an exceptionally long post, so I will point you in the direction of our various resources and outline some important points of each.<\/p>\n<figure id=\"attachment_17713\" aria-describedby=\"caption-attachment-17713\" style=\"width: 329px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17713\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/arty-plus-wifi-1.png\" alt=\"arty-plus-wifi\" width=\"329\" height=\"352\" data-wp-pid=\"17713\" \/><figcaption id=\"caption-attachment-17713\" class=\"wp-caption-text\">Arty FPGA board with <a href=\"https:\/\/digilent.com\/shop\/pmodwifi-wifi-interface-802-11g\/\">Pmod WiFi<\/a> on the left and <a href=\"https:\/\/digilent.com\/shop\/pmod-sd-full-sized-sd-card-slot\/\">Pmod SD<\/a> card slot on the right.<\/figcaption><\/figure>\n<p><strong>1. Hardware and Software<\/strong><\/p>\n<p>To add WiFi to your FPGA board following our methods, you will need a <a href=\"https:\/\/digilent.com\/shop\/pmodwifi-wifi-interface-802-11g\/\">Pmod WiFi<\/a>, <a href=\"https:\/\/digilent.com\/shop\/pmod-sd-full-sized-sd-card-slot\/\">Pmod SD<\/a> (unless you\u2019re using a board that has an on-board microSD card slot) and the appropriately sized SD card. In terms of software, you will need Xilinx Vivado 2016.X and Xilinx SDK (same version as your Vivado installation).<\/p>\n<p>You should also install the board support files which describe GPIO interfaces on your board and make it easier to select your FPGA board and add GPIO IP blocks. We\u2019ve written a tutorial, <a href=\"https:\/\/digilent.com\/reference\/learn\/software\/tutorials\/vivado-board-files\/start?redirect=1\">Vivado Board Files for Digilent 7-Series FPGA Boards<\/a>, to make it easy. You will also need access to our library files which you can find on the Digilent <a href=\"https:\/\/github.com\/Digilent\/vivado-library\">Github<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-16585 aligncenter\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/09\/Using-Pmod-IPs.png\" alt=\"Using Pmod IPs\" width=\"611\" height=\"358\" data-wp-pid=\"16585\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/09\/Using-Pmod-IPs.png 736w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/09\/Using-Pmod-IPs-600x351.png 600w\" sizes=\"auto, (max-width: 611px) 100vw, 611px\" \/><\/p>\n<p><strong>2. Using Pmod IPs<\/strong><\/p>\n<p>Using Pmod IPs is a generic tutorial we\u2019ve written that walks step by step through how to implement Digilent\u2019s Pmod interfaces in a MicroBlaze or Zynq design in Vivado. And don\u2019t worry, if you\u2019re new to MicroBlaze or Zynq, we also have Getting Started with MicroBlaze and Getting Started with Zynq tutorials.<\/p>\n<p>When followed, the Using Pmod IPs tutorial will lead you through getting started with the software to having a working design for any Pmod that has an IP core. In the case of the Pmod WiFi, you will also need to add the Pmod SD card reader to your design if using any Digilent FPGA board, except those listed above. To do this, simply repeat step four of the tutorial (this also goes for adding any other additional Pmods to the design).<\/p>\n<figure id=\"attachment_17721\" aria-describedby=\"caption-attachment-17721\" style=\"width: 614px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17721\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi-1024x571.png\" alt=\"pmod-monthly-wifi\" width=\"614\" height=\"343\" data-wp-pid=\"17721\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi-1024x571.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi-600x334.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi-768x428.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi-800x446.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/pmod-monthly-wifi.png 1057w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><figcaption id=\"caption-attachment-17721\" class=\"wp-caption-text\">Pmod Monthly video tutorial explaining how to add the Pmod WiFi to your Digilent FPGA or Zynq board.<\/figcaption><\/figure>\n<p><strong>3. Video Tutorial<\/strong><\/p>\n<p>Although a generic tutorial is helpful, nothing is more helpful than a specific example. That\u2019s what you\u2019ll find in our Pmod Monthly video titled, \u201c<a href=\"https:\/\/www.youtube.com\/watch?v=KTeTMv3oiPw\">Adding WiFi to Your Digilent FPGA or Zynq Board<\/a>.\u201d In this video we use an Arty FPGA board, Pmod WiFi and Pmod SD card slot. The same steps are detailed in the <a href=\"https:\/\/digilent.com\/reference\/learn\/programmable-logic\/tutorials\/pmod-ips\/start\">Using Pmod IPs<\/a> tutorial, and additionally, we walk through the Digilent network IP stack and HTTP server.<\/p>\n<p>At the end of the video tutorial you will be able to toggle GPIO pins on your FPGA or Zynq board wirelessly!<\/p>\n<figure id=\"attachment_17716\" aria-describedby=\"caption-attachment-17716\" style=\"width: 520px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17716\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack-1024x741.png\" alt=\"network-stack\" width=\"520\" height=\"376\" data-wp-pid=\"17716\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack-1024x741.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack-600x434.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack-768x556.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack-800x579.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/network-stack.png 1078w\" sizes=\"auto, (max-width: 520px) 100vw, 520px\" \/><figcaption id=\"caption-attachment-17716\" class=\"wp-caption-text\">Overview of internet fundamentals workshop given by Keith Vogel at Microchip Master&#8217;s conference 2014.<\/figcaption><\/figure>\n<p><strong>4. Additional Resource<\/strong><\/p>\n<p>If you are interested in learning more about the HTTP server or the network stack, you can take a look at this <a href=\"https:\/\/digilent.com\/reference\/_media\/reference\/pmod\/pmodwifi\/networkslides.pdf\">PowerPoint presentation<\/a>. This presentation was given at Microchip Master\u2019s 2015 by the designer, our own Keith Vogel, and is very lengthy and detailed regarding the fundamentals of network topology, the DEIPck network stack, HTTP and HTML.<\/p>\n<p>If you have questions regarding any of the information discussed here, don\u2019t hesitate to ask in the comments below or on the Digilent Forum!<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-17693 jlk' data-task='like' data-post_id='17693' data-nonce='5286a1c13f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-17693 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-17693 jlk' data-task='unlike' data-post_id='17693' data-nonce='5286a1c13f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-17693 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-17693 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Talesa outlines some resources for getting started with your FPGA\/Zynq board and the Internet of Things!<\/p>\n","protected":false},"author":26,"featured_media":17714,"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":[38,35,1563],"tags":[1662],"ppma_author":[4491],"class_list":["post-17693","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-expansion-modules","category-fpga","category-guide","tag-fpga"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/11\/close-up-arty-plus-wifi.png","jetpack_sharing_enabled":true,"authors":[{"term_id":4491,"user_id":26,"is_guest":0,"slug":"talesab","display_name":"Talesa Bleything","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/4ebebd593afbf3d758e9127934708634ab09aeaa7fcfcf6151f4e9ceb9cf6d0e?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\/17693","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\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=17693"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/17693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/17714"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=17693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=17693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=17693"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=17693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}