Práctica #13.
Nombre de la práctica : Desarrollo de Componentes usando Verilog.
Nombre: David Santiago Martínez Molina
Código: 20181005164
Asignatura: Fundamentos de circuitos digitales
Programa : Ingeniería Electrónica
Docente : César Andrey Perdomo Charry
INTRODUCCIÓN:
En este informe se mostrará el desarrollo de la práctica #13. Para este laboratorio, se pretende conocer como se implementan componentes usando Verilog en Psoc 5LP. En este caso se quiere implementar un decodificador de binario a 7 segmentos y comparar los recursos utilizados con el mismo decodificador, pero implementado con compuertas.
Verilog es un lenguaje de descripción de hardware (HDL, del Inglés Hardware Description Language) usado para modelar sistemas electrónicos. El lenguaje, algunas veces llamado Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción.
MATERIALES Y EQUIPOS:
-Psoc 5LP
-Computador con Psoc Creator.
-Tarjeta desarrolladora.
-Cables con conectores.
-DIP Switch
-Display 7 segmentos.
METODOLOGÍA:
Después de tener una breve introducción sobre Verilog, como se usa, de que maneras se puede implementar y ver algunos ejemplos, ahora se tiene que aplicar a la construcción del componente Decodificador binario a 7 segmentos. Entonces se empieza creando el componente mediante su Layout, y queda de la siguiente manera:
Cómo se puede observar se tiene un bus de entrada con 4 bits denominado Num, y un bus de salida con 7 bits que se denomina Segm. Lo siguiente a realizar es la creación del circuito mediante Verilog, primeramente lo realizaré mediante su comportamiento, teniendo en cuenta el funcionamiento de este decodificador y que se debe tener a las salidas dependiendo la combinación que se tenga en la entrada, entonces el código realizado es el siguiente:
Entonces se puede observar que en el código primero se describen las variables de entrada y salida de nuestro circuito, teniendo en cuenta su bus de datos. Luego se observa un parámetro que se añadió para que se utilizaran los UDB. Después se observa que se encuentra un reg, que me representa variables con capacidad de almacenar información, en este caso de 7 bits y denominada segm. Y finalmente se encuentra el código del comportamiento del circuito, se empieza con la sentencia always que significa que cada vez que el valor de "Segm" o "Num" cambia, el proceso se evalúa. Entonces se evalúa el caso de Num, que corresponde a las variables de entrada, y se describen los casos que pueden suceder, y lo que se quiere que se obtenga a la salida. El formato para describir dicho comportamiento se empieza definiendo el número de bits que se tienen, seguido de la letra b, que significa que los datos son en binario, y finalmente la combinación posible, por ejemplo en el primer caso que se tiene 4'b0000.
Entonces el componente implementado con sus entradas y salidas queda de la siguiente manera:
Otra manera de implementar el Decodificador de binario a 7 segmentos es mediante la función de cada salida, describiéndola mediante los caracteres que permite Verilog, que son los siguientes:
Entonces en el TopDesign se tiene:
ANÁLISIS DE RESULTADOS:
Ahora para mirar el consumo de los componentes creados y compararlos con el decodificador realizado mediante compuertas (Ver práctica #5), tenemos que dirigirnos a results y abrir el archivo .rpt, con el nombre del proyecto. Entonces para la primera implementación en Verilog, que corresponde a la realizada mediante su comportamiento se tiene que los recursos de memoria utilizados son:
Y para la segunda implementación que corresponde a las funciones de cada salida, se tiene que los recursos de memoria que se utilizaron son:
Ahora para realizar la comparación con el consumo de memoria del decodificador de binario a 7 segmentos, realizado por compuertas se tiene que el consumo es:
LINK DE LOS ARCHIVOS:
CONCLUSIONES:
-Como se observo en el análisis de resultados, para este componente se tiene que el consumo de memoria es el mismo si se realiza por Verilog o por compuertas. Pero esto no significa que con todos los componentes sea igual. Entonces es muy importante conocer más sobre esta opción para implementar circuitos y poder analizar en que momento es necesario hacerlo, para tener un menor consumo de memoria y que nuestro diseño este de una mejor manera.