Перейти к содержанию
    

Verilog + Modelsim

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

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

 

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

 

Успехов! Rob.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

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

 

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

 

Успехов! Rob.

Благодарю

 

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

Изменено пользователем rasher

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...