conversor digital-analógico calibrado para comunicações · comunicações são analógicos, é...

108
Conversor Digital-Analógico Calibrado para Comunicações, em Tecnologia CMOS Avançada de 40nm José Décio Gomes Gonçalves Dissertação para obter o grau de Mestre em Engenharia Eletrotécnica e de Computadores Orientadores: Prof. Jorge Manuel dos Santos Ribeiro Fernandes Eng. António Ilídio Rocha Leal Júri Presidente: Prof. João Manuel Torres Caldinhas Simões Vaz Orientador: Prof. Jorge Manuel dos Santos Ribeiro Fernandes Vogal: Prof. Gonçalo Nuno Gomes Tavares Outubro 2014

Upload: vuongcong

Post on 25-Jan-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Conversor Digital-Analógico Calibrado para

Comunicações, em Tecnologia CMOS Avançada de

40nm

José Décio Gomes Gonçalves

Dissertação para obter o grau de Mestre em

Engenharia Eletrotécnica e de Computadores

Orientadores: Prof. Jorge Manuel dos Santos Ribeiro FernandesEng. António Ilídio Rocha Leal

Júri

Presidente: Prof. João Manuel Torres Caldinhas Simões VazOrientador: Prof. Jorge Manuel dos Santos Ribeiro Fernandes

Vogal: Prof. Gonçalo Nuno Gomes Tavares

Outubro 2014

Page 2: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter
Page 3: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Agradecimentos

Primeiramente, gostava de agradecer ao meu Coorientador, Eng. António Leal, por toda a ajuda,

pelas instruções que me deu durante este trabalho, pelo empenho e pelas horas investidas na minha

formação. O meu profundo e sincero obrigado.

Um grande agradecimento vai para o Doutor Pedro Figueiredo, por toda a ajuda, por todo o tempo

investido em mim, bem como por rever este trabalho de forma tão aprofundada.

Gostava de agradecer também a toda a equipa da Synopsys que de uma forma ou de outra contri-

buíram para melhorar esta dissertação.

Não podia deixar de agradecer ao Professor Jorge Fernandes por toda a disponibilidade e por ter

acreditado em mim dando-me esta oportunidade.

Quero agradecer a todos os meus colegas que me acompanharam durante percurso académico e

a todos os meus amigos na TUIST, que me ajudaram a ser o que sou hoje.

De uma forma mais pessoal, quero agradecer do fundo do meu coração à Andrea Cânovas, por todo

o apoio e motivação sempre, pelo carinho e compreensão. Do fundo do coração, o meu muito obrigado.

Por fim, quero agradecer aos meus pais, José e Guida, e aos meus irmãos, Regina e Pedro, por,

neste longo caminho, com altos e baixos, acreditarem incondicionalmente em mim. O meu mais pro-

fundo obrigado. Dedico-vos este trabalho.

i

Page 4: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

ii

Page 5: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Abstract

Communications are a very vast area and nowadays most of our communications are done wire-

lessly. Thus, since the input and output of a communication system are analog, it is indispensable to

use Digital-to-Analog Converters (DACs) and Analog-to-Digital Converters (ADCs).

This dissertation describes the development and implementation of an algorithm that operates the

calibration required for a communications DAC, allowing it to achieve higher performances while, keeping

silicon areas and power consumption competitive.

The calibration is composed of a comparator and a digital system capable of implementing the cali-

bration algorithm. The comparator detects which of the current sources in a pair has the highest current.

The digital system takes as input the results from a number of comparisons, and provides, as output,

the switching sequence of current sources that yields the best linearity.

A new switching scheme is reported in this work, particulary suited for communications systems

using Orthogonal frequency-division multiplexing (OFDM), where the average level of the output signal

of the DAC is significantly below the full scale.

The digital block was implemented in Verilog-A and the DAC was designed and simulated in a 40

nm Complementary Metal-Oxide-Semiconductor (CMOS) technology. The DAC uses a voltage supply

of 1.8V/1.1V ±10%, a sample frequency of fs = 320MHz and specifications of INL and DNL of 1 LSB.

Keywords

Digital to Analog Converter, CMOS, Calibration, Switching Schemes, Comparator.

iii

Page 6: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

iv

Page 7: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Resumo

As comunicações são uma área muito vasta e hoje em dia a maioria das nossas comunicações

são efetuadas via redes sem fios. Assim, e visto que os sinais de entrada e saída de um sistema de

comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-

Analog Converter (DAC) e de um Conversor Analógico Digital – Analog-to-Digital Converter (ADC).

O objetivo desta dissertação é desenvolver e implementar um algoritmo que opere a calibração

necessária num conversor digital analógico de comunicações, permitindo atingir um desempenho de

referência industrial, mantendo área e consumo competitivos.

Para implementar a calibração é necessário a utilização de um comparador apropriado, e um sis-

tema digital capaz de implementar o algoritmo de calibração. O comparador deteta, entre duas fontes

de corrente, qual a maior. O sistema digital recebe como entrada o resultado das comparações, e tem

como saída, a sequência de comutação ótima que melhora a linearidade de saída do conversor.

A sequência de comutação ótima desenvolvida neste trabalho é uma sequência inovadora direcio-

nada para sistemas de comunicações que usem Ortogonal Frequency-Division Multiplexing (OFDM),

que têm um nível médio do sinal significativamente abaixo do full scale.

O bloco digital foi implementado em Verilog-A e o conversor realizado numa tecnologia Semicondutor

Metal Óxido Complementar – Complementary Metal-Oxide-Semiconductor (CMOS) avançada (40 nm).

O DAC usa tensões de alimentação de 1.8V/1.1V ±10%, tem uma frequência de fs = 320MHz e as

especificações de INL e DNL são 1LSB.

Palavras Chave

Conversor Analógico Digital, CMOS, Calibração, Sequência de Comutação, Comparador.

v

Page 8: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

vi

Page 9: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Conteúdo

1 Introdução 1

1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Estrutura da Dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Topologia do DAC 5

2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.1 Especificações Estáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.2 Especificações Dinâmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2.3 DAC Genérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4 DAC descrito neste trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.5 Especificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.5.1 Sequência de Comutação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5.2 Fontes de Corrente Extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.5.3 Comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.5.4 Área das Fontes de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3 Blocos Analógicos 33

3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Fonte de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3 Amostragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.4 Comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4.1 Calibração da tensão de desvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4 Blocos Digitais e Simulações 49

4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.2 Máquina de Estados que Controla o Circuito de Amostragem . . . . . . . . . . . . . . . . 51

4.3 Máquina de Estados de Controlo da Calibração da Tensão de Desvio . . . . . . . . . . . 53

4.4 Controlo das Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.5 Algoritmo de Calibração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

vii

Page 10: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

5 Conclusões 65

5.1 Sumário e conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Bibliografia 69

Apêndice A Verilog-A A-1

viii

Page 11: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Lista de Figuras

1.1 Esquema simplificado que mostra a introdução de DACs e ADCs num sistema de comu-

nicações [1]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Resolução de DACs vs frequência de amostragem e em que áreas são aplicados [2]. . . 3

2.1 Bloco simplificado de um DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Saída do DAC e respetiva Não-linearidade Diferencial – Differential Nonlinearity (DNL),

considerando VREF = 2N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Saída do DAC e respetiva Não-linearidade Integral – Integral Nonlinearity (INL), conside-

rando VREF = 2N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.4 Caso particular de um glitch na transição de códigos, considerando VREF = 2N . . . . . . 9

2.5 Alguns exemplos de arquiteturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.6 DAC de 4 bits com arquitetura Current-Steering. . . . . . . . . . . . . . . . . . . . . . . . 11

2.7 DAC de 3 bits com arquitetura Current-Steering implementada com código termómetro. . 13

2.8 Vantagens e desvantagens das arquiteturas descodificadas em binário, termómetro e

segmentada [1]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.9 Resultado de 100 simulações Matlab para um DAC em termómetro vs um DAC em binary

