Manual de Usuario de placa IIE-PCI

Tabla de contenido

Características de la placa

Principales características de la placa:

Descripción general

La placa IIE-PCI es una placa de propósito general de bajo costo. Su diseño esta pensado para permitir desarrollar y probar diseños basados en la interfaz PCI.

El corazón de la placa es un FPGA de ALTERA, en el cual se implementa toda la lógica de la placa. Las patas de propósito general están conectadas al bus PCI, a la memoria SDRAM y a conectores de expansión.

El FPGA se desconfigura al quitarle la alimentación, por lo cual la placa cuenta con una EPROM de configuración que permite que el FPGA se autoconfigure al encenderse.

Tanto la programación de la EPROM como la configuración del FPGA se realizan mediante el protocolo JTAG.

Cuenta con conectores del tipo header hembra que permiten conectar placas de expansión al FPGA haciendo a la vez de soporte.

Un PLL en la placa provee señal de reloj al FPGA, la memoria y uno de los conectores de expansión. Estas señales de reloj pueden ser múltiplos de la frecuencia del reloj PCI o de la frecuencia de un cristal; esto se selecciona mediante jumpers en la placa.

La alimentación de los componentes proviene de dos conversores DC-DC, uno a 3.3V y el otro a 2.5V. La distribución de la alimentación (VCC y tierra) se hace utilizando las 2 capas interiores de las 4 que componen la placa.

Descripción funcional

bloques de la placa pci

Alimentación

El plano interno de alimentación esta partido en tres zonas, 3.3v, 2.5v y 5v. La zona de 5V esta conectada a los contactos de 5V del bus PCI y al pin 4 del conector Molex. Este es el plano por el cual se alimenta la placa.

El plano de tierra esta conectado a los contactos de GND del bus PCI y a los pines centrales del conector Molex.

La placa esta diseñada para ser alimentada desde el bus PCI o utilizando una fuente de PC. Cuando la placa esta conectada al bus PCI no es necesario proveer de alimentación adicional en el conector Molex.

Los expansores tiene disponibles fuentes y tierras en sus pines:

Señales de Reloj

Los relojes que llegan al FPGA, la SDRAM y el bus de expansión, son generados por el PLL.

reloj.jpg

EL PLL genera una señal de reloj por el pin Q/N y múltiplos de esta por los pins Q[2..0]. La frecuencia de Q/N esta dada por un cristal o el reloj PCI.

Las señales se conectan de la siguiente forma:

Observación: la señal de reloj que llega a la SDRAM, puede provenir de Q1 o del pin 176 del FPGA, que se comparte con la señal IO_EXP30 (pin 6 del conector EXP). Esto se selecciona soldando una resistencia de 0 ohm en una de dos posibles posiciones. Esto fue hecho para poder generar la señal de reloj desde dentro del FPGA.


Fuente de reloj

El origen de las señales de reloj se elige con los jumpers JPOSC y sus posiciones son las siguientes:

Fuente 1-2 3-4 5-6
Cristal Open Closed Closed
PCI Closed Open Open

Factor de multiplicación

El factor de multiplicación para la frecuencia de salida se escoge mediante los Jumpers JPS1 y JPS0.

Factor JPS1 JPS0
No Especificado 2-3 2-3
x2 2-3 --
x3 2-3 1-2
x4 -- 2-3
x5 -- --
x6 -- 1-2
x7 1-2 2-3
x8 1-2 --
TEST (CLKIN bypass VCO) 1-2 1-2

En la tabla se indica la posición del jumper, cuando se indica -- debe dejarse al aire los contactos.

La frecuencia del reloj de entrada o del cristal y el factor de multiplicación deben cumplir la siguiente inecuación: 25/N < CLKIN < 160/N

Conectores de programación

Los dispositivos de la placa son programados o configurados conectando el programador ByteBlasterMV a los conectores JTAG y BBLASTER.

JTAG

