|
Счетчик на примитивах CARRY_SUM и DFFE |
|
|
|
Apr 6 2010, 12:09
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Quartus 9.0, Altera ACEX 1K. Пытаюсь создать счетчик, чтобы укладывался компактно в логические элементы. Для начала - фиксированного размера (с generate - свои проблемы). Как-то так: Код module CountPrim #(parameter WIDTH = 4) ( input Reset_n, Clock, Enable, output [WIDTH-1:0] Count, output POut );
wire [WIDTH-1:0] Fb; // feedback wire [WIDTH-1:0] Lt; // look table wire [WIDTH-1:0] Cr; // carry out
CARRY_SUM Cy0 (.sin(Fb[0]), .cin(1), .sout(Lt[0]), .cout(Cr[0])); DFFE Ff0 (.d(Lt[0]), .clk(Clock), .clrn(Reset_n), .prn(1), .ena(Enable), .q(Fb[0]));
CARRY_SUM Cy1 (.sin(Fb[1]), .cin(Cr[0]), .sout(Lt[1]), .cout(Cr[1])); DFFE Ff1 (.d(Lt[1]), .clk(Clock), .clrn(Reset_n), .prn(1), .ena(Enable), .q(Fb[1]));
CARRY_SUM Cy2 (.sin(Fb[2]), .cin(Cr[1]), .sout(Lt[2]), .cout(Cr[2])); DFFE Ff2 (.d(Lt[2]), .clk(Clock), .clrn(Reset_n), .prn(1), .ena(Enable), .q(Fb[2]));
CARRY_SUM Cy3 (.sin(Fb[3]), .cin(Cr[2]), .sout(Lt[3]), .cout(Cr[3])); DFFE Ff3 (.d(Lt[3]), .clk(Clock), .clrn(Reset_n), .prn(1), .ena(Enable), .q(Fb[3]));
assign Count = Fb; assign POut = Cr[3];
endmodule Но не получаю желаемого (см. картинку). Где-то промахнулся. Поможите, люди добрые!
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Apr 10 2010, 18:27
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Приколы продолжаются. "Хэндмэйд" des00 отказался укладываться в ACEX1K (Auto device selected by fitter), наверное, каналов не хватило? Код Error: Cannot route source node "dff_gen[11].dffeas" of type logic cell to destination node "cnt[11]" of type I/O pin Error: Cannot route source node "dff_gen[11].dffeas" of type logic cell to destination node "lpm_add_sub:Add0|addcore:adder|a_csnbuffer:result_node|cs_buffer[11]" of type logic cell Error: Cannot route source node "dff_gen[24].dffeas" of type logic cell to destination node "cout" of type I/O pin Error: Cannot route source node "dff_gen[24].dffeas" of type logic cell to destination node "lpm_add_sub:Add0|addcore:adder|unreg_res_node[24]" of type logic cell Error: Cannot route source node "lpm_add_sub:Add0|addcore:adder|a_csnbuffer:result_node|cs_buffer[5]" of type logic cell to destination node "dff_gen[5].dffeas" of type logic cell Error: Cannot route source node "lpm_add_sub:Add0|addcore:adder|a_csnbuffer:result_node|cs_buffer[7]" of type logic cell to destination node "dff_gen[7].dffeas" of type logic cell Error: Can't find fit Error: Quartus II Fitter was unsuccessful. 7 errors, 0 warnings А в ACEX1K100 - влез. Немного видоизмененный (и только с асинхронным выходом переноса) влез в удвоенное количество ЛЭ. Код module CounterDFFEAS #(parameter WIDTH = 24) ( input Reset_n, input Clock, input Enable, input Load, input [WIDTH-1:0] Data, output [WIDTH-1:0] CntOut, output POut ); wire [WIDTH-1:0] Count; wire [WIDTH:0] Next = Count + 1; genvar i; generate for (i=0; i<WIDTH; i++) begin : ffc dffeas dffeas ( .d (Next[i]), .clk (Clock), .clrn (Reset_n), .ena (Enable), .asdata (Data[i]), .sload (Load), .q (Count[i]) ); end endgenerate
assign CntOut = Count; assign POut = Next[WIDTH]; endmodule И только MWLPM_Counter, как уже говорилось, упаковался компактно. Еще одна особенность - если длина счетчика небольшая (смотрел для приведенного выше счетчика при длине 4 на Cyclone III), то цепи переноса из разряда в разряд не используются.
|
|
|
|
|
Apr 11 2010, 05:32
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(ViKo @ Apr 10 2010, 13:42)  Приколы продолжаются. "Хэндмэйд" des00 отказался укладываться в ACEX1K (Auto device selected by fitter), наверное, каналов не хватило? у меня 9.0сп2 собрал без каких либо проблем а так, Код wire [24:0] cnt_reg; wire [24:0] cnt_next; wire [24:0] carry_cnt; wire [24:0] cnt_init = {1'b0, data};
genvar i; generate for (i = 0; i < $size(cnt_reg); i++) begin : dff_gen
carry_sum carry_sum ( .sin ( cnt_reg [i] ), .cin ( (i == 0) ? 1'b1 : carry_cnt[i-1] ), .sout ( cnt_next [i] ), .cout ( carry_cnt [i] ) );
dffeas dffeas ( .clk ( clk ) , .d ( cnt_next [i] ) , .ena ( clk_en ) , .asdata ( cnt_init [i] ) , .clrn ( rst ) , .sload ( load ) , .q ( cnt_reg [i] ) ); end endgenerate
assign cnt = cnt_reg[23:0]; assign cout = cnt_reg[24]; assign cout2 = cnt_next[24]; даже уложился в 27 плиток для асекса (как MWLPM_Counter для него же), и в 1 у плитку для сыклонов %) Цитата Еще одна особенность - если длина счетчика небольшая (смотрел для приведенного выше счетчика при длине 4 на Cyclone III), то цепи переноса из разряда в разряд не используются. это не удивительно и достаточно очевидно %)
--------------------
|
|
|
|
|
Apr 11 2010, 07:28
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(des00 @ Apr 11 2010, 08:47)  у меня 9.0сп2 собрал без каких либо проблем У меня 9.0 без СП, придется по-новее пошукать. Цитата а так,... ...не работает, потому что нет сумматора. Об этом я уже писал в начале. Я уже было обрадовался - вот оно! Похоже, остался еще шаг до цели Цитата это не удивительно и достаточно очевидно %) Точно! Где можно обойтись параллельным выполнением операции, последовательное не нужно.
|
|
|
|
|
Apr 11 2010, 07:45
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(ViKo @ Apr 11 2010, 01:43)  ...не работает, потому что нет сумматора. Об этом я уже писал в начале. а так Код carry_sum carry_sum ( .sin ( cnt_reg [i] ), .cin ( (i == 0) ? cnt_en : carry_cnt[i-1] ), .sout ( cnt_next [i] ), .cout ( carry_cnt [i] ) ); чем не сумматор %))) ЗЫ. Те же 27 плиток %) UPD. бугааа, повелся на поводу у людей, взято из файла altera_primitives.v Код module carry_sum (sin, cin, sout, cout); input sin; input cin; output sout; output cout;
assign sout = sin; assign cout = cin; endmodule это не сумматор, это всего лишь указание использовать быстрые цепи переноса
Эскизы прикрепленных изображений
--------------------
|
|
|
|
Сообщений в этой теме
ViKo Счетчик на примитивах CARRY_SUM и DFFE Apr 6 2010, 12:09 Maverick Цитата(ViKo @ Apr 6 2010, 15:09) Quartus ... Apr 6 2010, 12:35 ViKo Цитата(Maverick @ Apr 6 2010, 15:35) чем ... Apr 6 2010, 12:45  Builder Цитата(ViKo @ Apr 6 2010, 15:45) Не устра... Apr 6 2010, 12:52  dxp Цитата(ViKo @ Apr 6 2010, 19:45) Не устра... Apr 6 2010, 13:02   ViKo Цитата(dxp @ Apr 6 2010, 16:02) У вас сче... Apr 6 2010, 13:06    iosifk Цитата(ViKo @ Apr 6 2010, 17:06) Просто с... Apr 6 2010, 13:09    dxp Цитата(ViKo @ Apr 6 2010, 20:06) ...Прост... Apr 6 2010, 13:10 Kuzmi4 Цитата(ViKo @ Apr 6 2010, 15:45) ..раскид... Apr 6 2010, 12:54 ViKo Цитата(Kuzmi4 @ Apr 6 2010, 15:54) Если в... Apr 6 2010, 12:57  dxp Цитата(ViKo @ Apr 6 2010, 19:57) Предпочи... Apr 6 2010, 13:08  Костян Цитата(ViKo @ Apr 6 2010, 11:57) Предпочи... Apr 6 2010, 13:45   ViKo Цитата(Костян @ Apr 6 2010, 16:45) а поче... Apr 6 2010, 13:54    sazh Цитата(ViKo @ Apr 6 2010, 16:54) У меня е... Apr 6 2010, 14:01     ViKo Цитата(sazh @ Apr 6 2010, 17:01) Попробуй... Apr 6 2010, 14:13      Builder Цитата(ViKo @ Apr 6 2010, 17:13) Это - шу... Apr 6 2010, 15:42       ViKo Цитата(Builder @ Apr 6 2010, 18:42) Да, я... Apr 6 2010, 16:25 Kuzmi4 2 ViKo
пройдитесь по форуму - помнится des00 и SM ... Apr 6 2010, 13:09 ViKo Счетчики разные, счетчиков - несколько (5-6), длин... Apr 6 2010, 13:20 des00 Цитата(ViKo @ Apr 6 2010, 07:24) Но не по... Apr 7 2010, 10:59 ViKo Цитата(des00 @ Apr 7 2010, 14:14) что то ... Apr 7 2010, 11:17  des00 Цитата(ViKo @ Apr 7 2010, 06:32) Не пахне... Apr 7 2010, 11:22 bogaev_roman Самый идеальный вариант - использовать мегафункцию... Apr 7 2010, 11:24 ViKo Объясняю, что хотел сделать. Вот образец на AHDL.
... Apr 7 2010, 11:52 ViKo По совету участников обратился к мегафункции LPM_C... Apr 7 2010, 13:36 dxp Цитата(ViKo @ Apr 7 2010, 20:51) Вывод та... Apr 8 2010, 04:38  des00 Цитата(dxp @ Apr 7 2010, 22:53) Что я дел... Apr 8 2010, 07:56   dxp Цитата(des00 @ Apr 8 2010, 15:11) теперь ... Apr 8 2010, 08:50    des00 Цитата(dxp @ Apr 8 2010, 03:05) P.S. EP2C... Apr 8 2010, 11:41     dxp Цитата(des00 @ Apr 8 2010, 18:56) я не зр... Apr 8 2010, 12:50      ViKo Цитата(dxp @ Apr 8 2010, 16:05) Какую име... Apr 8 2010, 13:24       dxp Цитата(ViKo @ Apr 8 2010, 20:39) Правда, ... Apr 8 2010, 13:45      des00 Цитата(dxp @ Apr 8 2010, 08:05) Результат... Apr 8 2010, 13:38       ViKo Цитата(des00 @ Apr 8 2010, 16:53) пример ... Apr 8 2010, 13:59        des00 Цитата(ViKo @ Apr 8 2010, 09:14) Приведит... Apr 8 2010, 14:05 Builder Цитата(ViKo @ Apr 7 2010, 16:51) Обращает... Apr 8 2010, 06:13  sazh Цитата(Builder @ Apr 8 2010, 09:28) Во-во... Apr 8 2010, 06:54   ViKo Цитата(sazh @ Apr 8 2010, 10:09) LPM coun... Apr 8 2010, 07:51 ViKo Ну, вот, к примеру.
Кодmodule CountDownReload
#... Apr 8 2010, 08:32 sazh Цитата(ViKo @ Apr 8 2010, 11:47) Что сказ... Apr 8 2010, 08:43  ViKo Цитата(sazh @ Apr 8 2010, 11:58) Добавлю,... Apr 8 2010, 08:46   sazh Цитата(ViKo @ Apr 8 2010, 12:01) Неужто 9... Apr 8 2010, 12:28    ViKo Цитата(sazh @ Apr 8 2010, 15:43) Error (1... Apr 8 2010, 12:46     sazh Цитата(ViKo @ Apr 8 2010, 16:01) Приорите... Apr 8 2010, 18:06      ViKo Цитата(sazh @ Apr 8 2010, 21:21) Ну накру... Apr 9 2010, 09:01       des00 Цитата(ViKo @ Apr 9 2010, 03:16) Посмотри... Apr 9 2010, 10:07 ViKo to dxp
Для ACEX попробуйте то же.
Сам попробовал ... Apr 8 2010, 08:56 bogaev_roman Загнал следующий код в квартус 9.1 под stratix iv ... Apr 8 2010, 14:46 ViKo Хотел написать, что у меня сложилось впечатление, ... Apr 8 2010, 17:25 des00 Цитата(ViKo @ Apr 8 2010, 08:14) Приведит... Apr 9 2010, 05:29 des00 UPD. Ну так и есть, немного хендмейда и те же 26 п... Apr 9 2010, 07:14 ViKo Смотрю в картинку "Figure 2–5. Cyclone III Fa... Apr 9 2010, 11:54 des00 Цитата(ViKo @ Apr 9 2010, 06:09) Не могу ... Apr 10 2010, 02:23    ViKo Цитата(des00 @ Apr 11 2010, 11:00) это не... Apr 11 2010, 08:19     des00 Цитата(ViKo @ Apr 11 2010, 02:34) Ja-ja, ... Apr 11 2010, 08:26 des00 Путем ковыряния даташита на асекс и квартуса у мен... Apr 11 2010, 13:19 ViKo Цитата(des00 @ Apr 11 2010, 16:34) Вывод ... Apr 11 2010, 13:36  des00 Цитата(ViKo @ Apr 11 2010, 08:51) Но мега... Apr 11 2010, 13:39   ViKo Цитата(des00 @ Apr 11 2010, 16:54) Если б... Apr 11 2010, 13:44    des00 Цитата(ViKo @ Apr 11 2010, 07:59) Вопрос ... Apr 11 2010, 13:49    sazh Цитата(ViKo @ Apr 11 2010, 16:59) Вопрос ... Apr 11 2010, 14:48 ViKo Я его сделал (Quartus, Coutner, Carry)!
Кодmo... Apr 11 2010, 16:03 des00 Цитата(ViKo @ Apr 11 2010, 10:18) Я его с... Apr 11 2010, 16:26 ViKo Выход переполнения счетчика (который выдается нару... Apr 12 2010, 21:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|