weighted [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.10 Área normalizada vs segmentação [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.11 Diagrama de blocos (8 Bit Mais Significativo – Most Significant Bit (MSB) e 2 Bit Menos

Significativo – Least Significant Bit (LSB)) e célula de corrente escolhido pelos autores [3]. 16

2.12 Algoritmo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.13 Processo de calibração [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.14 Estudo que relaciona o número de fontes de corrente extra com a área relativa [4]. . . . . 18

2.15 Desempenho estático do DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.16 Fase inicial do algoritmo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.17 Arquitetura do DAC utilizado neste trabalho. . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.18 Comparação entre o Novo Modelo e o modelo da Synopsys. . . . . . . . . . . . . . . . . 20

2.19 Sequência hierarchical symmetrical. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.20 Sequência hierarchical symmetrical mirrored. . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.21 Nova sequência de comutação direcionada para DACs de comunicações. . . . . . . . . . 24

2.22 Nova técnica de cancelamento do erro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

ix

Page 12: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.23 Evolução do desvio padrão das fontes com o aumento do número de fontes de corrente

extra para INL=1 LSB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.24 Evolução da área com o aumento do número de fontes de corrente extra. . . . . . . . . . 28

2.25 Comparação entre um comparador ideal e não ideal. . . . . . . . . . . . . . . . . . . . . . 29

2.26 Estudo para obter a tensão de desvio do comparador. . . . . . . . . . . . . . . . . . . . . 29

2.27 Estudo para obter o ruído do comparador. . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.28 Efeito da decisão por maioria no ruído do comparador. . . . . . . . . . . . . . . . . . . . . 30

2.29 Comparação entre o modelo com as diferentes especificações. . . . . . . . . . . . . . . . 31

2.30 Comparação entre o modelo com e sem calibração, para σI/I = 0, 17%. . . . . . . . . . . 31

2.31 Estudo da variação do sigma das fontes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.1 Circuito elétrico da célula de corrente sem calibração. . . . . . . . . . . . . . . . . . . . . 35

3.2 Circuito elétrico da célula de corrente com calibração. . . . . . . . . . . . . . . . . . . . . 37

3.3 Circuito simplificado da amostragem no comparador. . . . . . . . . . . . . . . . . . . . . . 37

3.4 Tensão amostrada no condensador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.5 Simulação da tensão amostrada no condensador. . . . . . . . . . . . . . . . . . . . . . . 40

3.6 Amostragem no comparador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.7 Parte do circuito elétrico do comparador dinâmico desenvolvido neste trabalho. . . . . . . 42

3.8 Tensões de saída do comparador para vIP>vIN [5]. . . . . . . . . . . . . . . . . . . . . . 42

3.9 Simulação das tensões de saída do comparador. . . . . . . . . . . . . . . . . . . . . . . . 43

3.10 simulação do ruído do comparador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.11 Simulação do ruído do comparador com circuito de amostragem. . . . . . . . . . . . . . . 45

3.12 Esquema de calibração da tensão de desvio [5]. . . . . . . . . . . . . . . . . . . . . . . . 45

3.13 Circuito do comparador juntamente com o circuito de calibração da tensão de desvio. . . 47

3.14 Evolução da tensão diferencial de calibração da tensão de desvio. . . . . . . . . . . . . . 48

3.15 Zoom na simulação anterior para verificar a tensão de desvio do comparador depois da

calibração da tensão de desvio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.1 Fluxograma da amostragem no comparador. . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.2 Circuito da máquina de estados da amostragem do comparador. . . . . . . . . . . . . . . 54

4.3 Simulação da máquina de estados da amostragem do comparador. . . . . . . . . . . . . 55

4.4 Fluxograma da calibração de offset do comparador. . . . . . . . . . . . . . . . . . . . . . 55

4.5 Circuito da máquina de estados da calibração da tensão de desvio do comparador. . . . 58

4.6 Simulação da máquina de estados da calibração da tensão de desvio do comparador. . . 59

4.7 Simulação das duas máquinas de estado simultaneamente a funcionar. . . . . . . . . . . 59

4.8 circuito que controla as fontes de corrente em calibração e funcionamento normal. . . . . 61

4.9 Ordenação das fontes de corrente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.10 Parte da Simulação do algoritmo de calibração. . . . . . . . . . . . . . . . . . . . . . . . . 63

4.11 INL e DNL do DAC sem calibração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.12 INL e DNL do DAC com calibração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

x

Page 13: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Lista de Tabelas

2.1 Representação do código termómetro para 3 bits em código binário [2]. . . . . . . . . . . 12

3.1 Tabela de parâmetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2 Relação entre o ruído e a constante de tempo. . . . . . . . . . . . . . . . . . . . . . . . . 38

4.1 Tabela de verdade para a máquina de estados da amostragem do comparador. . . . . . . 53

4.2 Tabela de verdade para a máquina de estados da Calibração da tensão de desvio do

comparador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.3 Tabela de verdade para gerar o Bvos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.4 Tabela de verdade para o controlo das fontes de corrente em calibração e funcionamento

normal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.5 Excerto das fontes de corrente ordenadas pelo algoritmo de calibração. . . . . . . . . . . 62

xi

Page 14: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

xii

Page 15: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Lista de Acrónimos

ADC Conversor Analógico Digital – Analog-to-Digital Converter

CMOS Semicondutor Metal Óxido Complementar – Complementary Metal-Oxide-Semiconductor

DAC Conversor Digital Analógico – Digital-to-Analog Converter

DNL Não-linearidade Diferencial – Differential Nonlinearity

FSO Amplitude Máxima de Saída – Full-Scale Output

INL Não-linearidade Integral – Integral Nonlinearity

LSB Bit Menos Significativo – Least Significant Bit

MOS Semicondutor Metal Óxido – Metal-Oxide-Semiconductor

MSB Bit Mais Significativo – Most Significant Bit

OFDM Ortogonal Frequency-Division Multiplexing

SFDR Spurious Free Dynamic Range

SNR Relação Sinal-Ruído – Signal to Noise Ratio

SNDR Relação Sinal-Ruído mais Distorção – Signal to Noise and Distortion Ratio

THD Distorção Harmónica Total – Total Harmonic Distortion

xiii

Page 16: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

xiv

Page 17: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

1Introdução

Contents1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Estrutura da Dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1

Page 18: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

1. Introdução

2

Page 19: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

1.1 Motivação

1.1 Motivação

As comunicações são uma área muito vasta e hoje em dia a maioria das nossas comunicações

são efetuadas via redes sem fios. Assim, e visto que os sinais de entrada e saída de um sistema de

comunicações são analógicos, é imprescindível o uso de Conversor Digital Analógico – Digital-to-Analog

Converter (DAC) e Conversor Analógico Digital – Analog-to-Digital Converter (ADC), Fig. 1.1.

Figura 1.1: Esquema simplificado que mostra a introdução de DACs e ADCs num sistema de comunicações [1].

A necessidade de redução de área e consumo bem como do aumento da velocidade de operação e

largura de banda dos conversores, requerem o desenvolvimento de técnicas cada vez mais elaboradas

para a miniaturização dos mesmos. Para se conseguir resoluções moderadas para comunicações (12

bit), Fig. 1.2, mantendo a área reduzida, é necessário empregar técnicas de calibração para compensar

os desvios de fabrico dos transístores Semicondutor Metal Óxido – Metal-Oxide-Semiconductor (MOS).

Figura 1.2: Resolução de DACs vs frequência de amostragem e em que áreas são aplicados [2].

3

Page 20: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

1. Introdução

1.2 Objetivos

O objetivo desta dissertação é desenvolver e implementar um algoritmo que opere a calibração

necessária num conversor digital analógico de comunicações, permitindo atingir um desempenho de

referência industrial, mantendo área e consumo competitivos.

Para implementar a calibração é necessário a utilização de um comparador apropriado, e um sis-

tema digital capaz de implementar o algoritmo de calibração. O comparador deteta, entre duas fontes

de corrente, qual a maior. O sistema digital recebe como entrada o resultado das comparações, e tem

como saída, a sequência de comutação ótima que melhora a linearidade de saída do conversor.

A sequência de comutação ótima desenvolvida neste trabalho é uma sequência inovadora direcio-

nada para sistemas de comunicações que usem Ortogonal Frequency-Division Multiplexing (OFDM),

que têm um nível médio do sinal significativamente abaixo do full scale.

No final pretende obter-se um DAC com as especificações de INL e DNL inferior a 1LSB.

1.3 Estrutura da Dissertação

A dissertação está dividida em 5 capítulos:

• Capítulo 1

Neste capítulo é feita uma pequena apresentação e os objetivos do trabalho.

• Capítulo 2

Este capítulo começa por apresentar noções básicas de DACs genéricos, de seguida analisa-se

alguma da literatura já publicada em relação a este tema.

É apresentado o DAC descrito neste trabalho bem como os estudos feitos de modo a obter as

especificações dos diferentes blocos do conversor.

• Capítulo 3

Neste capítulo são apresentados e dimensionados os principais blocos analógicos do DAC, tendo

em conta as especificações obtidas no capítulo anterior. São também apresentadas as simula-

ções destes blocos

• Capítulo 4

Este capítulo apresenta os blocos digitais: As máquinas de estado necessárias para o controlo

das diferentes fases, o bloco de controlo das fontes bem como o bloco digital que contém o

algoritmo de calibração.

São também apresentadas as simulações dos blocos bem como as simulações finais.

• Capítulo 5

Este capítulo apresenta as conclusões e indicam-se algumas possibilidades de trabalho futuro.

No final do documento existe uma secção reservada para os apêndices.

4

Page 21: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2Topologia do DAC

Contents2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.1 Especificações Estáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.2 Especificações Dinâmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2.3 DAC Genérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4 DAC descrito neste trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.5 Especificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.5.1 Sequência de Comutação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5.2 Fontes de Corrente Extra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.5.3 Comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.5.4 Área das Fontes de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5

Page 22: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

6

Page 23: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.1 Introdução

2.1 Introdução

Para comunicações em redes de alto débito são necessários Conversores Digital Analógico – Digital-

to-Analog Converters (DACs) com resoluções entre 10 e 14 bit e com taxas de conversão das centenas

de MAmostras/s. Um DAC é um componente eletrónico que produz uma saída analógica – tensão,

corrente ou carga – que é proporcional ao código digital de entrada.

Neste capítulo são apresentados alguns conceitos básicos sobre DACs, algumas arquiteturas de

DACs desenvolvidos em trabalhos anteriores e, por fim, uma descrição do conversor desenvolvido

neste trabalho bem como as suas especificações.

2.2 Conceitos Básicos

Um DAC tem como função produzir um sinal analógico a partir de palavras digitais. Na Fig. 2.1

pode observar-se o princípio de funcionamento de um DAC genérico e ideal, onde a cada instante são

colocadas palavras digitais (d0, d1, ...dn) à entrada e na saída é obtido o sinal analógico correspondente,

que neste exemplo em particular é representado pela tensão vOUT .

B1

B2

B3

B4

BN

...

DAC

VREF

0000

0

...

1000

0

...

0100

0

...

1100

0

...

d0d1d2d3

...

...

d0 d1 d2 d3 dN

0

1

2

3

2N-1

Din

...

...

...

1111

1

...

dN

VOUT

VOUT

[X VREF/2N]

Figura 2.1: Bloco simplificado de um DAC.

A tensão na saída é dada por

vOUT =Din

2NVREF , (2.1)

onde VREF representa a tensão de referência, Din a palavra digital na entrada e N o número de bits do

conversor.

A palavra digital de entrada tem necessariamente comprimento finito, N , pelo que a saída do DAC

é discreta em amplitude. Além disso, a palavra digital de entrada mantém-se inalterada em intervalos

de tempo discreto, pelo que a saída do DAC é discreta no tempo.

O Passo de Quantificação (∆) é dado pela razão entre a tensão máxima de saída do DAC (VFS) e a

resolução de mesmo

∆ =VFS2N

. (2.2)

De acordo com Fig. 2.1, VFS = VREF .

7

Page 24: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Num DAC real existem não-linearidades que fazem com que a sua função de transferência se afaste

da ideal, representada na Fig. 2.1.

De seguida apresenta-se algumas medidas de desempenho que quantificam as diferenças entre as

funções de transferência real e ideal.

2.2.1 Especificações Estáticas

Não-linearidade Diferencial – Differential Nonlinearity (DNL) — Como se pode observar grafica-

mente na Fig. 2.2, corresponde ao desvio na diferença das saídas obtidas com códigos adjacentes, em

relação ao valor ideal do ∆.

000 001 010 011 100 101 110 111

vOUT

0

1

2

3

4

5

6

7

Din

0

000 001 010 011 100 101 110 111 Din

-0,4

-0,6

-0,2

0,4

0,2

0,6

DNL [LSB]

DNL+

Figura 2.2: Saída do DAC e respetiva DNL, considerando VREF = 2N .

Matematicamente pode ser descrita da seguinte forma

DNL(Din) =vOUT (Din)− vOUT (Din − 1)−∆

∆. (2.3)

Não-linearidade Integral – Integral Nonlinearity (INL) — Corresponde ao desvio entre a caracte-

rística de transferência medida e a ideal, como se pode observar graficamente na Fig. 2.3.

000 001 010 011 100 101 110 111

vOUT

0

1

2

3

4

5

6

7

Din

0

000 001 010 011 100 101 110 111 Din

-0,4

-0,2

0,4

0,2

0,6

INL [LSB]

INL0,8

Figura 2.3: Saída do DAC e respetiva INL, considerando VREF = 2N .

Matematicamente pode ser descrita da seguinte forma

8

Page 25: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.2 Conceitos Básicos

INL(Din) =vOUT (Din)− vOUT,ideal(Din)

∆, (2.4)

onde vOUT,ideal(Din) representa a tensão de saída ideal correspondente ao código Din.

Tanto o INL como o DNL são medidos em termos de Bit Menos Significativo – Least Significant Bits

(LSBs) e podem ser positivos como negativos. Estas duas medidas são indicadores do comportamento

estático de um DAC e usualmente indica-se o valor de pior caso

INL = max

(∣∣∣∣vOUT (Din)− vOUT,ideal(Din)

∣∣∣∣) , (2.5)

DNL = max

(∣∣∣∣vOUT (Din)− vOUT (Din − 1)−∆

∣∣∣∣) . (2.6)

Monotonicidade — Um DAC é monotónico quando a saída é sempre crescente quando se aplicam

códigos digitais em ordem crescente.

2.2.2 Especificações Dinâmicas

Tempo de Estabelecimento (Settling Time) — Em geral é definido como o tempo necessário para

a saída, partindo do valor mínimo, se aproximar do valor máximo, a menos de um determinado erro.

Sobre-elevações (Glitches) — São perturbações na saída do DAC que tipicamente se devem ao

facto dos elementos internos do conversor não comutarem todos simultaneamente. Por exemplo, pode

observar-se na Fig. 2.4 que se os LSBs se desligarem depois do Bit Mais Significativo – Most Significant

Bit (MSB) ligar, a corrente vai atingir o seu valor máximo (ou mínimo) por um determinado intervalo de

tempo.

t0 t1 t2 t3 t4 t5 t6 t7

Vout

0

1

2

3

4

5

6

7

t

Figura 2.4: Caso particular de um glitch na transição de códigos, considerando VREF = 2N .

Relação Sinal-Ruído – Signal to Noise Ratio (SNR) — É o rácio entre a potência do sinal e a

potência de ruído. Para um conversor ideal é dado por

SNR = 6, 02N + 1, 76[dB]. (2.7)

Esta expressão indica o valor máximo de SNR para um DAC de N bit, sendo esta limitação causada

pelo facto da saída deste ser discreta em amplitude.

9

Page 26: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Relação Sinal-Ruído mais Distorção – Signal to Noise and Distortion Ratio (SNDR) — É o rácio

entre a potência do sinal e a soma de todas as componentes espectrais que não são desejadas.

Spurious Free Dynamic Range (SFDR) — É a relação entre a fundamental e a maior componente

espectral indesejada dentro da banda.

Distorção Harmónica Total – Total Harmonic Distortion (THD) — É o rácio entre a soma da

potência das harmónicas e a potência do sinal.

2.2.3 DAC Genérico

Existem várias arquiteturas de DACs, algumas das quais podem ser observadas na Fig. 2.5.

(a) Arquitetura com série de resistências [2]. (b) Arquitetura com resistências pesadas binariamente [1].

(c) Arquitetura R-2R [1]. (d) Arquitetura com condensadores.

Figura 2.5: Alguns exemplos de arquiteturas.

Na Fig. 2.5 (a) pode observar-se uma arquitetura com resistências em série, que divide a tensão de

referencia. Esta implementação apesar de ser muito simples, toma áreas consideravelmente grandes

para conversores com resolução superior a 8 bits.

Na Fig. 2.5 (b) pode observar-se uma arquitetura com resistências pesadas binariamente. Nesta

arquitetura as resistências tomam valores diferentes, sendo que a cada uma delas é atribuído um

valor proporcional ao valor binário que cada bit representa. De notar que neste caso o número de

resistências e interruptores são reduzidos a 1 por bit, mas quando se trata de conversores de alta

resolução as resistências tornam-se demasiado grandes (2(N−1)R). Além disso, o facto das resistências

10

Page 27: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.2 Conceitos Básicos

e interruptores não serem iguais implica que esta arquitetura seja suscetível de glitches e erros de não-

linearidade.

Uma das soluções para diminuir o tamanho das resistências é apresentada na Fig. 2.5 (c), a ar-

quitetura R-2R. O funcionamento é semelhante ao da arquitetura anterior mas tem a vantagem de ter

resistências menores e todas com o mesmo valor o que se traduz em maior precisão e menos erros

de não-linearidade. Contudo, continua a ter o problema relacionado com os glitches já mencionado

anteriormente.

As 2 arquiteturas mencionadas nas Fig. 2.5 (b) e (c) necessitam também de um amplificador na

saída de modo a gerar uma massa virtual para assim a corrente que passa em cada ramo ser indepen-

dente dos restantes.

Na Fig. 2.5 (d) é apresentada uma arquitetura com condensadores. Os condensadores são ligados

à tensão de referência, dependendo da palavra digital da entrada. Esta arquitetura é muito semelhante

à arquitetura com resistências pesadas binariamente, Fig. 2.5 (b), mas neste caso utilizando carga e

apresenta problemas semelhantes. Este conversor é usualmente encontrado em ADCs.

Em sistemas de comunicações a arquitetura mais utilizada é a Current-Steering [1], que se discute

de seguida.

DAC em arquitetura Current-Steering

A arquitetura Current-Steering é muito parecida às arquiteturas com base em resistências, como

mostra a Fig. 2.6, mas é direcionada para aplicações de altos débitos, pois a arquitetura em Current-

Steering é mais precisa e mais rápida devido ao uso de transístores em vez de resistências. Isto porque,

ao ser utilizada corrente em vez de tensão, não é necessário o uso do amplificador, pois deixa de existir

o erro derivado da variação da resistência de saída. O erro introduzido pelos interruptores, devido à

sua própria resistência, também deixa de ser um problema nesta arquitetura.

8I 4I 2I I

vOUT

B0B1B2B3

R

Figura 2.6: DAC de 4 bits com arquitetura Current-Steering.

A ideia consiste em ligar os interruptores das fontes de corrente que correspondem aos bits ati-

vos em cada instante e direcionar essas correntes para a saída onde a corrente total é transformada

em tensão através da resistência R. As restantes correntes, correspondentes aos bits desativos, são

direcionadas para a massa.

Os glitches são uma das maiores limitações em aplicações de altos débitos e muito frequentes em

conversores pesados binariamente quer seja com resistências ou fontes de corrente. Estas perturba-

11

Page 28: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

ções podem ser diminuídas limitando a largura de banda, o que torna o circuito mais lento, usando

um circuito de retenção e amostragem na saída ou usando internamente o código termómetro para

controlar a seleção das fontes de corrente. Na Tab. 2.1 pode observar-se a representação do código

termómetro.

Decimal Binário Código TermómetroB2 B1 B0 t7 t6 t5 t4 t3 t2 t1

0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 12 0 1 0 0 0 0 0 0 1 13 0 1 1 0 0 0 0 1 1 14 1 0 0 0 0 0 1 1 1 15 1 0 1 0 0 1 1 1 1 16 1 1 0 0 1 1 1 1 1 17 1 1 1 1 1 1 1 1 1 1

Tabela 2.1: Representação do código termómetro para 3 bits em código binário [2].

Apesar do código termómetro não ser eficiente (necessita de 2N − 1 entradas para representar

2N valores enquanto que o código binário só necessita de N entradas para os mesmo valores) a sua

utilização apresenta algumas vantagens sobre o binário, tais como baixar a DNL, reduzir os glitches, e

garantir que o DAC é monotónico.

A DNL baixa, quando se usa o código termómetro, dado que as fontes de corrente são todas iguais,

o erro entre elas é da mesma ordem de grandeza, o que não acontece numa arquitetura pesada bi-

nariamente. Numa arquitetura pesada binariamente as fontes são proporcionais ao peso do bit que a

controla (I, 2I, 4I, 8I, etc.). Assim é possível perceber que o erro das fontes, numa arquitetura pesada

binariamente, é proporcionalmente maior o que traduz uma DNL pior. Por exemplo, numa arquitetura

pesada binariamente a transição do meio de escala, onde liga-se o bit mais significativo e se desliga

todos os restantes, o desemparelhamento (mismatches) de todos os transístores que desligam não

é igual ao desemparelhamento do único transístor que liga, existindo assim um erro. Este erro pode

implicar que o DAC não seja monotónico. Numa arquitetura em termómetro isso não acontece uma vez

que na transição do meio de escala é apenas mais um transístor que liga, e este tem dimensões iguais

aos restantes, assim os desemparelhamentos serão da mesma ordem de grandeza tornando assim o

erro menor. Assim com o código termómetro consegue-se garantir a monotunicidade do DAC.

Utilizando o código termómetro consegue-se também uma redução nos glitches porque, mais uma

vez, as fontes de corrente têm todas a mesma dimensão cada uma com o seu interruptor. Os glitches

devido a transições de bits (Fig. 2.4), ao contrário da arquitetura pesada binariamente, passam a ser

proporcionais ao número de interruptores que comutam nesse instante e iguais em todas as transições

o que se traduz numa menor distorção.

Na Fig. 2.7 pode observar-se a implementação de um DAC em arquitetura Current-Steering com

código termómetro. As fontes têm todas o mesmo tamanho e existe um interruptor para cada fonte de

corrente.

12

Page 29: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.2 Conceitos Básicos

I

vOUT

t1t2t3t4

R

t5t6t7

IIIIII

Descodificador

Binário

para

Termómetro

t1

t2

t3

t4

t5

t6

t7

B0

B1

B2

Figura 2.7: DAC de 3 bits com arquitetura Current-Steering implementada com código termómetro.

De notar que os sinais (t1 ... t7) controlam os interruptores, e são obtidos do código de entrada do

DAC usando um descodificador de binário para termómetro. Para DACs de resoluções elevadas esta

descodificação torna-se complexa sendo que uma possibilidade para melhorar este problema passa por

segmentar o DAC. A segmentação passa por controlar as fontes de corrente correspondentes aos bits

menos significativos usando código binário, e as correspondentes aos bits mais significativos usando

código termómetro.

Na Fig. 2.8 pode observar-se a comparação entre arquiteturas pesadas binariamente, descodifica-

das em termómetro e segmentadas, para conversores em Current-Steering de alta resolução.

Figura 2.8: Vantagens e desvantagens das arquiteturas descodificadas em binário, termómetro e segmentada [1].

13

Page 30: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

A arquitetura pesada binariamente tem menor complexidade, menor área e consequentemente me-

nores consumos enquanto que a arquitetura descodificada em termómetro tem melhor DNL, menos

glitches e é garantidamente monotónica. Quanto à INL, as duas arquiteturas atingem valores seme-

lhantes. Segmentar o conversor tem como objetivo retirar o melhor das duas arquiteturas e utilizar

código termómetro nos bits mais significativos consegue-se resultados semelhantes a uma arquitetura

totalmente em termómetro.

De seguida serão apresentados mais detalhes sobre esta arquitetura.

2.3 Estado da Arte

Lin e Bult [3] fizeram um estudo, onde gerando aleatoriamente 1024 fontes de corrente seguindo

uma distribuição normal, testaram um DAC com descodificação em termómetro e outro DAC pesado

binariamente, com essas mesmas fontes de corrente. Os resultados em termos de INL e DNL são

apresentados na Fig. 2.9.

Figura 2.9: Resultado de 100 simulações Matlab para um DAC em termómetro vs um DAC em binary weighted [3].

Pode observar-se que a INL é muito semelhante nos dois casos mas a DNL apresenta muito melho-

res resultados usando descodificação em termómetro. Em contrapartida, o DAC em termómetro ocupa

uma área maior.

Para tirar partido das vantagens apresentas pela descodificação em termómetro e simultaneamente

áreas menores, usualmente utiliza-se segmentação. Trata-se de dividir o DAC em dois sub-DACs, um

controlado pelos MSBs e outro pelos LSBs, ficando as fontes de corrente correspondentes aos MSBs

descodificadas em termómetro e as dos LSBs descodificadas em binário.

Para perceber quantos bits serão atribuídos a cada sub-DAC os autores efetuaram um estudo que

relaciona a percentagem de segmentação com a área necessária. A percentagem de segmentação

14

Page 31: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.3 Estado da Arte

indica quantos bits serão descodificados em binário e quantos serão descodificados em termómetro,

sendo que um DAC 0% segmentado indica que todos os códigos são descodificados em binário e um

DAC 100% segmentado indica que todos os códigos são descodificados em termómetro. Este estudo

pode ser visualizado na Fig. 2.10.

Figura 2.10: Área normalizada vs segmentação [3].

Como já foi mencionado anteriormente a INL é idêntica em ambos os casos, pelo que na Fig. 2.10

são representadas linhas constante com o aumento da segmentação. Com o aumento da área dos

transístores consegue-se maior precisão nas fontes de corrente e consequentemente menor INL, daí

serem apresentadas várias linhas horizontais para diferentes áreas e correspondentes níveis de INL:

AINL = 0, 5LSB, AINL = 1LSB e AINL = 2LSB.

De acordo com a Fig. 2.9 a DNL diminui com a segmentação, podendo demonstrar-se [3] que em

escala logarítmica, a área necessária em função da segmentação é uma linha reta que decresce com

o aumento da segmentação, ADNL = 0, 5LSB.

O código termómetro necessita de um descodificador binário – termómetro que ocupará mais área

caso o número de bits da secção dos MSBs (termómetro) seja maior. Então em escala logarítmica trata-

se, como no caso anterior, de uma reta mas neste caso que aumenta com o aumento da segmentação,

Adigital.

Segundo estas restrições qualquer ponto da parte plana da curva seria o ponto ótimo, mas tendo

em conta que o THD melhora com o aumento da segmentação [3] então os autores escolheram o ponto

ótimo apresentado na Fig. 2.10. Assim chegaram à conclusão que a melhor relação entre a área e a

segmentação é oito bits em código termómetro e dois bits em binário como se pode visualizar na Fig.

2.11.

Chen e Gielen [4] implementaram um algoritmo de calibração num DAC segmentado (7 MSB e 7

LSB), que consiste em ordenar as fontes de corrente, calcular a melhor sequência de comutação e

reprogramar uma RAM para aplicar essa sequência. Para tal é necessário um comparador de corrente

e um bloco digital que controla o reordenamento das fontes de corrente.

15

Page 32: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Figura 2.11: Diagrama de blocos (8 MSB e 2 LSB) e célula de corrente escolhido pelos autores [3].

Este método reduz a INL sendo assim possível obter fontes de corrente menores, mantendo a sua

relação (W/L), e consequentemente uma redução na área. Inicialmente o DAC tem INL = 1, 5951[LSB]

e DNL = 0, 4919[LSB], como se pode observar na Fig. 2.13 (a).

O processo de calibração é apresentado na Fig. 2.12 e consiste em 5 passos: (a) Sorting, (b)

Resequencing, (c) Summing, (d) Sum Resequencing e (e) Final Sequencing.

Figura 2.12: Algoritmo.

(a) Sorting — Ordena o valor das fontes de corrente de forma crescente. O resultado pode ser

observado na Fig. 2.13 (b).

(b) Resequencing — As corrente são reordenadas de modo a que entre duas correntes grandes

esteja uma corrente pequena. O resultado pode ser observado na Fig. 2.13 (c).

(c) Summing — Somam uma corrente grande com uma pequena.

(d) Sum Resequencing — São novamente reordenadas segundo o passo (b).

16

Page 33: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.4 DAC descrito neste trabalho

(e) Final Sequencing — As corrente são novamente separadas e obtêm assim a sequência final,

apresentada na Fig. 2.13 (d).

(a) Inicialmente (b) Sorting

(c) Resequencing (d) Final Sequencing

Figura 2.13: Processo de calibração [4]

Um aspeto interessante neste DAC é que não utiliza as fontes que estão mais afastadas da média,

como se pode observar na Fig. 2.13 (b) (identificado com linha mais grossa). Neste estudo 147 fontes

de corrente são ordenadas numa fase inicial, mas no final só 127 foram consideradas. Existem duas

razões para o uso de fontes de corrente extra, sendo a primeira o facto das piores afetarem o resultado

final, mesmo com a calibração. A segunda razão é porque quantas mais fontes extra forem considera-

das mais pequenas serão as fontes de corrente de toda a matriz fazendo assim com que a área total

diminua.

Na Fig. 2.14 pode visualizar-se o estudo que relaciona o número de fontes de corrente extra com

a área relativa e nota-se que neste trabalho o número de fontes extra a utilizar situa-se entre 20 e 70

fontes. É de salientar que mais fontes de corrente extra implica maior complexidade.

2.4 DAC descrito neste trabalho

O ponto de partida para este trabalho é um DAC de 12 bits segmentado, 6 bits em termómetro e 6 em

binário, desenvolvido pela Synopsys. Trata-se de um conversor para comunicações onde será aplicado

17

Page 34: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Figura 2.14: Estudo que relaciona o número de fontes de corrente extra com a área relativa [4].

um método de calibração de modo a reduzir os erros aleatórios introduzidos pelos desemparelhamentos

dos elementos do DAC. Este conversor tem o seguinte desempenho estático: INL99% = 1, 013[LSB] e

DNL99% = 0, 544[LSB] o que significa que em 99% dos casos tem-se um DAC com INL ≤ 1, 013[LSB]

e DNL ≤ 0, 544[LSB], como apresentado na Fig. 2.15.

0

20

40

60

80

100

120

0 0,2 0,4 0,6 0,8 1 1,2 1,4

Yie

ld [

%]

INL [LSB]

Modelo Synopsys INL(99%) = 1,013 LSB

(a) Função Distribuição acumulada da INL.

0

20

40

60

80

100

120

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8

Yie

ld [

%]

DNL [LSB]

Modelo Synopsys DNL(99%) = 0,544 LSB

(b) Função Distribuição acumulada da DNL.

Figura 2.15: Desempenho estático do DAC.

Quando não se usa calibração, a área da fonte de corrente, WL, é inversamente proporcional à

variância da corrente na fonte [1],

WL ∝ 1(σII

)2 . (2.8)

Para diminuir a INL e a DNL, tem que se diminuir σI/I, o que implica aumentar o WL.

Os valores de INL e DNL apresentados na Fig. 2.15 foram obtidos para σI/I = 0, 17%, valor este

que será usado neste capítulo, de modo a ser possível a comparação dos diferentes estudos.

Um dos objetivos da calibração é melhorar o desempenho estático do conversor, baixando a INL

e a DNL. Uma vez que para comunicações não existe grande vantagem em obter INL e DNL muito

inferior a 1 LSB, outro dos objetivos da calibração é reduzir a área ocupada pelo DAC. Esta redução de

18

Page 35: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

área é conseguida através da diminuição da área dos transístores da fonte de corrente, uma vez que a

calibração permite usar áreas mais pequenas do que as que são indicadas por 2.8.

Nesta calibração começa por se ordenar as fontes de corrente descodificadas em termómetro, que

idealmente teriam todas o mesmo valor de corrente, o que na realidade não acontece devido aos erros

aleatórios introduzidos no processo de fabrico. De seguida escolhem-se as 63 fontes centrais, excluindo

assim os outliers como mostra a Fig. 2.16. Por fim, aplica-se uma sequência de comutação às fontes

ordenadas de modo a cancelar os erros aleatórios.

38,85

38,90

38,95

39,00

39,05

39,10

39,15

39,20

39,25

39,30

0 10 20 30 40 50 60 70 80

Co

rren

te [

µA

]

Fonte de Corrente

(a) Fontes MSB aleatórias segundo uma distribuição normal.

38,85

38,90

38,95

39,00

39,05

39,10

39,15

39,20

39,25

39,30

0 10 20 30 40 50 60 70 80

Co

rren

te [

µA

]

Fonte de Corrente

Ordenadas

63 Melhores

(b) Fontes MSB ordenadas e selecionadas.

Figura 2.16: Fase inicial do algoritmo.

Para ordenar as fontes utiliza-se um algoritmo de ordenação sequencial conhecido [6] que utiliza um

comparador para comparar as fontes de corrente duas a duas. A sequência de comutação será descrita

mais à frente neste documento, mas é derivada da sequência hierarchical symmetrical scheme[1], que

é regularmente aplicada para cancelar erros de gradiente.

A Fig. 2.17 apresenta o diagrama de blocos simplificado do DAC utilizado neste trabalho. Quando

o conversor é inicializado começa a fase de calibração, onde o algoritmo de calibração, implementado

na parte digital do DAC, seleciona duas fontes MSB e direciona-as para a entrada do comparador. O

comparador indica qual das fontes é maior e, com essa decisão, o algoritmo ordena as duas fontes e

começa novamente o ciclo (duas fontes, comparação, decisão) até que a totalidade das fontes esteja

ordenada. Uma vez ordenadas as fontes, é aplicada a sequência de comutação e essa informação é

armazenada em memória. Quando termina a calibração o conversor entra em funcionamento normal

onde os bits menos significativos são encaminhados diretamente para as fontes de corrente LBS, e os

bits mais significativos são descodificados para termómetro e posteriormente indexados ao esquema

de comutação o que permite selecionar as fontes MSB pela ordem que maximiza a linearidade do DAC.

2.5 Especificações

De modo a obter as especificações dos diversos blocos fez-se um modelo em Matlab que imple-

menta a calibração descrita anteriormente. O modelo inicialmente gera um vetor de 2MSBs − 1 +

NFontesExtra fontes de corrente, com valor aleatório segundo uma distribuição normal com uma deter-

19

Page 36: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

LSBs

MSBs

Calib.Memória

Digital

Analógico

.

.

.

.

.

.

B0

B5

B6

B11

Vout

Figura 2.17: Arquitetura do DAC utilizado neste trabalho.

minada média e desvio padrão. De seguida as fontes são ordenadas recorrendo ao algoritmo Selec-

tionSort [6]. Um comparador, modelado com tensão de desvio (offset) e ruído aleatório, compara as

fontes de corrente duas a duas e indica quais as que têm que mudar de posição no vetor. Assim que

o vetor está ordenado são retiradas NFontesExtra/2 dos extremos desse vector, ficando assim com as

2MSBs − 1, neste caso 63, melhores fontes de corrente. Uma vez feita a calibração das fontes de cor-

rente correspondentes aos MSBs, de modo a efetuar diversos testes é gerada uma rampa digital, isto

é, um vetor com todas as amostras possíveis desde 0 a 212 − 1 de modo a estimular todos os códigos

do DAC, sendo depois calculada a INL e DNL. Adicionalmente é também possível fazer-se uma análise

estatística da INL e DNL, sendo que a cada repetição são geradas novas fontes aleatoriamente.

Uma vez implementado o modelo é necessário validar o mesmo. O método usado para a sua vali-

dação foi comparar este novo modelo sem a calibração com um modelo da Synopsys cujos resultados

já foram testados e comprovados no silício. Na Fig. 2.18 pode visualizar-se o resultado dessa compa-

ração onde se conclui que, o novo modelo indica aproximadamente os mesmos resultados que o da

Synopsys, sendo portanto válido.

0

20

40

60

80

100

120

0 0,2 0,4 0,6 0,8 1 1,2 1,4

Yie

ld [

%]

INL [LSB]

Novo Modelo INL(99%) = 0,994 LSB

Modelo Synopsys INL(99%) = 1,013 LSB

(a) Função Distribuição acumulada da INL.

0

20

40

60

80

100

120

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8

Yie

ld [

%]

DNL [LSB]

Novo Modelo DNL(99%) = 0,566 LSB

Modelo Synopsys DNL(99%) = 0,544 LSB

(b) Função Distribuição acumulada da DNL.

Figura 2.18: Comparação entre o Novo Modelo e o modelo da Synopsys.

20

Page 37: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

Depois de validado o modelo segue-se uma série de testes e estudos de modo a obter as especifi-

cações necessárias ao bom funcionamento do circuito e responder a questões tais como:

• Qual a sequência de comutação a usar?

• Quais as especificações que têm de ser cumpridas pelo comparador, e qual o efeito das suas não

linearidades na calibração?

• Quantas fontes extra a colocar no DAC?

• Comparando com a situação sem calibração, quão mais pequenas serão essas fontes de cor-

rente?

2.5.1 Sequência de Comutação

Uma vez que as fontes são previamente ordenadas, o resultado do erro aleatório é aproximada-

mente igual a um gradiente linear. Assim, à semelhança da prática corrente para minimizar o efeito

de gradiente, aplica-se uma sequência de comutação com o objetivo de cancelar esses mesmos erros

aleatórios [1]. A sequência de comutação destina-se cancelar os erros das fontes comutando sequen-

cialmente fontes cujo erro seja simétrico. Como se pode observar na Fig. 2.19(a) a fonte designada por

1 tem o mesmo erro, em módulo, que a fonte designada por 2, e assim o erro após ser ligada a fonte 2

é aproximadamente zero.

De seguida são estudadas várias sequências de comutação desde a hierarchical symmetrical [1]

até uma sequência inovadora aplicada neste trabalho. Estes estudo foram efetuados nas seguintes

condições:

• Com calibração;

• Com 12 fontes extra (explicado mais à frente neste documento);

• σI/I = 0, 17%;

• Com comparador ideal.

No caso da sequência de comutação hierarchical symmetrical as fontes de corrente são ligadas

sucessivamente, em torno do primeiro e do terceiro quarto do vetor de fontes de corrente. Assim o erro

da primeira fonte a ser ligada cancela com o erro da segunda fonte ligada, o da terceira cancela com o

da quarta, e assim sucessivamente como mostra a Fig. 2.19(a).

Na Fig. 2.19(b) é apresentada a INL e a DNL do DAC Quando se usa esta sequência de comutação.

Pode observar-se que a INL tende progressivamente a aumentar com o aumento dos códigos. Isto

deve-se ao facto do erro, quando comutação as fontes ímpares, aumentar à medida que a sequência

tende para os extremos. É de salientar também que, com esta sequência de comutação, a INL não é

simétrica o que origina distorção harmónica par.

Uma alternativa é a sequência hierarchical symmetrical mirrored, apresentada na Fig. 2.20(a).

21

Page 38: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Err

o

15 711 1 5 9 13 14 10 6 2 4 8 16123

Sequência de Comutação

(a) Exemplo da sequência de comutação para 4 bits.

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

INL

[LSB

]

Código

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

DN

L [L

SB]

Código

(b) INL e DNL correspondente a uma rampa na entrada do DAC.

Figura 2.19: Sequência hierarchical symmetrical.

22

Page 39: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

Err

o

11 155 13 3 9 7 8 10 4 14 2 16 1261

Sequência de Comutação

(a) Sequência de comutação.

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

INL

[LSB

]

Código

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

DN

L [L

SB]

Código

(b) INL e DNL correspondente a uma rampa na entrada do DAC.

Figura 2.20: Sequência hierarchical symmetrical mirrored.

23

Page 40: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

O modo de construção da sequência é idêntico ao anterior com a particularidade de ser intercalar.

A sequência começa nos quartos de onde parte para o centro e para os extremos intercaladamente

quando lá chega regressa aos quartos preenchendo os espaços vagos. O objetivo desta sequência

é tornar a INL do DAC simétrica, isto é, de modo a que o erro introduzido pela segunda metade dos

códigos do DAC sejam simétricos aos da primeira metade dos códigos e assim minimizar a distorção

harmónica par.

Como se pode observar na Fig. 2.20(b) nos códigos centrais é onde se encontra os maiores desvios

na INL, pelos mesmos motivos que na sequência hierarchical symmetrical.

A próxima sequência tem como objetivo colocar esses erros nos extremos da caraterística, isto

é, nos códigos mais altos e nos códigos mais baixos. Isto porque em sistemas de comunicações,

modulações como OFDM têm um nível médio do sinal significativamente abaixo do full scale. A nova

sequência é observada na Fig. 2.21(a).

Err

o

1 515 9 7 13 3 4 14 8 10 12 6 21611

Sequência de Comutação

(a) Sequência de comutação.

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

INL

[LSB

]

Código

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

DN

L [L

SB]

Código

(b) INL e DNL correspondente a uma rampa na entrada do DAC.

Figura 2.21: Nova sequência de comutação direcionada para DACs de comunicações.

O modo de construção da sequência de comutação tem o mesmo princípio da anterior mas neste

caso começa-se nos extremos e no centro avançando para os quartos intercaladamente e regressando.

Pode observar-se na Fig. 2.21(b) que em termos de INLmax e INLmin os valores são semelhantes

24

Page 41: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

às dos dois casos anteriores uma vez que se trata da comutação das mesmas fontes, com os mesmos

erros. No entanto com esta sequência os erros maiores ocorrem nas extremidades da função de trans-

ferência do DAC e a INL mantém-se simétrica, o que trás vantagens tal como foi acima mencionado.

Ao utilizar as sequências de comutação consegue-se o cancelamento do erro só a cada par de

fontes correntes, pois não se cancelar o erro gerado quando são ligadas as fontes ímpares, como

referido anteriormente, é isto que gera os maiores desvios na INL e picos na DNL.

Neste trabalho é sugerida uma técnica inovadora para melhorar esse efeito. O método consiste

em alternar aleatoriamente entre fontes com erros simétricos cada vez que o DAC recebe uma palavra

digital ímpar na sua entrada. Tomemos como exemplo o caso em que a palavra digital à entrada do

DAC ativa a primeira fonte em termómetro. Como se pode observar na Fig. 2.21(a) o erro, em módulo,

da primeira fonte é aproximadamente igual ao erro, em módulo, da segunda fonte a ser comutada.

Embora estejamos num código ímpar podemos aproveitar este fato, selecionando aleatoriamente uma

dessas duas fontes, a fonte 1 ou a fonte 2, sempre que à entrada do DAC o código corresponder à

primeira fonte de termómetro ativa. Assim, faz-se uma média do erro longo do tempo. Claro está que

este processo é feito apenas para os códigos MSB ímpares uma vez que nos códigos MSB pares as

duas fontes estão ativas cancelando aproximadamente os erros uma da outra. Na Fig. 2.22 pode-se

observar o efeito desta nova técnica de cancelamento do erro utilizando as mesmas fontes de corrente

que nos casos anteriores.

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

INL

[LSB

]

Código

-0,4

-0,2

0

0,2

0,4

0 1000 2000 3000 4000

DN

L [L

SB]

Código

Figura 2.22: Nova técnica de cancelamento do erro.

Nota-se que os erros devido às fontes de corrente controladas pelos MSBs foram significativamente

atenuados.

Nas próximas secções deste capítulo será utilizada esta sequência de comutação, ilustrada na Fig.

2.21(a), em conjunto com a técnica de alternância de fontes de corrente para os códigos impares agora

apresentado, de modo a obter as diversas especificações.

25

Page 42: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

2.5.2 Fontes de Corrente Extra

Nesta secção tenta perceber-se quantas fontes de corrente extra é necessário usar de modo a

minimizar a área. Interessa perceber que depois de todas as fontes ordenadas, as NFontesExtra não

serão utilizadas quando o DAC estiver a funcionar. Desta forma, serão retirados os outliers e as fontes

mais afastadas da média, que consequentemente se traduz em melhores resultados em termos de

desempenho estático (INL e DNL menores) e dinâmico do DAC. Contudo, como já foi referido, este

trabalho está direcionado para uma redução na área, assim fixando a INL em 1 LSB consegue-se

áreas menores, isto é, se σI/I aumentar até obter estatisticamente INLs de 1 LSB em 99% dos casos

a área das fontes de corrente desce, como se pode verificar de (2.8).

Com este conceito em mente, para saber quantas fontes extra usar fez-se um varrimento do nú-

mero de fontes de corrente e, para cada valor, se encontrou um σI/I que garante a especificação de

INL99% = 1[LSB]. A Fig. 2.23 indica que com o aumento do número de fontes extra o σI/I aumenta

possibilitando assim a diminuição da área de todas as fontes de corrente. No entanto as fontes de

corrente extra ocupam área, pelo que não se pode usar um valor indiscriminadamente alto de fontes de

corrente extra, o que iria aumentar a área total do DAC.

0,5

0,6

0,7

0,8

0,9

1,0

1,1

1,2

1,3

1,4

0 10 20 30 40 50 60 70

Fontes Extra

Figura 2.23: Evolução do desvio padrão das fontes com o aumento do número de fontes de corrente extra para INL=1 LSB.

É portanto importante perceber qual a redução na área da matriz de fontes de corrente. A nova área

A1, com fontes extra e com σI1/I obtido no estudo anterior, pode ser comparada com a área de uma

matriz, A0, sem fontes extra, com σI0/I correspondente a 0 fontes extra. Esta relação é dada por,

A1

A0=

(σI0σI1

)22MSB − 1 +NFontesExtra

2MSB − 1. (2.9)

Usando os σI/I obtidos da Fig. 2.23 pode construir-se o gráfico representado na Fig. 2.24 que

relaciona a área relativa, A1/A0, com o número de fontes extra. Observa-se que a linha ’fontes’ tende

a estagnar quando se atinge o valor de 20 fontes extra.

Relacionando apenas a área da fonte de corrente, como acabámos de fazer, não se contabiliza a

área ocupada pelos interruptores, latches e cascodes que são necessários em cada fonte de corrente.

26

Page 43: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

A área destes elementos não diminui com o aumento do desvio padrão das fontes e para os tomar em

consideração, é necessário alterar (2.9).

A área da matriz sem fontes extra é dada por,

A0 =K(σI0I

)2 (2MSB − 1)

+ASW0, (2.10)

onde ASW0representa a área de todos os interruptores, cascodes, etc. K é dado por

K =1

2

[A2β +

4A2V T

(VGS − Vt)2

]. (2.11)

A área da nova matriz com as fontes extra é dada por

A1 =K(σI1I

)2 (2MSB − 1 +NFontesExtra)

+ASW0 +ASWindNFontesExtra, (2.12)

onde ASWindé a área de 1 conjunto interruptores+cascode+latch e dado por

ASWind=

ASW0

2MSB − 1 +NFontesExtra. (2.13)

Dividindo (2.12) por (2.10) obtém-se

A1

A0=

K(σI1I

)2

(2MSB − 1 +NFontesExtra

)+ASW0

(1 + NFontesExtra

2MSB−1+NFontesExtra

)K(σI0I

)2 (2MSB − 1) +ASW0

, (2.14)

e assumindo que a área total dos interruptores, cascodes e latches, é igual à área total das fontes de

corrente

ASW0=

K(σI0I

)2 (2MSB − 1)

(2.15)

tem-se que

A1

A0=

1

2

(σI0σI1

)22MSBs − 1 +NFontesExtra

2MSBs − 1+

1 + NFontesExtra2MSBs−1+NFontesExtra

2. (2.16)

Na Fig. 2.24 também relaciona a área relativa (contabilizando com cascode, interruptor e latch) com

o número de fontes extra, na linha Fontes+Cas.+SW+Latch. pode observar-se que a partir de 12 fontes

extra a diminuição da área das fontes de corrente não compensa a área do hardware extra (cascode,

interruptor e latch), pode concluir-se que existe um valor óptimo, 12, e este será o número de fontes

extra que minimiza a área.

2.5.3 Comparador

Como se pode visualizar na Fig. 2.25, ao introduzir um comparador não ideal pode levar a que o

algoritmo de ordenação não ordene as fontes corretamente. A tensão de desvio e o ruído do com-

parador podem causar decisões erradas. Caso isto aconteça a ordenação não ficará correta, o que

27

Page 44: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,0

1,1

0 10 20 30 40 50

Áre

a R

ela

tiva

Fontes Extra

Fontes

Fontes + Cas. + SW + Latch

Figura 2.24: Evolução da área com o aumento do número de fontes de corrente extra.

comprometerá a calibração. Assim é necessário dimensionar apropriadamente o comparador de modo

a que os erros introduzidos pela tensão de desvio e pelo ruído não tenham impacto significativo.

De seguida determinam-se os valores da tensão de desvio e valor rms de ruído que garante essa

situação.

Introduziram-se diferentes erros de tensão de desvio no comparador e para cada um destes calcula-

se o yield da INL. É de esperar que, estatisticamente, com o aumento do erro de tensão de desvio a

INL seja cada vez maior, uma vez que a ordenação das fontes de corrente é feita de uma forma mais

deficiente. O resultado é apresentado na Fig. 2.26(a) onde se pode observar este comportamento.

A Fig. 2.26(a) mostra que para uma tensão de desvio de 0V a INL em 99% dos casos é menor que

0,2LSB.

Na Fig. 2.26(b) pode observar-se que a partir de aproximadamente 100µV , para uma INL de 0,2LSB,

o nível de confiança baixa para 95%. Assim fixa-se este valor como especificação máxima para o

comparador.

Para quantificar o efeito do ruído do comparador seguiu-se um processo semelhanate ao que acabou

de se descrever para a tensão de desvio: Consideraram-se diferentes valores rms para o ruído, e para

cada um destes calcula-se a INL. Novamente, é de esperar que, estatisticamente, com o aumento do

ruído a INL seja cada vez maior. O resultado é apresentado na Fig. 2.27(a) onde se pode observar que

corresponde ao esperado.

Na Fig. 2.27(b) pode observar-se que a partir de aproximadamente 100µV o nível de confiança

baixa de 95%. Assim fixa-se este valor como especificação para o comparador.

Com o objetivo de tentar relaxar o comparador considerou-se a hipotese de tomar a decisão sobre

cada par de fontes de corrente, baseado não em uma única comparação, mas na maioria de várias

comparações. O objetivo passa por tentar eliminar o erro introduzido pelo ruído. O esperado será com

mais comparações mais preciso será o comparador. Na Fig. 2.28 é apresentado o resultado deste

estudo.

28

Page 45: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

38

38

39

39

40

40

41

0 10 20 30 40 50 60 70 80

Co

rre

nte

A]

Fonte de Corrente

Ideal

63 Selecionadas

(a) Comparador ideal.

38

38

39

39

40

40

41

0 10 20 30 40 50 60 70 80

Co

rre

nte

A]

Fonte de Corrente

Ideal

Não Ideal

63 Selecionadas

(b) Comparador não ideal (ruído = 100 µV, tensão de desvio =100 µV).

38

38

39

39

40

40

41

0 10 20 30 40 50 60 70 80

Co

rren

te [

µA

]

Fonte de Corrente

Ideal

Não Ideal

63 Selecionadas

(c) Comparador não ideal (ruído = 200 µV, tensão de desvio =200 µV).

38

38

39

39

40

40

41

0 10 20 30 40 50 60 70 80

Co

rren

te [

µA

]

Fonte de Corrente

Ideal

Não Ideal

63 Selecionadas

(d) Comparador não ideal (ruído = 500 µV, tensão de desvio =500 µV).

Figura 2.25: Comparação entre um comparador ideal e não ideal.

0

10

20

30

40

50

60

70

80

90

100

0 0,2 0,4 0,6 0,8 1

Yie

ld [

%]

INL [LSB]

0 uV 26 uV 53 uV 79 uV 105 uV 132 uV 158 uV 184 uV 211 uV 237 uV 263 uV 290 uV 316 uV 342 uV 368 uV 395 uV 421 uV 447 uV 474 uV 500 uV

(a) Função distribuição acumulada da INL para diferentes va-lores da tensão de desvio do comparador.

0

10

20

30

40

50

60

70

80

90

100

0 100 200 300 400 500

Yie

ld (

INL=

0,2

LSB

) [%

]

Offset [µV]

(b) Variação da tensão de desvio fixando a INL=0,2LSB.

Figura 2.26: Estudo para obter a tensão de desvio do comparador.

29

Page 46: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

0

10

20

30

40

50

60

70

80

90

100

0 0,2 0,4 0,6 0,8 1

Yie

ld [

%]

INL [LSB]

0 uV 35 uV 69 uV 104 uV 138 uV 172 uV 207 uV 241 uV 276 uV 310 uV 345 uV 379 uV 414 uV 448 uV 483 uV

(a) Função distribuição acumulada da INL para diferentes va-lores de ruído.

0

10

20

30

40

50

60

70

80

90

100

0 100 200 300 400 500 Y

ield

(IN

L=0

,2 L

SB)

[%]

Ruído [µV]

(b) Variação do ruído fixando a INL=0,2LSB.

Figura 2.27: Estudo para obter o ruído do comparador.

0

10

20

30

40

50

60

70

80

90

100

0 200 400 600 800 1000

Yie

ld (

INL=

0,2

LSB

) [%

]

Ruído [µV]

1 Comp. 3 Comp. 5 Comp. 7 Comp.

9 Comp. 11 Comp. 13 Comp. 15 Comp.

Figura 2.28: Efeito da decisão por maioria no ruído do comparador.

30

Page 47: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2.5 Especificações

O comportamento observado na Fig. 2.28 corresponde ao esperado, podendo concluir-se que se o

comparador tiver um ruído for demasiado alto para as especificações uma das soluções pode passar

por fazer várias comparações e tomar uma decisão por maioria.

Como será explicado mais à frente neste documento, este último procedimento não será aplicado

neste trabalho devido a ser um processo moroso sendo que foi implementada outra solução. E assim as

especificações para o comparador são: ruído total = 100 µV, tensão de desvio = 100 µV e 1 comparação

por amostra.

De seguida compara-se os resultados dos estudos anteriores. Na Fig. 2.29 pode observar-se a

comparação entre: comparador ideal com 0 fontes extra; comparador ideal com 12 fontes extra; e 12

fontes extra com um comparador com 100µV de ruído e 100µV de tensão de desvio.

0

10

20

30

40

50

60

70

80

90

100

0 0,1 0,2 0,3 0,4 0,5

Yie

ld [

%]

INL [LSB]

0 Fontes Extra e Comp. Ideal

12 Fontes Extra e Comp. Ideal

12 Fontes Extra e Comp. Real

(a) Função Distribuição acumulada da INL.

0

10

20

30

40

50

60

70

80

90

100

0 0,05 0,1 0,15 0,2 0,25 0,3

Yie

ld [

%]

DNL [LSB]

0 Fontes Extra e Comp. Ideal

12 Fontes Extra e Comp. Ideal

12 Fontes Extra e Comp. Real

(b) Função Distribuição acumulada da DNL.

Figura 2.29: Comparação entre o modelo com as diferentes especificações.

Da comparação advém que, como era de esperar, com 12 fontes extra os resultados melhoram,

ficando com uma INL99% = 0, 2LSB mas quando se trata de um comparador não ideal perde-se no

desempenho sendo que a INL99% = 0, 35LSB.

A Fig. 2.30 compara os resultados com e sem calibração.

0

10

20

30

40

50

60

70

80

90

100

0 0,5 1 1,5

Yie

ld [

%]

INL [LSB]

Sem Calibração

Com Calibração

(a) Função Distribuição acumulada da INL.

0

10

20

30

40

50

60

70

80

90

100

0 0,2 0,4 0,6 0,8

Yie

ld [

%]

DNL [LSB]

Sem Calibração

Com Calibração

(b) Função Distribuição acumulada da DNL.

Figura 2.30: Comparação entre o modelo com e sem calibração, para σI/I = 0, 17%.

31

Page 48: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

2. Topologia do DAC

Pode concluir-se que o desempenho melhora significativamente passando de INL99% = 1LSB para

INL99% = 0, 35LSB para σI/I = 0, 17%.

2.5.4 Área das Fontes de Corrente

Uma vez que os resultados em termos de linearidade estática são melhorescomo mostra a Fig.

2.30 opta-se por fazer o dimensionamento para σI/I maior de modo a obter INL99% = 1LSB indo de

encontro às especificações para este DAC. A Fig. 2.31 mostra a variação do σI/I de modo a obter o

yield da INL..

0

20

40

60

80

100

0,5 1 1,5 2 2,5 3

Yie

ld [

%]

Figura 2.31: Estudo da variação do sigma das fontes.

Neste estudo varia-se o desvio padrão da corrente das fontes de modo a perceber quando é que

a INL é superior a 1LSB. Analisando a Fig. 2.31 observa-se que pode aumentar-se o σI/I até 1%

garantindo que estatisticamente a INL = 1LSB com um grau de confiança de 95%. Como inicialmente

e sem calibração tem-se que σI/I = 0, 17% o fato de com este método de calibração se poder usar

σI/I = 1% é possível diminuir a área da matriz de fontes de corrente em aproximadamente 34,6 vezes,

o que reduz a área do DAC. Isto reduz também a capacidade parasita o que se traduz numa melhor

linearidade dinâmica.

32

Page 49: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3Blocos Analógicos

Contents3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Fonte de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3 Amostragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.4 Comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4.1 Calibração da tensão de desvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

33

Page 50: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

34

Page 51: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.1 Introdução

3.1 Introdução

Neste capítulo são apresentados alguns dos blocos analógicos do DAC, nomeadamente a fonte de

corrente, o comparador e o bloco de amostragem.

Será apresentada e dimensionada a fonte de corrente a utilizar, para o caso sem calibração. Uma

vez que o objetivo deste trabalho passa por utilizar a calibração de forma a reduzir a área da matriz de

fontes de corrente, posteriormente são apresentadas as alterações na fonte de corrente de modo a ser

possível a calibração, assim como o novo dimensionamento.

É também dimensionado o bloco de amostragem que amostra as tensões das fontes de corrente

para de seguida ser feita a comparação.

Neste capítulo também será apresentado o comparador bem como um método para minimizar a

tensão de desvio deste.

3.2 Fonte de Corrente

A célula da fonte de corrente representada na Fig. 3.1 é constituída pelo transístor da fonte de

corrente M1, o cascode M2, os interruptores M3 e os cascodes de óxido grosso M4, bem como duas

fontes de corrente auxiliares.

Figura 3.1: Circuito elétrico da célula de corrente sem calibração.

As dimensões do transístor da fonte de corrente dependem, da Amplitude Máxima de Saída – Full-

Scale Output (FSO) da corrente do DAC e da tecnologia onde o conversor será implementado.

Pode demonstrar-se que o desvio padrão, σI , da corrente, I, que passa num transistor com dimen-

sões W e L é dado por [7]

(σII

)2=

1

2WL

[A2β +

4A2V T

(VGS − Vt)2

], (3.1)

onde os valores deAβ eAV T são propriedades de matching determinados por flutuações na mobilidade

e dependem da tecnologia usada. VGS é a tensão entre a gate e a source do transístor, Vt a tensão

35

Page 52: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

necessária para ligar o transístor e, W e L o comprimento e a largura do canal do transístor, respetiva-

mente. Esta equação indica que caso se pretenda diminuir o σI duas vezes é necessário aumentar a

área do transístor quatro vezes.

Do modelo quadrático, vem a dependência da corrente e é dado por

W

L=

2Ics

µCox (VGS − Vt)2, (3.2)

onde

Ics =IFS

2NMSB − 1. (3.3)

Os parâmetros Aβ , AV T e µCox foram obtidos por simulação e são apresentados na Tab. 3.1.

Aβ AV T µCox_fino µCox_grosso

0,436% 3,078 mV.µm 111,11 µA/V 2 45,69 µA/V 2

Tabela 3.1: Tabela de parâmetros.

Sabendo que a resistência de saída é de 200Ω e que a corrente máxima de saída IFS = 2, 5mA

tem-se que VFS = 0, 5V . Uma vez que a alimentação é Vdd = 1, 8V escolhe-se VDS = 325mV e uma

margem de 175mV tem-se que VGS − Vt = 150mV .

De (3.1) e (3.3), sabendo que IFS = 2, 5mA, NMSB = 6, σI/I = 0, 17%, tem-se que(WL

)1

= 32 e

(WL)1 = 294, 7µm2, consequentemente W1 = 97µm e L1 = 3µm.

Enquanto que as dimensões do transístor da fonte de corrente são determinadas pela corrente e

pelas considerações de desemparelhamento, as dimensões dos interruptores e cascodes são determi-

nados pela corrente e velocidade de operação. Deste modo, o L do interruptor M3 é escolhido para

ser o mínimo da tecnologia, L3 = 40nm. O objetivo é colocar o interruptor o mais pequeno possível de

modo a diminuir a capacidade parasita no nó e assim beneficiar o tempo de estabelecimento do con-

versor. Como a corrente que passa no interruptor é a mesma que a do transístor da fonte de corrente,

de (3.3) é obtido W3 = 1, 3µm.

Quanto ao cascode, M2, a corrente que lá passa é a mesma que no transístor da fonte de corrente

e no interruptor. Deve-se implementar um cascode cuja relação gm/gds seja suficientemente grande

para este ficar bem saturado. Assim, escolhe-se um L2 = 90nm e de (3.3) vem que W2 = 3µm. Para

o dimensionamento do cascode de óxido grosso, M4, é necessário contabilizar com a corrente auxiliar,

cuja função é, não descarregar a capacidade parasita presente no nó sempre que os interruptores

comutam a corrente para a saída N ou P, ficando o circuito com melhor desempenho dinâmico [8].

Esta corrente auxiliar é aproximadamente 2µA e, escolhendo L mínimo para este transístor tem-se que

L4 = 0, 27µm e W4 = 22, 1µm.

Com a introdução da calibração neste DAC é necessário adicionar dois novos ramos à célula da

fonte de corrente de modo que a corrente seja direcionada para o comparador. Assim, como se pode

observar na Fig. 3.2, os dois novos ramos são réplicas dos já existente de modo a ter as mesmas

condições de funcionamento quando se está em modo de calibração.

36

Page 53: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.3 Amostragem

Figura 3.2: Circuito elétrico da célula de corrente com calibração.

Quando o DAC está em funcionamento normal são selecionados os interruptores SWp e SWn e a

corrente é encaminhada para a saída P e N respetivamente. Quando o conversor está em calibração

são selecionados os interruptores SWcal e SWcal_dmy. O SWcal encaminha a corrente para uma resis-

tência onde é feita a amostragem antes do comparador, e SWcal_dmy que encaminha a corrente para

uma resistência dummy de igual valor.

As dimensões dos transístores mantêm-se com a exceção do transístor da fonte de corrente. Uma

vez que, com a calibração, o σI/I = 1%, possibilitando assim a diminuição da área do transístor da fonte

de corrente. De (3.3) vem que(WL

)1

= 32 e de (3.1) vem que (WL)1 = 8, 52µm2, consequentemente

W1 = 16µm e L1 = 0, 52µm.

Com a calibração consegue-se uma redução na área de 34,6 vezes em relação à área inicial do

transístor da fonte de corrente.

3.3 Amostragem

Para comparar as fontes de corrente, implementou-se um circuito que amostra a tensão gerada por

cada uma delas na resistência R, em condensadores como mostra a Fig. 3.3.

... I2 I1

R

C2

C1

ph1dphsw1

ph2

dphsw2

q

C1=C2=C

In

phnlatch

offset_cal

qz

OffsetOK

Figura 3.3: Circuito simplificado da amostragem no comparador.

37

Page 54: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

Uma alternativa, seria colocar duas resistências de igual valor, sendo que assim, podiam ser amos-

tradas as duas fontes em simultâneo. Com esse método introduz-se um erro na tensão amostrada

devido ao desemparelhamento das resistências. Escolheu-se uma única resistência para amostrar a

tensão gerada pelas fontes de corrente, porque deste modo, as duas fontes de corrente são amostradas

nas mesmas condições.

O modo de funcionamento deste circuito é simples, inicialmente liga-se ph1 e dphsw1, e a tensão

da resistência, gerada por I1, é amostrada no C1. De seguida mantém-se ligado ph1, liga-se dphsw2 e

acontece a mesma coisa para I2. Por fim é feita a calibração da tensão de desvio, ativando offset_cal,

ficando o circuito à espera que a tensão de desvio seja calibrada.

Depois de calibrada a tensão de desvio entra-se num loop onde são comparadas fontes de corrente

duas a duas, até obter a ordenação completa das fontes. Inicialmente liga-se ph1 e dphsw1, e a tensão

da resistência, gerada por I1, é amostrada no C1. De seguida liga-se ph2 e dphsw2, e acontece a

mesma coisa para a I2. O comparador é então ativado, indicando qual das fontes de corrente é maior.

De seguida é ligado ph2 e dphsw1, os condensadores são novamente colocados à mesma tensão, é

feita a calibração da tensão de desvio e volta a repetir-se o loop para duas novas fontes de corrente.

Tendo em conta a especificação para o ruído total do comparador, 100µV , indicadas no capítulo

anterior, e tendo em conta que a potência de ruído dos sinais amostrados no condensador é [9]

v2n =kT

C, (3.4)

onde k é a constante de Boltzmann, T é a temperatura em Kelvin e C a capacidade. Uma vez que se

trata de um circuito diferencial é necessário reformular (3.4)

v2dif =2kT

C. (3.5)

Optou-se por dividir o ruído em partes iguais, tanto para o circuito de amostragem como para o

comparador, ficando assim 70µV para cada um deles, cumprindo desta forma as especificações

v2TOTAL =

√(v2comp

)2+(v2dif

)2=√

70µ2 + 70µ2 = 98, 99µV. (3.6)

Para que o valor de modo comum da tensão de entrada do comparador seja 0,4V (o que garante

o bom funcionamento do mesmo) e uma vez que a corrente das fontes MSBs é I = 40µA, escolhe-

se uma resistência de 10kΩ. Assim, tendo em conta o ruído e a constante de tempo (τ ), é possível

escolher o condensador a usar.

Na Tab. 3.2 pode visualizar-se a relação entre o ruído e a constante de tempo.

C [pF] vdif [µV] τ [ns]0,1 298,6 11 94,4 102 66,8 2010 29,9 100

100 9,4 1000

Tabela 3.2: Relação entre o ruído e a constante de tempo.

38

Page 55: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.3 Amostragem

Tendo em conta (3.6) e a Tab. 3.2, o condensador que deve ser escolhido é o de C = 2pF . Este

condensador, juntamente com a resistência de 10kΩ, tem uma constante de tempo elevada, 20ns, o que

torna o circuito demasiado lento. Uma solução passa por, permitir mais ruído na parte de amostragem

e tentar diminuir o ruído no comparador. Deste modo, opta-se por colocar um condensador menor, 1pF,

o que torna o circuito duas vezes mais rápido, mesmo optando por várias comparações de modo a

reduzir o ruído do comparador.

Assim, a nova divisão do ruído é

v2TOTAL =

√(v2comp

)2+(v2dif

)2=√

34µ2 + 94, 4µ2 = 100, 33µV. (3.7)

Com este condensador e resistência de amostragem será necessário esperar alguns ciclos de reló-

gio para que a tensão estabilize. Assim, de modo a concluir quanto tempo é necessário esperar, como

ilustra a Fig. 3.4, considera-se o caso extremo em que a primeira fonte carregada no condensador tem

um erro de 5σ e que a fonte que será carregada de seguida tem um erro de −5σ.

Vmax

Vmin

erro

Ts t

V

fonte2fonte1

Figura 3.4: Tensão amostrada no condensador.

A tensão ilustrada na Fig. 3.4, vo(t) é dada por

vo(t) = Vf − (Vf − Vi) e−tτ , (3.8)

onde Vi é a tensão inicial e Vf a tensão final.

Deste modo e tendo em conta que o σII = 1%,

Imax = 40µ(1 + 5%) = 42µA, (3.9)

Imin = 40µ(1− 5%) = 38µA, (3.10)

Vmax = 420mV, (3.11)

Vmin = 380mV, (3.12)

∆V = Vmax − Vmin = 40mV. (3.13)

39

Page 56: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

O erro na entrada do comparador tem de ser inferior a 100µV, assim,

vo(t) = Vmin −∆V e−Tsτ (3.14)

Vmin − vo(t) = ∆V e−Tsτ (3.15)

erro = ∆V e−Tsτ . (3.16)

De (3.16) o tempo de estabelecimento é dado por Ts = 59, 9ns.

Com este tempo de estabelecimento conclui-se que, a frequência máxima possível para amostrar a

tensão nos condensadores de amostragem é fmax = 16, 7MHz.

Na Fig. 3.5 pode-se visualizar a simulação que mostra a tensão amostrada nos dois condensadores.

Figura 3.5: Simulação da tensão amostrada no condensador.

Observa-se que os condensadores partem da mesma tensão, o que significa que vem da situação

em que foi calibrada a tensão de desvio do comparador. É carregada uma fonte no C1, outra no C2 e

são feitas várias comparações. De seguida os condensadores são colocados ao mesmo potencial, é

feita a calibração de da tensão de desvio e são carregadas novas fontes.

A máquina de estados que controla a calibração, explicada no próximo capítulo, divide o relógio de

entrada (320 MHz) de forma a respeitar a frequência máxima fmax, enquanto o DAC está na calibração.

Por simulação, obteve-se que a capacidade parasita na entrada do comparador é Cp = 78, 78fF ,

assim implementou-se um condensador de amostragem cuja capacidade é C = 920fF . Este conden-

sador foi implementado usando um dispositivo MOS, sendo a capacidade dada por,

C = WLCox, (3.17)

onde a capacidade por unidade de área do óxido é Cox = 5, 84[fF/µm2

], ficando assim o condensador

com W = 15, 75µm e L = 10µm.

Na Fig. 4.2 mostra-se o circuito implementado.

De modo a tentar compensar a injeção de carga e com o objetivo de garantir que a tensão de

modo comum fique sempre ≈ 400mV , foi necessário colocar transístores junto dos interruptores. A

injeção de carga não é um problema para as medidas, uma vez que, esta tem o mesmo efeito em

ambos os condensadores. Admitindo que o efeito nos condensadores deixa de ser igual, devido aos

desemparelhamentos nos interruptores, é necessário contabilizar essas diferenças. Deste modo, ao

40

Page 57: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.4 Comparador

Figura 3.6: Amostragem no comparador.

colocar os condensadores ao mesmo potencial e posteriormente efetuar-se a calibração da tensão de

desvio do comparador, consegue-se anular a tensão de desvio gerada por essa injeção de carga.

3.4 Comparador

O comparador utilizado neste trabalho, tem como base o comparador dinâmico apresentado em [10],

modificado para ter um par diferencial do tipo PMOS. Na Fig. 3.7, pode observar-se parte do circuito

elétrico do comparador.

Quando o sinal latch está desligado (latch = 0 e latch = 1), o comparador está no modo reset, onde

os nós vOP e vON são puxados a Vdd através dos transístores M4a e M4b respetivamente. Os nós vDN

e vDP estão ambos a 0V através de M7a e M7b, como M8 está ao corte, não existe corrente a passar

no par diferencial M1a e M1b.

Quando o sinal latch fica ativo (latch = 1 e latch = 0), os transístores M7 passam a estar ao

corte, a corrente começa a passar por M8 e pelos transístores do par diferencial, carregando assim os

nós vDN e vDP . Quando o vGS do M5a ou M5b passa a ser maior que a tensão de limiar, Vt, estes

começam a conduzir descarregando assim os nós de saída. Com os transístores M5 em condução, os

transístores M6 e M3 formam um par de inversores, ligados costas com costas, implementando assim

uma realimentação positiva.

Assumindo que a tensão de entrada é positiva (vIP>vIN ), o nó de saída vON irá começar a descar-

regar antes de vOP , uma vez que vDP atinge o Vt do M5b antes do vDN , atingir o Vt de M5a. Dado que

vOP está ligado à porta de M6b e M3b, o aumento da tensão fará com que o transístor PMOS conduza

menos e o NMOS mais. A realimentação positiva, utilizando inversores costas com costas, faz com que

a saída do comparador transite rapidamente para o estado final: vOP a Vdd e vON a zero. Esta fase é

chamada de regeneração e está ilustrada na Fig. 3.8.

41

Page 58: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

Figura 3.7: Parte do circuito elétrico do comparador dinâmico desenvolvido neste trabalho.

Figura 3.8: Tensões de saída do comparador para vIP >vIN [5].

42

Page 59: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.4 Comparador

Na Fig. 3.9 pode observar-se a simulação das tensões de saída do comparador.

Figura 3.9: Simulação das tensões de saída do comparador.

Como foi referido na secção anterior, o ruído referido à entrada do comparador tem que ser inferior

a 34µV . Para obter este valor iremos recorrer a uma decisão por maioria, assim sendo o comparador é

dimensionado de modo a que o ruído referido à entrada seja inferior a 100µV .

O ruído do comparador é dominado pela contribuição do primeiro andar. Isto acontece porque, M1 e

CD formam um integrador com ganho maior do que 1, que reduz o ruído, referido à entrada, gerado pelo

andar de regeneração (M3 – M6). Assim, o ruído produzido pelo segundo andar do comparador será

ignorado e só o ruído gerado pelo primeiro andar será contabilizado. Considerando que o ruído produ-

zido por M1a e M1b é apenas ruído térmico, a densidade espectral de potência do ruído na corrente de

dreno nos transístores MOS na saturação é dado por [9]

i2n = 4kTγgm, (3.18)

onde k é a constante de Boltzmann, T a temperatura em Kelvin, γ ≈ 1 para transístores de canal curto

e gm é a transcondutância do transístor. De acordo com [10] o ruído referido à entrada do primeiro

andar do comparador é dado por

(v2COMP

)2≈ 4kT

1

Vt1CD

IM1

gm1, (3.19)

onde IM1 é a corrente que passa em cada transístor (M1a e M1b), gm1 é a transcondutância dos mes-

mos transístores, CD é a capacidade nos nós VDP e VDN e Vt1 é a tensão necessária para ligar os

transístores M1.

Considerando que os transístores estão na inversão forte a transcondutância de M1 é dada por

gm1 =2IM1

VOVD. (3.20)

Substituindo (3.20) em (3.19), a capacidade é dada por

(v2COMP

)2≈ 4kT

1

Vt1CD

IM1

2IM1

VOVD

(3.21)

⇔(v2COMP

)2≈ 2kT

VOVDVt1CD

(3.22)

43

Page 60: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

pelo que

CD =2kT(

v2COMP

)2 VOVDVt1, (3.23)

tendo em conta a expressão anterior e dado que VOVD = 0, 2V e v2COMP = 100µV o condensador

CD = 636, 9fF .

Este condensador foi implementado usando um dispositivo MOS, onde a capacidade é dada por

(3.17) sendo o Cox = Cox_fino = 14, 2[fF/µm2

]e assim o condensador fica com W = 44, 9µm e

L = 10µm.

De modo a obter o ruído referido à entrada do comparador foi feita uma simulação transient noise no

HSPICE com 1000 decisões do comparador com um sinal de entrada constante e igual a 1 mV. Assim,

o ruído referido à entrada é dado por

σ =√E[X2]− E[X]2 ⇔ v2COMP sim =

√(∆VDP,DN_RMS)

2 −(∆VDP,DN

)2A

, (3.24)

onde A representa o ganho.

Uma vez que o comparador é um sistema linear variante no tempo, assim foi necessário escolher

um instante para obter esse ganho. Assim instante escolhido foi o início da fase de regeneração e foi

amostrado 1000 vezes.

Na Fig. 3.10 observa-se o ruído do comparador.

Figura 3.10: simulação do ruído do comparador.

Por simulação, observou-se que v2COMP sim = 102, 2µV e assim opta-se por fazer uma decisão por

maioria. Deste modo são efetuadas 7 decisões no comparador e de seguida uma decisão por maioria

de modo a baixar o ruído do comparador. Assim, tem-se que o ruído referido à entrada do comparador

com várias decisões é dado por

v2COMPTOTAL=

√√√√√Ncomp

(v2COMP

)2N2comp

, (3.25)

onde Ncomp é o número de decisões feitas pelo comparador.

De (3.25), sabendo que foram feitas 7 comparações, tem-se que v2COMPTOTALsim= 38, 7µV .

44

Page 61: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.4 Comparador

Por simulação, Fig. 3.11 pode observar-se do ruído do comparador, contabilizando com o circuito

de amostragem, e com o comparador apenas a fazer uma decisão.

Figura 3.11: Simulação do ruído do comparador com circuito de amostragem.

Observa-se que v2dif sim = 102, 4µV e que no final, com o circuito de amostragem e o comparador,

fica-se então com

v2TOTAL =

√(v2compsim

)2+(v2dif sim

)2=√

38, 7µ2 + 102, 39µ2 = 109, 4µV. (3.26)

3.4.1 Calibração da tensão de desvio

Como já foi referido, o comparador tem uma tensão de desvio inerente, devido ao fato de haver erros

aleatórios no processo de fabrico dos transístores. Um método para minimizar essa tensão de desvio

do comparador é apresentado na Fig. 3.12.

Figura 3.12: Esquema de calibração da tensão de desvio [5].

Adicionalmente ao par diferencial principal, com a transcondutância, gm1 (que corresponde ao par

diferencial M1 da Fig. 3.7), existe um par diferencial auxiliar, gm2, cuja tensão de entrada é guardada

pelo condensador CS . A malha de retroação composta pelo comparador, o par diferencial auxiliar e

os condensadores comutados, ajustam a tensão de calibração, vCAL, de modo a cancelar a tensão

45

Page 62: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

de desvio. VOS1, VOS2 e VOSl são as tensões de desvio do par diferencial principal, auxiliar e do

comparador, respetivamente.

Em funcionamento normal S1 está ligado, e a tensão de entrada é aplicada ao par diferencial prin-

cipal. Durante a calibração, S2 curto circuita a entrada de gm1 para a massa, o que amplifica a sua

própria tensão de desvio e assim

vOA = −gm1R0VOS1, (3.27)

assumindo que i2 = 0.

Se o comparador for ligado neste instante, irá decidir 1 se −gm1R0VOS1 > VOSl e 0 caso con-

trário. Assim, esta decisão é determinada pela tensão de desvio do comparador, juntamente com o

pré-amplificador.

De seguida, o bloco Selection_Logic (que será explicado no Capítulo 5 deste documento), seleciona

a tensão de calibração a aplicar na entrada do par diferencial auxiliar, tendo em conta a decisão do

comparador. Este ajuste é feito carregando CP , que corresponde à capacidade parasita desse nó, com

VMAX ou VMIN , dependendo da decisão do comparador. De seguida CP é ligado a CS por S3. Uma

vez que CS é muito maior que CP , vCAL é ajustado em passos pequenos. O ciclo repete-se até que a

decisão do comparador seja contrária às decisões tomadas anteriormente, ficando assim a calibração

da tensão de desvio concluída.

Quando vOA está acima do limiar de decisão do comparador, este decide 1, carregando CP com

VMAX e aumentando a tensão de calibração, reduzindo assim, a tensão vOA em relação a VOSl. Com

isto, a tensão de calibração é ajustada de modo a que o comparador esteja no limiar de decisão quando

a tensão de entrada do pré-amplificador, gm1, é zero (situação forçada no inicio da calibração). A tensão

de calibração quando esta situação ocorre é VCALopt.

Analisando o circuito, as expressões da variação da tensão no nó vCAL são dadas por

vCAL+[n] = vCAL[n− 1] + (VMAX − vCAL[n− 1])CP

CP + CS, (3.28)

vCAL−[n] = vCAL[n− 1] + (VMIN − vCAL[n− 1])CP

CP + CS. (3.29)

Considerando a condição inicial vCAL[0] = 0, o primeiro passo da calibração pode ser escrito

∆vCALinicial =

(VMAX −

VMAX − VMIN

2

)CP

CP + CS, (3.30)

que é valido até vCAL atingir o seu limite, vCALopt.

A calibração da tensão de desvio, neste trabalho, é implementada de modo a que, quando vOA está

no limiar de decisão do comparador, e o comparador toma uma decisão oposta às anteriores, o bloco

Selection_Logic bloqueia o circuito nesse estado, ficando assim, uma tensão de desvio residual, que

no máximo é dado por

VOSmax = ±gm2

gm1

(VMAX −

VMAX − VMIN

2

)CP

CP + CS. (3.31)

46

Page 63: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3.4 Comparador

Uma vez que, a tensão de desvio depois da calibração é armazenada no condensador e este, ao

longo do tempo perde a sua carga devido às correntes de fuga, é necessário recalibrar a tensão de

desvio. Deste modo, optou-se por fazer esta calibração a cada duas fontes comparadas.

Colocando a transcondutância do par diferencial auxiliar gm2 = gm1

5 , com VMAX = 100mV e VMIN =

−100mV e para obter uma tensão de desvio máxima do comparador inferior a 100uV , a capacidade CS

tem que ser dimensionada de modo a verificar-se

CP ≈CS800

. (3.32)

Este condensador foi implementado usando um dispositivo MOS, onde a capacidade é dada por

(3.17) e na Fig. 3.13 é identificado como CSP e CSN .

Na Fig. 3.13 é apresentado a implementação do circuito de calibração da tensão de desvio, inte-

grado com o circuito do comparador dinâmico.

Figura 3.13: Circuito do comparador juntamente com o circuito de calibração da tensão de desvio.

Os transístores M2 formam o par diferencial auxiliar, representado na Fig. 3.12 como gm2, e os

transístores M1,o primeiro andar do comparador, formam o par diferencial principal, que na Fig. 3.12

corresponde a gm1. Comparando a Fig. 3.13 com a Fig. 3.12 pode observar-se que não existe S1 nem

S2. Isto é feito para calibrar também os desemparelhamentos na injeção de carga dos interruptores

dphsw1 e dphsw2 representados na Fig. 3.3.

De modo a verificar a calibração, efetuou-se uma primeira simulação de montecarlo e mediu-se a

tensão de desvio em cada run com a calibração desligada. De seguida, calculou-se o desvio padrão

das tensões de desvio (σ) e numa outra simulação foi forçado no comparador uma tensão de desvio

com um desvio padrão de 6σ. Deste modo, pretende-se colocar uma tensão de desvio de pior caso

47

Page 64: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

3. Blocos Analógicos

(6 vezes maior) e garantir que a calibração a consegue minimizar. Das simulações de montecarlo

obteve-se desvio padrão das tensões de desvio σ = 2, 8mV , assim foi forçado uma tensão de desvio de

16, 8mV no comparador e, ajustando VMAX e VMIN , bem como a relação entre gm1 e gm2 garante-se a

calibração. Depois de ajustado VMAX = 450mV , VMIN = 350mV e gm2 = gm1

5 , obteve-se a simulação

pode ser visualizada na Fig. 3.14.

Figura 3.14: Evolução da tensão diferencial de calibração da tensão de desvio.

Na Fig. 3.15 pode verificar-se que a tensão de desvio depois da calibração é no máximo 27, 7uV ,

isto porque, no último incremento o comparador tem uma decisão contrária às anteriores e logo o limiar

de decisão está entre os 27, 7uV do último incremento.

Figura 3.15: Zoom na simulação anterior para verificar a tensão de desvio do comparador depois da calibração da tensão dedesvio.

48

Page 65: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4Blocos Digitais e Simulações

Contents4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.2 Máquina de Estados que Controla o Circuito de Amostragem . . . . . . . . . . . . . 51

4.3 Máquina de Estados de Controlo da Calibração da Tensão de Desvio . . . . . . . . . 53

4.4 Controlo das Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.5 Algoritmo de Calibração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

49

Page 66: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

50

Page 67: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.1 Introdução

4.1 Introdução

Neste capítulo são apresentados os blocos digitais necessários ao funcionamento do DAC, nomea-

damente máquinas de estado, circuitos de controlo e o bloco digital onde será implementado o algoritmo

de calibração.

As máquinas de estados implementadas são máquinas de Moore e são utilizadas para gerar as

diferentes fases que controlam dos interruptores de amostragem das fontes no comparador, bem como

para a controlar a calibração da tensão de desvio do comparador.

Foi também necessário implementar um circuito de controlo de modo a discernir a seleção de fontes

em modo de calibração e em funcionamento normal.

Por fim será apresentado o bloco digital onde está implementado o algoritmo de calibração e o

restante código necessário para que o conversor funcione normalmente depois da calibração. Neste

capítulo também é possível visualizar as simulações efetuadas ao DAC.

4.2 Máquina de Estados que Controla o Circuito de Amostragem

Como já foi referido no capítulo anterior, e pode ser visualizado na Fig. 3.3, as fontes de corrente

são direcionadas para o comparador através de um único condutor. Por esse motivo, antes do com-

parador existe um circuito de amostragem onde, a tensão correspondente à fonte I1 é armazenada no

condensador C1 e a tensão correspondente à fonte I2 é armazenada no condensador C2. Por fim o

comparador toma uma decisão com base nas duas tensões armazenas nos respetivos condensadores.

É necessário uma máquina de estados que gere as fases que controlam os interruptores das fontes

de corrente, ph1 e ph2, bem como, as fases que controlam os interruptores antes dos condensadores,

dphsw1 e dphsw2, ilustrado na Fig. 3.3. Na Fig. 4.1 pode visualizar-se o fluxograma da máquina de

estados.

Inicialização

(000)

Carrega C1

com I1

(001)

Carrega C2

com I1

(010)

Calibração

Offset

(011)

Carrega C1

com I1

(100)

Carrega C2

com I2

(101)

Comparação

(110)

Carrega C1

com I2

(111)

OffsetOK=1

Sim

Não

Figura 4.1: Fluxograma da amostragem no comparador.

51

Page 68: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

Esta máquina de estados tem uma entrada de relógio (clk), uma entrada de enable (enable) e outra

que fica ativa quando a calibração da tensão de desvio do comparador estiver concluída (offsetOK).

Quanto a saídas, existe um sinal para controlar os interruptores cada fonte de corrente (dphsw1 e

dphsw2), um sinal para controlar os interruptores antes dos condensadores (ph1 e ph2), um sinal para

ativar a comparação (latch) e outro para ativar a calibração da tensão de desvio (offset_cal), como se

pode observar na Fig. 3.3.

Antes do comparador começar a comparar as diversas fontes de corrente, é necessário efetuar

a calibração da tensão de desvio do comparador de modo a minimizar os erros de comparação. Para

isso liga-se uma das fontes, neste caso a fonte I1, e carrega-se ambos os condensadores com a tensão

correspondente à fonte I1, estados (001) e (010). De seguida tem-se o estado (011), onde se efetua a

calibração da tensão de desvio do comparador ativando a saída (offset_cal). A máquina de estados não

avança enquanto a calibração não estiver concluída, ou seja, enquanto a entrada (offsetOK) não estiver

ativa. Uma vez ativa, a calibração da tensão de desvio está concluída e pode iniciar-se a comparação

das diversas fontes.

No estado (100), para que seja guardado o valor correto da fonte de corrente no condensador, em

primeiro lugar é ligada a fonte de corrente, espera-se o tempo de estabelecimento da fonte. Trata-se

de um intervalo de tempo reduzido, só para que não haja oscilações quando se liga o condensador,

pois este, juntamente com a resistência, tem uma constante de tempo grande, 10ns. No final acontece

o mesmo, o condensador é desligado e só depois se desliga a fonte, para que não seja guardado no

condensador um valor errado, devido à fonte estar a comutar. No estado (101), passa-se exatamente a

mesma coisa mas para a fonte I2.

Uma vez carregadas as tensões das fontes nos respetivos condensadores é feita a comparação,

estado (110), ativando o sinal ’latch’.

No próximo ciclo de relógio (111), a tensão na resistência, gerada por I2, é colocada no C1, de

modo a ficarem os dois condensadores com o mesmo potencial, visto que no condensador C2 já tinha a

tensão correspondente à fonte I2, e faz-se novamente a calibração da tensão de desvio do comparador.

É necessário fazer novamente a calibração da tensão de desvio pois o condensador que armazena o

valor residual da tensão de desvio perde o seu valor com o passar do tempo devido a correntes de fuga.

Entretanto, no bloco digital, são selecionadas duas novas fontes para serem comparadas e de seguida

começa um novo ciclo assim que o sinal (offsetOK) vem ativo.

A máquina de estados implementa este ciclo até que seja concluído o algoritmo de calibração.

Na Tab. 4.1 pode-se observar a tabela de verdade desta máquina de estados.

Recorrendo aos mapas de Karnaugh obtêm-se as seguintes equações lógicas

52

Page 69: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.3 Máquina de Estados de Controlo da Calibração da Tensão de Desvio

Estado Actual Estado SeguinteEstado Saídas OffsetOK=0 OffsetOK=1

Qa Qb Qc latch ph1 ph2 dphsw1 dphsw2 offset_cal Qa Qb Qc Qa Qb Qc

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

Tabela 4.1: Tabela de verdade para a máquina de estados da amostragem do comparador.

Da = QaQb +QaQbQc + OffsetOKQaQbQc, (4.1)

Db = QbQc +QaQc +QbQc + OffsetOKQbQc, (4.2)

Dc = QbQc +QbQc +QaQb + OffsetOKQbQc, (4.3)

latch = QaQbQc, (4.4)

ph1 = QaQbQc +QaQbQc +QaQbQc, (4.5)

ph2 = QaQbQc +QaQbQc, (4.6)

dphsw1 = QaQc +QaQb +QbQc, (4.7)

dphsw2 = QaQbQc +QaQbQc +QaQbQc, (4.8)

offset_cal = QaQbQc, (4.9)

onde Da, Db e Dc representa a entrada dos flip-flops.

Simplificando as equações lógicas obtém-se o circuito apresentado na Fig. 4.2.

Na Fig. 4.3 pode visualizar-se a simulação do circuito anterior.

4.3 Máquina de Estados de Controlo da Calibração da Tensão deDesvio

O comparador tem uma tensão de desvio inerente que pode resultar em decisões erradas, e que é

necessário minimizar. Com este intuito utilizou-se o circuito apresentado na Fig. 3.12 que necessita de

uma máquina de estados para controlar os diversos sinais. Esta máquina de estados está representada

na Fig. 3.12 com o bloco Selection_Logic, onde S4 e S5 corresponde a posvos e negvos respetivamente,

e S3 corresponde a phchrg na Tab. 4.2. Na Fig. 4.4 pode visualizar-se o fluxograma da máquina de

estados de calibração da tensão de desvio do comparador.

A máquina de estados tem uma entrada de relógio (clk) e uma entrada para iniciar a calibração

(offsetcal), que vem da máquina de estados descrita na secção anterior, e duas entradas com a decisão

do comparador (q e qz). Quanto a saídas, o sistema tem um sinal que liga uma tensão positiva em Cp

(posvos), Fig. 3.13, um sinal que liga uma tensão negativa Cp (negvos), um sinal que liga Cp ao Cs

53

Page 70: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

Figura 4.2: Circuito da máquina de estados da amostragem do comparador.

54

Page 71: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.3 Máquina de Estados de Controlo da Calibração da Tensão de Desvio

Figura 4.3: Simulação da máquina de estados da amostragem do comparador.

Comparação

(000)

Decisão?Carrega Cp

(001)

Carrega Cp

(010)

Liga Cp a Cs

(011)

Liga Cp a Cs

(100)

Comparação

(101)

Comparação

(110)

Alterou? Alterou?Cal. OK

(111)

NãoNão

0 1

Sim Sim

Figura 4.4: Fluxograma da calibração de offset do comparador.

55

Page 72: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

(phchrg) de modo a que seja adicionada em Cs a tensão de Cp, um sinal para o comparador decidir

(latch) e por fim um sinal que indica que a calibração está concluída (cal_ok).

Apresentados os sinais, na Tab. 4.2 pode observar-se a tabela de verdade desta máquina de esta-

dos. A tabela apresentada quando a (offsetcal) está ativa.

Estado Actual Estado SeguinteEstado Saídas Bvos=0 Bvos=1

Qa Qb Qc posvos negvos phchrg cal_ok latch Qa Qb Qc Qa Qb Qc

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

Tabela 4.2: Tabela de verdade para a máquina de estados da Calibração da tensão de desvio do comparador.

Inicialmente é colocada a mesma tensão aos terminais do comparador, o sinal (offsetcal) é ativo

e entramos no estado (000). Neste estado ativa-se o sinal (latch) e o comparador faz uma decisão.

Dependendo da decisão tomada pelo comparador é colocada uma tensão positiva ou negativa no con-

densador Cp.

Observando a Fig. 3.12, e tomando como exemplo o comparador decidir 1, a máquina de estados

passa ao estado (010) onde coloca uma tensão VMAX em Cp. No próximo ciclo de relógio o sinal

(phchrg) é ativado (100), ligando o Cp ao Cs através do interruptor S3, incrementando assim a tensão

carregada em Cs.

De seguida, no estado (110), é feita uma nova comparação e, se a decisão do comparador for igual à

decisão anterior, processo repete-se e volta-se a colocar VMAX em Cp. Isto acontece até que a decisão

seja diferente da anterior, neste caso a máquina de estados passa ao estado (111) onde ativa o sinal

(cal_ok) e termina o processo.

Recorrendo aos mapas de Karnaugh obtêm-se as seguintes equações lógicas:

Da = QbQc +BvosQaQb +BvosQaQc +QaQbQc, (4.10)

Db = BvosQb +QaQb +QaQc +QaQbQc, (4.11)

Dc = Qc +BvosQaQb +BvosQaQb, (4.12)

posvos = offsetcal(QaQbQc

), (4.13)

negvos = offsetcal(QaQbQc

), (4.14)

phchrg = offsetcal(QaQbQc +QaQbQc

), (4.15)

cal_ok = offsetcal (QaQbQc) , (4.16)

latch = offsetcal(QaQbQc +QaQbQc +QaQbQc

), (4.17)

(4.18)

56

Page 73: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.4 Controlo das Fontes

onde o Bvos é um sinal gerado a partir da decisão do comparador e a decisão anterior e Da, Db e Dc

são as entradas dos flip-flops da máquina de estados. Na Tab. 4.3 é apresentada a tabela de verdade

para este sinal.

Estado Actual Estado SeguinteQd q qz Bvos0 0 0 X0 0 1 00 1 0 10 1 1 01 0 0 X1 0 1 01 1 0 11 1 1 1

Tabela 4.3: Tabela de verdade para gerar o Bvos.

E obtém-se

Bvos = q (qz +Qd) . (4.19)

Simplificando as equações lógicas obtém-se o circuito apresentado na Fig. 4.5.

Na Fig. 4.6 pode observar-se a simulação desta máquina de estados.

Na Fig. 4.7 pode observar-se a simulação das duas máquinas de estado simultaneamente a funci-

onar.

4.4 Controlo das Fontes

Quando o DAC está em funcionamento normal o controlo das fontes é feito através do bloco digital

onde está implementado o algoritmo de calibração. Quando o DAC está em calibração o algoritmo

de ordenação indica quais a fontes para o comparador fazer a comparação e a máquina de estados

apresentada na secção 4.2 gere as fases do circuito apresentado na Fig. 3.3. Deste modo é necessário

uma interface que controle dada uma das fontes para os dois modos de funcionamento: Normal e

Calibração. Esta interface é apresentada nesta secção.

O bloco controlo das fontes recebe do bloco digital os sinais: alg, dig, dig1, dig2. Em que ’ alg’ fica

ativo quando o algoritmo de calibração começa, ’dig1’ e ’dig2’ são as fontes selecionadas pelo algoritmo

para serem comparados e ’dig’ seleciona as fontes em funcionamento normal.

Da máquina de estados recebe os sinais: cs1 e cs2. Este sinais controlam as fontes indicadas por

’dig1’ e ’dig2’.

As saídas são: calibração e normal. Estes sinais controlam as fontes em calibração e funcionamento

normal, respetivamente, e ao ramo de interruptores respetivo.

Na Tab. 4.4 é apresentada a tabela de verdade para estes sinais.

De salientar que existe um bloco para cada uma das fontes de corrente. Assim analisando a Tab.

4.4 pode observar-se que quando está na fase de calibração (alg=1) a saída fica ativa (calibracao=1)

quando o digital seleciona a primeira fonte para comparação (dig1=1) e a máquina de estados também

57

Page 74: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

Figura 4.5: Circuito da máquina de estados da calibração da tensão de desvio do comparador.

58

Page 75: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.4 Controlo das Fontes

Figura 4.6: Simulação da máquina de estados da calibração da tensão de desvio do comparador.

Figura 4.7: Simulação das duas máquinas de estado simultaneamente a funcionar.

59

Page 76: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

alg dig1 dig2 cs1 cs2 calibracao normal0 X X X X 0 01 0 0 0 0 0 11 0 0 0 1 0 11 0 0 1 0 0 11 0 0 1 1 0 11 0 1 0 0 0 01 0 1 0 1 1 01 0 1 1 0 0 01 0 1 1 1 1 01 1 0 0 0 0 01 1 0 0 1 0 01 1 0 1 0 1 01 1 0 1 1 1 01 1 1 0 0 0 01 1 1 0 1 0 01 1 1 1 0 0 01 1 1 1 1 0 0

Tabela 4.4: Tabela de verdade para o controlo das fontes de corrente em calibração e funcionamento normal.

seleciona a primeira fonte para comparação (cs1=1) ou quando o digital seleciona a segunda fonte para

comparação (dig2=1) e a máquina de estados também seleciona a segunda fonte para comparação

(cs2=1). Estes dois pares de sinais (dig1/cs1 e dig2/cs2) nunca estão ativos em simultâneo para a

mesma fonte. Quando estamos em funcionamento normal a saída fica ativa (normal=1) quando o

digital seleciona uma fonte em modo normal (dig=1), não representado na tabela, ou quando (dig1=0 e

dig2=0) de modo a que a fonte nunca se desligue.

Recorrendo aos mapas de Karnaugh obtêm-se as seguintes equações,

calibracao = alg.dig1.dig2.cs1 + alg.dig1.dig2.cs2, (4.20)

normal = alg.dig + alg.dig1.dig2. (4.21)

(4.22)

Após simplificação das equações o circuito é apresentado na Fig. 4.8.

4.5 Algoritmo de Calibração

O algoritmo de calibração pode ser dividido em duas partes, a ordenação das fontes e o esquema

de comutação das fontes.

Para a ordenação das fontes foram considerados vários algoritmos, tendo-se excluído à partida

algoritmos do tipo recursivos e do tipo "divisão e conquista"por não ser possível implementar recursi-

vidade em Verilog-A. Assim, foram só considerados algoritmos de ordenação sequenciais: Selection

Sort ; Insertion Sort ; e Bubble Sort [6].

60

Page 77: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.5 Algoritmo de Calibração

Figura 4.8: circuito que controla as fontes de corrente em calibração e funcionamento normal.

O Bubble Sort foi descartado por ser o que necessita de fazer mais comparações[6]. O Selection

Sort e o Insertion Sort são semelhantes quanto ao número de comparações[6]. Neste trabalho foi

utilizado o selection sort por ser mais simples de implementar em Verilog-A.

O selection sort funciona da seguinte forma, inicialmente considera que a primeira posição do vetor

é o mínimo, sendo este guardado num registo auxiliar. Fixando a primeira posição do vetor, o algoritmo

percorre o restante vetor comparando cada posição com o registo auxiliar, sendo esse registo atualizado

sempre que for detetado um valor inferior ao anteriormente guardado. Quando chegar ao fim do vetor,

no registo auxiliar está guardado a posição do mínimo no vetor. Caso o mínimo seja diferente do valor

na primeira posição do vetor, troca de posição com o primeiro elemento do vetor. Passa para a segunda

posição e percorre o vetor a partir daí até encontrar o mínimo e troca-o com a segunda posição e assim

sucessivamente até chegar à penúltima posição do vetor.

Uma vez ordenadas as fontes é aplicado um esquema de comutação a este vetor ordenado. Este

esquema de comutação é o abordado e explicado na secção 2.5.1.

O algoritmo de calibração foi implementado em Verilog-A e pode ser consultado na integra no Apên-

dice A.

Uma vez concluída a implementação dos blocos, fez-se uma simulação de montecarlo de modo a

posteriormente se poder observar os resultados com calibração. A simulação consiste em colocar à

entrada do DAC uma rampa digital e, sem calibração, observar o resultado na saída do conversor. De

seguida liga-se a calibração e observa-se novamente o resultado na saída.

Na Fig. 4.9 e na Tab. 4.5 pode observar-se o resultado da ordenação as fontes de corrente.

61

Page 78: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

39,0E-06

39,2E-06

39,4E-06

39,6E-06

39,8E-06

40,0E-06

40,2E-06

40,4E-06

40,6E-06

40,8E-06

41,0E-06

0 20 40 60 80

Co

rre

nte

[A

]

Fonte de Corrente

Fontes Fontes Ordenadas

Figura 4.9: Ordenação das fontes de corrente.

Índice Corrente (A)68 39,1108E-0634 39,4314E-0644 39,4956E-065 39,5020E-06

74 39,5121E-0667 39,5140E-0659 39,5495E-0637 39,5688E-06... ...

Tabela 4.5: Excerto das fontes de corrente ordenadas pelo algoritmo de calibração.

Na Fig. 4.10 pode observar-se parte da simulação onde são ordenadas as fontes e onde pode-se

visualizar o correto funcionamento do algoritmo.

A calibração compara o idig1<mínimo> com todas as posições de idig2. Assim, depois de percorrer

o vetor de fontes de corrente, a calibração selecionou a fonte de corrente 68 como mínimo (idig1<68>),

percorrendo o vetor uma segunda vez selecionou a fonte 34 (idig1<34>) e de seguida, percorrendo o

vector pela terceira vez, selecionou a 44 (idig1<44>).

Calculando uma INL com os resultados obtidos da rampa de saída observa-se, na Fig. 4.11, que

sem calibração tem-se uma INL = 2, 4LSB e DNL = 1, 5LSB.

Ligando então a calibração, para as mesmas fontes de corrente e nas mesmas condições obtém-se

os resultados apresentados na Fig. 4.12.

Observa-se que com a calibração a INL = 1, 1LSB e DNL = 0, 77LSB ficando assim muito

próximo das especificações.

62

Page 79: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4.5 Algoritmo de Calibração

Figura 4.10: Parte da Simulação do algoritmo de calibração.

Figura 4.11: INL e DNL do DAC sem calibração.

63

Page 80: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

4. Blocos Digitais e Simulações

Figura 4.12: INL e DNL do DAC com calibração.

64

Page 81: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

5Conclusões

Contents5.1 Sumário e conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

65

Page 82: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

5. Conclusões

5.1 Sumário e conclusões

Nesta dissertação foi projetado um conversor digital-analógico de 12 bits calibrado para comuni-

cações numa tecnologia de 40nm, alimentado a 1,8V/1,1V ±10%, com frequência de funcionamento

fs=320MHz, tensão máxima de saída VFS=0,5V e com INL=1LSB e DNL=1LSB no máximo.

No capítulo 2 foram apresentados alguns conceitos básicos no que diz respeito a DACs, bem como

algumas medidas de desempenho quer estáticas quer dinâmicas. Foram também apresentadas al-

gumas arquiteturas de DACs e foi introduzido o conceito de segmentação. A arquitetura apresentada

neste trabalho foi uma arquitetura em current steering segmentada, com 6 bits em termómetro e 6 bits

em binário, tendo um bloco digital onde foi implementado o algoritmo de calibração. O algoritmo de ca-

libração ordenas as 75 fontes de corrente (63 + 12 fontes extra), e de seguida foi aplicada a sequência

de comutação. Foi feita uma análise das sequências de comutação onde se introduziu uma sequência

inovadora e melhor para sistemas de comunicação baseados em sinais OFDM. Neste capítulo também

foram feitos vários estudos, através de um modelo Matlab, de modo a obter as especificações para

os diferentes circuitos que foram implementados neste trabalho, nomeadamente o comparador e fonte

de corrente. Fez-se também uma comparação entre o DAC sem calibração e um DAC com calibração

usando o modelo matlab e observa-se que com a calibração os resultados em termos de INL e DNL são

muito melhores permitindo assim uma redução significativa na área do transístor da fonte de corrente.

Ainda neste capítulo foi feito um levantamento de alguns dos trabalho já implementados.

O capítulo 3 começou com o dimensionamento da célula da fonte de um DAC sem calibração, isto

para saber, no final, qual melhoria obtida. De seguida fizeram-se as alterações à célula da fonte de

corrente que são necessárias à calibração. Posto isto foi dimensionado o transístor da fonte de corrente

visto que o resto se mantém ou é uma réplica. Com esta implementação é possível diminuir o tamanho

do transístor da fonte de corrente em 34,6 vezes a área inicial. Depois disso foi descrito o dimensiona-

mento o bloco de amostragem tendo em conta a especificação do ruído. De seguida foi dimensionado o

comparador dinâmico tendo em conta a especificação de ruído obtida do modelo e foi apresentada uma

forma para cancelar a tensão de desvio, originária do desemparelhamento dos transístores, de modo a

cumprir as especificações. No final foram feitas algumas simulações em HSPICE onde se mostra que

os blocos ficaram a cumprir as especificações.

No capítulo 4 foram apresentados alguns blocos digitais que foi necessário implementar de modo

a controlar as diversas fases que controlam os diversos interruptores quer do bloco de amostragem

quer do bloco de calibração da tensão de desvio do comparador. Em primeiro lugar foi implementada a

máquina de estados que controla a medição das fontes de corrente. De seguida a máquina de estados

que controla a calibração da tensão de desvio. Foi apresentado um circuito que controla as fontes de

corrente quando estas estão em calibração ou quando estão em funcionamento normal. Foi também

explicado como funciona o algoritmo de calibração implementado em verilog-A, cuja listagem pode

ser consultado no anexo A. Por fim, foram apresentadas algumas simulações que mostram o correto

funcionamento das máquinas de estado bem como do algoritmo de calibração. Mostra-se também

66

Page 83: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

5.2 Trabalho Futuro

neste capítulo que com a calibração a INL passa de 2,4LSB para 1,1LSB e a DNL passa de 1,5LSB

para 0,77 LSB, para as mesmas condições de simulação.

O conversor digital-analógico proposto foi desenvolvido nas instalações da Synopsys, Inc. Lisboa,

Portugal.

5.2 Trabalho Futuro

Este trabalho abordou um novo método de calibração introduzido num DAC já existente com o obje-

tivo de reduzir a área do mesmo. Contudo, ainda muito pode ser feito para complementar o que foi aqui

apresentado e melhorar o seu desempenho. Alguns aspetos neste trabalho não foram completamente

explorados principalmente devido ao tempo disponível:

• Efetuar a calibração as fontes de corrente menos significativas uma vez que, com a calibração, o

erro das fontes de corrente termómetro é anulado.

• Implementar o algoritmo em Verilog de modo a obter o bloco digital real para assim ser possível

contabilizar com a sua área e perceber qual será na realidade a a redução na área total.

• Este trabalho incidiu principalmente no comportamento estático do DAC. É necessário perceber

qual o efeito das alterações efetuadas, no comportamento dinâmico do conversor.

• O layout do DAC deveria ser implementado e a vista extraída deveria ser simulada de modo a

verificar se continua a garantir as especificações.

• Por fim, o objetivo máximo seria implementar o DAC no silício e testar o mesmo.

67

Page 84: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

5. Conclusões

68

Page 85: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Bibliografia

[1] Bosch, Anne Van den and Steyaert, Michiel and Sansen, Willy, Static and Dynamic Performance

Limitations for High Speed D/A Converters. Springer Science+Business Media, LLC, 2004.

[2] Carusone, Tony Chan and Johns, David A. and Martin, Kenneth W., Analog Integrated Circuit

Design. John Wiley & Sons, Inc., 2011.

[3] Lin, Chi-Hung and Bult, Klaas, “A 10-bit, 500-MSamples/s CMOS DAC in 0.6 mm2,” IEEE J. Solid-

State Circuits, vol. 33, pp. 1948–1958, December 1998.

[4] Chen, Tao and Gielen, Georges G. E., “A 14-bit 200-MHz current-steering DAC with switching-

sequence post-adjustment calibration,” IEEE J. Solid-State Circuits, vol. 42, pp. 2386–2394, No-

vember 2007.

[5] Figueiredo, Pedro M. and Vital, João C., Offset Reduction Techniques in Highspeed Analog-to-

Digital Converters. Springer Science+Business Media, LLC, 2009.

[6] Sedgewich, Robert, Algorithms in C. Addison-Wesley Publishing Company, Inc., 2006.

[7] Pelgrom, Marcel J. M. and Duinmaijer, AAD C. J. and Welbers, Anton P. G., “Matching properties of

MOS transistors,” IEEE J. Solid-State Circuits, vol. 24, pp. 1433–1440, October 1989.

[8] Manganaro, Gabriele, Advanced Data Converters. Cambridge University Press, 2011.

[9] Razavi, Behzad, Design of Analog CMOS Integrated Circuits. McGraw-Hill, 2001.

[10] Van Elzakker, Michiel and all, “A 10-bit charge-redistribution ADC consuming 1.9 µW at 1MS/s,”

IEEE J. Solid-State Circuits, vol. 45, pp. 1007–1015, May 2010.

[11] Bugeja, Alex R. and Song,Bang-Sup, “A self-trimming 14b 100MSamples/s CMOS DAC,” IEEE J.

Solid-State Circuits, vol. 35, pp. 1841–1852, December 2000.

[12] Van der Plas, Geert A. M. and Vandenbusshe, Jan and Sansen, Willy and Steyaert, Michael S.

J. and Gielen, Georges G. E., “A 14-bit intrinsic accuracy Q2 random walk CMOS DAC,” IEEE J.

Solid-State Circuits, vol. 34, pp. 1708–1718, December 1999.

[13] Schofield, W. and Mercer, D. and Onge, L. St., “A 16b 400MS/s DAC with <-80dBc IMD to 300MHz

and <-160dBm/Hz noise power spectral density,” IEEE International Solid-State Circuits Confe-

rence, vol. Session 7, no. 7.1, 2003.

69

Page 86: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

Bibliografia

70

Page 87: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

AVerilog-A

A-1

Page 88: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

A. Verilog-A

A-2

Page 89: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

////////////////////////////////////////////////////////////////

// Netlist generated by : Custom Designer (TM) db::generateVerilogA

// Date : Wed Sep 17 03:08:59 PM WEST 2014

////////////////////////////////////////////////////////////////

// Library Name : z8562cqlp

// Cell Name : digital_block

// View Name : veriloga

////////////////////////////////////////////////////////////////

// Author : Décio Gonçalves

////////////////////////////////////////////////////////////////

`include "constants.vams"

`include "disciplines.vams"

module top_sim1 (boost, cal_ok, clk, comp_done, dgnd, di0, di1, di10, di11, di2,

di3, di4, di5, di6, di7, di8, di9, dnilsb, dnqlsb, dpilsb, dpqlsb, dq0, dq1, dq10,

dq11, dq2, dq3, dq4, dq5, dq6, dq7, dq8, dq9, dvdd, en_algorithm, enbiasz, enctr0,

enctr1, enctr2, endaci, endacq, eni_cal, eni_cal_z, enilsb, enilsbz, enimsb,

enimsbz, enq_cal, enq_cal_z, enqlsb, enqlsbz, enqmsb, enqmsbz, envon, gain0, gain1,

gain2, gain3, idig1, idig2, idig, latch_i_ini, latch_q_ini, nocalib, q0, q0z, qdig1,

qdig2, qdig, start, stdby, tieh_cdm, tielow_cdm, vbiasmode, vonmode, voutp, voutn);

output boost;

input cal_ok;

input clk;

input comp_done;

input dgnd;

input di0;

input di1;

input di10;

input di11;

input di2;

input di3;

input di4;

input di5;

input di6;

input di7;

input di8;

input di9;

output [0:5] dnilsb;

output [0:5] dnqlsb;

output [0:5] dpilsb;

output [0:5] dpqlsb;

input dq0;

input dq1;

input dq10;

input dq11;

input dq2;

input dq3;

input dq4;

input dq5;

input dq6;

input dq7;

input dq8;

input dq9;

input dvdd;

output en_algorithm;

output enbiasz;

output enctr0;

output enctr1;

output enctr2;

output endaci;

output endacq;

output [0:74] eni_cal;

output [0:74] eni_cal_z;

output enilsb;

output enilsbz;

output [0:74] enimsb;

output [0:74] enimsbz;

output [0:74] enq_cal;

output [0:74] enq_cal_z;

output enqlsb;

A-3

Page 90: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

output enqlsbz;

output [0:74] enqmsb;

output [0:74] enqmsbz;

output [0:1] envon;

output gain0;

output gain1;

output gain2;

output gain3;

output [0:74] idig1;

output [0:74] idig2;

output [0:74] idig;

output latch_i_ini;

output latch_q_ini;

output nocalib;

input q0;

input q0z;

output [0:74] qdig1;

output [0:74] qdig2;

output [0:74] qdig;

output start;

output stdby;

input tieh_cdm;

input tielow_cdm;

output [0:2] vbiasmode;

output [0:2] vonmode;

input voutp;

input voutn;

electrical boost, cal_ok, clk, comp_done, dgnd, di0, di1, di10, di11, di2, di3, di4, di5, di6, di7,

di8, di9, dq0, dq1, dq10, dq11, dq2, dq3, dq4, dq5, dq6, dq7, dq8, dq9, dvdd, en_algorithm, enbiasz,

enctr0, enctr1, enctr2, endaci, endacq, enilsb, enilsbz, enqlsb, enqlsbz, gain0, gain1, gain2, gain3,

latch_i_ini, latch_q_ini, nocalib, q0, q0z, start, stdby, tieh_cdm, tielow_cdm, voutp, voutn;

electrical [0:5] dnilsb;

electrical [0:5] dnqlsb;

electrical [0:5] dpilsb;

electrical [0:5] dpqlsb;

electrical [0:74] eni_cal;

electrical [0:74] eni_cal_z;

electrical [0:74] enimsb;

electrical [0:74] enimsbz;

electrical [0:74] enq_cal;

electrical [0:74] enq_cal_z;

electrical [0:74] enqmsb;

electrical [0:74] enqmsbz;

electrical [0:1] envon;

electrical [0:74] idig1;

electrical [0:74] idig2;

electrical [0:74] idig;

electrical [0:74] qdig1;

electrical [0:74] qdig2;

electrical [0:74] qdig;

electrical [0:2] vbiasmode;

electrical [0:2] vonmode;

/***************** ******VARIABLE DEFINITIONS**********************************/

real td=180p, tr=10p, tf=10p;//transitions properties

integer boost_i=0, start_i=1, nocalib_i=0, nocalib_cont=0, en_algorithm_i=0;

integer latch_i_ini_i=0, latch_q_ini_i=0, enq_cal_i[74:0];

integer dnilsb_i[5:0], dnqlsb_i[5:0], endaci_i=1, endacq_i=0, q0_i=0;

integer enbiasz_i=0, enctr0_i=0, enctr1_i=0, enctr2_i=0, envon_i[1:0];

integer vbiasmode_i[2:0], vonmode_i[2:0], gain_i[3:0];

integer enilsb_i=1, enqlsb_i=1, stdby_i=0, eni_cal_i[74:0], enimsb_i[74:0];

integer enqmsb_i[74:0], idig1_i[74:0], idig2_i[74:0], idig_i[74:0];

integer qdig1_i[74:0], qdig2_i[74:0], qdig_i[74:0];

integer corrent_souces[74:0], cs1=0, cs2=1, i=0, comp_count=0;

integer aux_index=0, aux=0, res_comp[7:0];

integer corrent_souces_final1[62:0], corrent_souces_final2[62:0], corrent_souces_sorted[62:0], rnd=0;

integer msb_0=0, msb_1=0, msb_2=0, msb_3=0, msb_4=0, msb_5=0;

integer minimo=0, minimo_aux=0, first=0, inicial_count=0;

real mean_comp;

A. Verilog-A

A-4

Page 91: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

parameter string inputfilename="rampa.csv";

parameter string outputfilename="tensao_saida.csv";

integer fin, fout;

integer enilsbz_i, enqlsbz_i, dpilsb_i[5:0], dpqlsb_i[5:0], eni_cal_z_i[74:0], enimsbz_i[74:0],

enq_cal_z_i[74:0], enqmsbz_i[74:0];

integer stt=1111;

//integer stt=1;

parameter string inputfilename2="rampa1.csv";

integer fin2;

parameter string inputfilename3="rampa2.csv";

integer fin3;

parameter string outputfilename1="tensao_saida1.csv";

integer fout1;

parameter string outputfilename2="tensao_saida2.csv";

integer fout2;

/******************************************************************************/

analog begin

//INICIALIZATIONS

@(initial_step) begin

for(i=0;i<=5;i=i+1) begin

dnilsb_i[i]=0; // 1-ON 0-OFF

dnqlsb_i[i]=0; // 1-ON 0-OFF

end

for(i=0;i<=1;i=i+1) envon_i[i]=1;

for(i=0;i<=2;i=i+1) begin

vbiasmode_i[i]=0;

vonmode_i[i]=0;

end

gain_i[3]=0;

gain_i[2]=1;

gain_i[1]=0;

gain_i[0]=1;

for(i=0;i<=74;i=i+1) begin

eni_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enimsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

enq_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enqmsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

idig1_i[i]=0; // 1-ON 0-OFF

idig2_i[i]=0; // 1-ON 0-OFF

idig_i[i]=0; // 1-ON 0-OFF

qdig1_i[i]=0; // 1-ON 0-OFF

qdig2_i[i]=0; // 1-ON 0-OFF

qdig_i[i]=0; // 1-ON 0-OFF

corrent_souces[i]=i;

end

for(i=0;i<=7;i=i+1) res_comp[i]=0;

for(i=0;i<=62;i=i+1) begin

corrent_souces_final1[i]=0;

corrent_souces_final2[i]=0;

corrent_souces_sorted[i]=0;

end

if (enilsb_i==1) enilsbz_i=0;

else enilsbz_i=1;

if (enqlsb_i==1) enqlsbz_i=0;

else enqlsbz_i=1;

for(i=0;i<=5;i=i+1) begin

if (dnilsb_i[i]==1) dpilsb_i[i]=0;

A-5

Page 92: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

else dpilsb_i[i]=1;

if (dnqlsb_i[i]==1) dpqlsb_i[i]=0;

else dpqlsb_i[i]=1;

end

for(i=0;i<=74;i=i+1) begin

if (eni_cal_i[i]==1) eni_cal_z_i[i]=0;

else eni_cal_z_i[i]=1;

if (enimsb_i[i]==1) enimsbz_i[i]=0;

else enimsbz_i[i]=1;

if (enq_cal_i[i]==1) enq_cal_z_i[i]=0;

else enq_cal_z_i[i]=1;

if (enqmsb_i[i]==1) enqmsbz_i[i]=0;

else enqmsbz_i[i]=1;

end

fin=$fopen(inputfilename,"r");

fout=$fopen(outputfilename,"w");

fout1=$fopen(outputfilename1,"w");

fout2=$fopen(outputfilename2,"w");

end

//SAVE THE OUTOUT IN A FILE

@(cross(V(clk)-V(dvdd)/2,+1)) begin

if (stt==0) begin

$strobe("**************** ecreve no ficheiro ", "stt=", stt, "**************");

$fdisplay(fout,"without_calibration voutp %.20f voutn

%.20f",V(voutp,dgnd),V(voutn,dgnd));

end

if (stt==6) begin

$strobe("**************** ecreve no ficheiro ", "stt=", stt, "**************");

$fdisplay(fout1,"calibration_sequence1 voutp %.20f voutn

%.20f",V(voutp,dgnd),V(voutn,dgnd));

end

if (stt==7) begin

$strobe("**************** ecreve no ficheiro ", "stt=", stt, "**************");

$fdisplay(fout2,"calibration_sequence2 voutp %.20f voutn

%.20f",V(voutp,dgnd),V(voutn,dgnd));

end

end

//CALIBRATION

//AT EVERY CLOCK RISING EDGE

@(cross(V(clk)-V(dvdd)/2,-1)) begin

if (stt==1111) begin

if (inicial_count==10) stt=0;

else begin

inicial_count=inicial_count+1;

$strobe(inicial_count);

end

end

if (stt==0) begin

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

stt=1;

else begin

$fscanf(fin,"%d %d %d %d %d %d %d %d %d %d %d

%d",dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb_3,msb_4,msb

A. Verilog-A

A-6

Page 93: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

_5);

$strobe(dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb

_3,msb_4,msb_5);

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==0) idig_i[0]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=1;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=2;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=3;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=4;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=5;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==0) for(i=0;i<=6;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=7;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=8;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=9;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=10;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=11;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=12;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=13;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==0) for(i=0;i<=14;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=15;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=16;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=17;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=18;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=19;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=20;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=21;i=i+1) idig_i[i]=1;

A-7

Page 94: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==0) for(i=0;i<=22;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=23;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=24;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=25;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=26;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=27;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=28;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=29;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==0) for(i=0;i<=30;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=31;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=32;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=33;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=34;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=35;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=36;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=37;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 &&

msb_5==1) for(i=0;i<=38;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=39;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=40;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=41;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=42;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=43;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=44;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 &&

A. Verilog-A

A-8

Page 95: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

msb_5==1) for(i=0;i<=45;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 &&

msb_5==1) for(i=0;i<=46;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=47;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=48;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=49;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=50;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=51;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=52;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=53;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 &&

msb_5==1) for(i=0;i<=54;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=55;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=56;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=57;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=58;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=59;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=60;i=i+1) idig_i[i]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=61;i=i+1) idig_i[i]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 &&

msb_5==1) for(i=0;i<=62;i=i+1) idig_i[i]=1;

end

end

if(stt==1) begin //VCM DIFERENTIAL PAIR COMPARATOR

$fclose(fin);

$fclose(fout);

for(i=0;i<=5;i=i+1) begin

dnilsb_i[i]=0; // 1-ON 0-OFF

dnqlsb_i[i]=0; // 1-ON 0-OFF

end

for(i=0;i<=1;i=i+1) envon_i[i]=1;

for(i=0;i<=2;i=i+1) begin

vbiasmode_i[i]=0;

vonmode_i[i]=0;

end

A-9

Page 96: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

gain_i[3]=0;

gain_i[2]=1;

gain_i[1]=0;

gain_i[0]=1;

for(i=0;i<=74;i=i+1) begin

eni_cal_i[i]=1; // 1->Latch=ON 0->Latch=OFF

enimsb_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enq_cal_i[i]=1; // 1->Latch=ON 0->Latch=OFF

enqmsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

idig1_i[i]=0; // 1-ON 0-OFF

idig2_i[i]=0; // 1-ON 0-OFF

idig_i[i]=0; // 1-ON 0-OFF

qdig1_i[i]=0; // 1-ON 0-OFF

qdig2_i[i]=0; // 1-ON 0-OFF

