{"id":1273,"date":"2021-11-03T11:46:51","date_gmt":"2021-11-03T11:46:51","guid":{"rendered":"https:\/\/dsd.webs.upv.es\/?p=1273"},"modified":"2021-11-05T12:20:48","modified_gmt":"2021-11-05T12:20:48","slug":"realizacion-de-soluciones-segmentadas","status":"publish","type":"post","link":"https:\/\/dsd.webs.upv.es\/?p=1273","title":{"rendered":"Realizaci\u00f3n de soluciones segmentadas I"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"paso-1-realizacion-asm-con-un-solo-fichero\">Paso 1: Realizaci\u00f3n ASM con un solo fichero<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta entrada vamos a explicar c\u00f3mo podemos describir directamente un ASM con un solo fichero. Este ser\u00e1 nuestro primer paso para la consecuci\u00f3n de una soluci\u00f3n segmentada; pero nos va a servir para que pod\u00e1is observar que el particionado Control-Path y Data-path puede ser acometido de forma diferente a como lo vamos haciendo en nuestras tareas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta alternativa de dise\u00f1o que ahora vamos a seguir, se procede a un nivel de abstracci\u00f3n superior. Eso quiere decir que no vamos a instanciar los subsistemas del data path para luego interconectarlos y controlarlos mediante se\u00f1ales de control dise\u00f1adas en nuestra FSM (control-path) ; sino que todos estos elementos van a ser inferidos a partir de un c\u00f3digo systemverilog \u00fanico bastante sencillo y sobre todo siendo reflejo directo de lo descrito en el ASM .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ventajas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>M\u00e1s r\u00e1pido de describir<\/li><li>Mucho m\u00e1s f\u00e1cil de describir por ser pr\u00e1cticamente el c\u00f3digo ASM especificado<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Desventajas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>En dise\u00f1os complejos donde los elementos del data-path pueden tener una cierta envergadura, inferirlos a trav\u00e9s de c\u00f3digo es mucho menos eficiente en \u00e1rea y velocidad que instanciando subsistemas \u00f3ptimos realizados en vuestro centro de dise\u00f1o.<\/li><li>Es dif\u00edcil de particionar puesto que pr\u00e1cticamente todo es descrito en un solo fichero. El re\u00faso es muy minimizado<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a utilizar el ejemplo del radicador<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"699\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/image.png\" alt=\"\" class=\"wp-image-1274\" srcset=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/image.png 799w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/image-300x262.png 300w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/image-768x672.png 768w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/figure>\n\n\n<style>\n       .errordiv { padding:10px; margin:10px; border: 1px solid #555555;color: #000000;background-color: #f8f8f8; width:500px; }#advanced_iframe {visibility:visible;opacity:1;vertical-align:top;}.ai-info-bottom-iframe { position: fixed; z-index: 10000; bottom:0; left: 0; margin: 0px; text-align: center; width: 100%; background-color: #ff9999; padding-left: 5px;padding-bottom: 5px; border-top: 1px solid #aaa } a.ai-bold {font-weight: bold;}#ai-layer-div-advanced_iframe p {height:100%;margin:0;padding:0}<\/style><script type=\"text\/javascript\">var ai_iframe_width_advanced_iframe = 0;var ai_iframe_height_advanced_iframe = 0;function aiReceiveMessageadvanced_iframe(event) {  aiProcessMessage(event,\"advanced_iframe\", \"true\",\"\",\"false\",\"false\");}if (window.addEventListener) {  window.addEventListener(\"message\", aiReceiveMessageadvanced_iframe);} else if (el.attachEvent)  {  el.attachEvent(\"message\", aiReceiveMessageadvanced_iframe);}var aiOnloadScrollTop=\"true\";var aiShowDebug=false;\n\t\tif (typeof aiReadyCallbacks === 'undefined') {\n\t\t\tvar aiReadyCallbacks = [];\n\t\t} else if (!(aiReadyCallbacks instanceof Array)) {\n\t\t\tvar aiReadyCallbacks = [];\n\t\t}    function aiShowIframeId(id_iframe) { jQuery(\"#\"+id_iframe).css(\"visibility\", \"visible\");    }    function aiResizeIframeHeight(height) { aiResizeIframeHeight(height,advanced_iframe); }    function aiResizeIframeHeightId(height,width,id) {aiResizeIframeHeightById(id,height);}<\/script><iframe id=\"advanced_iframe\"  name=\"advanced_iframe\"  src=\"https:\/\/media.upv.es\/player\/embed.html?id=37ed8ba0-3c8e-11ec-8a9e-a18d1c24491a\"  width=\"100%\"  height=\"600\"  frameborder=\"0\"  border=\"0\"  allowtransparency=\"true\"  loading=\"lazy\"  style=\";border-width: 0px;;border: none;;width:100%;;height:600px;\" ><\/iframe><script type=\"text\/javascript\">var ifrm_advanced_iframe = document.getElementById(\"advanced_iframe\");var hiddenTabsDoneadvanced_iframe = false;\nfunction resizeCallbackadvanced_iframe() {}<\/script><script type=\"text\/javascript\"><\/script><p style=\"display:block !important; visibility:visible !important;margin: -18px 14px 0 0;padding-left: 3px;padding-top:3px;background: white; overflow: hidden; position: relative; line-height:15px;width: fit-content;\"><small style=\"display:block !important;visibility:visible !important\">powered by Advanced iFrame<\/small><\/p>\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo obtenido es:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:verilog decode:true \">module sed(\n\tCLK,\n\tSTART,\n\tRESET,\n\tX,\n\tFIN,\n\tCOUNT\n);\n\n\ninput wire\tCLK;\ninput wire\tSTART;\ninput wire\tRESET;\ninput wire\t[7:0] X;\noutput logic\tFIN;\noutput wire\t[3:0] COUNT;\n\n\nenum logic [2:0] {idle,init,regist,comp,inc,finali} state;\n\nlogic [3:0] Cont;\nlogic [8:0] Reg;\n\n\n\nassign COUNT=Cont;\nalways_ff @(posedge CLK, negedge RESET)\nif (!RESET)\n    begin\n        Reg&lt;='0;\n        Cont&lt;='0;\n        state&lt;=idle;\n    end\nelse\ncase (state)\n    idle: if (START)\n                state&lt;=init;\n          else\n               state&lt;=idle;\n\t init: \n\t     begin\n\t\t\tCont&lt;='0;\n\t\t\tstate&lt;=regist;\n\t\t  end\n\t regist:\n\t     begin\n\t\t\tstate&lt;=comp;\n\t\t\tReg&lt;=(Cont+1)**2;\n\t\t  end\t\t\t\n    comp:\n            if (Reg&gt;X)\n                state&lt;=finali;\n            else\n                state&lt;=inc;\n    inc:\n        begin\n            Cont&lt;=Cont+1;\n\t\t\t\tstate&lt;=regist;\n        end\n\n    finali:\n        if (!START)\n            state&lt;=idle;  \n        else\n            state&lt;=finali;     \nendcase\n\nalways_comb\ncase (state)\n    finali: FIN=1'b1;\n    default: FIN=1'b0;\nendcase\nendmodule<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Paso 1: Realizaci\u00f3n ASM con un solo fichero En esta entrada vamos a explicar c\u00f3mo podemos describir directamente un ASM con un solo fichero. Este ser\u00e1 nuestro primer paso para la consecuci\u00f3n de una soluci\u00f3n segmentada; pero nos va a servir para que pod\u00e1is observar que el particionado Control-Path y Data-path puede ser acometido de forma diferente a como lo vamos haciendo en nuestras tareas. En esta alternativa de dise\u00f1o que ahora vamos a seguir, se procede a un nivel de abstracci\u00f3n superior. Eso quiere decir que no vamos a instanciar los subsistemas del data path para luego interconectarlos y controlarlos mediante se\u00f1ales de control dise\u00f1adas en nuestra FSM (control-path) ; sino que todos estos elementos van a ser inferidos a partir de un c\u00f3digo systemverilog \u00fanico bastante sencillo y sobre todo siendo reflejo directo de lo descrito en el ASM . Ventajas: M\u00e1s r\u00e1pido de describir Mucho m\u00e1s f\u00e1cil de describir por ser pr\u00e1cticamente el c\u00f3digo ASM especificado Desventajas: En dise\u00f1os complejos donde los elementos del data-path pueden tener una cierta envergadura, inferirlos a trav\u00e9s de c\u00f3digo es mucho menos eficiente en \u00e1rea y velocidad que instanciando subsistemas \u00f3ptimos realizados en vuestro centro de dise\u00f1o. Es dif\u00edcil de particionar puesto que pr\u00e1cticamente todo es descrito en un solo fichero. El re\u00faso es muy minimizado Vamos a utilizar el ejemplo del radicador El c\u00f3digo obtenido es:<\/p>\n","protected":false},"author":2,"featured_media":1274,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","ub_ctt_via":"","footnotes":""},"categories":[57,27],"tags":[25,26,58],"class_list":["post-1273","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asm","category-diseno","tag-asm","tag-diseno","tag-systemverilog"],"featured_image_src":"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/image.png","author_info":{"display_name":"ralfgad","author_link":"https:\/\/dsd.webs.upv.es\/?author=2"},"_links":{"self":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts\/1273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1273"}],"version-history":[{"count":3,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts\/1273\/revisions"}],"predecessor-version":[{"id":1289,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts\/1273\/revisions\/1289"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/media\/1274"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}