Sei sulla pagina 1di 9

ELO212: Laboratorio de Sistemas

Digitales

Pre Informe Sesión 5

Integrantes: Andrés Segura


Felipe Salgado
Joaquin Videla
Profesor: Gonzalo Carvajal
Grupo: 0101 (5)
Fecha: 23 abril 2019
(A) Cuando se crea un nuevo proyecto en Vivado, se ofrece la opción de crear
un diseño basado en RTL. ¿Qué significa RTL en el contexto de diseño de
sistemas digitales?
RTL es un acrónimo para Register Transfer Level, que nuestra descripción de
hardware este diseñada en base a este implica que nuestro código VHDL
describe como es transformada la data al pasar de un registro a otros.

B) Analice cuidadosamente el siguiente código en SystemVerilog que describe


un divisor de frecuencia de reloj, donde COUNTER MAX es un parámetro que
permite al usuario setear un número entero positivo arbitrario. Este ejemplo
además ejemplifica el uso de parámetros en los módulos, y su buen uso
permite aumentar la regularidad y reutilización de sus módulos. Se
recomienda revisar el uso de parámetros en SystemVerilog, ya que será clave
para su trabajo durante el resto del semestre.
Una vez analizado y entendido el código, complete los diagramas de tiempo
de la Figura 1 considerando que el parámetro COUNTER MAX toma los valores
1, 2, 3, 6. Copie los diagramas en el mismo formato en su informe. Sea prolijo.
Figura 1: Diagramas de tiempo para distintos valores de COUNTER MAX. Los
sımbolos numéricos incluidos en los cantos de reloj de clk_in son solo
referenciales.
(C) A partir de los diagramas de tiempo obtenidos en la pregunta anterior,
derive una expresión general que permita obtener la frecuencia del reloj de
salida clk_out como función de la frecuencia del reloj de entrada clk_in y el
parámetro COUNTER MAX. Utilizando la expresión obtenida, indique el valor
de COUNTER MAX para obtener un reloj de salida clk_out con frecuencia de
30Hz a partir de un reloj de entrada clk_in con perıodo de 10 ns. ¿Cuantos bits
necesitarıa como mınimo para representar correctamente este número?
La expresión general que permite encontrar la frecuencia de salida es:
𝑐𝑙𝑙𝑙𝑙𝑙 = 𝑙𝑙𝑙𝑙𝑙 / (𝑙𝑙 ∗ 2) [medido en Hz]

Ahora, para encontrare el valor de COUNTER MAX para el cual el reloj de salida
es de frecuencia 30[Hz] y el de entrada de un periodo de 10[ns]:
30 [𝑐𝑐] = 108 / (𝑐𝑐 ∗ 2)
Despejando, se obtiene que:
𝑙𝑙 = 1.7 𝑙106
Luego, el número de bits necesarios para representar este número, sería:
𝑙°𝑙𝑙𝑙𝑙 = 𝑙𝑙𝑙2 𝑙𝑙 = 20.669 ≈ 21 [𝑙𝑙𝑙]
(D) Los archivos fuente en SystemVerilog, en particular los testbenches,
incluyen una directiva al inicio del código del tipo “timescale 10ns/100ps”.
¿Que funcion cumple esta directiva y que significan sus argumentos?
Indican la duración de la simulación (en este caso el 10[ns]) y la duración de un
ciclo lógico(en este caso 100[ps]).
(E) Explique el significado de los parámetros fan in y fan out. ¿Cómo afectan
la velocidad de un circuito o compuerta lógica? ¿Con qué parámetros del
datasheet está relacionado el fan-out de una compuerta lógica?
Fan_in : Relacionado al número de entradas de un circuito o compuerta lógica.
En general se habla de que entre menos Fan_in el diseño es mejor ya que
tenemos menos entradas en el circuito lógico por ello hay menos cables que
conectar , entonces menos retardo de tiempo y menos pérdidas por los cables.
Fan_out : Relacionado a el número de compuertas lógicas (cantidad) que la
salida de una compuerta lógica de la misma familia puede alimentar sin perder
la eficiencia del sistema.
La velocidad de un circuito o compuerta lógica depende de la cantidad de
entradas que tengamos mientras mayor es el número de entradas el circuito
tenderá a tener mayor tiempo de propagación de ya tenemos más circuiteria lo
que implica más cables y mayor retardo en propagarse las salidas , también la
energía que se suministra a la compuerta afecta la velocidad entre mayor
energía va más rápido ya que estoy generando que los electrones fluyan más
seguido. Relacionando con el Fan_in y Fan_out para tener un circuito de
manera más óptima se busca un equilibrio entre ambas , igual depende de la
aplicación , pero en general se busca tener in Fan_in bajo y un fan_out alto.
El Fan_out está relacionado con la corriente que sale de una compuerta lógica
tanto en alto como en bajo y también con la corriente que entra a la misma
compuerta tanto en alto como en bajo.
𝑙𝑙𝑙𝑙𝑙 𝑙𝑙 𝑙𝑙𝑙𝑙
𝑙𝑙𝑙𝑙𝑙𝑙 𝑙𝑙𝑙 : 𝑙𝑙𝑙𝑙𝑙𝑙 𝑙𝑙𝑙𝑙 :
𝑙𝑙𝑙𝑙𝑙 𝑙𝑙 𝑙𝑙𝑙𝑙