qdig_i[i]=0; // 1-ON 0-OFF

end

enilsb_i=0;

enqlsb_i=0;

nocalib_i=1;

nocalib_cont=nocalib_cont+1;

if (nocalib_cont==5) begin

nocalib_i=0;

stt=2;

end

end

if (stt==2) begin //OFFSET CALIBRATION

en_algorithm_i=1;

idig1_i[corrent_souces[cs1]]=1;

idig2_i[corrent_souces[cs2]]=1;

minimo=corrent_souces[cs1];

end

if (stt==3) begin //SORTING

if(first==0 && cs1!=minimo)begin

idig1_i[corrent_souces[cs1]]=0;

first=1;

end

else begin

for(i=0;i<=minimo-1;i=i+1) begin

idig1_i[i]=0;

end

end

idig2_i[corrent_souces[cs2-1]]=0;

idig1_i[minimo]=1;

idig2_i[corrent_souces[cs2]]=1;

end

if (stt==4) begin //DISCARD WORST CORRENT SOURCES

for(i=0;i<=74;i=i+1) begin

if(i>=6 && i<=68) begin

corrent_souces_sorted[aux]=corrent_souces[i];

$strobe(corrent_souces_sorted[aux]);

aux=aux+1;

end

end

stt=5;

en_algorithm_i=0;

