Você está na página 1de 5

Prtica n Universidade Federal do Cear Departamento de Engenharia Eltrica

Tcnicas Avanadas em Eletrnica Digital

Professores: Paulo Praa Semestre 2013.2

0X

Conversor A/D via SPI-4 Objetivos:


Implementar a leitura do conversor A/D serial ADC128S022 em FPGA utilizando o kit didtico DE0-nano; Praticar a manipulao de cdigos em VHDL para configurar taxas de converso e os canais analgicos a serem lidos.

Informaes Tericas:

As grandezas reais existentes so em sua maioria digitais. Por esse motivo a converso analgica-digital (A/D) fundamental para que se possa informar o valor de uma grandeza a um sistema digital.

O circuito integrado (CI) ADC128S022 tem a capacidade de converter sinais analgico de 0 a 3,3 V para um conjunto de 12 sinais (bits) digitais. O conversor A/D (ADC) em questo possui 8 canais de entrada analgicas. O diagrama de conexo deste CI no kit DE0-nano apresentado na Figura 1

Figura 1 - diagrama de conexo do ADC128S022 no kit DE0-nano

Percebe-se pela Figura 1 que o CI possui apenas 4 sinais digitais, isto porque a comunicao feita de forma serial. A Tabela 1 apresenta a funo de cada sinal.
Tabela 1 - Legenda dos sinais do ADC128S022

Sinal IN0...IN7 (chip select) SCLK (digital clock input) DIN (digital data input) DOUT (digital data output) VA VD AGND DGND

Funo 8 canais de entrada analgica sinal de entrada responsvel pela habilitao do CI Sinal de relgio responsvel pela converso (0.8 a 3.2 MHz) Os dados de seleo do canal analgico so carregados atravs dessa entrada, durante os pulsos de subida do sinal SCLK Os dados de digitais da converso so enviados atravs dessa saida, durante os pulsos de descida do sinal SCLK Tenso de referncia(+) analgica. Limita o sinal de entrada analgico em 3,3 V Tenso de referncia digital(+). Define o nvel lgico alto em 3,3 V (compatvel com o FPGA) Tenso de referncia(-) analgica. Tenso de referncia(-) digital.

O CI ADC128S022 possui dois modos de operao: operacional e serial. Funcionando em modo operacional o ADC realiza converses sucessivas, onde cada janela de 16 pulsos iniciada aps o termino da anterior. O diagrama de tempo apresentando na Figura 2, explicita este modo de operao.

Figura 2 - Diagrama de tempo do modo operacional do ADC128S022

J no modo serial as janelas de converso apresentam um determinando tempo entre elas, onde o sinal CS colocado em nvel lgico alto, desligando o ADC e poupando energia, que pode ser muito importante em determinados circuitos embarcados. O diagrama de tempo apresentando na Figura 3, apresenta a operao serial.

Figura 3 - Diagrama de tempo do modo serial do ADC128S022

As entradas analgicas do CI so diretamente conectadas ao Header 2x13. Tais conexes so apresentadas na Figura 4, bem como a forma de conexo do potencimetro para teste do ADC.

Figura 4 - diagrama dos canais analgicos e forma de conexo do potencimetro

Para a observao do funcionamento correto do ADC faz-se necessrio a utilizao de LEDs indicativos, por tanto, a Tabela 2 alm de listar os pinos a serem utilizados para o controle do ADC, apresenta tambm os pinos dos LEDs e do sinal de relgio de 50 MHz interno ao kit DE0-nano.
Tabela 2 - Mapeamento de pinos do kit DE0-nano

Funo Clock 50 MHz LED[7] LED[6] LED[5] LED[4] LED[3] LED[2] LED[1] LED[0] ADC_CS_N (CS) ADC_SCLK (SCLK) ADC_SADDR (DIN) ADC_DAT (DOUT)

Pino PIN_R8 PIN_L3 PIN_B1 PIN_F3 PIN_D1 PIN_A11 PIN_B13 PIN_A13 PIN_A15 PIN_A10 PIN_B14 PIN_B10 PIN_A9

Procedimentos:

1)