El protocolo JTAG permite conocer el estado interno de un chip que soporte este protocolo y en el caso de los FPGAs también permite su configuración.

La placa permite encadenar la EPC2, el FPGA y cualquier otro dispositivo conectado al expansor que soporte el protocolo. El orden de los dispositivos en la cadena JTAG es el siguiente:

jtag.jpg

  1. EPC2
  2. FPGA
  3. EXPANSOR

La cadena entre los pines TDI y TDO del HEADER JTAG siempre debe de estar cerrada. En caso de que la EPC2 no esté presente o que no haya un dispositivo que soporte el protocolo JTAG en el conector de expansión, se deben manipular los jumpers JTAG_EXP y JTAG_BRIDGE_EPC2 para que la cadena JTAG quede cerrada de todas formas.

EPC2 JTAG_BRIDGE_EPC2
presente open
ausente closed

expansor JTAG_EXP
utilizado 1-2
libre 2-3

Modo serie de programación

Los FPGAS de ALTERA soportan un modo de configuración denominado configuración serie pasiva (PS). Este modo puede ser utilizado si se conecta el ByteBlasterMV al conecto BBLASTER.

La EPC2 esta conectada a los mismos pines del FPGA que el conector BBLASTER, por lo cual cuando se conecte el ByteBlasterMV la EPC2 no debe estar presente.

ByteBlasterMV

El programador ByteBlasterMV puede ser usado para programar o configurar dispositivos que funcionen a 3.3V o 5V, basta alimentar el programador con el voltaje correspondiente en cada caso.

Tanto el EP1K100 como la EPC2 funcionan a 3.3V pero soportan voltajes de 5V en sus pines, esto hace posible utilizar un ByteBlaster estándar (alimentación 5V) en lugar del ByteBlaterMV. Para ello debe de conectarse el pin 4 del programador a 5V en lugar de al conector de la placa (provee 3.3V).

5V están disponibles en el pin 5 del conector EXP.

Expansores

A ambos lados del FPGA hay conectores Header hembra de 1 mm, que permiten conectar a la IIE-PCI placas hijas, cuando se necesite electrónica adicional para implementar un diseño.

Al conector EXP llegan los pines libres del FPGA, fuentes de 3.3V y 5V y GND.

En el expansor del bus RAM pueden verse las señales del bus de datos de la SDRAM si se sueldan las resistencias de 0 ohm correspondientes.
Esto ultimo permite hacer aplicaciones que lean datos de la SDRAM o utilizar estos pines sin usar la RAM. Para ello se debe de desactivar la SDRAM mediante la pata CS que esta conectada al pin 175 del FPGA.

busram.jpg

Señales en bus EXP (tabla dispuesta con la forma del expansor):

PIN_EXP SEÑAL(PIN FPGA) - SEÑAL(PIN FPGA) PIN_EXP
1 EXPCLK [] GND 2
3 GND [] 3.3v 4
5 5V [] IO_EXP30(176) 6
7 IO_EXP29(197) [] IO_EXP28(198) 8
9 IO_EXP27(199) [] IO_EXP26(200) 10
11 IO_EXP25(202) [] IO_EXP24(203) 12
13 IO_EXP23(204) [] IO_EXP22(205) 14
15 IO_EXP21(206) [] IO_EXP20(207) 16
17 IO_EXP19(208) [] IO_EXP18(7) 18
19 IO_EXP17(8) [] IO_EXP16(9) 20
21 IO_EXP15(10) [] IO_EXP14(11) 22
23 IO_EXP13(12) [] IO_EXP12(13) 24
25 IO_EXP11(14) [] IO_EXP10(15) 26
27 IO_EXP9(16) [] IO_EXP8(17) 28
29 IO_EXP7(18) [] IO_EXP6(24) 30
31 IO_EXP5(25) [] IO_EXP4(26) 32
33 IO_EXP3(27) [] IO_EXP2(28) 34
35 IO_EXP1(29) [] IO_EXP0(30) 36
37 JTAG_EXP_TDI [] JTAG_EXP_TDO 38
39 FPGA_TMS [] JTAG_TCK 40

