Me gustaría preguntar si alguien podría ayudarme con algunos cierres en mi diseño. Estoy trabajando con un núcleo de cifrado aes tomado de los sistemas de apertura y he descrito en vhdl el sistema circundante para introducir y obtener los datos en el núcleo. Cuando lo simulo, mi diseño funciona correctamente, pero cuando programo mi FPGA con el flujo de bits del sistema y me comunico con él a través del hiperterminio, no me devuelve los datos cifrados correctos. He intentado muchas cosas para resolverlo, pero no consigo encontrar el error, estaba pensando que tal vez algunos problemas que hay en el sistema podrían ser el problema. Publico aquí solo las líneas donde están los cierres.
PD: el núcleo se comunica con zynq a través de axi y estoy usando un kit de evaluación y desarrollo ZedBoard Zynq (xc7z020clg484-1)
control de estado: cierre en next_state
begin
if (rising_edge(S_AXI_ACLK)) then
if (S_AXI_ARESETN='0')then
actual_state <= wait_state;
else
actual_state <= next_state;
end if;
end if;
end process;
habilitación de entrada de datos: enclavamiento en un < = Avalid_data_I; y b < = Avalid_key_I;
process (S_AXI_ARESETN, S_AXI_ACLK)
begin
if (rising_edge(S_AXI_ACLK)) then
if (S_AXI_ARESETN='0')then
a<= '0';
a1<= '0';
b <= '0';
b1 <= '0';
else
a<=Avalid_data_I;
a1<= a;
b <= Avalid_key_I;
b1 <= b;
c <= valid_data;
c1 <=c;
end if;
end if;
end process;
finalmente tengo un pestillo cuando compilo la salida: dat_encrip es la salida del núcleo de encriptación tomado de los opencores y out_encrypt es un registro interno que se leerá desde el zynq.
out_encrypt (31 downto 24) <= dat_encrip when (cnt=0 and dato_valido= '1');
out_encrypt (23 downto 16) <= dat_encrip when (cnt=1 and valid_data= '1');
out_encrypt (15 downto 8) <= dat_encrip when (cnt=2 and valid_data= '1');
out_encrypt (7 downto 0) <= dat_encrip when (cnt=3 and valid_data= '1');
Gracias por su ayuda y perdón. Si le resulta difícil entenderme, porque mi inglés no es lo suficientemente bueno.