Vous êtes sur la page 1sur 27

Universidade Federal de Campina Grande Centro de Engenharia Eltrica e Informtica Departamento de Engenharia Eltrica Laboratrio de Arquitetura de Sistemas Digitais

Relatrio de Projeto: Compositor musical

Alunos: Augusto Jos Silva Firmo Ravel Alves Martins

Matrcula: 109110851 Matrcula: 109110482

Campina Grande, 2012

1. Introduo: Resumo: Utilizando da placa DE2 que contem o FPGA Cyclone EP2C35F672C6, desenvolvemos um compositor musical capaz de produzir todas as notas musicais em 5 escalas diferentes e nos tempos mais utilizados em composies musicais. Para isso usamos grande parte dos recursos apresentados na primeira parte da disciplina, a qual trata da linguagem verilog. Motivao: A ideia partiu da nossa paixo por jogos de vdeo games antigos, incluindo suas trilhas sonoras. Com isso nossa ideia foi de produzir um compositor que pudesse reproduzir sons parecidos com os de consoles como Super Nintendo ou Mega Drive, somado com alguns dos recursos de reprodutores de udio mais modernos. Tentamos desta maneira, fazer o projeto da forma mais intuitiva possvel, sendo assim capaz de ser utilizado por qualquer pessoa. 2. Fundamentao Terica: Para que o desenvolvimento do projeto fosse possvel tivemos que primeiro entender como uma msica formada, quais seus elementos principais e como se fazer a unio destes. Tendo isso em mente apresentamos agora os elementos bsicos da msica. Nota: o elemento mnimo de um som, formado por uma vibrao, sendo a frequncia desta vibrao o elemento diferenciador entre uma nota e outra. O nome das notas (d, r, mi, f, sol, l, si) teve sua origem na msica Coral Medieval, sendo o monge italiano Guido dArezzo a propor este sistema de nomear as notas. Ut queant laxis, Resonare fibris, Mira gestorum, Famuli tuorum, Solve polluti, Labii reatum. Traduo: "Para que os teus servos possam cantar as maravilhas dos teus atos admirveis, absolve as faltas dos seus lbios impuros". Mas tarde Ut foi substitudo por d e o si foi adicionado como abreviao de Sante Iohannes. Nos pases latinos adaptou a designao d, r, mi, f, sol, l, si para C, D, E, F, G, A, B. Tom: a referncia de altura entre duas notas musicais, ou seja, a frequncia que diferencia entre uma nota e outra. Temos que um tom equivale a , onde fo a frequncia em que se encontra a nota atual, de maneira aproximada devemos multiplicar a frequncia da nota atual por 1,12 e assim obtemos a frequncia da prxima nota. Vendo-se que a diferena entre uma nota e outra era grande e que intervalos entre essa mudana tambm eram perceptveis para o ouvido humano, criou-se ento o meio tom, o que deu origem as notas sustenidas (#) que equivalem as notas meio tom acima e bemis (b) que equivalem as notas meio tom abaixo, um meio tom equivale a

, ou seja, para obtermos a frequncia de uma nota sustenida, de maneira simplificada devemos multiplicamos a frequncia da nota atual por 1,059, obtendo assim a frequncia da nota meio tom acima. Oitava: este nome tem haver com a escala maior, que seria a sequncia composta por d, r, mi, f, sol, l, si, d. Com isso diz-se que o segundo d est uma oitava acima do primeiro. Chama-se oitava pelos intervalos entre as notas, partindo de alguma nota da escala (por exemplo o mi) o f est separado deste por um intervalo de segunda, o sol por um intervalo de tera, o l por um intervalo de quarta e assim sucessivamente at chegar ao intervalo de oitava que ser novamente o mi, uma oitava acima. Percebendo que para se subir uma oitava da nota, subimos 6 vezes um tom ou 12 vezes um meio tom, temos assim que a diferena de oitavas entre uma nota e outra sempre ser o dobro ou a metade da frequncia da nota em questo. Tempo: foram desenvolvidos tempos de durao para cada nota usando como referncia os compassos musicais, foram ento escolhidos os tempos de 1/32 segundos, 1/16 segundos, 1/8 segundos, 1/4 segundos, 1/2 segundos, 1 segundo e 2 segundos, j que estes so os tempos mais usados em composies musicais. Segue abaixo uma tabela com todas as notas e suas respectivas frequncias implementadas no projeto: Nota 1 oitava 2 oitava 3 oitava 4 oitava D 66 Hz 132 Hz 264 Hz 528 Hz D# 69 Hz 138 Hz 276 Hz 552 Hz R 73 Hz 146 Hz 292 Hz 584 Hz R# 77 Hz 154 Hz 308 Hz 616 Hz Mi 82 Hz 164 Hz 328 Hz 656 Hz F 87 Hz 174 Hz 348 Hz 696 Hz F# 92 Hz 184 Hz 368 Hz 736 Hz Sol 98 Hz 196 Hz 392 Hz 784 Hz Sol# 104 Hz 208 Hz 416 Hz 832 Hz L 110 Hz 220 Hz 440 Hz 880 Hz L# 116 Hz 232 Hz 464 Hz 928 Hz Si 123 Hz 246 Hz 492 Hz 984 Hz Tabela 01: Todas as notas e frequncias implementadas. 3. Desenvolvimento de Algortmo: 3.1 Composer e Player Este sesso ser organizada de acordo com a ordem de implementao dos mdulos do projeto. medida que se estabelecem os objetivos do projeto, mostramse as aes tomadas para realizao dos mesmos e os problemas enfrentados. No cdigo, vale ressaltar, apresenta-se em comentrio a direita de cada input e output os termos usados pelo Mod_Teste para interao entre os mdulos instanciados (Ex: fios, chaves e LEDs). O primeiro objetivo foi criar um modulo para realizar as aes do Composer e outro para o Player da msica de acordo com as chaves e botes da FPGA. Essas aes incluem tanto a monitorao do valor atual de chaves quanto de bordas de subida de botes. Esse foi o primeiro obstculo encontrado por causa da estrutura do Always@(). Ela no aceitava ao mesmo tempo parmetros que respondem unicamente a uma borda subida (botes) junto de parmetros que respondem a ambas (chaves). 5 oitava 1056 Hz 1104 Hz 1168 Hz 1232 Hz 1312 Hz 1392 Hz 1472 Hz 1568 Hz 1664 Hz 1760 Hz 1856 Hz 1968 Hz

Para resolver o problema, dividimos cada modulo em um modulo de controle e modulo de execuo e reorganizamos a monitorao das chaves e botes. A comunicao entre eles feita por flags de 1 bit. Em nossas projeto apenas uma dupla desses mdulos est ativa por vez: Composer ou Player. Para Determinar qual dupla est ativa utilizamos o input seletor (chave 17) nestes mdulos. Se a chave estiver em nvel alto ativo seleciona a dupla do Composer e caso contrrio seleciona a dupla do Player. Assim, nunca se usa o Player e o Composer ao mesmo tempo. A seguir, ser dada uma viso geral de como feita a comunicao entre esses mdulos e em seguida ser exposto os mdulos que participam desta comunicao. 3.1.1 Mdulos de Controle

Ambos os mdulos de controle so bem simples e semelhantes, ento a explicao de ambos ser feita conjuntamente. Os mdulos de controle (Controle_Composer e Controle_Player) monitoram no always@(), unicamente, a subida de borda de suas entrada: chaves e botes. Caso detectem uma subida de borda em alguma dessas entradas, eles invertem o estado do bit do flag respectivo dessa entrada. Para esse fim, utiliza-se um inputs de 1 bit para a entrada e um reg output de 1 bit para a sada de cada flag. Cada um dos flags constantemente mandado pelas sadas do modulo de controle para as entradas do modulo de execuo respectivo. Esses mdulos so assncronos. Todas as variveis utilizadas possuem nomes que referenciam flags e associao de seu servio direta. Portanto, no entramos em mais detalhes sobre a identificao das mesmas quando as mesmas. Cada flag faz referncia a uma ao e as aes so implementadas nos mdulos de execuo. Logo, por questo de organizao os detalhes sobre cada ao sero descritos junto de seus mdulos de execuo.

Figura 01 Mdulo Controle_Composer

Figura 02 Mdulo Controle_Player

3.1.2 Mdulos de Execuo Os mdulos de execuo possuem partes semelhantes que sero explicadas conjuntamente e partes especficas que sero abordadas separadamente. Ambos os mdulos de execuo (Composer e Player) monitoram no always@(), a inverso do bit dos flags que recebem do modulo de modulo de controle respectivo e os estado atual das chaves, ou seja, parmetros que respondem a ambas as bordas. Em funo disso, emprega-se um input de 1 bit para entrada e reg de 1 bit para guardar o estado anterior de cada flag. A deteco da inverso feita por uma comparao constante do estado anterior com o estado de entrada (atual). Caso detectem a inverso do estado do bit de algum flag, o modulo de execuo realiza a ao referenciada pelo flag. Enfim, existindo a deteco da inverso ou no, o cdigo atualiza os valores dos reg que guardam os valores anteriores dos flags para os valores dos valores de entrada (atuais). Esses mdulos so sncronos e usam o clock de 50Mhz para ordenar o tempo entre cada monitorao. Cada mdulo de execuo implementa aes especficas. Doravante, essas aes sero explicadas juntamente das variveis complementares necessrias que ainda no foram abordadas, em seus respectivos mdulos. Algumas dessas aes e variveis esto relacionadas com partes do cdigo que sero explicadas futuramente.

3.1.2.1 Composer As variveis complementares so: Inputs: controle_tempo(chave de 9 7): Recebe a durao de tempo da nota a ser escrita. A durao de tempo escolhida determina atravs de uma decoficao dos estados das chaves que pode ser observada na Tabela 02. Posio Durao de tempo (segundos) Valor de referencia_tempo 25 1562500 3125000 6250000 12500000 25000000 50000000 100000000

000 1/2000000 001 1/32 010 1/16 011 1/8 100 1/4 101 1/2 110 1 111 2 Tabela 02 Tabela do decodificador da durao de tempo

controle_oitava(chave de 6 4): Recebe a oitava da nota a ser escrita. A oitava escolhida determina atravs de uma decoficao dos estados das chaves que pode ser observada na Tabela 03. Posio Nmero da escala Fator de diviso frequncia No vlido 1 2 4 8 16 No vlido No vlido de

000 Nulo 001 1 010 2 011 3 100 4 101 5 110 Nulo 111 Nulo Tabela 03 Tabela do decodificador da oitava

controle_nota(chave de 3 0): Recebe a nota a ser escrita atravs das chaves. A nota escolhida determina atravs de uma decoficao dos estados das chaves que pode ser observada na Tabela 04. Posio 0000 0001 0010 0011 0100 0101 Nota Nulo D D # R R# Mi Valor referencia_nota No valido 25000000/66 25000000/69 25000000/73 25000000/77 25000000/82 de

0110 F 0111 F# 1000 Sol 1001 Sol# 1010 L 1011 L# 1100 Si 1101 Nulo 1110 Nulo 1111 Nulo Tabela 04 Tabela do decodificador da nota

25000000/87 25000000/92 25000000/98 25000000/104 25000000/110 25000000/116 25000000/123 No vlido No vlido No vlido

Output regs: dados_composer (w dados_composer): Resultado da concatenao de controle_tempo, controle_oitava e controle_nota. A expresso no cdigo : dados_composer = {controle_tempo, controle_oitava, controle_notas}. Caso a escrita esteja habilitada esses dados so enviados para a entrada de dados da memria RAM. endereo_composer(wendereo_composer): Resultado da concatenao de n_musica_gravacao e contador_sequencia_gravacao. A expresso no cdigo : endereo_composer = { n_musica_gravacao, contador_sequencia_gravacao }. Caso a escrita esteja habilitada esses dados so enviados para a entrada de endereo da memria RAM. rec_status(LED 8): Indica se a escrita est ativa ou no. A escrita feito apartir de uma manipulao do WREN que feita em funo do estado de rec_status e do seletor de momria(chave 16) que seleciona a memria RAM OU ROM para a operao. Se o seletor de memria selecione a RAM e rec_status = 1, ento, os dados so escritos na RAM no endereo que a mesma receber. Caso contrrio, no ocorre nenhuma escrita. Regs: contador_sequencia_gravacao(8 bits): Indica a posio da sequncia de gravao de acordo com o nmero em binrio armazenado. Varia da posio 0 255. n_musica_gravacao(2 bits): Indica a msica atual de acordo com o nmero em binrio armazenado. Possui as msicas: 0, 1, 2 e 3. As aes selecionadas para o Composer so: Rec (chave 13): Habilita/desabilita a gravao da nota da escala seleciona na posio da sequncia de gravao selecionado(endereo), incluindo sua durao no tempo. A gravao s ocorre na RAM e alm do mais de seletor de . Startpoint: Desabilita a gravao e faz com que a posio da sequncia de gravao volte para a posio inicial. Back: Passa para a prxima msica e faz com que a posio da sequncia de gravao volte para a posio inicial. Next: Passa para a msica anterior e faz com que a posio da sequncia de gravao volte para a posio inicial. Volta(chave 13): Passa para a posio anterior da sequncia de gravao. Adianta: Passa para a prxima posio da sequncia de gravao.

Figura 03 Mdulo Composer, entradas e sadas

Figura 04 Mdulo Composer, implementao das aes 3.1.2.2 Player As aes selecionadas para o Player so: Playpause: Habilita/desabilita o play e desativa o stop_flag. Stop: Desabilita o play, faz com que a posio da sequncia de leitura volte para a posio inicial, faz com que a velocidade de execuo volte para a velocidade inicial de 1X, reseta o contador do tempo da durao da nota e ativa o stop_flag . Back: Passa para a prxima msica e faz com que a posio da sequncia de leitura volte para a posio inicial. Next: Passa para a msica anterior e faz com que a posio da sequncia de leitura volte para a posio inicial. Fastforward: Passa para a prxima velocidade. (ver Tabela 05) Rewind: Passa para a velocidade anterior. (Ver Tabela 05) Posio 000 001 010 011 100 101 110 Sentido da contagem Nenhum Decrescente Decrescente Decrescente Crescente Crescente Crescente Valor da velocidade No vlido -4X -2X -1X 1X 2X 4X

111 Nenhum Tabela 05 Tabela do decodificador da velocidade Entradas e sadas:

No vlido

Figura 05 Mdulo Player, entradas e sadas Determinao dos paramtros para a criao dos contadores para o divisores de frequncias das notas:

Figura 06 Mdulo Player, parmetros das notas usado o clock de 50MHz para a criao das notas, sabendo que o contador gerado pela frmula:

Foram usadas somente as frequncias da primeira oitava, pois para a gerao das frequncias das oitavas superiores podem ser obtidas dividindo o contador pela metade, no caso dobrando a frequncia. O parmetro nulo gera uma frequncia nula, fazendo assim o efeito de uma pausa. Implementao das notas:

Figura 07 Mdulo Player, implementao das notas Aqui atribudo a referencia_nota o valor do parmetro respectivo a nota determinada pelo usurio, como a primeira oitava o valor do referencia_nota assume o valor do parmetro puro como explicado anteriormente. O defaut existe para que as posies que sobraram sejam implementadas com o parmetro zero.

Figura 08 Mdulo Player, implementao das notas Como a frequncia da terceira oitava o dobro da segunda, ou seja, 4 vezes maior que o da primeira, o dividirmos por 4, seguindo assim a mesma lgica do item anterior. Essa mesma lgica repetida para os demais cases que implementam o referencia_nota, sendo o cdigo dos mesmos mostrado abaixo:

Figura 09 Mdulo Player, implementao das notas Implementao da velocidade de execuo:

Figura 10 Mdulo Player, implementao da velocidade de execuo Aqui acontece a implementao do reg referencia_speed_status de acordo com alteraes no reg speed_status a lgica destes valores ser explicada logo a frente. Implementao do tempo da nota:

Figura 11 Mdulo Player, implementao do tempo da nota Aqui implementado a referencia para o contador que implementa o perodo do tempo, usando como exemplo a posio 001, onde o referencia_tempo possui o valor 1562500, temos que o reg contador_tempo ser incrementado a um perodo de 0,2us (perodo do clock de 50MHz) sendo permitida a sada da frequncia da nota

somente enquanto este contador incrementado de 0 a 1562500, sendo o tempo deste incremento o perodo desejado para a durao da nota, pois fazendo:

O tempo 000, implementa um perodo curtssimo pelo fato de que se todas as posies de memria para uma musica no forem utilizadas, elas por defaut possuiro os seus 10 bits iguais a zero, fazendo assim com que estas posies sejam executadas rapidamente para que a msica volte a tocar. O reg referencia_speed_status faz com que o tempo seja diminudo pela metade ou pela metade desta, fazendo com que a nota toque por um tempo mais curto, o bit 2 do reg speed_status faz com que a sequncia das notas seja tocada na ordem crescente ou decrescente dependendo do seu valor, em 0 a ordem decrescente, em 1 a ordem crescente. O resto do cdigo seria a implementao das funes geradas pelo modulo player, abaixo ele esse trecho colocado por completo e dividido em blocos, pois todas as funes so implementadas dentro do mesmo if e tambm pelo motivo de que ser necessrio uma explicao da parte final do cdigo para se entender a lgica das funes implementadas.

Figura 12 Mdulo Player Bloco 7: Atualizao dos flags. A cada ciclo de clock, os valores dos flags utilizados so atualizados pelo trecho abaixo, recebendo os novos valores dos flags vindos do modulo controle_player para que possa ser feita uma comparao entre eles. Todas as funes apresentadas agora ocorrem no if(~seletor), ou seja, s ocorrem quando o bit de seletor est em zero, caracterizando o modo de player. Bloco 1: Implementao da funo stop. Temos aqui que caso o flag de stop mude, ou seja, o usurio aperte o key[3] com o modo player ativado, os regs contador_tempo (responsvel pelo tempo de cada nota) zerado , contador_sequencia_leitura (responsvel por dizer em que posio de memria vai ser feita a leitura no momento) zerado fazendo assim com que a msica volte para o comeo, o speed_status (responsvel pela velocidade de execuo das notas) colocado no valor 4 (a explicao deste valor ser feita no comentrio do trecho que implementa a funo de velocidade) , e stop_status vai para 1, ativando assim o stop. Bloco 2: Implementao da funo play/pause. Quando o flag playpause muda, ou seja, o usurio faz com que ocorra uma borda positiva na SW[13], o reg playpause_status altera seu valor, ou seja, se est em 1 vai para 0 e vice versa, quando em 1, o play est ativo, quando em 0 o pause est ativo. E caso tenha ocorrido um stop, muda o stop_status para 0, desativando o stop.

Bloco 3: Implementao do avano e da volta das msicas. Na primeira parte est implementada a funo para voltar o nmero da msica, caso o flag_back_anterior muda seu valor, ou seja, o usurio sobe a borda da SW[15], a msica vai para a anterior pois o reg n_musica_leitura que o responsvel por determinar a msica em que se est fazendo a leitura decrementado e ainda o contador_sequencia_leitura zerado fazendo com que a msica v para a sua primeira posio, o contador_tempo zerado para que no pegue lixo de notas anteriores e o speed_status igualado a 4 para voltar a velocidade padro de execuo. De maneira anloga acontece a implementao para avanar a msica, mudando apenas o flag e o reg n_musica_leitura incrementado. Bloco 4: Velocidade de execuo: Como explicado acima, o reg speed_status altera a velocidade de execuo da msica, caso ocorra uma mudana no flag entrada_flag_fastforward a msica ser tocada mais rapidamente, caso a mudana ocorra no flag entrada_flag_rewind a msica ser tocada mais lentamente. Bloco 5: Gerao do tempo de cada nota e ordem da sequncia. Caso o playpause_status esteja ativado, o contador_tempo incrementado at chegar ao valor de referencia_tempo como j explicado acima e ainda neste bloco feito o reconhecimento da sequncia que se est lendo, como explicado acima tambm, caso o bit 2 de speed_status esteja em 1, a sequncia normal, caso esteja em 0, a msica est voltando. Bloco 6: Gerao da frequncia de cada nota. Aqui feito o divisor de frequncia para a gerao da nota, contador_nota igualado a referencia_nota explicado acima e ento decrementado, gerando assim a frequncia da nota escolhida. Bloco 8: Atualizao dos dados: Aqui ocorre a atualizao dos dados, endereo_player atualizado com o numero da msica e a posio da memria em que ser feita a leitura e dados_notas atualizado com os valores de tempo, oitava e nota. 3.1.2.3 Volume O mdulo volume responsvel de controlar a amplitude do sinal que chega ao speaker. Ele recebe o seletor, para s atuar durante o player, juntamente do estado atual do speaker e o controle_volume que indica o volume atual de acordo com o nmero em binrio gerado nas chaves. O controle do volume foi feito a partir da prpria sada da VGA_R que possui 10 bits de sadas. Percebemos que a tenso aplicada na sada era proporcional ao nmero em binrio no bits de VGA_R. Isto estava correto, porm os primeiros testes, que foram feitos sem o uso de amplificadores operacionais aps a sada da VGA_R, nos levaram a concluir que o cdigo abaixo tinha uma diferena perceptvel aos diferentes nveis de volume, porm essa diferena s foi relevante para nveis baixos de tenso, como apontado anteriormente a sada mxima era 0,725 V, na sada da VGA_R que iriam para o speaker.

Figura 13 Mdulo volume, com diferena entre nveis pouco perceptvel. Nos testes com o amplificador operacional a variao apenas dos ltimos 3 bit no ofereceu uma diferena significativa entre os nveis de volume aps a amplificao. Ento, alterou-se no cdigo uma das sadas para 000_0111_000 e se obteve uma combinao em que existia uma diferena relevante de volume em relao s outras. Nesta sada, houve uma diviso pro 8 do volume 7, que era o volume mximo. Anteriormente, entre um nvel e outro de tenso existia apenas um incremento constante, mesmo esse incremento sendo nos ltimos 3 bits. Diante do exposto, corrigimos o cdigo e o resultado encontra-se abaixo. Enfim, a diferena entre os nveis ficou mais perceptvel porque agora entre um nvel e outro existe uma diviso ou multiplicao por 2 do nmero em binrio que a VGA_R usa para controlar sua tenso.

Figura 14 Mdulo volume, corrigido.

3.1.2.4 Conversores da interface grfica

A fim de facilitar a gravao no composer e percepo do que estava acontecendo no player, foi criado um sistema de interface grfica. Este sistema possui duas frentes: os display de 7 segmentos de HEX0 at HEX6 e os leds. O primeiro mdulo foi o Conv_Hexa_7seg, o mesmo mdulo usado no laboratrio. Ele recebe quadro bit e de acordo com o nmero que essa entrada representa ativa o display para mostras o nmero em hexadecimal. Foi instanciado trs vezes, abaixo mostramos o que cada instanciao indica no display e a tabela da cdigo de sinais no display. 1 instanciao: HEX6 indica o nmero da msica atual. Variando de 0 3. Esta variao garantida porque na entrada os ltimos 2 bits sempre receberam 0 do fio wzero. 2 instanciao: HEX5 indica o algarismo mais posio atual da sequncia (endereo na memria RAM ou ROM) seja o modo selecionado o composer ou player. O endereo na memria s possui 2 algarismo em hexadecimal. 3 instanciao: HEX4 indica o algarismo mais posio atual da sequncia (endereo na memria RAM ou ROM) seja o modo selecionado o composer ou player. O endereo na memria s possui 1 algarismo em hexadecimal. Estado display do Entrada 1100 Nmero em Estado Hexa display 1 do

Entrada Nmero em Hexa 0000 0

0001

1001

0010

1010

0011

1011

0100

1100

0101

1101

0110

1110

0111

1111

Tabela 06 Tabela do Conv_Hexa_7seg

Figura 15 Mdulo Conv_Hexa_7seg O mdulo Conv_Hexa_7seg_Tempo, cria um cdigo de sinais no display para indicar qual a durao do tempo da nota. Este cdigo possui 8 sinais e o ltimo bit da entrada do conversor sempre recebe zero do fio wzero. Abaixo, apresenta-se a tabela do cdigo de sinais dos display desconsideram o ltimo bit da entrada (sempre zero). Para representar o a durao nula, que na verdade de 1/2000000 de segundo, usa-se o smbolo -. Entrada Durao de Estado tempo display (segundos) 000 1/2000000, ou seja, indica nulo 001 1/32 do Entrada Durao de Estado tempo display (segundos) 1/4 do

100

101

1/2

010

1/16

110

011

1/8

111

Tabela 07 Tabela do Conv_Hexa_7seg_Tempo

Figura 16 Modulo Conv_Hexa_7seg_tempo O mdulo Conv_Hexa_7seg_Oitava, semelhante ao mdulo acima, porm seus cdigo de sinais s possui 6 estados e as oitavas variam de 1 5. Fora deste alcance as oitavas so nulas e coloca-se o smbolo de nulo -. Entrada Escala XXXX Nula Estado display do Entrada 0100 Escala 3 Estado display do

0001

0101

0010

0110

Tabela 08 Tabela do Conv_Hexa_7seg_Oitava

Figura 17 Modulo Conv_Hexa_7seg_Oitava O mdulo Conv_Hexa_7seg_Nota, recebe em suas entrada um nmero e na sada mostra no display a nota referente deste nmero. Possui 12 notas, abrangendo do D at o Si de uma mesma oitava. Fora deste alcance as notas so nulas e coloca-se o smbolo de nulo -. Entrada Cifra Nota XXXX da Estado do Entrada display(s a letra) Nenhum 0111 Cifra Nota C da Estado do display(s a letra)

0001

C#

1000

0010

D#

1001

0011

1010

F#

0100

1011

G#

0101

1100

0110

Tabela 09 Tabela do Conv_Hexa_7seg_Nota

Figura 18 Modulo Conv_Hexa_7seg_Nota O mdulo Conv_Hexa_7seg_Sustenido, recebe a mesma entrada do mdulo Conv_Hexa_7seg_Nota e se preocupado apenas em captar quando a nota sustenido. Se a nota sustenido, ele coloca um H no display como aproximao do sustenido e caso contrrio no coloca nada no display. Se a nota for nula ele coloca o smbolo de nulo -. Entradas Cifra Nota 0010 0100 0111 1001 1011 C# D# F# G# A# da Estado do Entradas display(s o sustenido) 0001 0011 0101 0110 1000 1010 1100 Cifra Nota C D E F G A B da Estado do display(s o sustenido)

XXXX

nula

Tabela 09 Tabela do Conv_Hexa_7seg_Sustenido

Figura 19 Modulo Conv_Hexa_7seg_Sustenido O mdulo Conv_Sinalizacao_Player, realiza a ao atual do player e indica a velocidade atual de execuo. Para isso ele recebe a concatenao dos flags de status = {wstop_status, wplaypause_status, wspeed_status} e o seletor. Este ltimo funciona da mesmo forma que no mdulo volume, garantido que o mdulo Conv_Sinalizacao_Player s atuei durante a execuo do player. Os flags de status usam um cdigo de sinais para apresentar o status atual do player. Abaixo, encontrase a explicao do cdigo. Quanto as velocidades: LEDR 11, LEDR 10 e LEDR 9 acesos: velocidade em -4X. LEDR 10 e LEDR 9 acesos: velocidade em -2X. LEDR 9 aceso: velocidade em -X. LEDR 3 aceso: velocidade em X. LEDR 3 e LEDR 2 acesos: velocidade em 2X. LEDR 3, LEDR 2 e LEDR 1 acesos: velocidade em 4X.

Quanto a status: LEDR 7, LEDR 6 e LEDR 5 acesos: play LEDR 7 e LEDR 5 acesos: pause LEDR 6 aceso: stop

Figura 20 Modulo Conv_Sinalizao_Player 3.1.2.4 Memrias Para a criao de ambas as memrias foi utilizada a ferramenta megawizard plugin-maneger do quartus II. A memria RAM foi criada com endereo de 10 bits (1024 palavras), dados de 10 bits e sada de 10 bits.

Figura 21 Memria RAM A memria ROM foi criada com os mesmos parmetros da memria RAM.

Figura 22 Memria ROM 4. Montagem: Utilizamos a VGA como sada da placa DE2 para um alto-falante, mas como a sada mxima da VGA de 0,725v precisamos amplificar este sinal para que assim o udio no alto-falante seja bem escutado, para isso montamos o circuito amplificador no inversor mostrado abaixo:

Figura 23 Circuito eltrico Onde Vs a tenso de saida da VGA, temos que o ganho deste circuito dado por :

Foi decidido alimentar o alto-falante com no mximo 4v para que assim no corra o risco de queimar o componente, sendo assim temos que obter um ganho de 5,5, fixando R2 em 1k ohm, encontramos que R1 deve possuir o valor de 222 ohm, como este valor no comercial, usou-se um resistor de 200 ohm. Abaixo encontrasse fotos do circuito montado em protoboard.

Figuras 24, 25, 26, 27 Montagens O CI usado foi o 741, que encontrasse detalhado abaixo:

Figura 28 Detalhe do CI 741 1. Recursos usados da DE2: Na imagem abaixo est representada a placa DE2, e nela esto destadacos os recursos que foram utilizados para o projeto.

Figura 29 Placa DE2

1 Chaves com numerao de 0 a 17; 2 Leds vermelhos com numerao de 0 a 17; 3 Acoplamento GND; 4 Displays de sete segmentos com numerao de 0 a 7; 5 Push bottons com numerao de 0 a 3; 6 Leds verdes com numerao de 0 a 7; 7 Saida VGA. 5. Concluso: O desenvolvimento deste projeto foi bastante satisfatrio, j que alm de conseguir realizar nosso objetivo, podemos observar como os conhecimentos adquiridos na disciplina podem ser usados de forma prtica, unindo-se tambm com conhecimentos de outras disciplinas, aprimorando bastente nossa viso como engenheiros e nos ajudando a integrar conhecimentos importantes para a nossa formao.

Vous aimerez peut-être aussi