4.1 Diseño
En esta sección se describe el diseño del generador digital de onda senoidal de frecuencia fija con interface AXI4-Stream, para observar su comportamiento se conectará su salida a un transmisor serie que enviará la salida del oscilador a un PC.
Los puertos de este módulo son los siguientes:
Puerto |
Modo |
PIN |
Propósito |
|---|---|---|---|
CLK |
in |
W5 |
Señal de reloj (100 MHz) |
RST |
in |
U18 |
Señal de reset asíncrono activo en alto |
RX |
in |
B18 |
Línea de recepción serie (19200 bps) |
SS(6:0) |
out |
… |
Control del display de 7 segmentos |
AN(3:0) |
out |
… |
Control de los ánodos del display de 7 segmentos |
DATO(7:0) |
out |
U16… |
Dato recibido y mostrado en los LEDS |
DRI |
out |
L1 |
Indicador de recepción de dato |
Para ayudar a conceptualizar el hardware necesario para este diseño, se muestra su diagrama de bloques:
Descripción de los bloques:
- sincro:
Sincronizador de 2 biestables, sincroniza la entrada asíncrona \(\textsf{RX}\), los biestables se inicializan al valor de reposo de la línea serie. La salida del primer biestable se denomina
rx_metay la del segundorx_sync.- reg. desp. ≫:
Registro de 8 bits que desplaza su contenido una posición hacia la derecha cada vez que la señal
rd_desplaza = 1. El dato que ocupa la posición más significativa en cada desplazamiento serárx_sync.- registro salida:
Registro de 8 bits de carga en paralelo que se actualiza cada vez que
rs_carga = 1, después de un reset toma el valor \(\textsf{x"20"}\).- bin a SS:
Decodificador ASCII a siete segmentos, si el código ASCII de entrada no corresponde con un número, su salida codificará el símbolo: E, se puede utilizar un alfabeto mas amplio como el mostrado en las transparencias del tema 2.
- MEF:
Controla el funcionamiento del resto de los bloques y obtiene la salida \(\textsf{DRI}\), \(\textsf{DRI}\) está activa cuando el sistema está recibiendo un nuevo dato.
- timer:
Contador con inicialización síncrona, si
timer_ini = 1→timer = 0. Se utiliza para implementar las transiciones temporales en la MEF.- cont. bit:
Contador módulo 8 con control de inicialización e incremento, el contador se inicializa si la señal
cntbit_ini = 1y se incrementa sicntbit_inc = 1. Se utiliza para implementar los bucles en la MEF.
Modela este diseño en VHDL.
Utilizando biestables y lógica combinacional, dibuja el diagrama del circuito que implementa:
el registro de desplazamiento
el registro de salida
el contador de bit
el contador de tiempo de bit
A continuación, describe en VHDL la implementación del sistema completo.
- Sigue el procedimiento visto en el lab1:
Descarga el archivo de recursos de lab4 y descomprímelo.
Arranca vivado y crea el proyecto utilizando el script
scripts/lab.tcl.Edita
rtl/uart_rx.vhdpara modelar la funcionalidad descrita.
en Vivado: Sources→Design Sources→Syntax Error Files→uart_rx.vhd.
Advertencia
En el modelo VHDL del sistema debe describirse separando claramente la lógica secuencial de la combinacional. La lógica secuencial (biestables) y las funciones de salida y de transición de estados de la MEF deben implementarse mediante procesos, mientras que el resto de la lógica combinacional puede describirse mediante asignaciones concurrentes.
Para codificar los nodos intermedios del receptor, debes utilizar los mismos nombres con los que aparecen en los diagramas. Esto facilitará la depuración y el análisis de resultados. Es especialmente importante para los registros del sincronizador utilizar los nombres:
rx_metayrx_sync. Estos registros deben ser reconocidos por las herramientas de síntesis e implementación como registros de sincronización para maximizar el MTBF (tiempo entre fallos).