Programação de CPLDs no ambiente ISE 4.2i da Xilinx O presente documento resume os passos necessários para programar um Complex Programmable Logic Device (CPLD) usando o editor de esquema eléctrico e a linguagem Verilog, procedendo à respectiva simulação antes da fase final de programação. 1-Lançar o programa Project Navigator. A janela que é lançada está dividida em várias partes cuja utilização será descrita à medida do necessário. A parte inferior é uma janela de comandos onde aparece informação referente à execução das diversas aplicações que compõem o software. 2-File -> New Project. 3-Surge uma nova janela onde deverá ser colocado o nome do projecto e a respectiva localização e seleccionar as seguintes opções: Device Family: XC9500 CPLDs Device: XC9536 PC44 Design Flow: XST Verilog Esta última opção determina a linguagem de descrição de hardware (LDH) que será utilizada numa das fases intermédias de descrição do circuito (transparente para o utilizador) e indica também a LDH que poderá ser usada na descrição do circuito. A opção por uma das linguagens é necessária mesmo quando se pretenda usar apenas o editor de esquema eléctrico. 4-Para criar cada novo módulo é necessário fazer: Project -> New Source e escolher: Schematic: abre a aplicação ECS para edição do circuito eléctrico. Verilog Module: abre uma janela onde se definem as entradas e saídas do módulo, gerando de seguida a cabeçalho do mesmo num ficheiro de texto. Test Bench Waveform: abre uma janela que permite escolher o módulo que vai ser testado e após a selecção lança a aplicação HDL Bencher. 5-Dentro da aplicação ECS para desenhar o circuito pretendido são úteis os seguintes passos: Colocar um componente: Add -> Symbol (pode ser feito a partir do botão correspondente), escolher Categories e Symbols. Colocar uma ligação: Add -> Wire (pode ser feito a partir do botão correspondente). Colocar um nome em cada sinal: Add -> Net Name (pode ser feito a partir do botão correspondente), preencher o campo do nome e clicar sobre o fio correspondente. Identificar entradas e saídas: Add -> I/O Marker (pode ser feito a partir do botão correspondente), escolher o tipo sinal e clicar sobre o extremo do fio correspondente. Verificar o circuito: Tools -> Check Schematic. Programação de CPLDs Xilinx FMD 1
6-Após a criação de um ficheiro de Verilog é necessário: Completar a descrição que é criada com a definição das entradas e saídas. Seleccionar o ficheiro Verilog na janela Sources in Project e na janela Processes for Current Source expandir a opção Synthesize e clicar em Check Syntax. 7-Para criar um símbolo para um bloco (independentemente do tipo de descrição do mesmo) é necessário fazer: Seleccionar o bloco a partir do qual se pretende criar o símbolo em Sources in Project e na janela Processes for Current Source expandir a opção Design Entry Utilities e clicar em Create Schematic Symbol. O símbolo passa a estar disponível no editor ECS na categoria referente à directoria onde se encontra o projecto. 8-Para testar um módulo é necessário criar um ficheiro do tipo Test Bench Waveform como referido em 4. Uma vez lançada a aplicação HDL Bencher é necessário efectuar os seguintes passos: Escolher os parâmetros de simulação que aparecem na janela inicial. A janela do HDL Bencher contem na parte superior as formas de onda dos sinais de entrada que podem ser editadas usando o rato e na parte inferior existe uma descrição na LDH escolhida em 3 do bloco a ser testado. Alterar os sinais de entrada e gravar as formas de onda. Fechar o HDL Bencher, escolhendo o número de ciclos de relógio que a simulação deverá usar após a última alteração das entradas. No Project Navigator escolher o ficheiro de simulação em Sources in Project e na janela Processes for Current Source expandir a opção ModelSim Simulator e clicar em Generate Expected Simulation Results. O HDL Bencher é novamente lançado e mostra os resultados da simulação. 9-Para programar o CPLD é necessário efectuar os seguintes passos: Seleccionar o módulo principal do projecto em Sources in Project e na janela Processes for Current Source clicar na opção Generate Programming File. O projecto é compilado. Em resultado da compilação é possível ver a atribuição dos pinos feita pelo software. Para ver esta informação seleccionar o módulo principal do projecto em Sources in Project e na janela Processes for Current Source, expandir a opção Implement Design, expandir a opção Fit e abrir o ficheiro Fitter Report. Neste ficheiro existe informação da atribuição dos recursos do CPLD e indicação da atribuição dos pinos. Caso seja pretendido também é possível fixar os pinos de cada entrada durante a fase de projecto. Programação de CPLDs Xilinx FMD 2
Seleccionar o módulo principal do projecto em Sources in Project e na janela Processes for Current Source, expandir a opção Generate Programming File e clicar em Configure Device (impact). A aplicação impact é lançada e procura de forma automática a ligação física que permite fazer a programação. No centro da aplicação impact surge o símbolo do CPLD que após seleccionado permite, usando o botão do lado direito, aceder a várias opções. Seleccionar Program -> OK para efectuar a programação. Após a programação pode efectuar-se a verificação da mesma fazendo Verify. Para fazer uma nova programação estão também disponíveis as opções de Erase e Blank Check. Programação de CPLDs Xilinx FMD 3
Informação sobre o encapsulamento Os CPLDs XC9536 estão montados em adaptadores de 40 pinos que permitem a sua montagem em bread boards e a ligação aos programadores usando ZIFs. Como os CPLDs têm 44 pinos e o adaptador 40, existem 4 pinos que não têm ligação. A informação seguinte é fornecida pelo software da Xilinx e indica quais são os pinos cuja função esta previamente definida e a sua numeração. Device : XC9536-5-PC44 T T T T T T T T T V T I I I I I I I I I C I E E E E E E E E E C E -------------------------------- /6 5 4 3 2 1 44 43 42 41 40 \ TIE 7 39 TIE TIE 8 38 TIE TIE 9 37 TIE GND 10 36 TIE TIE 11 XC9536-5-PC44 35 TIE TIE 12 34 TIE TIE 13 33 TIE TIE 14 32 VCC TDI 15 31 GND TMS 16 30 TDO TCK 17 29 TIE \ 18 19 20 21 22 23 24 25 26 27 28 / -------------------------------- T T T V T G T T T T T I I I C I N I I I I I E E E C E D E E E E E Legend: NC = Not Connected, unbonded pin TIE = Tie pin to GND or board trace driven to valid logic level VCC = Dedicated Power Pin GND = Dedicated Ground Pin TDI = Test Data In, JTAG pin TDO = Test Data Out, JTAG pin TCK = Test Clock, JTAG pin TMS = Test Mode Select, JTAG pin PE = Port Enable pin PROHIBITED = User reserved pin Os pinos assinalados a bold são pinos que não estão disponíveis devido ao adaptador para Dual In-line Package (DIP). Programação de CPLDs Xilinx FMD 4
A correspondência entre os pinos originais do CPLD e os pinos do adaptador está representada na figura seguinte. Pinos do CPLD XC9536 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 13 11 14 12 15 13 16 14 17 15 18 16 19 17 20 18 21 19 22 20 Socket DIP40 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Pinos do CPLD XC9536 44 43 42 41 40 39 38 37 36 35 33 32 31 30 29 28 27 26 25 24 Programação de CPLDs Xilinx FMD 5