O objetivo desta prática consistiu em elaborar um projeto que envolveu o levantamento das equações booleanas para cada saída, a simplificação destas através do mapa de Karnaugh e apresentação de suas formas canônicas e reduzidas do Mintermo e Maxtermo, a representação do circuito resultante com portas lógicas, a implementação do módulo em Verilog HDL bem como sua simulação e por fim a visualização das formas de onda das simulações.
Representação do circuito a partir de portas lógicas com as expressões booleanas simplificadas pelo mapa de Karnaugh (representação em maxtermo):
Note que as expressões de Mintermo podem ser simplificadas através da propriedade booleana de distributividade e o circuito equivalente pode ser visto abaixo:
Para implementar os sinais de controle, consideramos os seguinte: Para o sinal reset consideramos que a saída se torna um valor inválido não contemplado pelos valores de entrada de 0 a 9 do Código Morse, sendo ele o valor 10 (01010), optamos por isso, ao invés de zerar todos os bits de saída, pois esse seria uma entrada válida. A funcionalidade do reset só é observada na borda de subida (de 0 para 1).
Para o sinal ready consideramos que o código é computado (saída altera conforme a entrada) apenas na borda de subida do sinal (de 0 para 1).
Após a execução obtivemos o seguinte resultado na tela:
Formas de ondas da simulação:
O arquivo “teste.v” é onde está definido a inclusão do arquivo “numero.v” e a comunicação dos elementos de entrada e saída do dispositivo com a função “fnumero”, para o devido funcionamento do módulo na FPGA (Field Programmable Gate Array).
Sendo no painel da máquina as chaves SW (switch) para “entrada” definida de 0 a 3 (4 bits), “reset” na última posição 17 (1 bit), “ready” para a penúltima 16 (1 bit) e tendo como “saída” os LEDs vermelhos nas posições de 0 a 4 (5 bits).
Após a compilação do programa no circuito integrado, o mesmo inicia-se com a entrada 01010, indicando uma entrada inválida definida pelo “initial begin”, sendo o mesmo valor definido ao “reset” quando estiver ativado. A troca dos valores se dá ao ativar o “ready” após inserir a entrada válida para a conversão, estando com o “reset” desativado.
Neste trabalho observamos que a simplificação das equações booleanas através do mapa de Karnaugh se mostrou muito eficiente, uma vez que as mesmas foram simplificadas a tal ponto que foram necessárias menos portas lógicas para a construção do circuito.
Além disso, a aplicação da propriedade distributiva foi capaz de simplificar a escrita de algumas das equações. Por outro lado, teve um aumento no número de portas lógicas que exigem menos entradas e portanto podem ser mais baratas dependendo da complexidade do circuito.
Observamos também que pelas ondas geradas através do código de teste, conseguimos observar o fluxo do funcionamento, obedecendo os sinais de controle, sendo esta uma ferramenta eficaz na visualização do comportamento das entradas e saídas.
Ao compilar o programa no Quartus para a FPGA, nós pudemos observar com sucesso as funcionalidades do planejamento de todo o trabalho proposto realizado com o grupo, passando do lado abstrato (codificação) para o concreto (palpável).
VERILOG TUTORIAL FOR BEGINNERS. Disponível em: http://referencedesigner.com/tutorials/verilog/verilog_01.php. Acesso em: 12 out. 2018
VERILOG TUTORIAL. Disponível em: http://www.asic-world.com/verilog/veritut.html. Acesso em: 12 out. 2018
DOWNLOAD ICARUS VERILOG . Disponível em: http://bleyer.org/icarus. Acesso em: 12 out. 2018
DOWNLOAD GTKWAVE. Disponível em: http://www.dspia.com/gtkwave.html. Acesso em: 12 out. 2018
DOWNLOAD Quartus Prime Lite Edition. Disponível em: http://fpgasoftware.intel.com/?edition=lite. Acesso em: 29 out. 2018