{"id":23468,"date":"2018-01-11T09:00:15","date_gmt":"2018-01-11T17:00:15","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=23468"},"modified":"2021-06-10T14:28:36","modified_gmt":"2021-06-10T21:28:36","slug":"no-driver-no-problem","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/no-driver-no-problem\/","title":{"rendered":"No Driver? No Problem!"},"content":{"rendered":"<p>In a recent <a href=\"https:\/\/forums.xilinx.com\/t5\/Xcell-Daily-Blog\/Adam-Taylor-s-MicroZed-Chronicles-Part-192-Pmod-What-if-there-is\/ba-p\/764448\">blog post<\/a> by Adam Taylor, he examines how to approach using Pmods if there is not a driver available. His solution is to use the Pmod bridge in the\u00a0Zynq SoC\u2019s PL (programmable logic) to correctly map Pmod ports on a development board and to create a Zynq PS (processing system) driver.<\/p>\n<p>For his example, he uses a\u00a0<a href=\"https:\/\/digilent.com\/shop\/pmod-da4-eight-12-bit-d-a-outputs\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Digilent\u2019s DA4 octal DAC Pmod <\/a>integrated with\u00a0<a href=\"https:\/\/digilent.com\/shop\/pmod-ad2-4-channel-12-bit-a-d-converter\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Digilent\u2019s dual ADC AD2 Pmod.<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-23469\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/sset-600x285.jpg\" alt=\"\" width=\"600\" height=\"285\" data-wp-pid=\"23469\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/sset-600x285.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/sset.jpg 602w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>The Pmod bridge allows for the definition of input types for both the top and bottom rows of the Pmod connector. This setup allows for the user to select from\u00a0either GPIO, UART, IIC, or SPI interfaces. This helps the Pmod connector align with the standard for interface type.<\/p>\n<p>For his example, he used a SPI interface on the top row.\u00a0 Then he selected the actual SPI communication channel.<\/p>\n<blockquote><p>As we are using the Zynq SoC, we have two options. The first would be to use an AXI SPI IP block within the PL and connected to the bridge. The second approach\u2014and the one I am going to use\u2014is to connect the bridge to the Zynq PS\u2019 SPI using EMIO. This choice provides us with the ability to wire the pins from the PS SPI ports to the bridge inputs directly<\/p><\/blockquote>\n<p>To do this, he mapped the pins for this example, his diagram for the Pmod DA4 is shown below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-23470\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/di-600x428.jpg\" alt=\"\" width=\"600\" height=\"428\" data-wp-pid=\"23470\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/di-600x428.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/di.jpg 602w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>He uses the SPI drivers created by the BSP to drive the DA4, and to interact with his device. Then he drove a simple ramp output with the\u00a0<a href=\"https:\/\/digilent.com\/shop\/analog-discovery-100msps-usb-oscilloscope-logic-analyzer-limited-time\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Analog Discovery <\/a>monitoring the DAC output. One this was working as expected, he connected the DA4 and the AD2 together so that the Zynq SoC could receive the signal:<\/p>\n<p>If you are interested in this project or learning more about Pmod drivers, please check out the <a href=\"https:\/\/forums.xilinx.com\/t5\/Xcell-Daily-Blog\/Adam-Taylor-s-MicroZed-Chronicles-Part-192-Pmod-What-if-there-is\/ba-p\/764448\">original post<\/a> and\/or his\u00a0<a href=\"https:\/\/github.com\/ATaylorCEngFIET\/MicroZed-Chronicles\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">git hub repository<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-23468 jlk' data-task='like' data-post_id='23468' data-nonce='87acbb1af5' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-23468 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-23468 jlk' data-task='unlike' data-post_id='23468' data-nonce='87acbb1af5' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-23468 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-23468 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Adam Taylor and the MicroZed Chronicles explains what to do when your Pmod does not have a driver.<\/p>\n","protected":false},"author":36,"featured_media":23470,"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,"footnotes":""},"categories":[4323,1563],"tags":[1736],"ppma_author":[4485],"class_list":["post-23468","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","category-guide","tag-analog-discovery-2"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/01\/di.jpg","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\/23468","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=23468"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/23468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/23470"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=23468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=23468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=23468"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=23468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}