{"id":164,"date":"2019-09-03T09:05:48","date_gmt":"2019-09-03T09:05:48","guid":{"rendered":"http:\/\/dsd.webs.upv.es\/?page_id=164"},"modified":"2025-08-06T16:54:54","modified_gmt":"2025-08-06T16:54:54","slug":"colas","status":"publish","type":"page","link":"https:\/\/dsd.webs.upv.es\/?page_id=164","title":{"rendered":"Colas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Las colas son similares a los arrays din\u00e1micos. B\u00e1sicamente son arrays con un principio y un final, y que tienen funciones para poder \u201ccrecer\u201d o \u201cdecrecer\u201d tanto por el principio como por el final. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de la declaraci\u00f3n de cola es igual a la de un array pero se indica el tama\u00f1o con el signo d\u00f3lar ($),que indica el \u00faltimo elemento<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Opcionalmente se puede poner un m\u00e1ximo para ese tama\u00f1o, en la forma <strong>[$:max_tama\u00f1o] <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplos de declaraciones<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\nint cola_a&#x5B;$];\nstring nombres&#x5B;$] = {&quot;Manolo&quot;};\nreg &#x5B;7:0] fifo_bytes&#x5B;$] = { 2, 3, 7 };\nint cola_b&#x5B;$:255]; \/\/ M\u00e1ximo tama\u00f1o 256\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Ejemplos de operaciones<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: systemverilog; title: ; notranslate\" title=\"\">\ncola_a = { cola_a, 6 }; \/\/ a\u00f1adido el 6 al final\ncola_b = {5, cola_b}; \/\/ a\u00f1adido el 5 al principio\nfifo_bytes = fifo_bytes&#x5B;1:$]; \/\/ eliminado primer elemento\nfifo_bytes = fifo_bytes&#x5B;0:$-1]; \/\/ borrado \u00faltimo elemento\nfifo_bytes= {}; \/\/borrado de todos los elementos\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">M\u00e9todos predefinidos<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>   Funci\u00f3n<\/strong>   <\/td><td><strong>  Par\u00e1metros<\/strong>   <\/td><td><strong>   Resultado  <\/strong> <\/td><\/tr><tr><td>\n  size()\n  <\/td><td>\n  &#8211;\n  <\/td><td>\n  Devuelve\n  tama\u00f1o \n  <\/td><\/tr><tr><td>\n  insert()\n  <\/td><td>\n  \u00edndice\n  y elemento\n  <\/td><td>\n  Inserta\n  elemento en la posici\u00f3n indicada\n  <\/td><\/tr><tr><td>\n  delete()\n  <\/td><td>\n  \u00edndice\n  <\/td><td>   Borra   elemento de la posici\u00f3n indicada . Si no se indica \u00edndice, borra toda la cola  <\/td><\/tr><tr><td>\n  pop_front()\n  <\/td><td>\n  &#8211;\n  <\/td><td>   Devuelve   y elimina el primer elemento: <br>  e =   Q.pop_front()  \/\/ equivalente a <br>  e =   Q[0]; Q = Q[1,$];   <\/td><\/tr><tr><td>\n  pop_back()\n  <\/td><td>\n  &#8211;\n  <\/td><td>   Devuelve   y elimina \u00faltimo elemento:  <br> e =   Q.pop_back() \/\/equivalente a<br> e =   Q[$]; Q = Q[0,$-1];   <\/td><\/tr><tr><td>\n  push_front()\n  <\/td><td>\n  elemento\n  \n  <\/td><td>   Inserta   elemento al principio   Q.push_front(e)\/\/ equivalente a <br>Q =   {e,Q};   <\/td><\/tr><tr><td>\n  push_back()\n  <\/td><td>\n  elemento\n  \n  <\/td><td>   Inserta   elemento al final   Q.push_back(e) \/\/equivalente a<br>Q =   {Q,e};   <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"335\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1-1024x335.png\" alt=\"\" class=\"wp-image-1427\" srcset=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1-1024x335.png 1024w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1-300x98.png 300w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1-768x251.png 768w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1-1140x373.png 1140w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2022\/09\/image-1.png 1161w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Aplicaciones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con las colas se soluciona la creaci\u00f3n de FIFOs y LIFOs para simulaci\u00f3n. No es necesario crear punteros, detecci\u00f3n de cuando se llena o vac\u00eda la cola, etc. Todo lo integra ya el lenguaje.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tama\u00f1o m\u00e1ximo de cola puede ser muy interesante para simulaci\u00f3n. De otra manera si la simulaci\u00f3n se desmanda puede ocurrir que la cola termine ocupando toda la memoria de la m\u00e1quina de simulaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo en la siguiente figura utilizamos una FIFO para, suponiendo que queremos comparar el resultado de un dise\u00f1o con un modelo ideal (EMULADOR), podamos olvidarnos de la latencia existente en el dise\u00f1o bajo test.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"461\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2019\/09\/image.png\" alt=\"\" class=\"wp-image-168\" srcset=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2019\/09\/image.png 703w, https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2019\/09\/image-300x197.png 300w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Simulaci\u00f3n de una cola<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Si deseamos ver una simulaci\u00f3n del funcionamiento de las colas podemos fijarnos el siguiente v\u00eddeo que simula el c\u00f3digo que se adjunta a continuaci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Uso de colas de systemverilog |  | UPV\" width=\"960\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/0J4NIogowUU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Laboratorio virtual<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">En este <a href=\"https:\/\/edaplayground.com\/x\/dG6a\" data-type=\"link\" data-id=\"https:\/\/edaplayground.com\/x\/dG6a\" target=\"_blank\" rel=\"noreferrer noopener\">laboratorio <\/a>vamos a modelizar una FIFO ideal mediante colas y a simular sus diferentes casos<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/edaplayground.com\/x\/dG6a\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"295\" height=\"71\" src=\"https:\/\/dsd.webs.upv.es\/wp-content\/uploads\/2023\/09\/image-3.png\" alt=\"\" class=\"wp-image-1504\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las colas son similares a los arrays din\u00e1micos. B\u00e1sicamente son arrays con un principio y un final, y que tienen funciones para poder \u201ccrecer\u201d o \u201cdecrecer\u201d tanto por el principio como por el final. La sintaxis de la declaraci\u00f3n de cola es igual a la de un array pero se indica el tama\u00f1o con el signo d\u00f3lar ($),que indica el \u00faltimo elemento Opcionalmente se puede poner un m\u00e1ximo para ese tama\u00f1o, en la forma [$:max_tama\u00f1o] Ejemplos de declaraciones Ejemplos de operaciones M\u00e9todos predefinidos Funci\u00f3n Par\u00e1metros Resultado size() &#8211; Devuelve tama\u00f1o insert() \u00edndice y elemento Inserta elemento en la posici\u00f3n indicada delete() \u00edndice Borra elemento de la posici\u00f3n indicada . Si no se indica \u00edndice, borra toda la cola pop_front() &#8211; Devuelve y elimina el primer elemento: e = Q.pop_front() \/\/ equivalente a e = Q[0]; Q = Q[1,$]; pop_back() &#8211; Devuelve y elimina \u00faltimo elemento: e = Q.pop_back() \/\/equivalente a e = Q[$]; Q = Q[0,$-1]; push_front() elemento Inserta elemento al principio Q.push_front(e)\/\/ equivalente a Q = {e,Q}; push_back() elemento Inserta elemento al final Q.push_back(e) \/\/equivalente aQ = {Q,e}; Aplicaciones Con las colas se soluciona la creaci\u00f3n de FIFOs y LIFOs para simulaci\u00f3n. No es necesario crear punteros, detecci\u00f3n de cuando se llena o vac\u00eda la cola, etc. Todo lo integra ya el lenguaje. El tama\u00f1o m\u00e1ximo de cola puede ser muy interesante para simulaci\u00f3n. De otra manera si la simulaci\u00f3n se desmanda puede ocurrir que la cola termine ocupando toda la memoria de la m\u00e1quina de simulaci\u00f3n. Por ejemplo en la siguiente figura utilizamos una FIFO para, suponiendo que queremos comparar el resultado de un dise\u00f1o con un modelo ideal (EMULADOR), podamos olvidarnos de la latencia existente en el dise\u00f1o bajo test. Simulaci\u00f3n de una cola Si deseamos ver una simulaci\u00f3n del funcionamiento de las colas podemos fijarnos el siguiente v\u00eddeo que simula el c\u00f3digo que se adjunta a continuaci\u00f3n. Laboratorio virtual En este laboratorio vamos a modelizar una FIFO ideal mediante colas y a simular sus diferentes casos<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":59,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","ub_ctt_via":"","footnotes":""},"class_list":["post-164","page","type-page","status-publish","hentry"],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=164"}],"version-history":[{"count":11,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/164\/revisions"}],"predecessor-version":[{"id":1862,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/164\/revisions\/1862"}],"up":[{"embeddable":true,"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=\/wp\/v2\/pages\/59"}],"wp:attachment":[{"href":"https:\/\/dsd.webs.upv.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}