{"id":5707,"date":"2013-09-16T09:00:29","date_gmt":"2013-09-16T09:00:29","guid":{"rendered":"https:\/\/www.techdesignforums.com\/practice\/?p=5707"},"modified":"2019-03-31T17:30:31","modified_gmt":"2019-03-31T17:30:31","slug":"usb-3-0-functional-layer","status":"publish","type":"post","link":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/","title":{"rendered":"The USB 3.0 Functional Layer"},"content":{"rendered":"<p><a href=\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-system-overview\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em>&lt;= Previous article: USB 3.0 overview<\/em><\/a><\/p>\n<p>The USB 3.0 SuperSpeed architecture is based on a layered protocol, which includes a functional layer (executed in software); and a protocol layer, link layer and physical layer, all executed in hardware. The functional layers of a USB 3.0 Host and Device are linked by software pipes; the hardware layers are linked with a USB 3.0 cable.<\/p>\n<div class=\"article_figure\"><a class=\"figure\" title=\"Figure 1 : The functional layer of USB3.0 is connected by software pipes, the physical layer by cable (Source: Synopsys)\" href=\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/USB-University-diag-2-lrg.jpg\"><img decoding=\"async\" src=\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/USB-University-diag-2-med.jpg\" alt=\"The functional layer of USB3.0 is connected by software pipes, the physical layer by cable (Source: Synopsys)\" \/><\/a><\/div><div class=\"article_figure\"><p class=\"figure_wrapper\"><span class=\"figure_title\">Figure 1 <\/span>The functional layer of USB3.0 is connected by software pipes, the physical layer by cable (Source: Synopsys)<\/p><\/div>\n<p>The Functional layer consists of an application layer and system software on the host side, and a logical function and logical device on the device side.<\/p>\n<p>Pipes are the logical connections between host software and device endpoint.<\/p>\n<div class=\"article_figure\"><a class=\"figure\" title=\"Figure 2 : The USB 3.0 Host and Device Stacks (Source: Synopsys)\" href=\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/USB-University-diag-3-lrg.jpg\"><img decoding=\"async\" src=\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/USB-University-diag-3-med.jpg\" alt=\"The USB 3.0 Host and Device Stacks (Source: Synopsys)\" \/><\/a><\/div><div class=\"article_figure\"><p class=\"figure_wrapper\"><span class=\"figure_title\">Figure 2 <\/span>The USB 3.0 Host and Device Stacks (Source: Synopsys)<\/p><\/div>\n<p>In the USB 3.0 software architecture, the <strong>Host Stack<\/strong> includes:<\/p>\n<ul>\n<li>A <strong>Host Application<\/strong>, which produces or consumes data and interfaces with USB devices through standard interfaces provided by the\u2026<\/li>\n<li><strong>Class Drivers<\/strong>, which translate application requests into a protocol specific to a certain type\/class of devices; use I\/O Request Packets (IRPs) to transfer data to or from USB devices; correspond to a particular class of USB device; and are usually part of the operating system or provided with the USB device.<\/li>\n<li><strong>USB Drivers<\/strong>, which provide services to allow multiple Class Drivers to configure, control, and exchange data with their associated devices; and handle all communication with the\u2026<\/li>\n<li><strong>Host Controller Driver<\/strong>, which interacts with the host controller hardware to execute the USB transfers requested by the USB Drivers, and understands the hardware architecture of the host controller.<\/li>\n<\/ul>\n<p>The <strong>Device Stack<\/strong> includes<b>:<\/b><\/p>\n<ul>\n<li>A <strong>Device Function\/Endpoint<\/strong>, the sink or source of data requested by the host.<\/li>\n<li>A <strong>Function Driver<\/strong><b>, <\/b>which handles some USB requests directly, and provides endpoint read\/write data interfaces and notification services to the Peripheral Function.<\/li>\n<li>A <strong>Device Controller Driver<\/strong>, which understands the hardware architecture of the peripheral controller, and interacts with the peripheral controller hardware to transfer data via the USB, notifying the Function Driver of USB requests.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-protocol-layer-1\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em>Next =&gt;\u00a0 USB 3.0 Protocol Layer &#8211; part 1<\/em><\/a><\/p>\n<h2><b>Further information<\/b><\/h2>\n<p><i>If you are new to designing with USB, or looking for tips on implementing USB 3.0 IP, attend Synopsys&#8217; \u201cUSB 3.0 University.\u201d Topics in this instructional video series range from a basic USB overview, to implementing USB on FPGAs, to top-level synthesis, and more. Click on the links below.<\/i><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-why-usb\" target=\"_blank\" rel=\"noopener noreferrer\">Why USB 3.0?<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-overview\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Overview<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-functional-layer\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Functional Layer<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-protocol-layer-1\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Protocol Layer &#8211; Part 1<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-protocol-layer-2\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Protocol Layer &#8211; Part 2<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-link-layer\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Link Layer<\/a><\/p>\n<p><a href=\"http:\/\/www.synopsys.com\/cgi-bin\/dwusbuvs\/reg1.cgi?file=usb3-physical-layer\" target=\"_blank\" rel=\"noopener noreferrer\">USB 3.0 Physical Layer<\/a><\/p>\n<h2><b>Company info<\/b><\/h2>\n<address><i>Synopsys Corporate Headquarters<\/i><\/address>\n<address><i>700 East Middlefield Road<\/i><\/address>\n<address><i>Mountain View, CA 94043<\/i><\/address>\n<address><i>(650) 584-5000<\/i><\/address>\n<address><i>(800) 541-7737<\/i><\/address>\n<address><i>\u00a0<\/i><i><a href=\"http:\/\/www.synopsys.com\">www.synopsys.com<\/a><\/i><\/address>\n","protected":false},"excerpt":{"rendered":"<p>A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.<\/p>\n","protected":false},"author":329,"featured_media":5791,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1386],"tags":[1429,557,555],"coauthors":[996],"class_list":["post-5707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assembly-integration","tag-functional-layer","tag-superspeed","tag-usb-3-0","workflow-featured","workflow-technique","workflow-up-to-date","organization-synopsys"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The USB 3.0 functional layer<\/title>\n<meta name=\"description\" content=\"A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luke Collins\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/\",\"url\":\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/\",\"name\":\"The USB 3.0 functional layer\",\"isPartOf\":{\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg\",\"datePublished\":\"2013-09-16T09:00:29+00:00\",\"dateModified\":\"2019-03-31T17:30:31+00:00\",\"author\":{\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/#\/schema\/person\/d853b2ee883d42a262bab6fbff15ff64\"},\"description\":\"A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage\",\"url\":\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg\",\"contentUrl\":\"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg\",\"width\":150,\"height\":150},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/#website\",\"url\":\"https:\/\/www.techdesignforums.com\/practice\/\",\"name\":\"Tech Design Forum Techniques\",\"description\":\"Tech Design Forum Techniques Section\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.techdesignforums.com\/practice\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.techdesignforums.com\/practice\/#\/schema\/person\/d853b2ee883d42a262bab6fbff15ff64\",\"name\":\"Luke Collins\",\"description\":\"Luke Collins has spent 22 years covering electronics, EDA and innovation. He is a former Editor-in-Chief of Electronics Times in the UK, and co-founded the international IP9x conference series on semiconductor IP. Luke's work has also appeared in The Economist, The Financial Times and Reseach-Technology Management.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The USB 3.0 functional layer","description":"A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/","twitter_misc":{"Written by":"Luke Collins","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/","url":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/","name":"The USB 3.0 functional layer","isPartOf":{"@id":"https:\/\/www.techdesignforums.com\/practice\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage"},"image":{"@id":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg","datePublished":"2013-09-16T09:00:29+00:00","dateModified":"2019-03-31T17:30:31+00:00","author":{"@id":"https:\/\/www.techdesignforums.com\/practice\/#\/schema\/person\/d853b2ee883d42a262bab6fbff15ff64"},"description":"A look at the USB 3.0 functional layer, an application layer and system software on the host side, and a logical function and device on the device side.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.techdesignforums.com\/practice\/technique\/usb-3-0-functional-layer\/#primaryimage","url":"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg","contentUrl":"https:\/\/www.techdesignforums.com\/practice\/files\/2013\/09\/SuperSpeed_USBLogo-feat.jpg","width":150,"height":150},{"@type":"WebSite","@id":"https:\/\/www.techdesignforums.com\/practice\/#website","url":"https:\/\/www.techdesignforums.com\/practice\/","name":"Tech Design Forum Techniques","description":"Tech Design Forum Techniques Section","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.techdesignforums.com\/practice\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.techdesignforums.com\/practice\/#\/schema\/person\/d853b2ee883d42a262bab6fbff15ff64","name":"Luke Collins","description":"Luke Collins has spent 22 years covering electronics, EDA and innovation. He is a former Editor-in-Chief of Electronics Times in the UK, and co-founded the international IP9x conference series on semiconductor IP. Luke's work has also appeared in The Economist, The Financial Times and Reseach-Technology Management."}]}},"_links":{"self":[{"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/posts\/5707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/users\/329"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/comments?post=5707"}],"version-history":[{"count":0,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/posts\/5707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/media\/5791"}],"wp:attachment":[{"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/media?parent=5707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/categories?post=5707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/tags?post=5707"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.techdesignforums.com\/practice\/wp-json\/wp\/v2\/coauthors?post=5707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}