{"id":3612,"date":"2025-04-21T05:06:33","date_gmt":"2025-04-21T05:06:33","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=3612"},"modified":"2025-06-10T12:07:23","modified_gmt":"2025-06-10T12:07:23","slug":"spx-register-model","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/","title":{"rendered":"SPx register model"},"content":{"rendered":"\n<p>The SPx register model holds the key to programming SPx peripherals. It is consistently used across\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/the-splat-expansion-framework\/onboard-spx-peripherals\/\">external SPx Peripherals<\/a>,\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/the-splat-expansion-framework\/onboard-spx-peripherals\/\">Onboard SPx Peripherals<\/a>,\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/the-splat-expansion-framework\/uv-spice\/\">UV SPice<\/a>\u00a0and\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/the-splat-expansion-framework\/virtual-spx-peripherals\/\">Virtual SPx Peripherals<\/a>. It is also used for\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/the-splat-expansion-framework\/spicex\/\">SPiceX<\/a>\u00a0add-ons, but in a slightly different way (See\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spicex-instructions\/\">SPiceX communications instruction<\/a>). The register model is illustrated in the accompanying diagram.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"502\" height=\"186\" src=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif\" alt=\"\" class=\"wp-image-3613\"\/><\/figure>\n\n\n\n<p>The key element in the SPx register model is two registers called U and V. U is a 20-byte register (251 bytes in 32-bit controllers with firmware built after 10 January 2020) that is used to pass data between the SPLat processor and the peripheral. V is a 1-byte register that is used mainly as a byte counter (indicating how many bytes are to be moved). We frequently refer to the pair as &#8220;the UV registers&#8221; or simply &#8220;UV&#8221;.<\/p>\n\n\n\n<p>Several important concepts underpin the UV-based SPx model:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>All traffic between the traditional SPLat registers (far left on the diagram) and the peripherals is funneled through UV.<\/li>\n\n\n\n<li>There are two distinct groups of SPLat instructions associated with UV. One for transferring data between the SPLat registers and UV (UV transfer instructions), and one for communicating between UV and the peripherals (SPx communications instructions). The communications instructions result in messages being sent to the peripheral and resulting responses from the peripheral.<\/li>\n\n\n\n<li>There is a fixed number of instructions in each group. They do not vary in number, form or content. The ultimate outcomes of those instructions depends entirely on the peripheral. Hence, instruction &#8220;Foo&#8221; addressed to peripheral A means something quite different from instruction &#8220;Foo&#8221; addressed to peripheral B.<\/li>\n\n\n\n<li>Traffic (messages) from UV out to a peripheral contain data and implied commands that will trigger actions in the peripheral. The SPLat processor does not know what those actions are. However, for a given outgoing message type, every peripheral must respond with a return message of an&nbsp;<em>exactly prescribed form<\/em>. That means that when the SPLat sends out a message, it knows in advance exactly what the format of the response will be, exactly how much data it will contain and exactly what to do with the data. And what it does is always to place it in UV in a prescribed manner.<\/li>\n<\/ol>\n\n\n\n<p>Unlike the other registers which are copied for each task, there is just one set of UV registers provided in SPLat\/OS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The SPx register model holds the key to programming SPx peripherals. It is consistently used across\u00a0external SPx Peripherals,\u00a0Onboard SPx Peripherals,\u00a0UV SPice\u00a0and\u00a0Virtual SPx Peripherals. It is&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3610,"menu_order":2,"template":"","class_list":["post-3612","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SPx register model - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SPx register model - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"The SPx register model holds the key to programming SPx peripherals. It is consistently used across\u00a0external SPx Peripherals,\u00a0Onboard SPx Peripherals,\u00a0UV SPice\u00a0and\u00a0Virtual SPx Peripherals. It is...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T12:07:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"502\" \/>\n\t<meta property=\"og:image:height\" content=\"186\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/\",\"name\":\"SPx register model - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif\",\"datePublished\":\"2025-04-21T05:06:33+00:00\",\"dateModified\":\"2025-06-10T12:07:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif\",\"width\":502,\"height\":186},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials, application notes and white papers\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The SPLat Expansion Framework\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SPx register model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SPx register model - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"SPx register model - SPLat Controls","og_description":"The SPx register model holds the key to programming SPx peripherals. It is consistently used across\u00a0external SPx Peripherals,\u00a0Onboard SPx Peripherals,\u00a0UV SPice\u00a0and\u00a0Virtual SPx Peripherals. It is...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/","og_site_name":"SPLat Controls","article_modified_time":"2025-06-10T12:07:23+00:00","og_image":[{"width":502,"height":186,"url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif","type":"image\/gif"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/","name":"SPx register model - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage"},"thumbnailUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif","datePublished":"2025-04-21T05:06:33+00:00","dateModified":"2025-06-10T12:07:23+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#primaryimage","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/SPx-register-model-.gif","width":502,"height":186},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/spx-register-model\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Tutorials, application notes and white papers","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/"},{"@type":"ListItem","position":3,"name":"The SPLat Expansion Framework","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/the-splat-expansion-framework\/"},{"@type":"ListItem","position":4,"name":"SPx register model"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3610"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=3612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}