end

if (stt==5) begin //SWITCHING SEQUENCE

corrent_souces_final1[0] =corrent_souces_sorted[0] ;

corrent_souces_final1[62]=corrent_souces_sorted[1] ;

corrent_souces_final1[4] =corrent_souces_sorted[2] ;

A. Verilog-A

A-10

Page 97: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

corrent_souces_final1[58]=corrent_souces_sorted[3] ;

corrent_souces_final1[8] =corrent_souces_sorted[4] ;

corrent_souces_final1[54]=corrent_souces_sorted[5] ;

corrent_souces_final1[12]=corrent_souces_sorted[6] ;

corrent_souces_final1[50]=corrent_souces_sorted[7] ;

corrent_souces_final1[16]=corrent_souces_sorted[8] ;

corrent_souces_final1[46]=corrent_souces_sorted[9] ;

corrent_souces_final1[20]=corrent_souces_sorted[10];

corrent_souces_final1[42]=corrent_souces_sorted[11];

corrent_souces_final1[24]=corrent_souces_sorted[12];

corrent_souces_final1[38]=corrent_souces_sorted[13];

corrent_souces_final1[28]=corrent_souces_sorted[14];

corrent_souces_final1[34]=corrent_souces_sorted[15];

corrent_souces_final1[30]=corrent_souces_sorted[16];

