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

 
 
> Счетчик на примитивах 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 8 2010, 08:32
Сообщение #2


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

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



Ну, вот, к примеру.
Код
module CountDownReload
#(parameter PERIOD = 50000)
  (
  input Reset_n, Clock, Enable,
  output reg [WIDTH:0] Count
  );
  localparam WIDTH = NumBits(PERIOD-2);
  
  always @(negedge Reset_n, posedge Clock)
  if (!Reset_n)
    Count = 0;
  else
    if (Enable)
      if (Count[WIDTH])
        Count = Count - 1;
      else
        Count = (1 << WIDTH) | (PERIOD-2);
endmodule

Для ACEX получился в виде, как на картинке. Да, сумматор использует переносы, но триггеры черт знает где, выходы берутся с других мест.


А вот тот же код, разложенный в Cyclone III, 18 ЛЭ

Что сказать: Quartus + Cyclone = Сила!
Предыдущие семейства - в топку!
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 8 2010, 08:43
Сообщение #3


Гуру
******

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



Цитата(ViKo @ Apr 8 2010, 11:47) *
Что сказать: Quartus + Cyclone = Сила!
Предыдущие семейства - в топку!


Добавлю, все на квартус 9.0. Ибо только он творит чудеса.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 8 2010, 08:46
Сообщение #4


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

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



Цитата(sazh @ Apr 8 2010, 11:58) *
Добавлю, все на квартус 9.0. Ибо только он творит чудеса.

Неужто 9.1 хуже?
Или, снова... шутка? Смайлик поставьте.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 8 2010, 12:28
Сообщение #5


Гуру
******

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



Цитата(ViKo @ Apr 8 2010, 12:01) *
Неужто 9.1 хуже?
Или, снова... шутка? Смайлик поставьте.


Error (10207): Verilog HDL error at CountDownReload.v(7): can't resolve reference to object "NumBits"
Где он описан?
Да и приоритетность нарушаете:
The signal order is the same for all Altera device families, although as noted
previously, not all device families provide every signal. The following priority order is
observed:
1. Asynchronous Clear, aclr—highest priority
2. Preset, pre
3. Asynchronous Load, aload
4. Enable, ena
5. Synchronous Clear, sclr
6. Synchronous Load, sload
7. Data In, data—lowest priority
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 8 2010, 12:46
Сообщение #6


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

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



Цитата(sazh @ Apr 8 2010, 15:43) *
Error (10207): Verilog HDL error at CountDownReload.v(7): can't resolve reference to object "NumBits"
Где он описан?
Да и приоритетность нарушаете:
...

Это - функция, в другом месте была
Код
/*!
***********************************************************************
* @brief    Calculate Number-of-Bits for Number
* @details    Вычисляет количество разрядов для представления числа
* @param    Number - число
* @return    NumBits - количество двоичных разрядов
***********************************************************************/
function integer NumBits (input integer Number);
begin
  NumBits = 0;
  while (Number)
  begin
    NumBits++;
    Number >>= 1;
  end
end
endfunction

Приоритетность нарушаю? unsure.gif
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 8 2010, 18:06
Сообщение #7


Гуру
******

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



Цитата(ViKo @ Apr 8 2010, 16:01) *
Приоритетность нарушаю? unsure.gif


Ну накрутили. Снимаю шляпу.
Код
module CountDownReload
#(parameter PERIOD = 16)
  (
  input Reset_n, Clock, Enable,
  output reg [WIDTH:0] Count
  );
  localparam WIDTH = clogb2(PERIOD);

function integer clogb2 (input [31:0] value);
if (value < 2)              clogb2 = 1;
else                 begin
value = value - 1;
for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1)
value = value >> 1;
                     end
endfunction

  always @(negedge Reset_n, posedge Clock)
  if (!Reset_n)
       Count <= PERIOD-2;
  else
    if (Enable)
      if (Count[WIDTH])
        Count <= PERIOD-2;
      else
        Count <= Count - 1'b1;
endmodule
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 9 2010, 09:01
Сообщение #8


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

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



Цитата(sazh @ Apr 8 2010, 21:21) *
Ну накрутили. Снимаю шляпу.

Хотел, чтобы загрузка в ACEX шла нулем, согласно архитектуре.
Ваш пример работает в Cyclone III быстрее. Наверное, потому, что в Циклон загрузка идет единицей sload .

to des00
Посмотрите на картинку для последнего slon'а.
По-моему, все проблемы в сигнале cnt_en, который, вообще говоря, хрен знает зачем нужен. Есть же clk_en.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
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
|- - 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 10 2010, 18:27
|- - des00   Цитата(ViKo @ Apr 10 2010, 13:42) Приколы...   Apr 11 2010, 05:32
|- - ViKo   Цитата(des00 @ Apr 11 2010, 08:47) у меня...   Apr 11 2010, 07:28
|- - 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 - 02:19
Рейтинг@Mail.ru


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