|
Проблема с TRI буферами в EPF10K10QC208-3, Не синтезируется структура с TRI буферами на каждый вывод ПЛИС |
|
|
|
Jan 11 2010, 09:42
|
Группа: Участник
Сообщений: 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 в принципе нельзя?
|
|
|
|
|
 |
Ответов
|
Jan 13 2010, 07:29
|
Группа: Участник
Сообщений: 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. Если их выборочно отключить, то структура с оставшимися выводами синтезируется.
|
|
|
|
|
Jan 13 2010, 13:56
|
Группа: Участник
Сообщений: 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;
|
|
|
|
|
Jan 14 2010, 07:58
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
Сообщений в этой теме
GW83 Проблема с TRI буферами в EPF10K10QC208-3 Jan 11 2010, 09:42 DmitryR Посмотрите, register duplication включено? Трассир... Jan 11 2010, 15:47 GW83 Цитата(DmitryR @ Jan 11 2010, 18:47) Посм... Jan 12 2010, 08:46 DmitryR Я вас неправильно понял. Судя по этому
Цитата(GW8... Jan 12 2010, 08:49 GW83 Цитата(DmitryR @ Jan 12 2010, 11:49) у эт... Jan 12 2010, 13:53  DmitryR Я написал, что я так предполагаю. То есть если в п... Jan 12 2010, 14:51 DmitryR Думаю, что трассировочных ресурсов не хватает, и т... Jan 13 2010, 07:55 GW83 sazh
У меня это не скомпилировалось.
А зачем в это... Jan 15 2010, 07:21 sazh Цитата(GW83 @ Jan 15 2010, 10:21) sazh
У ... Jan 15 2010, 10:54
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|