реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ARTIX7 - ram_style = "block", синтезатор не понимает
addi II
сообщение Feb 19 2018, 07:48
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 271
Регистрация: 1-02-16
Пользователь №: 90 294



Здравствуйте!

У кого получилось с помощью атрибута синтезатора задействовать 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, то она хотя бы имплементируется в триггерах, а тут вообще ничего, и синтезатор не выдает ошибок


Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Feb 19 2018, 08:11
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 127
Регистрация: 23-12-04
Пользователь №: 1 643



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

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

Удачи! Rob.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Feb 19 2018, 08:16
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 3 954
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

reg = ram[0];

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

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

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Feb 19 2018, 08:36
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 127
Регистрация: 23-12-04
Пользователь №: 1 643



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

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

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

Удачи! Rob.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2018 - 17:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01014 секунд с 7
ELECTRONIX ©2004-2016