• Nenhum resultado encontrado

PROTOTIPAGEM EM SISTEMAS DIGITAIS

No documento CARAÚBAS RN 2018 (páginas 42-47)

2. FUNDAMENTAÇÃO TEÓRICA

2.5. PROTOTIPAGEM EM SISTEMAS DIGITAIS

O rápido aumento da complexidade de projetos de sistemas em chip (SoC) tem encorajado a comunidade de desenvolvedores de aplicações a buscar novos níveis de abstração com uma maior produtividade em comparação com RTL (Registe Transfer Level). A automação de designs a nível de sistemas eletrônicos (ESL) tem sido amplamente identificada como a próxima geração em termos de velocidade e produtividade na indústria de semicondutores, onde a síntese em alto nível desempenha um papel central, possibilitando a síntese automática de sistemas robustos (CONG et al., 2011). O desenvolvimento em circuitos integrados de aplicação especifica (ASICs) e/ou matrizes de portas programáveis em campo (FPGAs) se apresentam como eficientes formas de implementação, levando-se em conta performance, potência e custos de desenvolvimento e testes.

2.5.1. Matrizes de Portas Programáveis em Campo

Matrizes de Portas Programáveis em Campo, também conhecido pela sigla FPGA, foram introduzidas pela primeira vez por volta de três décadas atrás. Desde então, tem sido observado um rápido crescimento para esta classe de dispositivo, tornando o FPGA um popular meio de implementação de dispositivos digitais (FAROOQ; MARRAKCHI; MEHREZ, 2012). Os avanços tecnológicos melhoraram bastante a capacidade lógica de processamento dos FPGAs, e por sua vez, tornou-os viáveis para aplicações em projetos maiores e complexos.

Um FPGA é uma matriz de portas com interconexões programáveis e funções lógicas que podem ser redefinidas a qualquer etapa da implementação. Dispositivos programáveis em campo podem ser agrupados em duas categorias: (CUMMINGS; HARUYAMA, 1990).

Dispositivo de Lógica Programável (PLD);

Matrizes de Portas Programáveis em Campo (FPGA);

PLDs são dispositivos que implementam toda a lógica de funcionamento por meio de soma de produtos dos sinais de entrada, e isto é usualmente ineficiente, pois consome bastante área de chip para realizar esta tarefa. Por outro lado, FPGAs consistem em matrizes de blocos lógicos e interconexões que ligam os blocos entre si (FAROOQ; MARRAKCHI; MEHREZ, 2012).

42 A programação da lógica e roteamento das interconexões entre os blocos lógicos (BLs) fazem do FPGA flexível e de uso geral, porém, estes fatos também o torna maior fisicamente, lento e com uma eficiência energética menor quando comparado com circuitos integrados de aplicação específica, conhecidos como ASICs (FAROOQ; MARRAKCHI; MEHREZ, 2012). Entretanto, constantes avanços tecnológicos em melhores arquiteturas, mais rápidas e eficientes visam mitigar as diferenças de desempenho entre FPGAs e ASICs.

Um FPGA é constituído a partir da combinação de três estruturas bem definidas, são elas:

Blocos Lógicos Configuráveis (CLBs): Onde as funções lógicas são implementadas por meio de programação;

Interconexões: Promove o roteamento dos dados por toda a estrutura do FPGA;

Blocos de Entrada/Saída (I/O): São ligados aos CLBs por meio das interconexões. Promovem a interface do FPGA com o exterior;

Figura 23 - Arquitetura interna de um FPGA.

43 Como pode ser observado na Figura 23, os CLBs são arranjados em uma matriz bidimensional e conectados por meios dos roteamentos configuráveis. Os blocos de entrada e saída (I/O) são postos nas regiões periféricas da matriz e também ligados às interconexões. A programabilidade/reconfigurabilidade de um FPGA é baseada em ferramentas de programação que ocasionam mudanças de lógica de comportamento mesmo após o chip está fabricado (FAROOQ; MARRAKCHI; MEHREZ, 2012).

Os Blocos Lógicos Configuráveis (CLBs) são as estruturas principais de um FPGA, eles promovem a parte principal da lógica de funcionamento do dispositivo. Esta estrutura é composta por conjuntos de Elementos Lógicos Básicos (BLEs), de quatro a dez, dependendo da robustez do modelo de FPGA. Cada BLEs implementa internamente algumas funções lógicas pré-estabelecidas, como MUX, Flip-Flops, alguns elementos de memória e por fim as chamadas Look-Up Tables (tabelas que implementam lógicas complexas por meio de entradas e saídas) (CUMMINGS; HARUYAMA, 1990). A estrutura interna de um BLEs está exposta na Figura 24.

Figura 24 - Estrutura interna de um Elemento Lógico Básico (BLE).

44 Designs de FPGAs mais complexos promovem a utilizam de estruturas diferenciadas afim de otimizar o seu desempenho, como é o caso das Switch Box e Connection Box, que rearranjam as interconexões e acarretam como resultado um melhor roteamento das estruturas internas do FPGA. Ver Figura 25.

Figura 25 - Arquitetura mais complexa para um FPGA.

Fonte: FAROOQ; MARRAKCHI; MEHREZ, 2012.

FPGAs mais modernos têm uma densidade lógica superior, baixo custo e especificações de performance comparadas a microprocessadores de alto nível. Com um grande número de portas programáveis por unidade de área de chip, FPGAs são agora capazes de implementar sistemas digitais operando em frequências acima de 500 MHz. Comercialmente, estes dispositivos são divididos em duas categorias: os que admitem apenas uma configuração, são bastante econômicos; e os que permitem reconfigurações, geralmente possuem SRAMs ou EPROMs (QASIM; ABBASI; ALMASHARY, 2009).

2.5.2. Linguagens de Descrição de Hardware

Uma Linguagem de Descrição de Hardware (HDL) descreve, através de linhas de código, o que um sistema digital faz e como. Esta consiste em um tipo de programação de alto nível que permite descrever todas as características importantes de um sistema lógico para

45 diversos níveis de complexidade, descrevendo o comportamento do circuito digital em diferentes estágios de abstração (comportamental, transferência de registradores RTL, portas lógicas). Um sistema descrito em HDL pode ser implementado em um dispositivo programável (PLD ou FPGA) permitindo assim o uso em campo do seu sistema, tendo como grande vantagem a possibilidade de alteração do código quando pertinente (DAMORE, 2012).

Existem diversas HDLs, as mais conhecidas e padronizadas pelo IEEE (Institute of Electrical and Electronic Engineers) são Verilog HDL e VHDL, sendo a última mais aceita entre projetistas. VHDL (Very High Speed Integrated Circuit Hardware Description Language) é uma linguagem de descrição de hardware específica, criada pelo departamento de defesa dos Estados Unidos por volta dos anos 80 (WAIN et al., 2006). Esta linguagem apresenta uma descrição textual (algoritmo) para desenvolver um circuito sem a necessidade de especificar explicitamente as ligações entre os blocos e componentes do sistema. O VHDL é amplamente utilizado para tarefas de documentação, descrição, síntese, simulação, testes, verificação formal e etc.

Dispositivos de hardware programado digitalmente operam de forma paralela, portanto, uma linguagem de programação convencional não pode precisamente descrever ou modelar tal sistema pois está baseada na execução sequencial de instruções. Para este caso, o VHDL é apropriado, pois seu processo opera também em paralelo (DAMORE, 2012).

46

No documento CARAÚBAS RN 2018 (páginas 42-47)

Documentos relacionados