Señales del bus RAM (tabla dispuesta con la forma del expansor):

PIN_RAM SEÑAL - SEÑAL PIN_RAM
1 GND [] DQ 0 2
3 DQ 1 [] DQ 2 4
5 DQ 3 [] DQ 4 6
7 DQ 5 [] DQ 6 8
9 DQ 7 [] GND 10
11 GND [] DQ 15 12
13 DQ 14 [] DQ 13 14
15 DQ 12 [] DQ 11 16
17 DQ 10 [] DQ 9 18
19 DQ 8 [] GND 20
21 GND [] DQ 31 22
23 DQ 30 [] DQ 29 24
25 DQ 28 [] DQ 27 26
27 DQ 26 [] DQ 25 28
29 DQ 24 [] GND 30
31 GND [] DQ 16 32
33 DQ 17 [] DQ 18 34
35 DQ 19 [] DQ 20 36
37 DQ 21 [] DQ 22 38
39 DQ 23 [] GND 40

DQ NN indica que la señal de datos NN de la SDRAM esta conectado a pin del expansor.

Memoria

La placa esta equipada con una memoria SDRAM Mircon MT48LC4M32B2 de 128 Mbits.

La siguiente tabla indica las conexiones entre el FPGA y la memoria.

Bus de Datos

SDRAM Pin FPGA - SDRAM Pin FPGA
DQ0 196   DQ16 126
DQ1 195   DQ17 125
DQ2 193   DQ18 122
DQ3 192   DQ19 121
DQ4 191   DQ20 120
DQ5 190   DQ21 119
DQ6 189   DQ22 116
DQ7 187   DQ23 115
DQ8 164   DQ24 136
DQ9 166   DQ25 139
DQ10 167   DQ26 140
DQ11 168   DQ27 141
DQ12 169   DQ28 142
DQ13 170   DQ29 143
DQ14 172   DQ30 144
DQ15 173   DQ31 147

Bus de Direcciones

Sdram Pin FPGA
A0 132
A1 131
A2 128
A3 149
A4 150
A5 157
A6 158
A7 159
A8 160
A9 161
A10 133
A11 174
BA0 135
BA1 134
DQM0 186
DQM1 163
DQM2 127
DQM3 148

Señales de control

Sdram Pin FPGA
R\A\S\ 177
C\A\S\ 179
C\S\0\ 175
CKE 162
W\E\ 180

Bus PCI

La placa cuenta con un conector para BUS PCI de 32 bits y 5V o 3.3V.

La siguiente tabla indica las conexiones entre el FPGA y el conector PCI.

Bus de datos y direcciones

PCI Pin FPGA - PCI Pin FPGA
AD0 114   AD16 69
AD1 113   AD17 68
AD2 112   AD18 67
AD3 111   AD19 65
AD4 104   AD20 64
AD5 103   AD21 63
AD6 102   AD22 61
AD7 101   AD23 60
AD8 99   AD24 56
AD9 97   AD25 55
AD10 96   AD26 54
AD11 95   AD27 53
AD12 94   AD28 47
AD13 93   AD29 46
AD14 92   AD30 45
AD15 90   AD31 44

Bus de comandos

PCI Pin FPGA
CNBE0 100
CNBE1 89
CNBE2 70
CNBE3 57

Señalización de transacciones

PCI Pin FPGA
IDSEL 58
F\R\A\M\E\ 71
I\R\D\Y\ 73
T\R\D\Y\ 74
D\E\V\S\E\ 75

Arbitraje de bus

PCI Pin FPGA
L\O\C\K\ 85
G\N\T\ 40
R\E\Q\ 41
R\S\T\ 39
S\T\O\P\ 83

Interrupciones

PCI Pin FPGA
I\N\T\A\ 31
I\N\T\B\ 36
I\N\T\C\ 37
I\N\T\D\ 38