O cdigo abaixo utiliza o ADC128S022 do kit DE0-nano no modo operacional, realizando converses consecutivas. O canal analgico selecionado o ADC_IN1. Para o correto funcionamento, faa a definio de pinos de acordo com a Tabela 2, e conecte o potncimetro como mostrado na Figura 4.
OBS: No necessrio digitar os comentrios das linhas.

ENTITY ADC IS PORT( CS, SCLK ,DIN: OUT BIT; --Variaveis de entrada de controle do --ADC128S022 (OUT->IN) DOUT ,CLK: IN BIT; --Variaveis de saida de controle do --ADC128S022(IN->OUT) CH: IN BIT_VECTOR(3 TO 5); DATA: OUT BIT_VECTOR(11 downto 0));--Sinal convertido, saida --para os LEDs END ADC; ARCHITECTURE convert OF ADC IS SIGNAL VALOR:BIT_VECTOR(11 DOWNTO 0); SIGNAL DOUT_AUX:BIT_VECTOR(1 TO 16); SIGNAL DIN_AUX:BIT_VECTOR(1 DOWNTO 16); SIGNAL SCLK_EN: BIT:='0'; --Variavel para habilitao de SCLK SIGNAL CLK2:BIT:='0'; --Sinal de clock com frequencia j dividida BEGIN SCLK<=SCLK_EN NAND NOT(CLK2); --Se SCLK_EN for 0, SCLK=1, --caso contrario, SCLK=CLK2 DATA<=DOUT_AUX(5 TO 16); DIN_AUX<= "00"&CH&"00000000000"; Divisor_de_frequencia:PROCESS(CLK) --Diviso da frequencia do clock VARIABLE divisor: natural range 0 to 16:=0; -- 50 MHz/16 = 3,125 MHz BEGIN IF(CLK'EVENT AND CLK='1')THEN IF(divisor=16)THEN divisor:=0; CLK2<='1'; ELSIF(divisor>=8)THEN --Lgica para dividir o clock divisor:=divisor+1; --mantendo o formato quadrado CLK2<='1'; --T_alto = T_baixo ELSIF(divisor<8)THEN CLK2<='0'; divisor:=divisor+1; END IF; END IF; END PROCESS Divisor_de_frequencia; Conversao_ADC:PROCESS(CLK2) VARIABLE ciclo: integer RANGE -1 TO 16:=0; --Variavel contadora de ciclos, ajustada a cada pulso negativo BEGIN Bordas_negativas:IF(CLK2'EVENT AND CLK2='0')THEN -- Atualizao apenas na borda de descida do CLK2 Atulizacao_cont_ciclos:IF(ciclo>=16)THEN --Contador de ciclos

ciclo:=1; ELSE ciclo:=ciclo+1; END IF Atulizacao_cont_ciclos; CASE ciclo IS WHEN -1 => CS<='1'; --inicio: Chip select=0, CI deslig. SCLK_EN<='0'; WHEN 0 => CS<='0'; --Chip select=1, CI ligado WHEN 1 to 16 => SCLK_EN<='1'; DIN<= DIN_AUX(ciclo); --envio dos 16 bits atravs de em DIN END CASE; END IF Bordas_negativas; Bordas_positivas:IF(CLK'EVENT AND CLK='1')THEN --Borda de subida do CLK2 CASE ciclo IS WHEN -1 => NULL; --inicio: Chip select=0, CI deslig. WHEN 0 => NULL; --Chip select=1, CI ligado WHEN 1 to 16 =>DOUT_AUX(ciclo)<=DOUT; --Registro dos 16 bits recebidos em DOUT END CASE; END IF Bordas_positivas; END PROCESS Conversao_ADC; END convert;

2) Modifique o cdigo VHDL acima mostrado, para que o ADC funcione no modo serial, realizando converses a cada um segundo, em seguida modifique-o para realizar converso quando um dos botes do kit for pressionado. 3) Com base no cdigo fornecido, faa com que, operando em modo operacional, o ADC converta os valores analgicos das entradas ADC_IN1, ADC_IN2 e ADC_IN3, salvando os respectivos valores nos sinais DATA1, DATA2 e DATA3. Utilize as chaves seletoras para definir qual dos sinais ser mostrado atravs dos LEDs.

Você também pode gostar