simulación de escritura de RAM en VHDL

3

Escribir un valor en la RAM es una pequeña parte de mi proyecto, todo funciona, pero no puedo explicar nada relacionado con la RAM / temporización digital.

Escribiré una descripción con respecto a la imagen que agregué.

  • macc_out va a data_in de la RAM
  • address_ram es la dirección de la celda RAM
  • out_temp es la salida de la RAM
  • write_en_ram es write_en de la RAM

Hasta donde tuve la idea de RAM, escribe directamente en el borde ascendente del reloj. Por lo tanto, los datos que se ven en data_in en el flanco ascendente del reloj se escribirán en la RAM. Incluso si data_in cambia en el mismo reloj que write_goes high, se escribirán los datos antiguos. Entonces,¿porquéenmicasolamemoriaRAMescribe-36yno-10.

Ahora intenté cambiar el valor de data_in con un valor de reloj (0/1) y ahora hace lo que debería. ¿Qué esta pasando? ram_in es data_in de RAM en este caso.

macc_out == ram_in == data_in

    
pregunta Arturs Vancans

1 respuesta

1

Dado que no se muestra la señal del reloj, asumo que está relacionado con el cambio en las otras señales.

En base a eso, el primero parece funcionar correctamente, ya que la escritura solo funciona en el flanco ascendente del reloj y la lógica alta de la señal * write_en *. Por lo tanto, es por eso que los datos solo se escriben en un ciclo después de que la señal de habilitación sea alta.

En cuanto al segundo simulador, parece que la señal del reloj está conectada directamente a la señal * ram_in *. Esto lo explicaría. Los datos se bloquean en el borde ascendente del reloj. En este caso, el único dato que está bloqueado es 0. En el flanco ascendente, el * ram_io * siempre es 0.

    
respondido por el sybreon

Lea otras preguntas en las etiquetas