tag:blogger.com,1999:blog-80256908469684135232024-03-18T21:43:50.926-07:00Diseño de Sistemas Digitales Avanzados con VHDL-FPGAAcá podrás encontrar todo lo que no encuentras en libros, no se aprende en clases, y nadie sabe donde lo puede buscar. El enfoque práctico de situaciones, problemas o solo curiosidades para los que hacemos desarrollos con
VHDL/Verilog-FPGAs/CPLDs.Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.comBlogger70125tag:blogger.com,1999:blog-8025690846968413523.post-3968211049855501952018-10-12T06:48:00.003-07:002018-10-12T06:51:35.578-07:00"[Common 17-69] Command Failed: '-scan_for_includes' and 'copy_to' are mutually exclusive and cannot be paired together."Este es un error generado por vivado cuando uno está tratando de hacer un 'add sources'. La ventana de error que aparece es:
El mensaje no es claro en lo que respecta cual es el problema que origina ese mensaje de error. Por ejemplo en la figura de arriba estaba tratando de agregar (Add) el archivo pwm_ip_top.vhd usando el dialogo que aparece para esa tarea. Tal como se ve en la siguiente Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com1tag:blogger.com,1999:blog-8025690846968413523.post-74892936067980895662018-09-28T15:41:00.001-07:002018-09-28T15:41:17.527-07:00Como agregar el XUPV5 board para Co-Simulación en Hardware con System Generator/SimulinkCo-Simulación en Hardware (Hardware Co_Simulation) es una poderosa herramienta en el ambiente de desarrollo Simulink-System Generator. Permite al diseñador simular en 'paralelo' en real-hardware, lo mismo que se simula en software usando los bloques de SysGen.
Cando uno installa la version full de ISE, al instalar System Generator por defecto se instalan lo que se Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-48730117933692422592018-09-28T15:26:00.000-07:002018-09-28T15:29:39.051-07:00Quartus-ModelSim: Como 'ver' mejor las formas de ondas y facilitar el debug
En un blog anterior (link) describí la personalización de las formas de ondas visualizadas en ModelSim en el entorno ISE de Xilinx. Debido al pedido de muchos de Uds. les presento ahora lo mismo para para los usuarios de Quartus de Altera. Como ya leerán en la nota de aplicación que presento, cuando se invoca cualquier tipo de simulación desde el Quartus, Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-4374933051435235672018-09-26T18:50:00.000-07:002018-09-26T19:21:49.566-07:00Como añadir variables en el Waveform window de ModelSimNecesitas debug el valor de alguna variable? ModelSim te da la opción de poder añadir una o más variables al Waveform window.
Sin embargo es dificil encontrar info de como 'ver' una variable. Dentro de Modelsim hay que hacer una serie de pasos para poder agregar una variable el Waveform window:
Cargá la simulación de tu diseño en ModelSim siguiendo Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-14392189157521562362017-06-06T06:00:00.000-07:002018-09-28T15:45:13.770-07:00Guía de Codificación para Diseños y Proyectos VHDL-FPGA
Basado en mis años de experiencia profesional y educativa les presento un documento de lineamientos generales tanto para la codificación en VHDL como para la partición de un proyecto de un sistema complejo, pasando por clocking, sintesis, nombres, FSM hasta test bench. Es un documento extenso, a pesar de que lo he resumido a los puntos mas importantes, pero siempre útil&Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-64795959812634594222016-06-27T18:13:00.000-07:002018-09-28T15:43:26.714-07:00Frecuencia Máxima de un Sistema Digital Sincrónico (Básico)
Introducción
Comúnmente se expresa que un sistema puede correr satisfactoriamente a 100MHz, o a 133MHz o cualquier otra frecuencia. Qué significa esto? Porqué a esa frecuencia como máxima frecuencia? Quién fija ese límite en un circuito digital? y Cómo se obtiene 6 calcula, ese número? ? Muuuchas preguntas para contestarlas en un simple blog, pero... haré lo que pueda para contestarlas .Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com6tag:blogger.com,1999:blog-8025690846968413523.post-77220174311450343212016-03-07T17:19:00.000-08:002016-03-07T17:19:58.146-08:00Código Assembler del 'C' para el Zynq
Introducción
Para los que hicimos nuestros primeros programas para microprocesador en Assembler (algún tiempo atrás :) ) , aun hoy en día es lindo 'ver' el código assembler generado desde el 'C' que escribimos en nuestra aplicación que sera ejecutada en el Zynq.
Pero, por otro lado, algunas veces es necesario Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-33038538888933086812016-03-02T16:58:00.001-08:002016-03-02T16:58:33.663-08:00Error (en algunas versiones): "undefined reference to Xil_ICacheDisable"
Introducción
Cuando comencé mis primeros pasos con Vivado-SDK me encontré con un problema bastante raro, y aún hoy me preguntan por ese problema, así es que aquí lo publico.
Resulta que tratando de hacer el proyecto mas simple de todos, el famoso Hello World, me encontré con 10 errores en el SDK... ! Como a pesar de seguir todos los pasos de distintos tutoriales puedo generar diez Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-19547789798396328782016-02-17T12:47:00.000-08:002016-02-17T12:47:33.774-08:00Como Filtrar los Warnings/Infos en el ISE .....
Introducción
Después de ejecutar algunos de los procesos disponibles en el entorno ISE, se generan diversos y numerosos mensajes. Estos mensajes permiten que el diseñador sepa de la "salud" del proyecto. En algunos casos, es posible que se desee suprimir un mensaje en particular que aparezca en el "Errors and Warnings Report". Por
ejemplo, luego de ejecutar un proceso del ISE, se puedeCristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com3tag:blogger.com,1999:blog-8025690846968413523.post-15364672308615872862016-01-26T15:27:00.000-08:002018-09-28T15:36:52.424-07:00Uso de ' - ' (don't care) en VHDL
Introducción
El valor ' - ' (normalmente llamado don't care, o no importa) normalmente es usado en funciones booleanas para representar indistintamente un '1' o un '0'. Se usa principalmente para minimizar una función booleana al poder usar el valor lógico ('1' o '0') que resulta en una menor imeplementación de hardware. Sin embargo en VHDL el tipo Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com2tag:blogger.com,1999:blog-8025690846968413523.post-28686651234235952522015-10-28T19:25:00.001-07:002015-10-29T05:12:13.076-07:00INTEL - ALTERA ... preocuparnos? alegrarnos?
Mucho se ha dicho de esta gran operación comercial.
Para los que trabajamos con FPGAs y más aún para los que nos gustan ALTERA FPGAs, no deja de ser una preocupación. Y si a eso le agregamos que mientras estuve en Intel ví como vendían y compraban grupos enteros de diseñadores de IC como si nada, mi preocupación escaló a niveles insospechados :) ...
Encontré un interesante Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-68562248708591885442015-09-06T04:22:00.000-07:002018-09-28T15:49:57.098-07:00ISE-ModelSim: Como 'ver' mejor las formas de ondas y facilitar el debugCuando se invoca cualquier tipo de simulación desde el ISE, ModelSim es automáticamente abierto. Una de las ventanas que se abre es la Wave View. Por defecto solo las señales de la entidad top son mostradas, y ... nada más... Entonces, si se desean ver señales internas, cambiar la posición y/o color de las señales, agregar divisores, y tantas otras características que ofrece ModelSim, se puede Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-79467363742741990012015-04-11T12:03:00.001-07:002018-09-28T16:59:41.312-07:00Tutorial ISE - ISim - IMPACT
Hace tiempo que me vienen pidiendo un tutorial introductorio completo del ISE de Xilinx... la verdad es que habiendo tantos en la red me negaba a invertir tiempo en escribirlo, testearlo, implementarlo, etc.... Sin embargo un día realicé una especie de leída general en la web de los tutoriales disponibles, y me quedé, insatisfecho con lo que encontré... Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com8tag:blogger.com,1999:blog-8025690846968413523.post-63962017602544580422015-03-11T19:53:00.000-07:002015-03-13T15:20:26.507-07:00Error: "cannot match operand(s) in the condition to the corresponding edges. . ." "An edge descriptor must be applied to an expression of size 1"
Introducción
Hace poco una alumna me pidió le revise su código Verilog porque tenía problemas y no encontraba como se originaba el error. Obviamente, la herramienta de síntesis que usaba generaba un mensaje de error, y obviamente ese mensaje daba muy poca idea de cual era el origen del problema. Lo primero que hice, y que a veces me da resultado, es sintetizar el código en la herramienta de laCristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-13855965899620737132015-03-05T16:43:00.000-08:002018-09-28T15:32:04.795-07:00Generador De Secuencia Binaria Pseudo Aleatoria (PRBS/LFSR)<!--[if gte mso 9]>
<![endif]-->
<!--[if gte mso 9]>
Normal
0
false
false
false
EN-US
X-NONE
X-NONE
<![endif]--><!--[if gte mso 9]>
Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com6tag:blogger.com,1999:blog-8025690846968413523.post-24142323020532513882015-02-09T07:35:00.000-08:002015-02-10T06:40:19.244-08:00Partición de Diseño Basada en Dominio de Reloj
Introducción
Cuando el sistema a diseñar tiene varios módulos y a su vez cada uno de estos módulos tiene su propio reloj, y los módulos interactuan entre sí, es conveniente realizar lo que se llama partición del diseño basado en dominio de reloj, y seguir un par de simples reglas con respecto al modo de realizar la partición como así también con respecto al nombre de las señales de E/S, y de Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-53662295494191358962015-01-30T22:39:00.000-08:002015-01-30T22:51:40.155-08:00"Warning: NUMERIC_STD, "=": metavalue detected, returning FALSE" en ISim de Xilinx
Introducción
Cuando puedo evito usar ISim entre otras cosas por su pobre soporte, y también por sus encriptados mensajes de Warnings y Errors. En el último proyecto que trabajé no tenía opción, y cuando iba todo bien obtuve este famoso mensaje de advertencia "Warning: NUMERIC_STD, "=": metavalue detected, returning FALSE". Y digo famoso, porque busque en la web y encontré muchas entradas Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com4tag:blogger.com,1999:blog-8025690846968413523.post-42044581824648347602014-12-23T14:56:00.001-08:002014-12-23T14:56:28.917-08:00FeLiCiDaDeS !Estimados/as...
Por este medio quería dejarles mi mas afectuoso saludos de un HERMOSA NAVIDAD y un MUY PROSPERO AÑO NUEVO. Esperando y deseando que el 2015 sea un GraN AÑO para todos Uds. en todo sentido.
El 2014 los he tenido un poco abandonados, pero fue un año bastante complicado, por suerte recien estoy volviendo de un Curso en Costa Rica (saludos a los valientes participantes) que me ha Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-44165975887426157672014-10-22T05:13:00.002-07:002014-10-27T05:43:48.557-07:00Diseño Jerárquico - Components / Port Map / Generic Map
Introducción
VHDL es extremadamente potente cuando un gran sistema se divide en sub-sistemas individuales, pequeños, y luego se va creando el sistema mediante la conexión de los componentes individuales. algunos les llaman sub-sistema, sub-componentes, otros sub-modulos, etc. también se le llama diseño top-down a este modo de dividir en partes&Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com3tag:blogger.com,1999:blog-8025690846968413523.post-34193020524583671902014-10-14T07:01:00.001-07:002014-10-14T07:01:13.847-07:00Reduciendo el tiempo de compilación en Quartus II
Por defecto Quartus recompila todos los módulos .vhd/.v del proyecto que se está llevando a cabo, aún cuando lo único que se haya modificado haya sido un punto y coma en uno solo de los módulos .vhd o .v.
Existe una opción que permite recompilar solo los módulos modificados, ahorrando así mucho tiempo de compilación.
Los pasos a seguir para configurar Quartus para Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-39491964715897439072014-10-03T13:07:00.001-07:002014-10-03T13:07:56.104-07:00Descanso del Blog y ..... VHDL Guía de Referencia...
Fines del '13 y comienzos del '14 fueron bastantes ocupados para mi ... cursos varios (VHDL Básico/ VHDL Avanzado / NIOS), lugares diversos (Los Reyunos / Parana / Trieste / Buenos Aires) todo esto me mantuvo alejado de este Blog....
PERO, PERO, la frutilla del postre es un pequeño libro de referencia que terminé (finalmente) de escribir- "VHDL Sintax. Guía de Referencia Rápida".
Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com5tag:blogger.com,1999:blog-8025690846968413523.post-90109371807062846132014-04-11T22:06:00.000-07:002018-09-28T15:48:15.995-07:00Correcto uso de Reset en FPGAs y su Codificación en VHDL
Introducción
En esta nota técnica se describirán con
bastante detalle los distintos tipos de reset que se pueden usar en un sistema
digital, sus ventajas y desventajas, y cual de ellos es el más aconsejable a
usar para tener un sistema más confiable.
A pesar de que el reset de un sistema es un
tema crítico, pocas veces se le da la importancia que tiene y es usualmente uno
de los Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com1tag:blogger.com,1999:blog-8025690846968413523.post-31152047070314705002013-08-21T08:39:00.003-07:002013-08-21T11:49:14.760-07:00Como 'ver' los 'delta delay' en ModelSim
Introducción
Para algunas personas el concepto de delta delay en HDLs es uno de los mas difíciles de 'digerir' (entender). No es el objetivo de este articulo escribir acerca del concepto de 'delta delay' y sus derivados .... (hay demasiada literatura al respecto), lo que SI quiero hacerles llegar es que ModelSim tiene herramientas disponibles de modo que de manera Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com0tag:blogger.com,1999:blog-8025690846968413523.post-91735056108751908062013-06-04T06:55:00.001-07:002013-06-04T06:55:09.188-07:00Conversión ASCII a Hex
Introducción
Presentaré en esta entrada un modo fácil de convertir un texto en ASCII a Hex para ya sea para grabar el dato en memoria, transmitirlo a través de algún protocolo de comunicación, mostrarlo un dato en un LCD, etc.
Procedimiento
VHDL tiene definidas diversas funciones de conversiones de tipo en sus librerías estándar. UsaréCristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com1tag:blogger.com,1999:blog-8025690846968413523.post-25334872702418578942013-05-14T19:03:00.000-07:002013-05-31T11:59:43.360-07:00ModelSim-Quartus: "Failed to find INSTANCE '/NA'"
Introducción
Como bien es sabido los mensajes de error dados por la herramientas que comúnmente usamos son bastantes encriptados, y por ende no fácil de darnos cuenta cual es el origen del mismo. Uno de estos casos es este mensaje generado por ModelSim cuando tratamos de ejecutar una 'gate level simulation", ya sea automáticamente desde Quartus o desde el mismo ModelSim:
Veremos Cristianhttp://www.blogger.com/profile/09642185580467113281noreply@blogger.com1