corrent_souces_final1[32]=corrent_souces_sorted[17];

corrent_souces_final1[26]=corrent_souces_sorted[18];

corrent_souces_final1[36]=corrent_souces_sorted[19];

corrent_souces_final1[22]=corrent_souces_sorted[20];

corrent_souces_final1[40]=corrent_souces_sorted[21];

corrent_souces_final1[18]=corrent_souces_sorted[22];

corrent_souces_final1[44]=corrent_souces_sorted[23];

corrent_souces_final1[14]=corrent_souces_sorted[24];

corrent_souces_final1[48]=corrent_souces_sorted[25];

corrent_souces_final1[10]=corrent_souces_sorted[26];

corrent_souces_final1[52]=corrent_souces_sorted[27];

corrent_souces_final1[6] =corrent_souces_sorted[28];

corrent_souces_final1[56]=corrent_souces_sorted[29];

corrent_souces_final1[2] =corrent_souces_sorted[30];

corrent_souces_final1[60]=corrent_souces_sorted[31];

corrent_souces_final1[3] =corrent_souces_sorted[32];

corrent_souces_final1[59]=corrent_souces_sorted[33];

corrent_souces_final1[7] =corrent_souces_sorted[34];

corrent_souces_final1[55]=corrent_souces_sorted[35];

