addi II 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Здравствуйте! У кого получилось с помощью атрибута синтезатора задействовать 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 33 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Приветствую! В начале пути FPGA дизайнера полезно посмотреть как это делают другие. В Vivado есть хорошие примеры имплементации соответствующих модулей (тригеров, памяти, ...) в Toos/Language template. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Далее считываю reg = ram[0]; В итоге неопределенное состояние регистра и RAM блок не имплементируется в дизайне По идее если не имплементируется поведенческая модель в RAM, то она хотя бы имплементируется в триггерах, а тут вообще ничего, и синтезатор не выдает ошибок Два слова о памяти. 1. Латентность. Сколько раз считываете из одной ячейки? Если есть латентность, то может быть надо читать 2 или 3 раза... 2. А еще есть glbl.v ... Это такой файлик, который входит в состав памяти и там написано, сколько времени память требует для того, чтобы прийти в норму в начале работы после инициализации кристалла. Я обычно делаю всю симуляцию в отдельной папке и в этом файле затираю пару нулей в этой задержке... А то, что память "не имплементируется" и не "работает" - то это разные вещи... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Приветствую! Два слова о памяти. 1. Латентность. Сколько раз считываете из одной ячейки? Если есть латентность, то может быть надо читать 2 или 3 раза... 2. А еще есть glbl.v ... Это такой файлик, который входит в состав памяти и там написано, сколько времени память требует для того, чтобы прийти в норму в начале работы после инициализации кристалла. Я обычно делаю всю симуляцию в отдельной папке и в этом файле затираю пару нулей в этой задержке... А то, что память "не имплементируется" и не "работает" - то это разные вещи... В таком виде как привел TC никакая память не синтезируется ни с латентностью 2 ни с какой другой. Ну и для чисто функциональной симуляции файл glbl.v тоже не нужен. Это только если используются модели примитивов Xilinx. TC для начала надо бы основам написания синтезируемого кода поучится, а потом уж нырять в глубину на мелководье :) . Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться