Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARTIX7 - ram_style = "block"
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
addi II
Здравствуйте!

У кого получилось с помощью атрибута синтезатора задействовать RAM, подскажите
Объявляю, инициализирую
Код
(* ram_style = "block" *) reg [7:0] ram [1023:0];

initial begin
ram[0] = 8'h00; ram[1] =  8'h00; ram[2] =  8'h00;ram[3] =  8'h00;
ram[4] =  8'h00; ram[5] =  8'h00; ram[6] =  8'h00;ram[7] =  8'h00;
ram[8] =  8'h00; ram[9] = 8'h00; ram[10] =  8'h00;ram[11] =  8'h00;


reg [7:0] regi;

Далее записываю

ram[0] = 8'b01010101;
Далее считываю

reg = ram[0];

В итоге неопределенное состояние регистра и RAM блок не имплементируется в дизайне
По идее если не имплементируется поведенческая модель в RAM, то она хотя бы имплементируется в триггерах, а тут вообще ничего, и синтезатор не выдает ошибок


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

В начале пути FPGA дизайнера полезно посмотреть как это делают другие.
В Vivado есть хорошие примеры имплементации соответствующих модулей (тригеров, памяти, ...) в Toos/Language template.

Удачи! Rob.
iosifk
Цитата(addi II @ Feb 19 2018, 10:48) *
Далее считываю

reg = ram[0];

В итоге неопределенное состояние регистра и RAM блок не имплементируется в дизайне
По идее если не имплементируется поведенческая модель в RAM, то она хотя бы имплементируется в триггерах, а тут вообще ничего, и синтезатор не выдает ошибок

Два слова о памяти.
1. Латентность. Сколько раз считываете из одной ячейки? Если есть латентность, то может быть надо читать 2 или 3 раза...
2. А еще есть glbl.v ... Это такой файлик, который входит в состав памяти и там написано, сколько времени память требует для того, чтобы прийти в норму в начале работы после инициализации кристалла. Я обычно делаю всю симуляцию в отдельной папке и в этом файле затираю пару нулей в этой задержке...

А то, что память "не имплементируется" и не "работает" - то это разные вещи...
RobFPGA
Приветствую!
Цитата(iosifk @ Feb 19 2018, 11:16) *
Два слова о памяти.
1. Латентность. Сколько раз считываете из одной ячейки? Если есть латентность, то может быть надо читать 2 или 3 раза...
2. А еще есть glbl.v ... Это такой файлик, который входит в состав памяти и там написано, сколько времени память требует для того, чтобы прийти в норму в начале работы после инициализации кристалла. Я обычно делаю всю симуляцию в отдельной папке и в этом файле затираю пару нулей в этой задержке...

А то, что память "не имплементируется" и не "работает" - то это разные вещи...

В таком виде как привел TC никакая память не синтезируется ни с латентностью 2 ни с какой другой.
Ну и для чисто функциональной симуляции файл glbl.v тоже не нужен. Это только если используются модели примитивов Xilinx.
TC для начала надо бы основам написания синтезируемого кода поучится, а потом уж нырять в глубину на мелководье sm.gif .

Удачи! Rob.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.