70 likes | 201 Vues
Disseny Electrònic Assistit per Ordinador. 3_FPAA_1 - 1. PROCESSADOR o EPROM. SISTEMA ANALÒGIC PROGRAMABLE. MEDI FÍSIC. CONTROL. Dispositius analògics programables. Fonaments i mercat actual. - Estandarditzar les targes d’aplicació (producció benefici ) - Prototipatge.
E N D
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 1 PROCESSADOR o EPROM SISTEMA ANALÒGIC PROGRAMABLE MEDI FÍSIC CONTROL Dispositius analògics programables Fonaments i mercat actual - Estandarditzar les targes d’aplicació (producció benefici ) - Prototipatge. - Possibles modificacions i ajustos post-instal·lació. - Processador : Sistema de control dedicat (reconfiguració dinàmica) - EPROM : Sistema autònom (no reconfiguració dinàmica ) - La solució és molt més complexa que en sistemes digitals : - Menys volum d’integració. - Menys mercat ( els dissenyadors analògics no estan habituats a aquesta opció ). - Hi ha poques opcions a escollir i algunes d’elles són molt específiques. - Rangs de freqüència de treball baix.
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 2 Dispositius analògics programables Opcions : FIPSOC TRAC020 AN10E40 www.anadigm.com ispPAC - Microcontrolador + memòria . - FPGA - FPAA - Software propi ispPAC10 : condicionador de senyal ispPAC20 : monitorització i control ispPAC80 : Ultra flexible.Temps continu. ispPAC30 : Nou component. Filtres passa-baix. - 20 blocs configurables - Poques opcions possibles - No hi ha control intern www.sidsa.es www.fas.co.uk www.latticesemi.com
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 3 Dispositius analògics programables Estructura : AN10E40. La FPAA d'Anadigm (Arquitectura, Software i Programació). CAB AnadigmDesigner CA CI CB CC CD - Capacitats commutades - Nou component amb programació sense posar - Llibreria amb molts components les sortides en alta impedància. - Connexió interna de mòduls - Ajust molt bo dels paràmetres i repetibilitat. - Buffers I/O opcionals - 4 freqüències de treball per a les capacitats commutades
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 4 1 2 1 1 2 C C C 1 1 vi vo vi vo vi vo vi vo vi vo 2 2 2 C C vi vo C R vi vo i Dispositius analògics programables Capacitats commutades : Configuració paral·lel Configuració sèrie qC1 = C vi = qi qC1 = C ( vo-vi ) qC2 = C vo = qo qC2 = 0 q= qi - qo = C (vi - vo ) q= qC1 - qC2 = C (vi - vo )
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 5 FILA 8 FILA 6 FILA 4 FILA 2 6992 bits Dispositius analògics programades Estructura programació : 13 85 02 B7 codi ID dispositiu 00 Tipus de dada ....... 78 +1 bytes ( fila 0 ) ....... 78 +1 bytes ( fila 1 ) ....... 78 + 1 bytes ( fila 2 ) ....... 78 +1 bytes ( fila 3 ) ....... 78 + 1 bytes ( fila 4 ) ....... 78 + 1 bytes ( fila 5 ) ....... 78 + 1 bytes ( fila 6 ) ....... 78 + 1 bytes ( fila 7 ) ....... 78 + 1 bytes ( fila 8 ) ....... 78 + 1 bytes ( fila 9 ) ....... 78 + 1 bytes ( fila 10 ) Veure transparència 3_FPAA_1 - 3
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 6 Anadigm Software Parametric fault injection Circuit design Generate output file REAL TEST C - Software Hard fault injection Download configuration Reprogram FPAA DEVICE 10011...110001 Fault Injection Dispositius analògics programades .AHF FILE Programació :
Disseny Electrònic Assistit per Ordinador 3_FPAA_1 - 7 CONNEC. PORT PC FPAA 1 GND GND 2 3 BUSY BUSY 4 RESET RS 5 STROBE CS 6 AUT_F WR 7 SEL_IN RD 8 DB7 D7 9 DB6 D6 10 DB5 D5 11 DB4 D4 12 DB3 D3 13 DB2 D2 14 DB1 D1 15 DB0 D0 16 CFGCLK Dispositius analògics programades Programació : #include <conio.h> #include <dos.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #definePP1_BASE 0x378 unsigned char error (void); int x; char terror; void no_busy (void) { unsigned char f; do { f = inp(PP1_BASE+1) & 0x80; } while (f == 0x00); } unsigned char llegir ( unsigned char rs) { unsigned char f,g; g=inp(PP1_BASE+2); g = g | 0x20;outp( PP1_BASE+2,g); g=(g | 0x0F) & 0xF4;outp( PP1_BASE+2,g); g=(g & 0xFA) | rs | 0x01;outp(PP1_BASE+2,g); g=g | 0x08; outp( PP1_BASE+2,g); SELECT_IN=1 f=inp( PP1_BASE); g=g & 0xF7; outp( PP1_BASE+2,g); SELECT_IN=0 g=g & 0xFE; outp( PP1_BASE+2,g); return (f); } unsigned char error (void) { unsigned char f; f= llegir(4); if ((f & 0x01)== 0x01) || ((f & 0x02)== 0x02) printf("Error \n"); return (f & 0x07); } void escriure ( unsigned char rs,unsigned char byte,int err) { int f,g; g= inp(PP1_BASE+2); g = g & 0xCF; outp( PP1_BASE+2,g); outp( PP1_BASE,byte); g= (g | 0x0F) & 0xF4; outp( PP1_BASE+2,g); g=(g & 0xFA) | rs | 0x01 ; outp(PP1_BASE+2,g); g=g | 0x02; outp( PP1_BASE+2,g); g=g & 0xFD; outp( PP1_BASE+2,g); g=g & 0xFE; outp( PP1_BASE+2,g); no_busy(); if (err != 0) { if (error()) terror = 0x01; } } void main ( void ) { unsigned char f; char codi[8]; int correc; FILE *fp; char NomArxiu [ 256 ]; char NomVellArxiu[ 256 ]; charCamiArxiu [ 256 ]; strcpy( NomArxiu, "" ); strcpy(Arxiu, "file.AHF" ); do { terror=0x00; if ((fp = fopen( Arxiu,"rt")) == NULL) { printf("Error \n");exit(0); } escriure (0,0x01,1); escriure (0,0x00,1; escriure (0,0x02,1); strcpy( codi, "0x" ); for(x=0;x<874;x++) { fgets( &codi[2], 4, fp); codi[4] = 0; f=strtol( codi, &codi[3], 16 ); escriure(4,f,1); if (terror==0x01) break; } fclose(fp); } while( terror != 0x00 ); escriure(0,0x10,1); printf("OK!.\n"); }