Pergunta

Como construir um circuito área-eficiente, que conta o número de bits definidos em entrada de 15 bits usando LUTs de 4 entradas (tabelas de consulta). A saída é, obviamente, de 4 bits (contagens 0-15). Alguns afirmam que é possível fazer usando 9 LUTs.

Foi útil?

Solução

Eu posso fazê-lo em 10. É uma primeira fase de balcão (4 mesas), em seguida, uma víbora 2 palco com carry (3 e 3 mesas).

Eu suspeito que há uma maneira de fazer melhor, porque eu não usar cada LUT completamente, mas às vezes um design simples vale a pena o custo extra. Tentei outras abordagens e ainda precisava de 10.

Boa sorte em sua casa. (:

Outras dicas

Bem, eu vou ajudar a começar. Sua primeira camada de tabelas de pesquisa será parecido com este:

0 0 0 0 = 00
0 0 0 1 = 01
0 0 1 0 = 01
0 0 1 1 = 10
0 1 0 0 = 01
0 1 0 1 = 10
0 1 1 0 = 10
0 1 1 1 = 11
1 0 0 0 = 01
1 0 0 1 = 10
1 0 1 0 = 10
1 0 1 1 = 11
1 1 0 0 = 10
1 1 0 1 = 11
1 1 1 0 = 11
1 1 1 1 = 00

Espalhe quatro deles em toda a sua entrada quinze bits, tomar as saídas e passá-las através de duas novas tabelas de pesquisa que se parecem com isto:

0 0 0 0 = 000
0 0 0 1 = 001
0 0 1 0 = 010
0 0 1 1 = 011
0 1 0 0 = 001
0 1 0 1 = 010
0 1 1 0 = 011
0 1 1 1 = 100
1 0 0 0 = 010
1 0 0 1 = 011
1 0 1 0 = 100
1 0 1 1 = 101
1 1 0 0 = 011
1 1 0 1 = 100
1 1 1 0 = 101
1 1 1 1 = 110

... e assim por diante. Claro, você vai ter de resolver o problema de todos os zeros e todos aqueles que produzem a mesma saída na primeira camada.

E eu posso estar totalmente errado.

Aqui algum código C que conta o número de bits: C código para contar o número '1' pedaços . Você vai ter que converter isso em seu hardware.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top