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

 
 
> Проблема с TRI буферами в EPF10K10QC208-3, Не синтезируется структура с TRI буферами на каждый вывод ПЛИС
GW83
сообщение Jan 11 2010, 09:42
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 24-09-09
Из: Санкт-Петербург
Пользователь №: 52 551



Доброго времени суток.

У меня есть проект в Quartus II 8.0 Web Edition, AHDL, EPF10K10QC208-3.

Когда я пытаюсь ко всем используемым 108 выводам подсоединить примитив TRI с управлением своим сигналом oe от регистра для каждого выхода, Quartus пишет, что не может это синтезировать с ошибкой типа:
Error: Node "out[48]~156" of type logic cell has no legal location
Error: Can't find fit
где out - BIDIR port, который привязан к внешним выводам ПЛИС.

Fitter effort установлено в Standard Fit.
В то же время, если использовать один сигнал oe для группы выводов - например, 2 группы по 54 вывода, структура синтезируется.
Никаких присваиваний, кроме присваиваний элемнтов шины out внешним выводам, и других портов, выполнено не было.

Означает ли это сообщение, что такую структуру синтезировать в этой м/c в принципе нельзя?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GW83
сообщение Jan 13 2010, 07:29
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 24-09-09
Из: Санкт-Петербург
Пользователь №: 52 551



То есть если в проекте оставить 48 выводов с разными OE, он отсинтезируется?
ДА. Более точно, первые 47 синтезируются (нумерация с 1), последний - подсоединен к PIN_120, а на 48-м, который назначен на PIN_119, происходит первая такая ошибка. Если отключить этот вывод, и попробовать синтезировать, то такое же сообщение (типа Error: Node "out[XX]~156" of type logic cell has no legal location) появляется и на несколько других из оставшихся используемых 108. Если их выборочно отключить, то структура с оставшимися выводами синтезируется.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jan 13 2010, 08:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(GW83 @ Jan 13 2010, 10:29) *
То есть если в проекте оставить 48 выводов с разными OE, он отсинтезируется?


А Вы сбросьте ограничения на пины I/O и посмотрите. У Вас всего 134 I/O.
Проект покажите. Он же примитивный. Чего гадать.
Go to the top of the page
 
+Quote Post
GW83
сообщение Jan 13 2010, 13:56
Сообщение #4





Группа: Участник
Сообщений: 12
Регистрация: 24-09-09
Из: Санкт-Петербург
Пользователь №: 52 551



Цитата(sazh @ Jan 13 2010, 11:19) *
А Вы сбросьте ограничения на пины I/O и посмотрите. У Вас всего 134 I/O.
Проект покажите. Он же примитивный. Чего гадать.

При удалении assignments пинов появляются те же ошибки, но для других выводов.
Часть проекта в AHDL, где назначаются выходы:

CODE

INCLUDE "lpm_decode.inc";

SUBDESIGN ssi
(
out[108..01] :BIDIR;
D[7..0] :BIDIR;
A[7..0] :INPUT;
nRD :INPUT;
nWR :INPUT;
nCS :INPUT;
-- ALE :INPUT;
)

Variable
decmem0 : lpm_decode WITH (LPM_WIDTH=4, LPM_DECODES=14,LPM_PIPELINE=0);
reg_out[13..00][07..00] : DFFE; -- addresses 0..13
reg_oute[13..00][07..00] : DFFE; -- addresses 16..39
dtri[07..00] : TRI;
outtri[13..00][07..00] : TRI;
BEGIN
decmem0.data[] = a[3..0];
decmem0.enable = !nCS;

reg_out[][].prn = vcc;
reg_out[][].clrn = vcc;
reg_out[][].d = D[];
reg_out[][].clk = nWR;

reg_oute[][].prn = vcc;
reg_oute[][].clrn = vcc;
reg_oute[][].d = D[];
reg_oute[][].clk = nWR;

-- generation of input structure
for i in 0 to 13 generate
reg_out[i][].ena = decmem0.eq[i] & !nCS & !a[4];
reg_oute[i][].ena = decmem0.eq[i] & !nCS & a[4];
end generate;
-- generation of output structure
for i in 0 to 12 generate
outtri[i][].oe = reg_oute[i][].q;
outtri[i][].in = VCC; --reg_out[i][].q;
out[i*8+8..i*8+1] = outtri[i][].out;
end generate;
outtri[13][3..0].in = reg_out[13][3..0].q;
out[108..105] = outtri[13][3..0].out;
END;
Go to the top of the page
 
+Quote Post
sazh
сообщение Jan 14 2010, 07:58
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(GW83 @ Jan 13 2010, 16:56) *
При удалении assignments пинов появляются те же ошибки, но для других выводов.
Часть проекта в AHDL, где назначаются выходы:


А зачем в этом куске двунаправленные входы выходы. Если что не получается, оформите как модуль с входами и выходами по третьему состоянию.
а на верхнем уровне уже bidir
Во всяком случае 8 квартус кушает 112 управляемы выходов по третьему состоянию на 10к10_208 (в максе работать это не будет)
CODE

module tri_oe
(
input clk,
input [7:0] data,
input ena,
input [3:0] sel,
output [111:0] out
);


reg [7:0] rg_dffe [13:0];

wire [111:0] rg;

integer i;
always @(posedge clk)
begin
for (i=0; i<=13 ; i=i+1)
if ((sel == i) && ena) rg_dffe[i] <= data;
end

genvar j;
generate for(j=0; j<=13; j=j+1)
begin:block
assign rg[j*8+7:j*8] = rg_dffe[j];
end
endgenerate

genvar l;
generate for(l=0; l<=111; l=l+1)
begin:tri_oe
assign out[l] = rg[l] ? 1'b0 : 1'bz;
end
endgenerate

endmodule
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:02
Рейтинг@Mail.ru


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