|
Счетчик на примитивах 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 7 2010, 13:36
|

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

|
По совету участников обратился к мегафункции LPM_COUNTER, с помощью Визарда создал Verilog модуль, который можно вставлять в свой проект, причем, кое-что можно и менять, например, разрядность. Раскладывается, как положено, быстродействие отличное. Большего мне не надо. Вот он какой, модуль. Код module MWLPM_Counter ( aclr, clk_en, clock, cnt_en, data, sload, cout, q);
input aclr; input clk_en; input clock; input cnt_en; input [23:0] data; input sload; output cout; output [23:0] q;
wire sub_wire0; wire [23:0] sub_wire1; wire cout = sub_wire0; wire [23:0] q = sub_wire1[7:0];
lpm_counter lpm_counter_component ( .sload (sload), .clk_en (clk_en), .aclr (aclr), .clock (clock), .data (data), .cnt_en (cnt_en), .cout (sub_wire0), .q (sub_wire1), .aload (1'b0), .aset (1'b0), .cin (1'b1), .eq (), .sclr (1'b0), .sset (1'b0), .updown (1'b1)); defparam lpm_counter_component.lpm_direction = "UP", lpm_counter_component.lpm_port_updown = "PORT_UNUSED", lpm_counter_component.lpm_type = "LPM_COUNTER", lpm_counter_component.lpm_width = 24;
endmodule Обращается к lpm_counter. А тот представляет собой AHDL файл, который, я, собственно, и пытался "изобрести". Вывод такой - если хочешь качества - используй LPM, если все равно - пиши по-простому, на Verilog.
|
|
|
|
|
Apr 8 2010, 04:38
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(ViKo @ Apr 7 2010, 20:51)  Вывод такой - если хочешь качества - используй LPM, если все равно - пиши по-простому, на Verilog. Код module slon ( input clk, output bit [63:0] cnt );
always_ff @(posedge clk) begin cnt <= cnt + 1; end
endmodule Floorplan:
Одна из ячеек (любая):
Что я делаю не так?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 8 2010, 08:50
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(des00 @ Apr 8 2010, 15:11)  теперь еще добавить alcr, clk_ena, sload, cnt_en как в сабжевом примере и посмотреть. очень занятные вещи видятся для разных семейств (причины уже обсуждали на этом форуме) %) Код //------------------------------------------------------------------------------ module slon ( input clk, input rst,
input cnt_en,
input [63:0] data, input load, output bit [63:0] cnt );
always_ff @(posedge clk, posedge rst) begin if(rst) begin cnt <= 0; end else begin if(cnt_en) begin if(load) begin cnt <= data; end else begin cnt <= cnt + 1; end end end end
endmodule //------------------------------------------------------------------------------
P.S. EP2C8F256I8 @ Quartus II 9.0 Build 235 06/17/2009 SJ Full Version, Service Pack Installed: 2
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 8 2010, 12:50
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(des00 @ Apr 8 2010, 18:56)  я не зря перечислил нужные сигналы, Цитата теперь еще добавить alcr, clk_ena, sload, cnt_en Код module slon ( input clk, input rst,
input clk_en, input cnt_en,
input [63:0] data, input load, output bit [63:0] cnt );
always_ff @(posedge clk, posedge rst) begin if(rst) begin cnt <= 0; end else begin if(clk_en) begin if(load) begin cnt <= data; end else begin if(cnt_en) begin cnt <= cnt + 1; end end end end end
endmodule Так? Результат в смысле выстраивания счетчика в сгруппированном виде не изменился (скриншоты делать и слать лень). Цитата(des00 @ Apr 8 2010, 18:56)  посмотрите для начала на таблицу истинности lpm_counter потом сравните со своим кодом %) lpm_counter может быть сконфигурирован очень разнообразно, начиная от первого моего примера и включая этот. Какую именно конфигурацию вы имеете в виду? И что в ней мешает синтезатору слепить счетчик в сгруппированных ячейках и с использованием быстрых переносов?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 8 2010, 13:59
|

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

|
Цитата(des00 @ Apr 8 2010, 16:53)  пример Viko MWLPM_Counter в посте №25 дает 26 плиток для третьего сыклона, ваш пример slon подрихтованный по разрядности + выход cout дает 50 плиток для того же сыклона. Видимо, дело, в cout (которого нет у dxp). Потому что последний slon на 24 разряда дает те же 26 "плиток". Приведите свой модуль. Ой, нет - 24 "плитки", 26 было для ACEX.
|
|
|
|
Сообщений в этой теме
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 Цитата(dxp @ Apr 8 2010, 16:05) Какую име... Apr 8 2010, 13:24       dxp Цитата(ViKo @ Apr 8 2010, 20:39) Правда, ... Apr 8 2010, 13:45 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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|