Jump to content

    
Sign in to follow this  

Recommended Posts

Доброго времени суток, форумчане!

 

Бьюсь третий день на следующей проблемой:

module SF_main_vlg_tst();
parameter	h_p = 5;
parameter 	size = 1024;

reg clk;
reg reset;
reg start;
reg signed [15:0] image_re;
reg signed [15:0] image_im;
reg signed [15:0] signal_re;
reg signed [15:0] signal_im;
// wires											   
wire eop_o;
wire sop_o;
wire valid_o;
wire [15:0] source_real;
wire [15:0] source_imag;

reg signed [15:0] 	image_re_mem	[size-1:0];
reg signed [15:0] 	image_im_mem	[size-1:0];
reg signed [15:0]	signal_re_mem	[size-1:0];
reg signed [15:0]	signal_im_mem	[size-1:0];

integer i = 0;

event fin_sim;
event init_done;
event file_read_finish;

initial begin
$readmemb("LFM_re.dat",signal_re_mem);
$readmemb("LFM_im.dat",signal_im_mem);
$readmemb("LFM_image_re.dat",image_re_mem);
$readmemb("LFM_image_im.dat",image_im_mem);
end

always @(init_done)
begin
for(i = 0; i < size; i = i + 1)
begin
	@(posedge clk);
	signal_re = signal_re_mem[i];
	signal_im = signal_im_mem[i];	
	$monitor("[%d]=[%d]",i,signal_re);
end
signal_re <= 0;
signal_im <= 0;
->file_read_finish;
end

always @(posedge valid_o)
begin
for(i = 0; i < size; i = i + 1)
begin
	@(posedge clk);
	image_re <= image_re_mem[i];
	image_im <= image_im_mem[i];		
end
image_re <= 0;
image_im <= 0;
end

always @(posedge start)
begin
->init_done;
@(posedge clk) start = 1'b0;
end	

initial begin
start = 0'b0;
repeat(10)@(posedge clk);
start = 1'b1;
@(file_read_finish)
repeat(3000)@(posedge clk);
->fin_sim;
end

SF_main #(size,16) i1
(
.ch1_imag(signal_im),
.ch1_real(signal_re),
.clk(clk),
.eop_o(eop_o),
.image_re(image_re),
.image_im(image_im),
.reset(reset),
.start(start),
.sop_o(sop_o),
.valid_o(valid_o),
.source_real(source_real),
.source_imag(source_imag)
);

always @(fin_sim)	$stop;

initial begin	
reset = 1'b0;
repeat(2)@(negedge clk);
reset = 1'b1;
repeat(1)@(negedge clk);
reset = 1'b0;
end   

initial begin:clk_desc
clk <= 1'b0;
forever #(h_p) clk = ~clk;
end

endmodule

 

Имеется такой тестбенч, но вот результаты его я объяснить не могу и, соотвтственно, изменить поведение в нужное русло так же не могу. Результаты ниже в аттаче.

Как видно - первый раз вычитывается каждое второе значение из памяти, при повторном же - все. Собственно вопрос: что это? и как на это повлиять?

 

Благодарю за внимание

 

post-75877-1421825916_thumb.png

Share this post


Link to post
Share on other sites
Приветствую!

 

У Вас переменная цикла i глобальная.

 

Объявите ее локально в каждом always блоке.

 

Успехов! Rob.

Благодарю

 

P.S. Удалите этот топик как позорный

Edited by rasher

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this