Estoy implementando un TRNG en un FPGA. Este TRNG se basa en la fluctuación creada por el oscilador en anillo y me gustaría saber cómo implementar el oscilador en anillo dado en FPGA para que se genere la fluctuación.
module rng(start, r_out);
input start /* synthesis keep */;
reg rout /* synthesis keep */;
output r_out;
wire n0 /* synthesis keep */;
wire n1 /* synthesis keep */;
wire n2 /* synthesis keep */;
wire n3 /* synthesis keep */;
wire n4 /* synthesis keep */;
wire n5 /* synthesis keep */;
wire n6 /* synthesis keep */;
and a(n6,r0,start);
mynot x1(n6,n0);
mynot x2(n0,n1);
mynot x3(n1,n2);
mynot x4(n2,n3);
mynot x5(n3,n4);
mynot x6(n4,n5);
mynot x7(n5,r_out);
endmodule
module mynot(
input x,
output wire y
);
not(y,x);
endmodule
Este es mi código para el oscilador de anillo.
module rng_tb;
reg start;
wire q;
rng uut(start,q);
initial
begin
start=0;
#50 start=1;
end
endmodule
Este es el código para el banco de pruebas.
La salida ahora es no me importa.
Este no es un oscilador en anillo, porque r0 es desconocido. Probablemente quisiste decir r_out:
and a(n6,r_out,start);
Ver también: rout vs r_out.
Si corrige su topología, se encontrará con otro problema: un bucle de tiempo (delta), básicamente un oscilador de anillo correcto sin demoras, colgará su simulador en el tiempo 0. Deberá introducir un retraso en su macro "mynot" para permitir salir de los pasos delta desde el tiempo 0.
Eugenio Sh.
Avanish Singh
Eugenio Sh.
Eugenio Sh.
Viejo pedo
Avanish Singh
Avanish Singh
greg
mynot
es incorrecto. Lo define como entrada, salida pero instancia el orden de conexión como salida, entrada. Henser_out
no tiene fuente. Me sorprende que se haya compilado como(r_out&start)
una asignación de salida ilegal. Para su información, incluso con la corrección del orden de los puertos, es posible que aún no oscile debido a la optimización del compilador.Avanish Singh
Vance
Avanish Singh
Vance
Avanish Singh
Vance
Avanish Singh