Mi módulo ha buscado un valor específico en la RAM y luego devuelve su dirección de ubicación. Cuando escribí un banco de pruebas, ¡veo que el módulo no funcionó correctamente! siempre el valor de salida es "no importa". Aunque he inicializado la memoria.
Módulo de búsqueda > > >
module Search (
clk,
rst,
SearchData,
FindAddress,
StopSearch
);
input clk;
input rst;
input[7:0] SearchData;
output reg [1:0] FindAddress;
output reg StopSearch;
integer i,x;
wire read_rq;
reg [1:0] nxt_address;
reg [2:0] ii;
initial
begin nxt_address=0;i=0; ii=0; end
wire[7:0] read_data_inx;
D0_RAM1 D0(
.clk(clk),
.rst(rst),
.read_rq(read_rq),
.write_rq(0),
.rw_address(nxt_address),
.write_data(0),
.read_data(read_data_inx)
);
always @(posedge clk )
begin
for ( x =0 ;x <4;x=x+1) begin
if (read_data_inx == SearchData) begin //master i has priority
FindAddress <= nxt_address;
StopSearch <=1;
end
nxt_address <= nxt_address+1;
end
end
el módulo RAM:
module D0_RAM1(
clk,
rst,
read_rq,
write_rq,
rw_address,
write_data,
read_data
);
input clk;
input rst;
input read_rq;
input write_rq;
input[1:0] rw_address; //2 bit
input[7:0] write_data;
output[7:0] read_data;
reg[7:0] read_data;
reg[3:0] count_;
integer out, i;
// Declare memory 2^2 x8 bits
// 2^2 = 4
reg [7:0] memory_ram_d [3:0];
reg [7:0] memory_ram_q [3:0];
initial
begin
count_=0;
for (i=0;i<4; i=i+1) begin
memory_ram_q[i] <= i;
memory_ram_d[i] <=i;
count_=count_+1;
end
end
--- > ¿Algunas ideas?
Gracias.