[an error occurred while processing this directive]
Q5.1SP1, проблема осталась (+)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Tiro 20 марта 2006 г. 01:22
В ответ на: От перестановки слагаемых сумма меняется? ( Q4.2SP1, verilog) отправлено ReAl 17 марта 2006 г. 13:59

Видимо, в расширителе макросов Quartus'a есть ошибка, поскольку расширенное вручную выражение вычисляется правильно. Выяснил, что
к правильному результату приводит код, из которого селектор вытащен в отдельный параметр.

module foo ( foo0, foo1, foo2, foo3 );

output [9:0] foo0, foo1, foo2, foo3;

localparam low = 1, len = 606;

/* 1 */`define line_wrap0(val) ((len + val) % len)
/* 2 */`define line_wrap1(val) ((val + len) % len)

localparam shift = 31;
localparam select = low ? 7 : 12;

localparam start0= `line_wrap0( select - shift);// OK, 582
localparam start1= `line_wrap0( 7 - shift);// OK, 582
localparam start2= `line_wrap1( select - shift);// FAIL, 1000
localparam start3= `line_wrap1( 7 - shift);// OK, 582

assign foo0 = start0;
assign foo1 = start1;
assign foo2 = start2;
assign foo3 = start3;

endmodule



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru