Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите со схемой
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
essev
снаружи
ViKo
Цитата(Victor® @ Nov 12 2010, 20:00) *
Что-то Вы сами запутались и меня путаете...

Давайте внесем ясность. Просто так с одной ступени на следующую перенос не передается. Ведь те переносы, что формируются внутри каждой ступени, имеют разную длительность. Их нужно объединять по И - все предыдущие, для формирования разрешения счета для следующей ступени. На этом объединении быстродействие счетчика и ограничивается. Если на одном LUT можно объединить 4 таких переноса, значит, максимально быстродействующий счетчик может быть 4*4 + 4 = 20 разрядов (каждая ступень - 4-разрядная, всего их 4 для формирования переноса и еще одна 4-разрядная ступень, использующая этот перенос). Дальше потребуется несколько логических элементов, чтобы выработать разрешение счета.
Можно и последовательно передавать перенос-разрешение из ступени в ступень, что, естественно, будет еще медленнее.
В-общем, 64-разрядный счетчик с быстродействием 2-разрядного регистра сдвига - не получится.
P.S. а так, как я описал в сообщении №28 (и как ошибочно предположил, было сделано у вас в сообщении №35)- можно сделать быстрый счетчик. Потому что там не нужно учитывать предыдущие переносы. Только считать будет "абы что".
essev
Цитата(DmitryR @ Nov 12 2010, 10:05) *
Код
module sum(
   input         clk,
   input         rstn,
   input  [ 7:0] din,
   input         dvin,
   output [23:0] dout
);

reg [ 8:0] lsb;
reg [15:0] msb;
reg [ 7:0] lsb_d;

always @(posedge clk or negedge rstn)
   if(!rstn)
      begin
         lsb<=0;
         lsb_d<=0;
         msb<=0;
      end
   else
      begin
         if(dvin)
            lsb<={1'b0,lsb[7:0]}+{1'b0,din};
         if(lsb[8])
            msb<=msb+1;
         lsb_d<=lsb[7:0];
      end

assign dout={msb,lsb_d};

endmodule


Это для беззнакового сложения. Если надо со знаком - додумайте.



посимулировал код DmitryR....

Мне кажется, там ошибка, если, снимать сигнал разрешения счета dvin,
т.к. lsb[8] останется равным 1 и это будет вызывать зацикливание старших разрядов всего сумматора.

Ну, например, подать 252, затем 9 при dvin = 1, а потом снять dvin...

essev
немного офтоп

у кого-нить есть лицензия для квартус 9.0 чтобы семейство поддерживалось?
У меня пишет - not installed и прихидится в 8.0 компилить

Может квартус 9.1

Спасибо
des00
Цитата(essev @ Nov 15 2010, 10:39) *
у кого-нить есть лицензия для квартус 9.0 чтобы семейство поддерживалось?
У меня пишет - not installed и прихидится в 8.0 компилить

как то не вяжется not supported с not installed, не надо было при установке от полного пакета отказываться %)
essev
надо поглядеть ))) а то я думал, что лицуха не полная ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.