Los
FIFO se utilizan normalmente con interfaces de tipo streaming. Puede convertir sus señales FIFO en una interfaz Avalon ST con bastante facilidad. Se mapean de la siguiente manera:
- válido =
~empty
- Listo =
rdreq
- Datos =
q
En realidad, no necesitas ninguna otra señal para hacer Avalon ST. El único extraño de arriba es asegurarse de invertir la señal vacía.
Una vez en Qsys, deberá convertir de Avalon ST a Avalon MM, de las cuales hay algunas opciones. Por ejemplo, podría usar un controlador DMA para leer los datos del FIFO en la memoria en chip que Nios puede leer (por ejemplo, el Controlador DMA Scatter-Gather en Qsys).
Pensándolo bien, podría ser más fácil simplemente construir un módulo para crear una interfaz Avalon-MM. Algo como:
module fifo_to_mm (
input clk,
input rst,
input [31:0] q,
output rdreq,
input empty,
input read,
input address,
output [31:0] readdata
);
assign rdreq = read && (address == 1'b0);
assign readdata = address ? {31'b0, empty} : q;
endmodule
En ese ejemplo, si lees la dirección 0
, leerá la siguiente palabra del FIFO. Si lees la dirección 1
, te dirá si el FIFO tiene datos disponibles o no.
Haría una envoltura de TCL alrededor de este módulo (puede usar la herramienta "Archivo - > Nuevo Componente" en Qsys para ayudarlo).
- Agrega un reloj y reinicia la interfaz. Debe conectarlos al mismo reloj / reinicio que saca para su FIFO.
- Agregue las señales FIFO a un conducto que exporte desde su sistema Qsys.
- Agregue las señales Avalon-MM a una interfaz de esclavo Av-MM que se configura como:
- Bits por símbolo: 8
- Espera de lectura: 0
- Lectura de latencia: 1 o 2 (*)
- Unidades de dirección: PALABRAS
Entonces deberías poder conectar esto directamente a Nios, y Qsys se encargará de la estructura de interconexión por ti.
(*) la latencia de lectura depende de su latencia FIFO, es decir, el número de ciclos entre la confirmación de la señal rdreq
y la señal q
que se está actualizando.
Si lo desea, puede registrar la señal readdata
para mejorar Fmax, en cuyo caso agregue 1 a la latencia de lectura.