Reporte de errores

PCI Pin FPGA
S\E\R\R\ 87
P\E\R\R\ 86
PAR 88

Llaves y leds

La placa cuenta con 2 leds y 4 llaves de propósito general.

Las 4 llaves de dos posiciones están conectadas, utilizando pull-ups, a 4 patas de entrada del FPGA.
Cuando están abiertas (arriba) se tiene un 1 lógico y cuanto están cerradas (abajo) se tiene un 0 lógico.

CLOCK_LOCK: LED1 (led azul) esta conectado a CLOCK_LOCK. En el compilador se puede escoger que se encienda si el PLL interno del FPGA se "engancha" con la señal de reloj. En caso de no utilizarse esta funcionalidad puede ser manejado por una aplicación.

INIT_DONE: Si el FPGA se configura correctamente, se enciende LED2 (led verde). También puede ser manejado por una aplicación luego de la configuración del FPGA.

Componente PIN FPGA
LED 1 (Azul, activo nivel alto) 62
LED 2 (Verde, activo nivel bajo) 19
SW_DIP 4 78
SW_DIP 3 184
SW_DIP 2 80
SW_DIP 1 182

Software

Tanto el FPGA EPF1K100 como la memoria de configuración EPC2 pueden ser configurados o programados utilizando los programas MAX+PLUS II o Quartus II de Altera.

En el sitio web de Altera (www.altera.com) se encuentran disponibles versiones gratuitas del Max+Plus II y del Quartus II:

Ambos programas soportan los integrados utilizados en la placa IIE-PCI.

Programación o configuración de dispositivos

La programación o configuración del FPGA (EP1K100) y la memoria de configuración (EPC2) requiere realizar ajustes en la placa y el software de programación y conectar el ByteBlasterMV a los conectores JTAG o BBLASTER.

A continuación se describen los procedimientos para:

ADVERTENCIA: Si se desea programar la placa colocada en el bus PCI de un PC y programarla desde otro PC, se debe tener especial cuidado con las diferencia de potencial entre las tierras. Se recomienda retirar la placa del bus PCI, programar la EPC2 y luego volverla a conectar al bus PCI.

Programar solo la EPC2

La EPC2 puede programarse solo mediante el protocolo JTAG, para ello deben realizarse los siguientes ajustes.

Ajustes en la placa
Para programar la EPC2, deben ajustarse los jumpers JTAG_EXP y JTAG_BRIDGE_EPC2 de forma que la cadena JTAG este cerrada.

JTAG_BRIDGE_EPC2 debe dejarse abierto

El jumper de JTAG_EXP debe de colocarse en alguna de las posiciones indicadas en la tabla dependiendo de si el expansor esta libre o esta siendo utilizado por una placa que soporta el protocolo JTAG.

expansor JTAG_EXP
utilizado 1-2
libre 2-3


Conexión de ByteBlasterMV
El ByteBlasterMV debe ser conectado al puerto paralelo del PC y al conector JTAG de la placa.
Debe coincidir el pin 1 del conector con el pin 1 del ByteBlasterMV (lado rojo del cable).
Por más información referirse a la hoja de datos del ByteBlasterMV.

Ajustes en MAX+PLUS II

  1. Abrir el programador del MAX+PLUS II y seleccionar Multi-Device JTAG Chain en el menú JTAG
  2. Seleccionar Multi-Device JTAG Chain Setup... en el menú JTAG
  3. Seleccionar el dispositivo EP1K100 de la lista Device Name. Dejar vacío el campo Programming File Name.
  4. Presionar el botón Add. En la lista debe aparecer el EP1K100 como dispositivo 1 sin archivo de programación asociado ().
  5. Seleccionar el dispositivo EPC2 de la lista Device Name.
  6. En el campo Programing File Name indicar la ubicación del archivo .pof para programar la EPC2.
  7. Presionar el botón Add. En la lista debe aparecer la EPC2 como dispositivo 1 con el archivo de programación asociado y el EP1K100 como dispositivo 2 en la cadena JTAG.
  8. Presionar el botón Detect JTAG Chain Info para chequear que la información coincide con los ajustes en hardware.
  9. Presionar OK para guardar los cambios
  10. Presionar Program en el programador de Max+PlusII

