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

 
 
> Счетчик на примитивах CARRY_SUM и DFFE
ViKo
сообщение Apr 6 2010, 12:09
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 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

Но не получаю желаемого (см. картинку). Где-то промахнулся. Поможите, люди добрые!
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Apr 10 2010, 18:27
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 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), то цепи переноса из разряда в разряд не используются.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 11 2010, 05:32
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 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), то цепи переноса из разряда в разряд не используются.

это не удивительно и достаточно очевидно %)


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 11 2010, 07:28
Сообщение #4


Универсальный солдатик
******

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



Цитата(des00 @ Apr 11 2010, 08:47) *
у меня 9.0сп2 собрал без каких либо проблем

У меня 9.0 без СП, придется по-новее пошукать.

Цитата
а так,...

...не работает, потому что нет сумматора. Об этом я уже писал в начале.
Я уже было обрадовался - вот оно!
Похоже, остался еще шаг до цели smile.gif

Цитата
это не удивительно и достаточно очевидно %)

Точно! Где можно обойтись параллельным выполнением операции, последовательное не нужно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - des00   Цитата(ViKo @ Apr 11 2010, 01:43) ...не р...   Apr 11 2010, 07:45
|- - 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


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 22:50
Рейтинг@Mail.ru


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