Мога ли да използвам масив 'arr[x][y]' вътре в винаги блок? Може ли да се синтезира?

always@(posedge clk)
begin
r00<=r01;
r01<=r02;
r02<=arr[x][y];
//code
end

това ще може ли да се синтезира в генериран блок? Също така, че "arr" е двуизмерен.


person Joe    schedule 12.12.2015    source източник
comment
Това зависи от инструмента за синтез. Много синтезатори създават структура, подобна на RAM за този тип масив.   -  person sharvil111    schedule 12.12.2015
comment
Да защо не. Не е голяма работа за генериран блок или за винаги блокиране. Истинският проблем е, че ако arr е огромен, тогава инструментът за синтез ще създаде голяма регистърна банка, за да моделира това, и ще доведе до дълго време на изпълнение и понякога ще изяде цялото пространство в паметта и ще се взриви.   -  person jclin    schedule 18.12.2015


Отговори (1)


За да уточним коментарите по-горе, вашият инструмент за синтез трябва да заключи, че това е памет, но в зависимост от вашата декларация и употреба, има няколко сценария.

  1. Ще получите несинтезируеми или грешки във вашия код поради четене по време на запис и други грешки в интерфейса на паметта поради модели на достъп

  2. Вашата памет всъщност ще бъде изведена като регистри, което може да направи дизайна ви несинтезируем поради размера.

  3. Всичко ще работи чудесно.

Много инструменти (като Quartus) идват с вградена функционалност за добавяне на спомени към вашия код (т.е. инструментът Megafunction).

person Tim P    schedule 06.01.2016