Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сюрприз от Квартуса
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Anatoliy
Для хранения коэффициентов быстрой свёртки создаю on chip memory компонент ROM: 1 port с инициализацией из файла .mif , после компиляции и заливки в чип вижу скопом что выходные данные ROM всегда равны нулю,хотя адреса переключаются. При этом если посмотреть мемори эдитором то нужные данные в памяти присутствуют. Корку перегенерил,проект пересобрал - ничего не помогает.Что посоветуете коллеги? Опять за бубном бежать? Квартус 16.0 Аррия-V.
Inanity
Понимаю, что маловероятно, но может enable памяти не активирован случайно? В RTL всё верное синтезировалось при подключении к памяти?
_Anatoliy
Цитата(Inanity @ Sep 17 2016, 11:45) *
Понимаю, что маловероятно, но может enable памяти не активирован случайно? В RTL всё верное синтезировалось при подключении к памяти?

Нету enable
Код
ENTITY rom_coe_re IS
    PORT
    (
        address        : IN STD_LOGIC_VECTOR (13 DOWNTO 0);
        clock        : IN STD_LOGIC  := '1';
        q        : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)
    );
END rom_coe_re;

В RTL тоже криминала не заметил. Перепроверил скоп, вывел q(0) на внешний порт - стабильный ноль хотя в массиве единицы есть.
des00
Я перешел на поведенческое описание.
_Anatoliy
Цитата(des00 @ Sep 17 2016, 12:49) *
Я перешел на поведенческое описание.

А можно примерчик? А то у меня уже крыша едет,плохо соображаю.
А,дошло. Описываем как массив и реализуем в памяти?
Тоже были неприятности?
Совершенно непонятно,у меня около десятка разных блоков памяти в проекте - все работают. Правда без инициализации.
Inanity
Цитата(_Anatoliy @ Sep 17 2016, 12:57) *
Описываем как массив и реализуем в памяти?
Тоже были неприятности?


Мне кажется это не решение проблемы. Да, память, математику таким образом ещё можно описывать, а иногда даже нужно, для большей переносимости кода, но не все примитивы можно так описать. Тут явно виноват квартус или генератор ядра. Есть ещё вариант вручную вместо генератора ядра описывать параметры конкретного примитива, но это тоже геморрой.
_Anatoliy
Цитата(Inanity @ Sep 17 2016, 13:30) *
Мне кажется это не решение проблемы. Да, память, математику таким образом ещё можно описывать, а иногда даже нужно, для большей переносимости кода, но не все примитивы можно так описать. Тут явно виноват квартус или генератор ядра. Есть ещё вариант вручную вместо генератора ядра описывать параметры конкретного примитива, но это тоже геморрой.

Соглашусь с Вами.
Сейчас попробовал вместо rom сгенерить ram с инициализацией - та же проблема. Я в шоке...
Осталось попробовать вариант с массивом.
Конечно ещё есть вариант с загрузкой данных в память но не хотелось бы извращаться.
Inanity
А может среда тупо не видит файл инициализации при синтезе? Может он как-то куда-то не подключен? К сожалению/счастью не так много работаю с quartus-ом. Может среда кидает warning, что файл не видит и всё нулями забивает.
_Anatoliy
Цитата(Inanity @ Sep 17 2016, 14:21) *
А может среда тупо не видит файл инициализации при синтезе? Может он как-то куда-то не подключен? К сожалению/счастью не так много работаю с quartus-ом. Может среда кидает warning, что файл не видит и всё нулями забивает.

Не, я выше писал что мемори эдитором в микросхеме через JTAG я вижу содержимое памяти,оно в норме.
_Anatoliy
Ну вот, переделал проект под массив,упаковал массив в M10K - ничего не изменилось! Разве что только теперь мемори эдитором не могу пользоваться.
На всякий случай выложу technology map viewer (post fit).
tech map
Похоже в понедельник нужно попа пригласить laughing.gif
Corner
Цитата(_Anatoliy @ Sep 17 2016, 16:12) *
Ну вот, переделал проект под массив,упаковал массив в M10K - ничего не изменилось! Разве что только теперь мемори эдитором не могу пользоваться.
На всякий случай выложу technology map viewer (post fit).
tech map
Похоже в понедельник нужно попа пригласить laughing.gif

Verilog, reg, Initial $readmemh... и текстовый файлик с hexами в проект. Работает без изменений и под Quartus и под ISE и под Vivado. Actel, Lattice и Active HDL не соберут. Для них initial не синтезируемая директива.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.