|
Подсчет нулей или единиц |
|
|
|
 |
Ответов
|
May 13 2009, 18:01
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Цитата(SM @ May 13 2009, 13:44)  А эффективнее всего это делать на дереве полных сумматоров с использованием их входов переносов, подавая везде на перенос один бит входных данных. Как раз с полными сумматорами здесь не очень-то получается, по крайней мере на Альтере. Похоже, что есть ограничения на то, откуда можно подавать данные на вход переноса в альтеровской LE. Получается, что если туда подается сигнал не с выхода переноса соседней ячейки, то приходится задействовать еще одну LE. А в этом случае уже более оптимальным получается дерево, имеющее полусумматоры на первом сложении (лучше 2 полусумматора, чем один полный).
|
|
|
|
|
May 14 2009, 04:01
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Artem_Petrik @ May 13 2009, 13:01)  Как раз с полными сумматорами здесь не очень-то получается, по крайней мере на Альтере. Похоже, что есть ограничения на то, откуда можно подавать данные на вход переноса в альтеровской LE. Получается, что если туда подается сигнал не с выхода переноса соседней ячейки, то приходится задействовать еще одну LE. А в этом случае уже более оптимальным получается дерево, имеющее полусумматоры на первом сложении (лучше 2 полусумматора, чем один полный). а можно пример ? для наглядности пусть будет 64-х битный вектор и сравните результат синтеза с http://electronix.ru/forum/index.php?showt...st&p=549588вопрос возник не просто так. простой оценочный расчет для альетры схемы на полусуматорах 32*1 + 16*2 + 8*3 + 4*4 + 2*5 + 1*6 = 120 ячеек, схемы на "нечестных" полных сумматорах 16*2 + 8*4 + 4*5 + 2*6 + 1*7 = 103 ячейки. Сделал как вы предлагаете (если я вас правильно понял) и квартус со мной согласился
--------------------
|
|
|
|
|
May 14 2009, 16:40
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Цитата(des00 @ May 14 2009, 07:01)  вопрос возник не просто так. простой оценочный расчет для альетры схемы на полусуматорах 32*1 + 16*2 + 8*3 + 4*4 + 2*5 + 1*6 = 120 ячеек, схемы на "нечестных" полных сумматорах 16*2 + 8*4 + 4*5 + 2*6 + 1*7 = 103 ячейки. Да, вы правы, полные сумматоры лучше. Просто показалось что будет лучше на двух LE сложить 4 бита вместо трех, а оказалось, что все не так просто. Виноват, был неправ. Цитата(des00 @ May 14 2009, 07:01)  и квартус со мной согласился Ага, так вы с ним заодно!
|
|
|
|
|
May 15 2009, 05:01
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
В книге Shevkoplias "Microprocessornye Structury" (стр 479) предлагают такой алгоритм. Вырезка этого алгоритма во вложении Когда-то давно я реализовал на VHDL логический элемент, который считает число единиц во входных данных так (он реализован на сумматорах) Описание портов: data – N разрядный вход add – N разрядный выход Код library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Vcnt1s is Port ( data : in std_logic_vector(15 downto 0); add : out std_logic_vector(4 downto 0)); end Vcnt1s;
architecture Behavioral of Vcnt1s is begin
process (data) variable S : std_logic_vector(4 downto 0); begin S := "00000"; for i in 0 to 15 loop if data(i) = '1' then S := S + "00001"; end if; end loop; add <= S; end process;
end Behavioral;
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
Сообщений в этой теме
Egel Подсчет нулей или единиц May 13 2009, 09:52 Oldring Цитата(Egel @ May 13 2009, 13:52) Подскаж... May 13 2009, 10:02 SM assign temp_a = (in_data & 64'h55555555555... May 13 2009, 10:08 des333 Цитата(SM @ May 13 2009, 14:08) assign te... May 13 2009, 10:51  des00 Цитата(SM @ May 13 2009, 04:44) Проверено... May 13 2009, 11:09   SM Цитата(Artem_Petrik @ May 13 2009, 22:01)... May 13 2009, 21:12       SM Цитата(Maverick @ May 15 2009, 09:01) Выр... May 15 2009, 05:41        Oldring Цитата(SM @ May 15 2009, 09:41) Она, пожа... May 15 2009, 10:51         SM Цитата(Oldring @ May 15 2009, 14:51) по т... May 15 2009, 10:53        sazh Цитата(SM @ May 15 2009, 09:41) Эту схему... May 15 2009, 11:20         Maverick Цитата(SM @ May 15 2009, 08:41) Эту схему... May 15 2009, 12:49          SM Цитата(Maverick @ May 15 2009, 16:49) Что... May 15 2009, 14:13        des333 Цитата(SM @ May 15 2009, 09:41) Эту схему... May 15 2009, 16:05         SM Цитата(des333 @ May 15 2009, 20:05) Я дум... May 15 2009, 16:21         Maverick Цитата(des333 @ May 15 2009, 19:05) Я дум... May 16 2009, 15:55          SM Цитата(Maverick @ May 16 2009, 19:55) реа... May 17 2009, 14:12           Maverick Цитата(SM @ May 17 2009, 17:12) Исходя из... May 17 2009, 15:25 PeterD А так?
always @(posedge clk) begin
one [7:0] = in... May 13 2009, 10:52 Egel Но какие частоты будут с 180 разрядным сумматором?... May 13 2009, 10:56 SM Цитата(Egel @ May 13 2009, 14:52) Но каки... May 13 2009, 10:58 SM Цитата(Egel @ May 13 2009, 14:56) Надо вс... May 13 2009, 11:03 Egel Всем огромное спасибо. Очень сильно помогли May 13 2009, 11:01 Postoroniy_V 2 Admin
ИМХО популярная тема у народа, может того ... May 13 2009, 13:29 Leka А я поспорю
Весь проект написаный в таком стиле,... May 15 2009, 11:11 Oldring Цитата(Leka @ May 15 2009, 15:11) А я пос... May 15 2009, 11:18  Leka Цитата(Oldring @ May 15 2009, 15:18) То е... May 15 2009, 11:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|