Circuito que conta o número de bits definidos em entrada de 15 bits
-
13-09-2019 - |
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.
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.