Pontifícia Universidade Católica de São Paulo Centro das Ciências Exatas e Tecnologia Engenharia Elétrica PROJETO DE SISTEMAS DIGITAIS UTILIZANDO FPGAs Parte 1 Prof. Edson Lemos Horta Profª. Edith Ranzini Fevereiro 2007 1 1 Introdução aos Circuitos Integrados para Aplicações Específicas (Application Specific Integrated Circuits – ASICs) Para melhorar o seu desempenho no mercado, mais e mais fabricantes têm procurado aumentar muito o nível de integração dos componentes eletrônicos em seus produtos (usando um menor número de CIs, com cada CI realizando funções mais elaboradas). Com os CIs integrando funções cada vez mais complexas, os projetistas foram encontrando grandes dificuldades para definir blocos de lógica padronizados que implementassem estas funções. Destas dificuldades surgiram os ASICs("Application Specific Integrated Circuits"-Circuitos Integrados para Aplicações Específicas). Com estes integrados muitos benefícios foram proporcionados aos projetistas. Com a utilização de um ASIC, a eficiência de um projeto aumenta muito, devido à especificidade do mesmo, ou seja, o projeto tem por objetivo atender apenas às necessidades do produto. Não é preciso escolher CIs que tenham certas características não aproveitáveis para o produto que, em muitos casos podem até comprometer o desempenho ou o custo do mesmo. Com isto, obtém-se uma adequação da função do CI ao projeto ótimo do sistema. Outra vantagem muito importante que os ASICs proporcionam é o uso eficiente da placa de circuito impresso (PCI). Isto se deve ao fato destes componentes conseguirem integrar muitos CIs convencionais e reduzirem o tamanho da PCI. Além disso, com a complexidade dos sistemas digitais aumentando, cada vez mais componentes são necessários na placa de circuito impresso, o que aumenta a taxa de falhas do sistema como um todo. Um produto construído com ASICs consegue reduzir drasticamente este número, obtendo uma confiabilidade mais alta. As opções de ASICs disponíveis atualmente no mercado são: a) "Gate Arrays"; b) "Standard Cells"; c) "Full Custom"; d) PLDs("Programmable Lógic Devices”-Dispositivos Lógicos Programáveis); Os “Gate Arrays" são matrizes de transistores sem função definida, separados por canais. Através de ligações feitas nestes canais consegue-se conectar os transistores para que eles executem uma função lógica específica. Com isto consegue-se implementar células básicas que serão utilizadas no projeto de sistemas digitais mais complexos. O ASIC é projetado como uma rede destas células interligadas. Após se obter o "netlist"(lista de ligações) desta rede, o projeto torna-se automático. Além disso, esta metodologia pode ser usada sem problemas por projetistas de sistemas, não entrando em detalhes mais específicos dos blocos. As desvantagens da mesma são as condições de contorno(canais fixos, geometrias de transistores fixas,etc) de projeto rígidas e a complexidade de se obter um "netlist" adequado. Os "Standard Cells"(Células Padronizadas) são CIs projetados com base em células de bibliotecas pré-definidas. Cada célula pode ser interligada para a implementação do sistema digital pretendido. A vantagem deste tipo de circuito é o tempo de projeto que é muito reduzido. Em contrapartida, o projetista só pode utilizar as células existentes na biblioteca do fabricante, sem modificar as suas características internas, o que não permite a otimização dos parâmetros elétricos das mesmas Este problema é resolvido com a utilização dos CIs "Full Custom", que permitem ao projetista personalizar o "lay-out" e as interconexões do CI. A principal desvantagem destes CIs é o seu alto custo de projeto, pois o projetista participa praticamente de todo o ciclo junto com o fabricante. Os PLDs são CIs que possuem uma matriz de interconexões com portas "AND" e "OR" que podem ser programadas pelo projetista para realizar as mais diversas funções lógicas. Alguns CIs Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 2 possuem registradores ligados às saídas destas matrizes e controle de entrada e saída. A principal vantagem dos PLDs é o tempo gasto durante o projeto do CI que é bastante reduzido, diminuindo assim os custos de desenvolvimento do mesmo. Atualmente, existem PLD’s que podem ser reprogramados, possibilitando a sua utilização em diferentes projetos. Os principais tipos de PLDs existentes são: CPLD (Complex Programmable Logic Devices) e FPGA (Field Programmable Gate Arrays). A principal diferença entre eles é a complexidade das suas estruturas programáveis (maior nos FPGAs) e a maneira como elas são interligadas (mais previsível nos CPLDs). O projeto de um Sistema Digital utilizando FPGAs segue as etapas ilustradas na figura 1. Fig. 1 – Fluxo de Projeto para FPGAs No particionamento do sistema é feita a divisão do mesmo em blocos que realizam funções semelhantes. Após este particionamento é feita a descrição de cada um dos blocos e como os mesmos devem ser interligados. Esta descrição pode ser feita através de um esquema elétrico e/ou um arquivo em formato texto, utilizando uma linguagem de descrição de hardware (HDL). As mais utilizadas são: VHDL (Very High Speed Integrated Cicuit Hardware Description Language) e VERILOG. Depois de descrever o sistema é possível fazer a simulação comportamental do mesmo, antes da síntese. Nesta simulação é possível verificar algumas funcionalidades do sistema e também comprovar se a partição efetuada no início foi eficiente. A síntese do sistema consiste na geração de uma lista de ligações dos vários elementos lógicos responsáveis pelas funções de cada bloco do projeto. Estes elementos lógicos são os blocos Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 3 básicos presentes na FPGA escolhida. Depois da síntese é possível realizar uma simulação mais precisa do sistema, mas ainda sem a informação relativa ao timing do mesmo. A próxima etapa é a implementação do sistema na FPGA. Esta fase é composta por três passos: a) Translate: combina os vários arquivos gerados durante a síntese em um único arquivo de ligações (netlist); b) Map: mapeia o arquivo gerado pelo Translate nos componentes físicos presentes na FPGA; c) Place & Route: posiciona os componentes na FPGA, roteia os sinais de interligação e gera os arquivos com relatórios e base de dados utilizada na simulação. Após a implementação é possível a realização de uma simulação do sistema, denominada Simulação de Timing. Nesta simulação visualiza-se os tempos de propagação reais de cada sinal contido no sistema. A penúltima etapa do projeto é a geração do arquivo de programação da FPGA. Através deste arquivo configura-se a mesma para funcionar de acordo com a especificação inicial do sistema. Na última fase grava-se a FPGA com este arquivo, através de um cabo conectado à porta paralela do PC. Todas as etapas anteriores estão integradas a um ambiente de desenvolvimento denominado ISE (Integrated System Environment). 2 Particionamento do Sistema Digital Para que um sistema digital (SD) possa ser implementado eficientemente através de FPGAs, durante a primeira fase do projeto, mostrada na seção anterior, é necessário particioná-lo em dois blocos distintos : o Fluxo de Dados (FD) e a Unidade de Controle (UC). No FD (figura 3) são encontrados os elementos responsáveis pela transformação e/ou armazenamento dos dados do SD (registradores, multiplexadores, portas lógicas, etc). Dados de Entrada SC1 FD Condição 1 . . . . SC – Sinal de Controle . . . . SCm Condição n PORTAS, REGS,MUX,... Dados de Saída Fig. 2 - Fluxo de Dados de um Sistema Digital Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 4 Na UC (figura 4) estão os sinais de entrada e saída responsáveis pelo controle dos elementos do FD, assim como os sinais de entrada e saída do próprio SD. Início Condição 1 UC SC1 . SC2 . . . . . . . Condição n Máquina de Estados SCm Pronto Fig. 3 - Unidade de Controle de um Sistema Digital O Sistema Digital (SD) completo pode ser visto na figura 4. Início Dados de Entrada SD SC 1 UC SC2 FD . . . SC m Condição1 Máquina de . Estados . PORTAS, . REGS,MUX,... Condiçãon Pronto Dados de Saída Fig. 4 - Sistema Digital Completo Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 5 3 Metodologia de Projeto de Sistemas Digitais utilizando FPGAs Após o particionamento do SD em FD e UC, a implementação de cada um destes blocos e o agrupamento dos mesmos para formar o sistema completo é realizado de acordo com as etapas descritas na seção 1. Para o projeto do FD é utilizada uma descrição através de um esquemático, ou diagrama elétrico. A UC é implementada através de um Diagrama ASM (vide ANEXO 1), transcrito através de um arquivo VHDL, uma linguagem de descrição de hardware. O SD completo é implementado através de um esquemático contendo os símbolos do FD e UC conectados entre si. Para a projeto do SD através da ferramenta ISE, será adotada a seguinte nomenclatura: • Fluxo de Dados : nome_do_projeto__FD; • Unidade de Controle : nome_do_projeto__UC; • Sistema Digital Completo : nome_do_projeto__SD. Por exemplo, para um SD denominado MULTI, há os seguintes “projetos” : • MULTI_FD (Fluxo de Dados); • MULTI_UC (Unidade de Controle); • MULTI_SD (Sistema Digital Completo). Todos os projetos criados no ISE sao iniciados da mesma maneira: a) definição do diretório de trabalho; b) definição do nome do projeto; c) definição do tipo de arquivo que descreve o nível mais alto de hierarquia de projeto; d) escolha da FPGA na qual será implementado o sistema; e) criação de arquivos novos de projeto ou adição de arquivos já existentes. Estas informações são passadas para o ISE através das janelas mostradas na figura 5. Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 6 Fig. 5 – Criação de Projeto no ISE Se for escolhida a criação de um novo arquivo, as opções mais utilizadas são: a) Schematic: esta opção cria um arquivo gráfico para se desenhar o projeto através de blocos de biblioteca ou projetados anteriormente. b) Test Bench Waveform: permite a criação de um arquivo com as formas de onda dos sinais de entrada/saída do sistema, para posterior simulação do mesmo; c) VHDL Module: permite a criação de arquivos do tipo VHDL; 3.1 Projeto do Fluxo de Dados (Diagrama Elétrico) 3.1.1 Criação do Projeto Um projeto no ISE é o conjunto de todos os arquivos necessários para a implementação e programação do dispositivo selecionado. Para criar um novo projeto são necessários os sequintes passos : a) abrir o “Project Navigator” (Iniciar → Programas → Xilinx ISE 7.1i → Project Navigator) b) selecionar File → New Project. Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 7 c) Na janela “New Project”, escolher o diretório de trabalho (Project Location), o nome do projeto (Project Name = EX1_FD) e o tipo de arquivo do módulo principal (Top-Level Module Type). O tipo de arquivo é “schematic”. No diretório de trabalho será criado um sub-diretório com o nome do projeto escolhido; d) Clicar em <avançar> e) Selecionar o dispositivo e o tipo de projeto • Device Family: Spartan-3 • Device: xc3s200 • Package: ft256 • Speed Grade: -4 • Top-Level Module Type: schematic • Synthesis Tool: XST(VHDL/Verilog) • Simulator: Modelsim • Generated Simulation Language: VHDL f) Clicar em <avançar>. g) Clicar na opção “New Source” h) Na opção “Create New Source”, selecionar a opção “schematic” e colocar o nome do arquivo igual a “ex1_fd”, deixando a opção “Add to project” selecionada. i) Clicar em <avançar> e <concluir>. j) Na opção “Create New Source” novamente, clicar em <avançar>. k) Na opção “Add Existing Source”, clicar em <avançar>. l) Na janela “New Project Information”, verificar se as opções descritas estão corretas e clicar em <concluir>. Após o procedimento acima, na janela do Project Navigator denominada “Sources in Project” aparecerá o arquivo “ex1_fd.sch”, logo abaixo do nome da FPGA escolhida anteriormente. Este arquivo com o esquemático será aberto automaticamente (Não feche o mesmo, pois será utilizado no próximo item). 3.1.2 Editando o Esquema Elétrico O esquema elétrico gerado pela ferramenta Xilinx ECS (Engineering Capture System) é composto por: a) Símbolos: objetos gráficos que podem estar em uma biblioteca previamente compilada, podem ser criados pelo projetista ou podem ser gerados por outros projetos; b) Conexões: ligações entre os diversos símbolos do esquemático e entre os pinos de entrada/saída; c) Pinos de entrada/saída: interfaces de comunicação entre o esquemático e o mundo externo. Para adicionar um símbolo ao esquema elétrico, basta escolher a opção “Add – Symbol” no menu da ferramenta. Isto faz com que uma janela com todos os símbolos disponíveis seja mostrada no lado esquerdo da tela. Basta escolher o símbolo e posicioná-lo no diagrama. Para adicionar as conexões ao diagrama, basta escolher a opção “Add – Wire” no menu da ferramenta. Em seguida, basta clicar uma vez com o botão esquerdo sobre o ponto inicial de conexão e mais uma vez sobre o ponto final, caso as conexões sejam feitas entre dois símbolos. Caso a conexão termine em um ponto vazio do diagrama, basta clicar duas vezes sobre este ponto. Para inserir os pinos de E/S ao diagrama, basta escolher a opção “Add – I/O Marker” no menu da ferramenta. Basta clicar com o botão esquerdo sobre a conexão desejada e o pino de E/S será adicionado. A escolha do tipo de pino (entrada, saída ou bi-direcional) é feita através das Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 8 opções disponíveis no lado esquerdo da janela. Para editar o nome do sinal, basta clicar sobre o pino com o botão direito, escolher a opção “Rename Port”, inserir o novo nome e clicar <OK>. Para nomear uma conexão entre dois elementos (net), basta escolher a opção “Add – Net Name”, digitar o nome da conexão no espaço abaixo de “Name” e clicar sobre a conexão que será nomeada. Existe também alguas opções mais avançadas para este comando como, por exemplo, incrementar/decrementar automaticamente o dígito final do nome da conexao, muito útil na descrição de barramentos. Para visualizar o diagrama elétrico existem também duas teclas de atalho, F7 (zoom out) e F8 (zoom in), responsáveis pela aproximação ou afastamento da área visível. A verificação de erros no diagrama elétrico é feita através da opção “Tools – Check Schematic”. Será aberta uma janela informando cada um dos erros, caso existam. mostrando a parte do esquemático responsável pelo mesmo. 1o Exercício: desenhar o diagrama elétrico da figura abaixo e corrigir os erros encontrados. O símbolo utilizado (CB4CLE) representa um contador binário de 4 bits. Fig. 6 – Diagrama Elétrico do 1o Exercício 3.1.3 Implementação do Projeto Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini 9 Para implementar o projeto através do ISE, basta escolher o arquivo que descreve o mesmo na janela “Sources in Project” e depois clicar duas vezes no processo chamado “Implement Design”, na janela “Process for Source .....”. Fig. 7 – Implementação do Projeto 3.1.4 Simulação Antes da programação do FPGA, é preciso simular o projeto para verificar se o seu funcionamento está de acordo com a especificação inicial. Para simular um projeto através do ISE, é necessário criar um arquivo que define as formas de onda dos sinais presentes no mesmo. Este arquivo é denominado “Test Bench Waveform”. Depois, o ISE utiliza uma ferramenta de simulação denominada ModelSim para intepretar os dados do arquivo de simulação e gerar as formas de onda para visualização de cada um dos sinais presentes no projeto. 3.1.4.1 Geração do Test Bench Nesta seção será criado o arquivo de simulação para o exemplo da seção anterior. Projeto de Sistemas Digitais Utilizando FPGAs – Fevereiro/07 Prof. Edson L. Horta - Profa Edith Ranzini
Description: