Làm thế nào để tính toán số lượng 1s?

X

xvibe

Guest
Cách tốt nhất để tính toán các con số của 1s trong một từ 32bit là gì?Lưu ý rằng 32bit từ chiều dài chỉ là ví dụ.Nó phải là hợp lệ cho độ dài từ khác.
Tôi phải biết cách biểu diễn, cách dễ nhất, nhỏ cách ...

 
Hiệu suất cách - tra cứu bảng, nhưng có thể là rất lớn, trừ khi bạn có thể chia nó.

Cách dễ nhất - thay đổi và tính.

Cách nhỏ nhất - có thể thay đổi và tính.

Git

 
Làm thế nào về cách sử dụng adders tổng kết tất cả các con số và cho họ một bộ giải mã để propperly cho các con số của 1s?Điều này âm thanh như một cái nhìn lên bảng, nhưng với metod này bạn có thể mở rộng nó đến một số 1s ...
Sử dụng một cái nhìn lên bảng là tốt đẹp (tưởng chính của tôi) nhưng là rất frustating xây dựng một cái nhìn lên bảng để tính toán 1s trong một từ 256bits!
Các metod thay đổi sẽ yêu cầu để đồng hồ nhiều ....

 
Tổng kết và giải mã sẽ yêu cầu phân chia và phân chia là có hiệu quả Công Vân và đếm.

Làm thế nào về chia tách từ thành 8 byte bit và sử dụng 256 bảng tra cứu cùng một mục nhập trên mỗi byte.Điều đó có lẽ sẽ là sự thỏa hiệp tốt nhất giữa tốc độ, chi phí, và khả năng để làm N bit trong đó N là một bội số của 8, hoặc N là arbitrrary nếu bạn gói các byte cuối với zeros MS.

Git

 
U8 num_ones (U32 u)
(
U8 u2 = 0;
trong khi (u = 0!)
(
u = u & (u-1);
u2 ;
)
trở lại u2;
)

 
Xin lỗi, nhưng ngôn ngữ là những gì?
Bạn có cần đồng hồ để làm gì?Dường như nó cần ...

 
Đó là một C-ngôn ngữ thuật toán bằng văn bản.

# define U8 unsigned char
# define U32 unsigned long

Các hoạt động u = u & (u-1); loại bỏ hầu hết các bên phải "một".Giải pháp là phần mềm, nhưng có lẽ nó có thể giúp bạn.

 
Chào,

Tổng FPGAs có 4-bit, LUT.
Tách 32-bit từ thành 11 * 2 3-bit LUT (11 được yêu cầu phải có 32 / 3) và 2 là cần thiết để đếm số lượng 1s trong 3-bit.

Sau đó, chỉ cần Sum tất cả 11 bạn 2-bit.

bạn có thể thêm một số FF nếu bạn cần tốc độ.

AMCC

 
như thế nào về việc sử dụng truy cập vào một số đếm số lượng nhất định (theo CLK)?

 
Xvibe,

Nếu bạn muốn làm điều đó trong một chu kỳ đồng hồ tập tin đính kèm là một cách để làm điều đó trong VHDL.

Tổng hợp với synplify:

Phần mục tiêu: rtax1000s-s
Combinational Cells: 81
/ 12096 (1%)
Sequential Cells: 38
/ 6048 (1%)
Tổng số Cells: 119 của 18144 (1%)
Đồng hồ Buffer: 2
IO Cells: 40

Chi tiết:
add1: 5 comb: 1
and2: 7 comb: 1
and3a: 1 comb: 1
cm8: 47 comb: 1
xor2: 21 comb: 1

dfc1b: 38 seq: 1

clkbuf: 1 đồng hồ đệm
hclkbuf: 1 đồng hồ đệm
inbuf: 32
outbuf: 6

Yêu cầu 50MHz có 90MHz.

Cả hai đầu vào và đầu ra là buffered nhưng, phụ thuộc vào ứng dụng của bạn và ngân sách thời gian có sẵn, có lẽ không có được.

Radix
Xin lỗi, nhưng bạn cần phải đăng nhập để xem tập tin đính kèm này

 

Welcome to EDABoard.com

Sponsor

Back
Top