{"id":15188,"date":"2016-07-25T10:00:37","date_gmt":"2016-07-25T17:00:37","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=15188"},"modified":"2021-06-16T14:01:09","modified_gmt":"2021-06-16T21:01:09","slug":"usb-functionality-on-our-boards","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/usb-functionality-on-our-boards\/","title":{"rendered":"USB Functionality on Our Boards"},"content":{"rendered":"<p>USB, or Universal Serial Bus, is a very flexible connection being used for flash drives, cameras, and even phones. This flexibility allows us to use USB\u00a0as I\/O for our <a href=\"https:\/\/digilent.com\/shop\/fpga-programmable-logic\/\">FPGAs<\/a>. Our boards\u00a0support a handful of uses for USB, and a brief explanation of each is detailed below.<\/p>\n<p><strong>USB Power<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-15576\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power-600x298.png\" alt=\"USB-Power\" width=\"600\" height=\"298\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power-600x298.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power-768x382.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power-1024x509.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power-800x398.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Power.png 1473w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Perhaps the most passive use for USB is as a 5V 0.5A power supply. Many of our FPGA boards support being powered over USB for smaller projects, such as the <a href=\"https:\/\/digilent.com\/shop\/arty-board-artix-7-fpga-development-board-for-makers-and-hobbyists\/\">Arty <\/a>for example. Some of our more powerful\u00a0<span style=\"color: #ff0000;\"><span style=\"color: #303030;\"><span style=\"color: #505050;\">boards, like the <a href=\"https:\/\/digilent.com\/shop\/genesys-2-kintex-7-fpga-development-board\/\">Genesys 2<\/a>, require more current than most USB ports can support. If this is the case see the Power section of your device manual\u00a0for alternative methods of powering the board in question.<\/span><\/span><\/span><\/p>\n<p><strong>USB-UART Bridge<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15573\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-UART.png\" alt=\"USB-UART\" width=\"597\" height=\"290\" \/><\/p>\n<p>UART is a very simple way to communicate with other devices. Nearly all of our FPGA boards implement a USB-UART bridge\u00a0for board-computer communication. This will make the board show up on your computer as a serial port (COM in Windows, TTY in Linux\/Mac). A thorough description of UART is available on the Digilent\u00a0<a href=\"https:\/\/digilent.com\/reference\/learn\/fundamentals\/communication-protocols\/uart\/start?redirect=1id=pmod\/communication_protocols\/uart\">reference site<\/a>. There are many libraries available for communicating over UART, pySerial is an\u00a0example for the Python programming language.<\/p>\n<p><strong>USB HID<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-15575\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-HOST-600x343.png\" alt=\"USB-HOST\" width=\"600\" height=\"343\" \/><\/p>\n<p>HID stands for Human Interface Device and refers to keyboards, mice, and other input devices. On some of our boards we have a dedicated microcontroller for reading from this type of USB device. The data is converted to a standard PS\/2 interface by this microcontroller for interpretation by the FPGA. More information on the PS\/2 interface used by the microcontroller is available on the Digilent reference site for all FPGA boards that have this functionality.<\/p>\n<p><strong>USB OTG<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-15572\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-OTG-600x240.png\" alt=\"USB-OTG\" width=\"600\" height=\"240\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-OTG-600x240.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-OTG.png 605w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>USB OTG stands for USB On-The-Go and allows a device to act as both a host and a client depending on the device plugged in to the USB port. A handful of our boards support this protocol, including the <a href=\"https:\/\/digilent.com\/shop\/zybo-zynq-7000-arm-fpga-soc-trainer-board\/\">Zybo<\/a>. If you are interested in using this port, official USB documentation is available <a href=\"http:\/\/www.usb.org\/developers\/onthego\/\">here<\/a>.<\/p>\n<p><strong>DSPI\/DPTI\/DEPP Using the Adept SDK<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-15579\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Adept-600x292.jpg\" alt=\"USB-Adept\" width=\"600\" height=\"292\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Adept-600x292.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Adept-768x374.jpg 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Adept-800x389.jpg 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-Adept.jpg 855w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>The <a href=\"https:\/\/digilent.com\/reference\/software\/adept\/start?redirect=1id=digilent_adept_2\">Adept SDK<\/a> allows high speed data transfer over USB using either DSPI, DPTI, or DEPP. Currently DSPI and DPTI are only available on the <a href=\"https:\/\/digilent.com\/shop\/nexys-video-artix-7-fpga-trainer-board-for-multimedia-applications\/\">Nexys Video<\/a> and <a href=\"https:\/\/digilent.com\/shop\/genesys-2-kintex-7-fpga-development-board\/\">Genesys 2<\/a>, while DEPP is only available on the <a href=\"https:\/\/digilent.com\/shop\/cmod-s6-breadboardable-spartan-6-fpga-module\/\">Cmod S6<\/a>. For more information look into the <a href=\"https:\/\/digilent.com\/reference\/software\/adept\/reference-manual\">Adept 2 SDK<\/a> documentation.<\/p>\n<p>Which USB functionality\u00a0do you use the most?<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-15188 jlk' data-task='like' data-post_id='15188' data-nonce='e5335d04d0' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-15188 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-15188 jlk' data-task='unlike' data-post_id='15188' data-nonce='e5335d04d0' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-15188 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-15188 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Brandon provides a detailed overview of USB and what it can do with our FPGAs!<\/p>\n","protected":false},"author":43,"featured_media":15575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1563],"tags":[1662,1452],"ppma_author":[4494],"class_list":["post-15188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide","tag-fpga","tag-guide"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/07\/USB-HOST.png","authors":[{"term_id":4494,"user_id":43,"is_guest":0,"slug":"bkallaher","display_name":"Brandon Kallaher","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/694f70c3e60ea0a1fb370be17299ed85?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"Kallaher","last_name_2":"","first_name":"Brandon","first_name_2":"","job_title":"","description":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/15188","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\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=15188"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/15188\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/15575"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=15188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=15188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=15188"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=15188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}