jtag_max2.gif


Configurar solo el EP1K100 con la EPC2 presente

Para configurar solo el EP1K100 utilizando JTAG con la EPC2 presente se deben realizar los siguientes ajustes.

Ajustes en la placa
Para programar el EP1K100, deben manipularse los jumpers JTAG_EXP y JTAG_BRIDGE_EPC2 de forma que la cadena JTAG este cerrada.

El jumper JTAG_BRIDGE_EPC2 no debe ser colocado pues se cortocircuitarían las patas TSI y TDO de la EPC2.

El jumper de JTAG_EXP debe de colocarse en alguna de las posiciones indicadas en la tabla dependiendo de si el expansor esta libre o esta siendo utilizado por una placa que soporta el protocolo JTAG.

expansor JTAG_EXP
utilizado 1-2
libre 2-3

Conexión de ByteBlasterMV
El ByteBlasterMV debe ser conectado al puerto paralelo del PC y al conector JTAG de la placa.
Debe coincidir el pin 1 del conector con el pin 1 del ByteBlasterMV (lado rojo del cable).
Por más información referirse a la hoja de datos del ByteBlasterMV.

Ajustes en MAX+PLUS II

  1. Abrir el programador del MAX+PLUS II y seleccionar Multi-Device JTAG Chain en el menú JTAG
  2. Seleccionar Multi-Device JTAG Chain Setup... en el menú JTAG
  3. Seleccionar el dispositivo EP1K100 de la lista Device Name.
  4. En el campo Programing File Name indicar la ubicación del archivo .sof para configurar el EP1K100.
  5. Presionar el botón Add. En la lista debe aparecer el EP1K100 como dispositivo 1 con el archivo de configuración asociado.
  6. Seleccionar el dispositivo EPC2 de la lista Device Name. Dejar vacío el campo Programing File Name.
  7. Presionar el botón Add. En la lista debe aparecer la EPC2 como dispositivo 1 sin archivo de programación asociado () y el EP1K100 como dispositivo 2 en la cadena JTAG.
  8. Presionar el botón Detect JTAG Chain Info para chequear que la información coincide con los ajustes en hardware.
  9. Presionar OK para guardar los cambios
  10. Presionar Configure en el programador de Max+PlusII


Configurar solo el EP1K100 sin la EPC2 presente

Para configurar solo el EP1K100 utilizando JTAG sin la EPC2 presente se deben realizar los siguientes ajustes.

Ajustes en la placa
Para programar el EP1K100, deben manipularse los jumpers JTAG_EXP y JTAG_BRIDGE_EPC2 de forma que la cadena JTAG este cerrada.
El jumper JTAG_BRIDGE_EPC2 debe ser colocado para cerrar la cadena JTAG.

El jumper de JTAG_EXP debe de colocarse en alguna de las posiciones indicadas en la tabla dependiendo de si el expansor esta libre o esta siendo utilizado por una placa que soporta el protocolo JTAG.

expansor JTAG_EXP
utilizado 1-2
libre 2-3

Conexión de ByteBlasterMV
El ByteBlasterMV debe ser conectado al puerto paralelo del PC y al conector JTAG de la placa.
Debe coincidir el pin 1 del conector con el pin 1 del ByteBlasterMV (lado rojo del cable).
Por más información referirse a la hoja de datos del ByteBlasterMV.