corrent_souces_final1[11]=corrent_souces_sorted[36];

corrent_souces_final1[51]=corrent_souces_sorted[37];

corrent_souces_final1[15]=corrent_souces_sorted[38];

corrent_souces_final1[47]=corrent_souces_sorted[39];

corrent_souces_final1[19]=corrent_souces_sorted[40];

corrent_souces_final1[43]=corrent_souces_sorted[41];

corrent_souces_final1[23]=corrent_souces_sorted[42];

corrent_souces_final1[39]=corrent_souces_sorted[43];

corrent_souces_final1[27]=corrent_souces_sorted[44];

corrent_souces_final1[35]=corrent_souces_sorted[45];

corrent_souces_final1[31]=corrent_souces_sorted[46];

corrent_souces_final1[33]=corrent_souces_sorted[47];

corrent_souces_final1[29]=corrent_souces_sorted[48];

corrent_souces_final1[37]=corrent_souces_sorted[49];

corrent_souces_final1[25]=corrent_souces_sorted[50];

corrent_souces_final1[41]=corrent_souces_sorted[51];

corrent_souces_final1[21]=corrent_souces_sorted[52];

corrent_souces_final1[45]=corrent_souces_sorted[53];

corrent_souces_final1[17]=corrent_souces_sorted[54];

corrent_souces_final1[49]=corrent_souces_sorted[55];

corrent_souces_final1[13]=corrent_souces_sorted[56];

corrent_souces_final1[53]=corrent_souces_sorted[57];

