{"id":1287,"date":"2021-11-05T12:19:55","date_gmt":"2021-11-05T12:19:55","guid":{"rendered":"https:\/\/dsd.webs.upv.es\/?p=1287"},"modified":"2022-10-26T08:06:50","modified_gmt":"2022-10-26T08:06:50","slug":"realizacion-de-soluciones-segmentadas-iii","status":"publish","type":"post","link":"https:\/\/dsd.webs.upv.es\/?p=1287","title":{"rendered":"Realizaci\u00f3n de soluciones segmentadas III"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"paso-3-realizacion-de-la-segmentacion\">Paso 3: Realizaci\u00f3n de la segmentaci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Partimos por tanto de la siguiente descripci\u00f3n. Nuestra intenci\u00f3n es ahora hacer la segmentaci\u00f3n de esta descripci\u00f3n algor\u00edtmica escrita en SystemVerilog.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:verilog decode:true \">module sed2(\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 logic\t[3:0] COUNT;\n\nenum logic [2:0] {idle,comp,inc,No_inc,finali} state;\nlogic [3:0] Cont;\n\n\nlogic start;\nlogic [3:0] Sal;\nlogic [8:0] Reg;\nlogic [8:0] X_reg;\n\nassign start=START;\n\nalways_ff @(posedge CLK, negedge RESET)\nif (!RESET)\n    begin\n        Reg&lt;='0;\n        Cont&lt;='0;\n        Sal&lt;='0;\n        X_reg&lt;='0;\n        state&lt;=idle;\n    end\nelse\ncase (state)\n    idle: if (start)\n            begin\n                Sal&lt;='0;\n                Reg&lt;=8'b1;\n                X_reg&lt;=X;\n                Cont&lt;='0;\n                state&lt;=comp;\n            end\n          else\n            state&lt;=idle;\n\n    comp:\n        begin\n            Cont&lt;=Cont+1;\n            if (Reg&gt;X)\n                state&lt;=No_inc;\n            else\n                state&lt;=inc;\n        end\n    inc:\n        begin\n            Sal&lt;=Sal+1;\n            if (Cont==15)\n                state&lt;=finali;\n            else\n                begin\n                    Reg&lt;=(Sal+2)**2;\n                    state&lt;=comp;\n                end\n        end\n    No_inc:\n        begin\n            Sal&lt;=Sal;\n            if (Cont==15)\n                state&lt;=finali;\n            else\n                state&lt;=comp;\n        end\n    finali:\n        if (!start)\n            state&lt;=idle;  \n        else\n            state&lt;=finali;     \nendcase\nassign COUNT=Sal;\nalways_comb\ncase (state)\n    finali: FIN=1'b1;\n    default: FIN=1'b0;\nendcase\nendmodule<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">El procedimineto de segmentaci\u00f3n lo podemos observar en el siguiente v\u00eddeo<\/p>\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=02c8ae50-3e1e-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\">Mostramos ahora el resultado de nuestra segmentaci\u00f3n:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:verilog decode:true \">module sed2_seg(\n\tCLK,\n\tSTART,\n\tRESET,\n\tX,\n\tFIN,\n\tCOUNT\n);\n\nparameter tamano=4;\nlocalparam etapas= 2**tamano;\ninput wire\tCLK;\ninput wire\tSTART;\ninput wire\tRESET;\ninput wire\t[7:0] X;\noutput logic\tFIN;\noutput logic\t[3:0] COUNT;\n\n\nlogic [etapas -1:0] start ;\nlogic [etapas -1:0][3:0] Sal ;\nlogic [etapas -1:0][8:0] Reg ;\nlogic [etapas -1:0][8:0] X_reg ;\n\n\nalways_ff @(posedge CLK, negedge RESET)\nif (!RESET)\n    begin\n        Reg&lt;='0;\n        Sal&lt;='0;\n        X_reg&lt;='0;\n        start&lt;='0;\n    end\nelse\n    begin\n    start[etapas-1] &lt;=START;   \n    if (START)\n            begin\n                Sal[etapas-1]&lt;='0;\n                Reg[etapas-1]&lt;=8'b1; \n                X_reg[etapas-1] &lt;=X;    \n                start[etapas-1] &lt;=START;          \n            end\n\n    for (int i=(etapas-2);i&gt;-1;i=i-1)\n        begin\n            start[i]&lt;=start[i+1];\n            if(start[i+1])\n            begin\n                X_reg[i] &lt;=X_reg[i+1];\n                Reg[i] &lt;=(Sal[i+1]+2)**2;                \n                if (Reg[i+1]&lt;=X_reg[i+1])\n                        Sal[i] &lt;=Sal[i+1]+1;\n                else\n                        Sal[i] &lt;=Sal[i+1];\n            end\n        end      \n    end\nassign    FIN=start[0];\nassign    COUNT=Sal[0]; \nendmodule<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos ahora las prestaciones en \u00e1rea y velocidad conseguidas por esta segmentaci\u00f3n realizada. De paso observaremos que nuestros bancos de verificaci\u00f3n, si son lo suficientemente robustos, pueden adaptarse al dise\u00f1o multiciclo original o a la soluci\u00f3n pipeline final.<\/p>\n\n\n<style>\n       .errordiv { padding:10px; margin:10px; border: 1px solid #555555;color: #000000;background-color: #f8f8f8; width:500px; }#advanced_iframe_2 {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_2 p {height:100%;margin:0;padding:0}<\/style><script type=\"text\/javascript\">var ai_iframe_width_advanced_iframe_2 = 0;var ai_iframe_height_advanced_iframe_2 = 0;function aiReceiveMessageadvanced_iframe_2(event) {  aiProcessMessage(event,\"advanced_iframe_2\", \"true\",\"\",\"false\",\"false\");}if (window.addEventListener) {  window.addEventListener(\"message\", aiReceiveMessageadvanced_iframe_2);} else if (el.attachEvent)  {  el.attachEvent(\"message\", aiReceiveMessageadvanced_iframe_2);}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_2); }    function aiResizeIframeHeightId(height,width,id) {aiResizeIframeHeightById(id,height);}<\/script><iframe id=\"advanced_iframe_2\"  name=\"advanced_iframe_2\"  src=\"https:\/\/media.upv.es\/player\/embed.html?id=f6c9f430-3e57-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_2 = document.getElementById(\"advanced_iframe_2\");var hiddenTabsDoneadvanced_iframe_2 = false;\nfunction resizeCallbackadvanced_iframe_2() {}<\/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\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Paso 3: Realizaci\u00f3n de la segmentaci\u00f3n Partimos por tanto de la siguiente descripci\u00f3n. Nuestra intenci\u00f3n es ahora hacer la segmentaci\u00f3n de esta descripci\u00f3n algor\u00edtmica escrita en SystemVerilog. El procedimineto de segmentaci\u00f3n lo podemos observar en el siguiente v\u00eddeo Mostramos ahora el resultado de nuestra segmentaci\u00f3n: Veamos ahora las prestaciones en \u00e1rea y velocidad conseguidas por esta segmentaci\u00f3n realizada. De paso observaremos que nuestros bancos de verificaci\u00f3n, si son lo suficientemente robustos, pueden adaptarse al dise\u00f1o multiciclo original o a la soluci\u00f3n pipeline final.<\/p>\n","protected":false},"author":2,"featured_media":1282,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[57,27],"tags":[61,60,58],"class_list":["post-1287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asm","category-diseno","tag-cadencia","tag-segmentacion","tag-systemverilog"],"featured_image_src":"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2021\/11\/segmentacion.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\/1287","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=1287"}],"version-history":[{"count":4,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts\/1287\/revisions"}],"predecessor-version":[{"id":1447,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/posts\/1287\/revisions\/1447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/media\/1282"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}