Ejercício con memoria interna de la FPGA - DE2_70

Placas completas (con o sin programador incorporado): Terasic, Altera, "chinas", etc
Responder
Avatar de Usuario
Subcritical
Spartan 3
Mensajes: 225
Registrado: 24 Ago 2018, 14:52

Ejercício con memoria interna de la FPGA - DE2_70

Mensaje por Subcritical » 10 Feb 2019, 15:47

Con el siguiente código de como crear una memoria interna de mcleod_ideafix

Código: Seleccionar todo

module memoria (
  input wire clk,
  input wire [9:0] direccion,
  input wire [7:0] din,
  output reg [7:0] dout,
  input wire escribir
);
reg [7:0] mem[0:1023];
always @(posedge clk) begin
  if (escribir)
    mem[direccion] <= din;
  dout <= mem[direccion];
end
endmodule
Asignamos interruptores a dirección de memoria.
Asignamos interruptores a din datos entrada.
Asignamos diodos led a dout datos salida.
Asignamos un interruptor a escribir.

Y tenemos un módulo de memoria funcional
Memoria001.zip
(2.74 KiB) Descargado 335 veces
Memoria 1kbyte RTL.png
Memoria 1kbyte RTL.png (148.73 KiB) Visto 3724 veces

Avatar de Usuario
Subcritical
Spartan 3
Mensajes: 225
Registrado: 24 Ago 2018, 14:52

Re: Ejercício con memoria interna de la FPGA - DE2_70

Mensaje por Subcritical » 10 Feb 2019, 20:57

¿con dicho modulo de memoria podría generar una secuencia de datos incrementando las 10bit direcciones y asignando los 8 bits menos significativos como dato?


Algo parecido a esto:
¿Permitiria la memoria ser grabada a 25mhz?

Código: Seleccionar todo

//Contador de 10 bit para la memmoria y 8-bit para los datos de entrada
module counter_direcciones_10 (
 input clk,
 input reset,
 output reg grabarmemoria,
 output reg [7:0] datos,
 output reg [9:0] direcciones
 );
 
always @(posedge clk)
	begin
		if (direcciones <= 10'b1111111111)
		begin
		direcciones <= direcciones + 10'b1;
		datos = direcciones[7:0];
		end
		else
		begin
		grabarmemoria = 1'b0;
		end
	end

memoria memoria1k_00(
.clk(clk),
.direccion(direcciones), //10 bits de dirección 0:9 en número decimal 0:1023
.din(datos), //datos entrada 8 bits
.dout(datos_salida), //datos salida 8 bits
.escribir(grabarmemoria) // señal de escribir en la memoria 
); 
 
endmodule

Experimento_memoria000.zip
(5.49 KiB) Descargado 344 veces

Responder

Volver a “Placas entrenadoras”