[con sus valores máximos sacados del datasheets]


(F) Explique la diferencia entre una señal de reset sincrónica y una señal de
reset asíncrona en un circuito secuencial basado en flip-flops. Escriba un
snippet de código en SystemVerilog que describa la funcionalidad de un flip-
flop con reset sincrónico y otro con reset asíncrono. Para cada caso, dibuje el
diagrama del esquemático resultante que entrega el análisis mediante el
análisis del “Elaborate Design” de Vivado, y explique las diferencias en las
primitivas inferidas para cada caso. Complete los diagramas de tiempo de la
Figura 2 considerando la salida de un flip-flop con reset sincrónico y otro con
reset asíncrono.
La gran diferencia es que reset asincrónico es independiente de todas la
variables del sistema , este funciona en cualquier momento independiente del
valor de las entradas. En cambio el reset sincrónico va ligado al clock entonces
solo funcionara cuando el clock le de la orden (flanco de bajada o subida).
Respecto al funcionamiento de cada código descriptivo, se dice que el módulo
sincronico, cambia para cada canto de subida (posedge) de la entrada clock,
por otra parte, el módulo asíncrono cambia para cada canto de subida de tanto
la entrada clock como la reset.

Se puede apreciar que el reset en el tiempo 17[ns] cambia de 0 a 1 , por lo cual


la salida QAsync (Flip-Flop Asíncrono) pasa de inmediato al estado por defecto
al ser activado el reset,mientras que en el caso del QSync(Flip-Flop Sincronico)
espera el siguiente canto de subida de la entrada clock (tiempo 18 [ns]) para
cambiar al estado por defecto (0).
Figura #2: Diagramas de tiempo para Flip-Flops con reset síncrono y asíncrono.
(G) Una regla de oro asociada a buenos modales y prácticas en el diseño
digital con FPGAs dice que hay que evitar a toda costa utilizar latches. Como
se ha mencionado, en este curso está totalmente prohibido utilizar latches en
sus diseños. Si su diseno final contiene latches, ni siquiera sera revisado.La
mayoria de las veces los latches aparecen por errores involuntarios en la
descripción del diseño asociados a omisiones o errores de tipeo en el código.
Explique que es un latch y cómo se diferencia de un flip-flop. Investigue y dé
ejemplos de la o las razones más comunes para que la herramienta de
sıntesis lógica infiera latches a partir de su descripción de hardware. ¿Por que
los latches se consideran inadecuados para implementaciones en FPGA? ¿Por
qué existen los latches como componentes de circuito si en general no se
recomienda su uso en este curso? Discuta, justifique, y reporte claramente
sus fuentes de información.
Entendemos que un latch es un elemento relacionado con el almacenamiento,
este ocurre en un módulo que posea una entrada, una salida, y un enable
pin(Señal de mando o orden). Así cuando el enable pin este activo, la salida
transparentemente sigue a la entrada ( con un pequeño delay). Cuando el
enable esté inactivo, la salida se congela el último valor previamente
adquirido.
La principal diferencia es en la señal que le da el paso al dato(entrada) a
Q(salida) en un latch es un enable pin(señal de mando) y en un flip-flop es la
señal de entrada que se toma como clock que esta es periódica.
Las razones por la cual se pueden generar latches es debida a que tenemos
presente una respuesta asincrónica.
Se consideran los latches inadecuados debido a que estos son una advertencia
de que el diseño lógico puede no ser implementado como se desea. Un crucial
if-else o case puede no ser tomado en cuenta por el diseño produciendo
glitches y retardos de tiempo. Teniendo errores de timing por lo cual se
debería evitar en nuestra lógica debido a que los flip-flops son mucho más
seguros de usar.
Aun así, este existe debido a que a veces es requerido, pero hay que diseñar la
lógica de manera que no se generen posibles glitches.
Referencias: *https://www.nandland.com/articles/what-is-a-latch-fpga.html
*https://electronics.stackexchange.com/questions/38645/why-are-inferred-latches-bad

(H) En la sección Resources de Piazza encontrará un link a un repositorio GIT


en el que se dejaran ejemplos y modelos de referencia que utilizaremos en el
transcurso del semestre. Dentro de la carpeta PushButton-debouncer, busque
el archivo fuente de diseno debouncer counter.sv. Analice cuidadosamente el
código 1 , y explique su funcionalidad de “caja negra” (es decir, que entra y
que sale), indicando que funcion cumple el parámetro de entrada DELAY.
Para esto, básese en lo observado en la última sesión evaluada con respecto
al comportamiento de un botón, e investigue sobre los circuitos de anti-
rebotes o debouncing.

Se definen las entradas del módulo debouncer counter, estas son un clock
base, un reset global, y una entrada analogica asincrónica, push-button, y
como salida se tiene el estado sincrónico de estado de presionado del botón, el
estado sincrónico que representa el estado actual de presionado. Y la salida
sincrónica que representa el estado de liberado del botón.
Entonces, podemos decir, con respecto a las entradas y salidas de esta caja
negra que su funcionalidad es corregir el pulso del botón, tomando en cuenta
un delay como la cantidad de pulsos que se desea establecer como mínima
para considerar el presionado del botón estable.

Potrebbero piacerti anche