Qual a diferença entre ASIC, ASSP, SoC e FPGA?

ASIC ASSP SoC FPGA

Artigo originalmente postado por Clive "Max" Maxfield na EETimes e adaptado para o Embarcados.

 

 

Introdução

 

Normalmente há muitas dúvidas sobre as diferenças entre os vários tipos de dispositivos, como, ASICs, ASSPs, SoCs e FPGAs. Um SoC é um ASIC e um ASIC é um SoC? Qual a diferença entre um ASIC e um ASSP? Um FPGA de alta tecnologia deve ser considerado um tipo de SoC?

 

Há diversos problemas aqui, não atoa as tecnologias e as terminologias evoluíram com o tempo. Mantendo isto em mente, aqui vai uma explicação simplificada sobre de onde vieram os termos e o que estes significam hoje.

 

 

ASICs

 

Vamos começar com os circuitos integrados para uma aplicação específica ou ASIC (Application-specific integrated circuit). Como o nome sugere, este é um dispositivo criado visando um propósito específico. Quando a maioria das pessoas ouve o termo ASIC a primeira reação é presumir que é um circuito digital. Na realidade, qualquer chip customizado é um ASIC, independente de ser analógico, digital ou um mix dos dois. Porém para simplificar a discussão vamos assumir que um chip é totalmente ou predominamente digital por natureza. Qualquer função analógica ou mista pertence as interfaces físicas PHYs (Physical Interfaces) ou aos PLLs (phase-locked loops).

 

ASICs são normalmente projetados e usados para um sistema específico. Eles são muito caros, demandam muito tempo de desenvolvimento e muitos recursos. Em contra partida oferecerem um altíssimo desempenho aliado a um baixo consumo de energia.

 

 

ASSPs

 

Circuitos integrados para uma aplicação específica padrão ASSPs (Application-specific standard parts) são projetados e implementados exatamente da mesma forma que ASICs. Isto não é surpreendente, pois são essencialmente a mesma coisa. A única diferença é que um ASSP é um dispositivo de propósito mais geral e é usado por diferentes sistemas em diferentes projetos. Por exemplo, um chip de interface USB pode ser classificado como um ASSP.

 

 

SoCs

 

Um sistema em um chip SoC (System-on-Chip) é um chip de silício que contém um ou mais núcleos de processadores - microprocessadores (MPUs) e/ou microcontroladores (MCUs) e/ou processadores digitais de sinais (DSPs) - bem como memória, aceleradores de funções por hardware, funções de periféricos e potencialmente todos os tipos de "coisas".

 

Uma forma de ver é que se um ASIC possui um ou mais processadores, então ele é um SoC. De forma similar se um ASSP contém um ou mais processadores, então ele é um SoC.

 

asic-fpga-soc
Figura: ASIC e ASSP - diferenças entre SoC e Non-Soc

 

Baseado nisto, podemos ver ASIC (ou ASSP) como sendo um superconjunto pois ele tem abrange o SoC, ou podemos ver o SoC como um superconjunto pois possui tudo em um ASIC (ou ASSP) bem como um ou mais núcleos de processamento. Já estamos nos divertindo?

 

 

FPGAs

 

ASICs, ASSPs, e SoCs oferecem alto desempenho e baixo consumo de energia, porém qualquer algoritmos que eles contenham - exceto os que estão sendo executados por software - estão "congelado no silício". E assim chegamos à matriz de portas lógicas programáveis FPGA (Field Programmable Gate Array). A arquitetura dos primeiros FPGAs era relativamente simples - apenas uma matriz de blocos programáveis interconectados por uma conexão programável.

 

O grande diferencial de um FPGA é a capacidade de configurarmos seu hardware para desempenhar qualquer combinação de funções digitais que desejarmos. Também podemos implementar algoritmos de forma paralela, o que significa que podemos processar uma enorme quantidade de dados de forma rápida e eficiente.

 

 

SoC FPGAs 

 

Com o passar do tempo, a capacidade e o desempenho de FPGAs aumentaram dramaticamente. Por exemplo, um FPGA moderno pode conter milhares de somadores, multiplicadores e funções de DSP, megabits de memória intrachip, um grande número de blocos SERDES de alto desempenho e muitas outras funções.

 

O problema é que o nome "matriz de portas lógicas programáveis" FPGA (Field Programmable Gate Array) não mais reflete a capacidade e a funcionalidade dos dispositivos programáveis de hoje. Nós realmente precisamos de um novo termo que demonstre tudo que as ferramentas estado-da-arte e tecnologias são capaz de fazer.

 

De uma relevância especial para esta discussão é que FPGAs hoje podem possuir um ou mais núcleos de processadores sejam eles soft e/ou hardcores. Então, devemos classificar esse tipo de FPGA como sendo um SoC? Bem, pessoalmente eu acho que SoC não funciona pois eu relaciono o termo "SoC" com um dispositivo customizado criado com a tecnologia ASIC.

 

Outra alternativa seria chamar estes dispositivos de SoCs programáveis ou PSoCs, o problema é que a Cypress Semiconductor já possui o termo PSoC registrado. Eles atribuem a um dispositivo que possui um microcontroladores com uma parte analógica e digital programável (a parte digital é mais um CPLD que um FPGA).

 

Altera costumava chamar estas versões de dispositivo - Microcontroladores com FPGA - SoC FPGAs, mas eles parecem ter evoluído e agora os chamam só de SoC. Enquanto isto a Xilinx chama os seus dispositivos de "All Programmable SoCs.", ou, SoCs totalmente programáveis.

 

Pessoalmente, eu estou indeciso quanto ao melhor nome. Eu gostaria de usar PSoC se já não fosse um nome registrado pela Cypress mas já que é, eu optaria por SoC FPGA. A não ser que você possa sugerir algo melhor. 

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

4
Deixe um comentário

avatar
 
4 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
MARCELO VIANNAThiago MoreiraKleanProcessador softcore Altera Nios II Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
MARCELO VIANNA
Membro
MARCELO VIANNA

Adorei a explicação! Poderia ser considerado que o FPGA é a evolução dos demais com a junção dos anteriores em em um único invólucro com maior capacidade e reprogramável?
Parabéns pela explicação.

Thiago Moreira
Membro
Thiago Moreira

Obrigado pela explicaçao. Então pela definição, SoC é customizado assim como o ASIC? E isso se aplica aos PSoC da Cypress? Obrigado!

Klean
Visitante
Klean

Muito bom. Apesar desse assunto ser um pouco confuso pra quem está aprendendo, é um ótimo texto. Acho que melhor que isso, só na pratica.
Abraços

trackback
Processador softcore Altera Nios II

[…] descrito em linguagem de hardware, que pode ser customizado e sintetizado em um FPGA ou ASIC. Uma vantagem evidente no uso de softcores está na flexibilidade pois possibilita a fácil […]