Ajustes en MAX+PLUS II

  1. Abrir el programador del MAX+PLUS II y seleccionar Multi-Device JTAG Chain en el menú JTAG
  2. Seleccionar Multi-Device JTAG Chain Setup... en el menú JTAG
  3. Seleccionar el dispositivo EP1K100 de la lista Device Name.
  4. En el campo Programing File Name indicar la ubicación del archivo .sof para configurar el EP1K100.
  5. Presionar el botón Add. En la lista debe aparecer el EP1K100 como dispositivo 1 con el archivo de configuración asociado.
  6. Presionar el botón Detect JTAG Chain Info para chequear que la información coincide con los ajustes en hardware.
  7. Presionar OK para guardar los cambios
  8. Presionar Configure en el programador de Max+PlusII


Configurar el EP1K100 utilizando el modo serie de programación

Para configurar el EP1K100 utilizando el modo serie de programación se deben realizar los siguientes ajustes .

Ajustes en la placa
Para configurar el EP1K100 utilizando el modo serie de programación (ByteBlasterMV en conector BBLASTER), la EPC2 no debe estar presente. La EPC2 utiliza este modo para configurar el EP1K100, por lo que sus patas están también unidas al conector BBLASTER.

Ajustes en la placa
La EPC2 debe ser retirada de su zócalo.

Conexión de ByteBlasterMV
El ByteBlasterMV debe ser conectado al puerto paralelo del PC y al conector BBLASTER de la placa.
Debe coincidir el pin 1 del conector con el pin 1 del ByteBlasterMV (lado rojo del cable).
Por más información referirse a la hoja de datos del ByteBlasterMV.

Ajustes en MAX+PLUS II

  1. Abrir el programador del MAX+PLUS II y seleccionar Multi-Device FLEX Chain en el menú FLEX
  2. Seleccionar Multi-Device FLEX Chain Setup... en el menú FLEX
  3. Seleccionar el archivo de configuración .sof en la ventana de navegación inferior.
  4. Presionar el botón Add. En la lista debe aparecer el EP1K100 como dispositivo 1 con el archivo de configuración asociado.
  5. Presionar OK para guardar los cambios
  6. Presionar Configure en el programador de Max+PlusII


Programar la EPC2 y configurar el EP1K100

Ambos dispositivos pueden programarse/configurarse a la vez mediante el protocolo JTAG.

Ajustes en la placa
JTAG_BRIDGE_EPC2 no debe tener colocado el Jumper

El jumper de JTAG_EXP debe de colocarse en alguna de las posiciones indicadas en la tabla dependiendo de si el expansor esta libre o esta siendo utilizado por una placa que soporta el protocolo JTAG.

expansor JTAG_EXP
utilizado 1-2
libre 2-3

Conexión de ByteBlasterMV
El ByteBlasterMV debe ser conectado al puerto paralelo del PC y al conector JTAG de la placa.
Debe coincidir el pin 1 del conector con el pin 1 del ByteBlasterMV (lado rojo del cable).
Por más información referirse a la hoja de datos del ByteBlasterMV.

Ajustes en MAX+PLUS II

  1. Abrir el programador del MAX+PLUS II y seleccionar Multi-Device JTAG Chain en el menú JTAG
  2. Seleccionar Multi-Device JTAG Chain Setup... en el menú JTAG
  3. Seleccionar el dispositivo EP1K100 de la lista Device Name.
  4. En el campo Programing File Name indicar la ubicación del archivo .sof para configurar el EP1K100.
  5. Presionar el botón Add. En la lista debe aparecer el EP1K100 como dispositivo 1 con el archivo de configuración asociado.
  6. Seleccionar el dispositivo EPC2 de la lista Device Name.
  7. En el campo Programing File Name indicar la ubicación del archivo .pof para programar la EPC2.
  8. Presionar el botón Add. En la lista debe aparecer la EPC2 como dispositivo 1 con el archivo de programación asociado y el EP1K100 como dispositivo 2 en la cadena JTAG.
  9. Presionar el botón Detect JTAG Chain Info para chequear que la información coincide con los ajustes en hardware.
  10. Presionar OK para guardar los cambios
  11. Presionar Program en el programador de Max+PlusII