corrent_souces_final1[9] =corrent_souces_sorted[58];

corrent_souces_final1[57]=corrent_souces_sorted[59];

corrent_souces_final1[5] =corrent_souces_sorted[60];

corrent_souces_final1[61]=corrent_souces_sorted[61];

corrent_souces_final1[1] =corrent_souces_sorted[62];

corrent_souces_final2[1] =corrent_souces_sorted[0] ;

corrent_souces_final2[61]=corrent_souces_sorted[1] ;

corrent_souces_final2[5] =corrent_souces_sorted[2] ;

corrent_souces_final2[57]=corrent_souces_sorted[3] ;

corrent_souces_final2[9] =corrent_souces_sorted[4] ;

corrent_souces_final2[53]=corrent_souces_sorted[5] ;

corrent_souces_final2[13]=corrent_souces_sorted[6] ;

corrent_souces_final2[49]=corrent_souces_sorted[7] ;

corrent_souces_final2[17]=corrent_souces_sorted[8] ;

corrent_souces_final2[45]=corrent_souces_sorted[9] ;

A-11

Page 98: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

corrent_souces_final2[21]=corrent_souces_sorted[10];

corrent_souces_final2[41]=corrent_souces_sorted[11];

corrent_souces_final2[25]=corrent_souces_sorted[12];

corrent_souces_final2[37]=corrent_souces_sorted[13];

corrent_souces_final2[29]=corrent_souces_sorted[14];

corrent_souces_final2[33]=corrent_souces_sorted[15];

corrent_souces_final2[31]=corrent_souces_sorted[16];

corrent_souces_final2[35]=corrent_souces_sorted[17];

corrent_souces_final2[27]=corrent_souces_sorted[18];

corrent_souces_final2[39]=corrent_souces_sorted[19];

corrent_souces_final2[23]=corrent_souces_sorted[20];

corrent_souces_final2[43]=corrent_souces_sorted[21];

corrent_souces_final2[19]=corrent_souces_sorted[22];

corrent_souces_final2[47]=corrent_souces_sorted[23];

corrent_souces_final2[15]=corrent_souces_sorted[24];

corrent_souces_final2[51]=corrent_souces_sorted[25];

corrent_souces_final2[11]=corrent_souces_sorted[26];

corrent_souces_final2[55]=corrent_souces_sorted[27];

corrent_souces_final2[7] =corrent_souces_sorted[28];

corrent_souces_final2[59]=corrent_souces_sorted[29];

corrent_souces_final2[3] =corrent_souces_sorted[30];

corrent_souces_final2[60]=corrent_souces_sorted[31];

corrent_souces_final2[2] =corrent_souces_sorted[32];

corrent_souces_final2[56]=corrent_souces_sorted[33];

corrent_souces_final2[6] =corrent_souces_sorted[34];

corrent_souces_final2[52]=corrent_souces_sorted[35];

corrent_souces_final2[10]=corrent_souces_sorted[36];

corrent_souces_final2[48]=corrent_souces_sorted[37];

corrent_souces_final2[14]=corrent_souces_sorted[38];

corrent_souces_final2[44]=corrent_souces_sorted[39];

corrent_souces_final2[18]=corrent_souces_sorted[40];

corrent_souces_final2[40]=corrent_souces_sorted[41];

corrent_souces_final2[22]=corrent_souces_sorted[42];

corrent_souces_final2[36]=corrent_souces_sorted[43];

corrent_souces_final2[26]=corrent_souces_sorted[44];

corrent_souces_final2[32]=corrent_souces_sorted[45];

corrent_souces_final2[30]=corrent_souces_sorted[46];

corrent_souces_final2[34]=corrent_souces_sorted[47];

corrent_souces_final2[28]=corrent_souces_sorted[48];

corrent_souces_final2[38]=corrent_souces_sorted[49];

corrent_souces_final2[24]=corrent_souces_sorted[50];

corrent_souces_final2[42]=corrent_souces_sorted[51];

corrent_souces_final2[20]=corrent_souces_sorted[52];

corrent_souces_final2[46]=corrent_souces_sorted[53];

corrent_souces_final2[16]=corrent_souces_sorted[54];

corrent_souces_final2[50]=corrent_souces_sorted[55];

corrent_souces_final2[12]=corrent_souces_sorted[56];

corrent_souces_final2[54]=corrent_souces_sorted[57];

corrent_souces_final2[8] =corrent_souces_sorted[58];

corrent_souces_final2[58]=corrent_souces_sorted[59];

corrent_souces_final2[4] =corrent_souces_sorted[60];

corrent_souces_final2[62]=corrent_souces_sorted[61];

corrent_souces_final2[0] =corrent_souces_sorted[62];

for(i=0;i<=62;i=i+1) $strobe("corrent_souces_final1=", corrent_souces_final1[i]);

for(i=0;i<=62;i=i+1) $strobe("corrent_souces_final2=", corrent_souces_final2[i]);

stt=61;

end

if (stt==61) begin

$strobe("**************", "stt=", stt, "**************");

$fclose(fin);

fin2=$fopen(inputfilename2,"r");

stt=6;

end

if (stt==71) begin

$strobe("**************", "stt=", stt, "**************");

$fclose(fin2);

A. Verilog-A

A-12

Page 99: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

$fclose(fout1);

fin3=$fopen(inputfilename3,"r");

stt=7;

end

if (stt==72) begin

$strobe("**************", "stt=", stt, "**************");

$fclose(fin3);

$fclose(fout2);

end

if (stt==6) begin

$strobe("**************", "stt=", stt, "**************");

nocalib_i=0;

nocalib_cont=0;

en_algorithm_i=0;

latch_i_ini_i=0;

latch_q_ini_i=0;

endaci_i=1;

endacq_i=0;

q0_i=0;

enbiasz_i=0;

enqlsb_i=1;

stdby_i=0;

cs1=0;

cs2=1;

i=0;

comp_count=0;

aux_index=0;

aux=0;

rnd=0;

msb_0=0;

msb_1=0;

msb_2=0;

msb_3=0;

msb_4=0;

msb_5=0;

minimo=0;

minimo_aux=0;

first=0;

inicial_count=0;

for(i=0;i<=5;i=i+1) begin

dnilsb_i[i]=0; // 1-ON 0-OFF

dnqlsb_i[i]=0; // 1-ON 0-OFF

end

for(i=0;i<=74;i=i+1) begin

eni_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enimsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

enq_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enqmsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

idig1_i[i]=0; // 1-ON 0-OFF

idig2_i[i]=0; // 1-ON 0-OFF

idig_i[i]=0; // 1-ON 0-OFF

qdig1_i[i]=0; // 1-ON 0-OFF

qdig2_i[i]=0; // 1-ON 0-OFF

qdig_i[i]=0; // 1-ON 0-OFF

corrent_souces[i]=i;

end

if (enilsb_i==1) enilsbz_i=0;

else enilsbz_i=1;

if (enqlsb_i==1) enqlsbz_i=0;

else enqlsbz_i=1;

A-13

Page 100: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1) begin

stt=71;

$strobe("stt=", stt);

end

else begin

$fscanf(fin2,"%d %d %d %d %d %d %d %d %d %d %d

%d",dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb_3,msb_4,msb

_5);

$strobe(dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb

_3,msb_4,msb_5);

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0) begin

idig_i[corrent_souces_final1[0]]=1;

$strobe(corrent_souces_final1[0]);

end

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0)

begin

for(i=0;i<=1;i=i+1) begin

idig_i[corrent_souces_final1[i]]=1;

$strobe(corrent_souces_final1[i]);

end

end

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=2;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=3;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=4;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=5;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=6;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=7;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=8;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=9;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=10;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=11;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=12;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=13;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=14;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=15;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=16;i=i+1) idig_i[corrent_souces_final1[i]]=1;

A. Verilog-A

A-14

Page 101: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=17;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=18;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=19;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=20;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=21;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=22;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=23;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=24;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=25;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=26;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=27;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=28;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=29;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=30;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=31;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=32;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=33;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=34;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=35;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=36;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=37;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=38;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=39;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=40;i=i+1) idig_i[corrent_souces_final1[i]]=1;

A-15

Page 102: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=41;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=42;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=43;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=44;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=45;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=46;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=47;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=48;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=49;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=50;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=51;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=52;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=53;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=54;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=55;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=56;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=57;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=58;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=59;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=60;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=61;i=i+1) idig_i[corrent_souces_final1[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1) begin

for(i=0;i<=62;i=i+1) idig_i[corrent_souces_final1[i]]=1;

stt=71;

end

end

A. Verilog-A

A-16

Page 103: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

end

if (stt==7) begin

$strobe("**************", "stt=", stt, "**************");

nocalib_i=0;

nocalib_cont=0;

en_algorithm_i=0;

latch_i_ini_i=0;

latch_q_ini_i=0;

endaci_i=1;

endacq_i=0;

q0_i=0;

enbiasz_i=0;

enqlsb_i=1;

stdby_i=0;

cs1=0;

cs2=1;

i=0;

comp_count=0;

aux_index=0;

aux=0;

rnd=0;

msb_0=0;

msb_1=0;

msb_2=0;

msb_3=0;

msb_4=0;

msb_5=0;

minimo=0;

minimo_aux=0;

first=0;

inicial_count=0;

for(i=0;i<=5;i=i+1) begin

dnilsb_i[i]=0; // 1-ON 0-OFF

dnqlsb_i[i]=0; // 1-ON 0-OFF

end

for(i=0;i<=74;i=i+1) begin

eni_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enimsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

enq_cal_i[i]=0; // 1->Latch=ON 0->Latch=OFF

enqmsb_i[i]=1; // 1->Latch=ON 0->Latch=OFF

idig1_i[i]=0; // 1-ON 0-OFF

idig2_i[i]=0; // 1-ON 0-OFF

idig_i[i]=0; // 1-ON 0-OFF

qdig1_i[i]=0; // 1-ON 0-OFF

qdig2_i[i]=0; // 1-ON 0-OFF

qdig_i[i]=0; // 1-ON 0-OFF

corrent_souces[i]=i;

end

if (enilsb_i==1) enilsbz_i=0;

else enilsbz_i=1;

if (enqlsb_i==1) enqlsbz_i=0;

else enqlsbz_i=1;

$fscanf(fin3,"%d %d %d %d %d %d %d %d %d %d %d

%d",dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb_3,msb_4,msb

_5);

A-17

Page 104: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

$strobe(dnilsb_i[0],dnilsb_i[1],dnilsb_i[2],dnilsb_i[3],dnilsb_i[4],dnilsb_i[5],msb_0,msb_1,msb_2,msb

_3,msb_4,msb_5);

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0)

begin

idig_i[corrent_souces_final2[0]]=1;

$strobe(corrent_souces_final2[0]);

end

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0)

begin

for(i=0;i<=1;i=i+1) begin

idig_i[corrent_souces_final2[i]]=1;

$strobe(corrent_souces_final2[i]);

end

end

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=2;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=3;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=4;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=5;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==0)

for(i=0;i<=6;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=7;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=8;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=9;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=10;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=11;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=12;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=13;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==0)

for(i=0;i<=14;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=15;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=16;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=17;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=18;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=19;i=i+1) idig_i[corrent_souces_final2[i]]=1;

A. Verilog-A

A-18

Page 105: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=20;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=21;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==0)

for(i=0;i<=22;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=23;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=24;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=25;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=26;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=27;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=28;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=29;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==0)

for(i=0;i<=30;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=31;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=32;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=33;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=34;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=35;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=36;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=37;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==0 && msb_5==1)

for(i=0;i<=38;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=39;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=40;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=41;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=42;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=43;i=i+1) idig_i[corrent_souces_final2[i]]=1;

A-19

Page 106: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=44;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=45;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==0 && msb_5==1)

for(i=0;i<=46;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=47;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=48;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=49;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=50;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=51;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=52;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=53;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==0 && msb_4==1 && msb_5==1)

for(i=0;i<=54;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=55;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=56;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=57;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==0 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=58;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=59;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==0 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=60;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==0 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

for(i=0;i<=61;i=i+1) idig_i[corrent_souces_final2[i]]=1;

if (msb_0==1 && msb_1==1 && msb_2==1 && msb_3==1 && msb_4==1 && msb_5==1)

begin

for(i=0;i<=62;i=i+1) idig_i[corrent_souces_final2[i]]=1;

stt=72;

end

end

if (enilsb_i==1) enilsbz_i=0;

else enilsbz_i=1;

if (enqlsb_i==1) enqlsbz_i=0;

else enqlsbz_i=1;

for(i=0;i<=5;i=i+1) begin

if (dnilsb_i[i]==1) dpilsb_i[i]=0;

else dpilsb_i[i]=1;

A. Verilog-A

A-20

Page 107: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

if (dnqlsb_i[i]==1) dpqlsb_i[i]=0;

else dpqlsb_i[i]=1;

end

for(i=0;i<=74;i=i+1) begin

if (eni_cal_i[i]==1) eni_cal_z_i[i]=0;

else eni_cal_z_i[i]=1;

if (enimsb_i[i]==1) enimsbz_i[i]=0;

else enimsbz_i[i]=1;

if (enq_cal_i[i]==1) enq_cal_z_i[i]=0;

else enq_cal_z_i[i]=1;

if (enqmsb_i[i]==1) enqmsbz_i[i]=0;

else enqmsbz_i[i]=1;

end

end

//VERIFY IF THE OFFSET CALIBRATION IS DONE TO TRIGER TWO NEW CORRENT SOURCES

@(cross(V(cal_ok)-V(dvdd)/2,+1))begin

if (stt==3) begin

if (cs1==73 && cs2==74) begin

stt=4;

end

else if (cs2==74) begin

idig1_i[minimo]=0;

idig2_i[corrent_souces[cs2]]=0;

cs2=cs1+2;

cs1=cs1+1;

minimo=corrent_souces[cs1];

minimo_aux=corrent_souces[cs1];

end

else begin

minimo=minimo_aux;

cs2=cs2+1;

end

end

if (stt==2) stt=3;

end

//VERIFY IF THE COMPARISONS ARE DONE AND SAVE THEM

@(cross(V(comp_done)-V(dvdd)/2,+1))begin

comp_count=comp_count+1;

if (comp_count==8) begin

comp_count=0;

//DO THE MEAN

mean_comp=(res_comp[1]+res_comp[2]+res_comp[3]+res_comp[4]+res_comp[5]+res_comp[6]+res_comp[7])/7;

if(mean_comp>=0.5) minimo_aux=corrent_souces[cs2];

if (cs2==74 && corrent_souces[cs1]!=minimo_aux) begin

aux_index=corrent_souces[cs1];

corrent_souces[cs1]=minimo_aux;

corrent_souces[minimo_aux]=aux_index;

$strobe("posicao: ",cs1,"fonte de corrente: ",corrent_souces[cs1]);

end

end

else begin

if (V(q0)>=V(dvdd)/2) q0_i=1;

else q0_i=0;

//SAVE THE Q0 IN DIFERENTS REGISTERS

res_comp[comp_count]=q0_i;

end

end

A-21

Page 108: Conversor Digital-Analógico Calibrado para Comunicações · comunicações são analógicos, é imprescindível o uso de um Conversor Digital Analógico – Digital-to-Analog Converter

/***************************OUTPUTS****************************************/

V(start) <+ transition(start_i*V(dvdd,dgnd),td,tr,tf);

V(boost) <+ transition(boost_i*V(dvdd,dgnd),td,tr,tf);

V(nocalib) <+ transition(nocalib_i*V(dvdd,dgnd),td,tr,tf);

V(en_algorithm) <+ transition(en_algorithm_i*V(dvdd,dgnd),td,tr,tf);

V(enbiasz) <+ transition(enbiasz_i*V(dvdd,dgnd),td,tr,tf);

V(enctr0) <+ transition(enctr0_i*V(dvdd,dgnd),td,tr,tf);

V(enctr1) <+ transition(enctr1_i*V(dvdd,dgnd),td,tr,tf);

V(enctr2) <+ transition(enctr2_i*V(dvdd,dgnd),td,tr,tf);

V(stdby) <+ transition(stdby_i*V(dvdd,dgnd),td,tr,tf);

V(latch_i_ini) <+ transition(latch_i_ini_i*V(dvdd,dgnd),td,tr,tf);

V(latch_q_ini) <+ transition(latch_q_ini_i*V(dvdd,dgnd),td,tr,tf);

V(endaci) <+ transition(endaci_i*V(dvdd,dgnd),td,tr,tf);

V(endacq) <+ transition(endacq_i*V(dvdd,dgnd),td,tr,tf);

V(enilsb) <+ transition(enilsb_i*V(dvdd,dgnd),td,tr,tf);

V(enilsbz) <+ transition(enilsbz_i*V(dvdd,dgnd),td,tr,tf);

V(enqlsb) <+ transition(enqlsb_i*V(dvdd,dgnd),td,tr,tf);

V(enqlsbz) <+ transition(enqlsbz_i*V(dvdd,dgnd),td,tr,tf);

generate i (0,5,1) begin

V(dnilsb[i]) <+ transition(dnilsb_i[i]*V(dvdd,dgnd),td,tr,tf);

V(dnqlsb[i]) <+ transition(dnqlsb_i[i]*V(dvdd,dgnd),td,tr,tf);

V(dpilsb[i]) <+ transition(dpilsb_i[i]*V(dvdd,dgnd),td,tr,tf);

V(dpqlsb[i]) <+ transition(dpqlsb_i[i]*V(dvdd,dgnd),td,tr,tf);

end

generate i (0,1,1) begin

V(envon[i]) <+ transition(envon_i[i]*V(dvdd,dgnd),td,tr,tf);

end

generate i (0,2,1) begin

V(vbiasmode[i]) <+ transition(vbiasmode_i[i]*V(dvdd,dgnd),td,tr,tf);

V(vonmode[i]) <+ transition(vonmode_i[i]*V(dvdd,dgnd),td,tr,tf);

end

V(gain0) <+ transition(gain_i[0]*V(dvdd,dgnd),td,tr,tf);

V(gain1) <+ transition(gain_i[1]*V(dvdd,dgnd),td,tr,tf);

V(gain2) <+ transition(gain_i[2]*V(dvdd,dgnd),td,tr,tf);

V(gain3) <+ transition(gain_i[3]*V(dvdd,dgnd),td,tr,tf);

generate i (0,74,1) begin

V(eni_cal[i]) <+ transition(eni_cal_i[i]*V(dvdd,dgnd),td,tr,tf);

V(eni_cal_z[i]) <+ transition(eni_cal_z_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enimsb[i]) <+ transition(enimsb_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enimsbz[i]) <+ transition(enimsbz_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enq_cal[i]) <+ transition(enq_cal_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enq_cal_z[i]) <+ transition(enq_cal_z_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enqmsb[i]) <+ transition(enqmsb_i[i]*V(dvdd,dgnd),td,tr,tf);

V(enqmsbz[i]) <+ transition(enqmsbz_i[i]*V(dvdd,dgnd),td,tr,tf);

V(idig1[i]) <+ transition(idig1_i[i]*V(dvdd,dgnd),td,tr,tf);

V(idig2[i]) <+ transition(idig2_i[i]*V(dvdd,dgnd),td,tr,tf);

V(idig[i]) <+ transition(idig_i[i]*V(dvdd,dgnd),td,tr,tf);

V(qdig1[i]) <+ transition(qdig1_i[i]*V(dvdd,dgnd),td,tr,tf);

V(qdig2[i]) <+ transition(qdig2_i[i]*V(dvdd,dgnd),td,tr,tf);

V(qdig[i]) <+ transition(qdig_i[i]*V(dvdd,dgnd),td,tr,tf);

end

end

endmodule

A. Verilog-A

A-22