scieee Science in your language
[es] (orig)

Controlador hw de memorias SPI, I2C y paralelas implementado en FPGA

Abstract

La idea de este proyecto surgió a partir del concepto de New Space, donde cada vez más centros de investigación, centros educativos y empresas están enviando al espacio numerosos satélites, en muchos casos con poco presupuesto, lo que implica que tengan que utilizar materiales de bajo coste. Por esta razón, se hace uso de dispositivos COTS (Commercial Off-The-Shelf), los cuales son dispositivos que no garantizan la protección frente a la radiación, ya que no han sido endurecidos, lo que permite que su coste sea más bajo. Para asegurar que estos dispositivos puedan usarse en los entornos a los que se van a enviar es necesario validar que los COTS van a cumplir unos requisitos, en este caso su resistencia a la radicación máxima que se prevé que vaya a recibir, es decir, medir su sección eficaz frente a distintas fuentes de radicación como electrones, protones, neutrones e iones pesados. Sabiendo las cantidades de radiación en las posibles órbitas de estos dispositivos, y conociendo su sección eficaz, se podrá concluir si son lo suficientemente seguros o no. Para calcular la sección eficaz de un dispositivo es necesario probar estos dispositivos (como por ejemplo memorias COTS). Las pruebas consisten en radiar las memorias con distintos tipos de partículas y comprobar si pueden mantener los datos, o bien se producen alteraciones de los mismos, lo que se suele llamar SEU (Single even upset), que es la alteración producida por una única partícula. Estos mismos se dividen en SBU (Sigle Bit Upset) si solo altera un bit de memoria o MCU (Multiple Cell Upset) si altera el contenido de varias celdas. A partir del recuento de SBUs y MCUs se calcula la sección eficaz del dispositivo, que es la medida de su vulnerabilidad frente a radiación. Debido a esto surge la necesidad de realizar un sistema capaz de leer y escribir en distintos tipos de memorias para poder llevar acabo estos experimentos.

Read accessible full text

Controlador hw de memorias SPI, I2C y paralelas implementado en FPGA

Author: Fernández Gamo, Javier
Year: 2024
Source: https://docta.ucm.es/bitstreams/53721e24-ddfa-432b-a5c6-c8fbb405553b/download
1
CONTROLADOR HW DE MEMORIAS SPI,
I2C Y PARALELAS IMPLEMENTADO EN
FPGA
SPI, I2C AND PARARELL MEMORY
HARDWARE CONTROLLER IMPLEMENTED
ON FPGA
TRABAJO FIN DE GRADO
CURSO 2023-2024
AUTOR
JAVIER FERNÁNDEZ GAMO
DIRECTORES
HORTENSIA MECHA LÓPEZ Y MOHAMMADREZA REZAEI
GRADO EN INGENIERÍA DE COMPUTADORES
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
2
AUTOR
JAVIER FERNÁNDEZ GAMO
DIRECTORES
HORTENSIA MECHA LÓPEZ, MOHAMMADREZA REZAEI
CONVOCATORIA: SEPTIEMBRE 2024
GRADO EN INGENIERÍA DE COMPUTADORES
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
DÍA 13 DE SEPTIEMBRE DE 2024
3
Ag adecimien os
Quie o ag adece a odas las pe sonas que han con ibuido a la ealización de es e T abajo
de Fin de G ado.
En p ime luga , quie o ag adece a mis u o es Ho ensia y Moh po odo el apoyo, guía y
consejos que me han b indado du an e oda la ealización de es e abajo.
Ag adezco ambién a odos los p o eso es de la Facul ad de In o má ica po los
conocimien os impa idos, que me han se ido pa a la ealización de es e p oyec o.
A mis compañe os, po el apoyo du an e la elabo ación de es e abajo y su disponibilidad
pa a discu i ideas.
A mi amilia, po su apoyo y comp ensión du an e los momen os de mayo es és.
Finalmen e, a odas las pe sonas que han ayudado con sus conocimien os, iempo y apoyo
a la ealización del TFG. A odos, muchas g acias.
4
Resumen
Con olado hw de memo ias SPI, I2C y pa alelas implemen ado en FPGA.
La idea de es e p oyec o su gió a pa i del concep o de New Space, donde cada ez más
cen os de in es igación, cen os educa i os y emp esas es án en iando al espacio
nume osos sa éli es, en muchos casos con poco p esupues o, lo que implica que engan
que u iliza ma e iales de bajo cos e. Po es a azón, se hace uso de disposi i os COTS
(Comme cial O -The-Shel ), los cuales son disposi i os que no ga an izan la p o ección
en e a la adiación, ya que no han sido endu ecidos, lo que pe mi e que su cos e sea más
bajo. Pa a asegu a que es os disposi i os puedan usa se en los en o nos a los que se an
a en ia es necesa io alida que los COTS an a cumpli unos equisi os, en es e caso su
esis encia a la adicación máxima que se p e é que aya a ecibi , es deci , medi su
sección e icaz en e a dis in as uen es de adicación como elec ones, p o ones,
neu ones e iones pesados. Sabiendo las can idades de adiación en las posibles ó bi as
de es os disposi i os, y conociendo su sección e icaz, se pod á conclui si son lo
su icien emen e segu os o no.
Pa a calcula la sección e icaz de un disposi i o es necesa io p oba es os disposi i os
(como po ejemplo memo ias COTS). Las p uebas consis en en adia las memo ias con
dis in os ipos de pa ículas y comp oba si pueden man ene los da os, o bien se p oducen
al e aciones de los mismos, lo que se suele llama SEU (Single e en upse ), que es la
al e ación p oducida po una única pa ícula. Es os mismos se di iden en SBU (Sigle Bi
Upse ) si solo al e a un bi de memo ia o MCU (Mul iple Cell Upse ) si al e a el con enido de
a ias celdas. A pa i del ecuen o de SBUs y MCUs se calcula la sección e icaz del
disposi i o, que es la medida de su ulne abilidad en e a adiación.
Debido a es o su ge la necesidad de ealiza un sis ema capaz de lee y esc ibi en dis in os
ipos de memo ias pa a pode lle a acabo es os expe imen os.
Palab as cla e
Con olado de memo ia, FPGA, VHDL, I2C, SPI, QSPI, Pa alelas.
5
Abs ac
SPI, I2C and pa allel Memo y ha dwa e con olle implemen ed on FPGA.
The idea o his p ojec came om he concep o New Space, whe e each day mo e
esea ch cen e s, educa ional ins i u ions, and companies a e sending a lo o low-cos
sa elli es in o space, using COTS (Comme cial O -The-Shel ) de ices, which a e no
gua an eed o be adia ion-p o ec ed, allowing hei cos o be lowe . To ensu e ha hese
de ices can be used in he en i onmen s hey will be sen o, i ’s necessa y o alida e ha
he COTS will be esis an enough o he maximum adia ion hey a e expec ed o ecei e.
Fo his eason, i is necessa y o es hese de ices ( o example COTS memo ies). This is
going o be done by i adia ing he memo ies and see i hey can keep he da a, unde s and
how adia ion a ec s hem and de e mina e how much hey can esis he adia ion e ec s.
This in ol es measu ing hei e ec i e c oss-sec ion agains a ious adia ion sou ces such
as elec ons, p o ons, neu ons and hea y ions. Knowing he adia ion le els in he possible
o bi s o hese de ices and unde s anding hei e ec i e c oss-sec ion, we can de e mine
i hey a e sa e y enough.
To calcula e he e ec i e c oss-sec ion o a de ice, i is necessa y o es hese de ices
(such as COTS memo ies). The es s in ol e i adia ing he memo ies wi h di e en ypes o
pa icles and e i ying i hey can main ain he da a o no , which is commonly known as
SEU (Single E en Upse ), an al e a ion caused by a single pa icle. These can be u he
classi ied as SBU (Single Bi Upse ) i only one memo y bi is changed o MCU (Mul iple Cell
Upse ) i he con en s o mul iple cells a e a ec ed. F om he numbe o SBUs and MCUs,
he e ec i e c oss-sec ion o he de ice is calcula ed, which measu es i s ulne abili y o
adia ion.
By his, he e is a need o de elop a sys em capable o eading and w i ing on di e en ypes
o memo ies o ca y ou hese expe imen s.
Keywo ds
Memo y con olle , FPGA, VHDL, I2C, SPI, QSPI, Pa allel.

6
Índice de con enidos
Tabla de con enido
1. Obje i os .................................................................................................................. 7
2. Desa ollo y es uc u a del p oyec o ............................................................................ 8
3. In e az de usua io ................................................................................................... 21
4. Es uc u a del con olado de memo ias implemen ado en HW. ................................ 25
5. P o ocolos U ilizados ............................................................................................... 29
5.1. SPI .................................................................................................................... 29
5.1.1. Comunicación especí ica pa a la memo ia SPI ............................................. 30
5.1.2. Di icul ades encon adas............................................................................. 31
5.1.3. Modulo VHDL SPI: ....................................................................................... 31
5.1.4 Resul ados ................................................................................................... 33
5.2. QSPI .................................................................................................................. 35
5.2.1. Comunicación especí ica pa a la memo ia QSPI u ilizada ............................. 35
5.2.2. E o es encon ados: ................................................................................... 37
5.2.3. Modulo VHDL QSPI ...................................................................................... 37
5.2.4 Resul ados ................................................................................................... 38
5.3. P o ocolo pa alelo ............................................................................................. 40
5.3.1. Comunicación especí ica pa a la memo ia Pa alela u ilizada ........................ 41
5.3.2. E o es encon ados .................................................................................... 41
5.3.3. Módulo VHDL p o ocolo pa alelo ................................................................. 41
5.3.4 Resul ados ................................................................................................... 42
5.4. I2C .................................................................................................................... 44
5.4.1 Comunicación especí ica pa a la memo ia I2C u ilizada ................................ 44
5.4.2. E o es encon ados .................................................................................... 45
5.4.3. Modulo VHDL I2C ........................................................................................ 45
5.4.4 Resul ados ................................................................................................... 46
6. Conclusiones y abajo u u o .................................................................................. 47
7.Bibliog a ía ............................................................................................................... 48
7
1. Obje i os
La inalidad de es e TFG es implemen a un con olado de memo ias en una FPGA,
conc e amen e la Basys 3 usando las he amien as de Xilinx, an o Vi ado como SDK. Las
memo ias es a án conec adas median e cables a los pines I/O de la FPGA. Es e
con olado de memo ias se á capaz de esc ibi y lee el da o seleccionado en una sola
posición de memo ia de e minada, p e iamen e indicada o en odo su ango de posiciones.
Los p o ocolos de comunicación implemen ados se án SPI, QSPI, Pa alela e I2C. Vamos a
u iliza la memo ia APS6404L-3SQR QSPI PSRAM ([11], s. .), pa a los p o ocolos SPI y QSPI,
la memo ia CY14B101J ([13], s. .), pa a el p o ocolo I2C y la memo ia CY62167DV30 ([12],
s. .), pa a el p o ocolo pa alelo, con un o al de es memo ias dis in as.
Pa a su uso se implemen a á una in e az en C, que a a és de un in e az se ie pe mi i á la
en ada/salida de los da os y pa áme os deseados, como el ipo de p o ocolo a usa , la
elocidad, e c.
La conexión con la FPGA se ealiza á a a és del pue o se ie, Ua , de la placa y usando un
hype e minal pa a isualiza lo en nues o o denado .
8
2. Desa ollo y es uc u a del p oyec o
El sis ema de con ol de las memo ias a a se un sis ema empo ado implemen ado
ín eg amen e en una FPGA ipo Basys3, que se mues a en la imagen 1. Pa a la in eg ación
de odo el sis ema hacemos uso del so co e Mic oBlaze pa a que ac úe como un
p ocesado del sis ema, donde ejecu a emos una in e az de usua io que se comunique
con nues o ha dwa e en VHDL.
9
Imagen 1 sis ema empo ado
16
Axi In e connec : Modulo que se enca ga de se el enlace en e Mic oBlaze y los
pe i é icos AXI, imagen 12.
Imagen 12 – AXI In e connec
AXI Ua li e: Módulo que p opo ciona una in e az UART pa a la comunicación se ie,
imagen 13.
Imagen 13 – AXI Ua li e
Pa a la comunicación con es os egis os, implemen amos un p og ama en C que asigna
una di ección en memo ia a cada uno de ellos, p e iamen e de inida en nues o p oyec o
de i ado. Se con igu an de la siguien e mane a:
De inimos la di ección donde se encuen a nues o RTL.
#de ine AXI_REG_BASE_ADDR 0x44A00000
Calculamos el o se de cada egis o en es e caso es de cua o by es.
#de ine OFFSET_REG0 0
#de ine OFFSET_REG1 4
#de ine OFFSET_REG2 8
#de ine OFFSET_REG3 12

17
#de ine OFFSET_REG4 16
#de ine OFFSET_REG5 20
#de ine OFFSET_REG6 24
#de ine OFFSET_REG7 28
#de ine OFFSET_REG8 32
#de ine OFFSET_REG9 36
#de ine OFFSET_REG10 40
#de ine OFFSET_REG11 44
Le asignamos a cada egis o su di ección.
#de ine CERO_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG0)
#de ine UNO_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG1)
#de ine DOS_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG2)
#de ine TRES_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG3)
#de ine CUATRO_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG4)
#de ine CINCO_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG5)
#de ine SEIS_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG6)
#de ine SIETE_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG7)
#de ine OCHO_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG8)
#de ine NUEVE_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG9)
#de ine DIEZ_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG10)
#de ine ONCE_REG_ADDR (AXI_REG_BASE_ADDR + OFFSET_REG11)
uin 32_ * p add ce o = CERO_REG_ADDR;
uin 32_ * p add uno = UNO_REG_ADDR;
uin 32_ * p add dos = DOS_REG_ADDR;
uin 32_ * p add es = TRES_REG_ADDR;
uin 32_ * p add cua o = CUATRO_REG_ADDR;
uin 32_ * p add cinco = CINCO_REG_ADDR;
uin 32_ * p add seis = SEIS_REG_ADDR;
uin 32_ * p add sie e = SIETE_REG_ADDR;
uin 32_ * p add ocho = OCHO_REG_ADDR;
uin 32_ * p add nue e = NUEVE_REG_ADDR;
18
uin 32_ * p add diez = DIEZ_REG_ADDR;
uin 32_ * p add once = ONCE_REG_ADDR;
Po úl imo, esc ibimos el alo que necesi emos en ellos. El siguien e ejemplo
co espondien e a la inicialización de nues o p og ama en C, es á asignando los alo es 0
a los egis os uno, dos, es, cua o y nue e, el alo uno a los egis os ocho, diez y once y
el alo dos al egis o cinco.
*p add uno = 0;
*p add dos = 0;
*p add es = 0;
*p add cua o = 0;
*p add cinco = 2;
*p add ocho = 1;
*p add nue e = 0;
*p add diez = 1;
*p add once = 1;
La unción de cada uno de los doce egis os es la siguien e:
0- (End) Nues o código en VHDL esc ibi á en es e egis o un “1” ma cando el inal del
p oceso de lec u a o esc i u a. El p og ama en C espe a á has a que es e alo sea
uno pa a mos a el da o leído o indica que la esc i u a ha acabado.
1- (Da o leído) En es e egis o el código en VHDL esc ibi á el da o leído de la di ección
de memo ia p opo cionada, de al o ma que cuando el código en C eciba el inal de
una lec u a, lee á es e egis o pa a pode mos a el alo leído.
2- (S a ) Es e egis o es a á inicialmen e con un alo de 0 y Mic oBlaze esc ibi á un 1
cuando deba empeza se la ope ación.
3- (Di ección) En es e egis o Mic oBlaze esc ibi á la di ección en la que se desea hace
la ope ación.
4- (Da o a esc ibi ) En es e egis o Mic oBlaze in oduci á el da o que se desea esc ibi
en la memo ia.
5- (Velocidad) En es e egis o se esc ibi á desde Mic oBlaze los di e en es alo es
p econ igu ados pa a elegi a qué elocidad que emos ealiza las ope aciones de la
memo ia.
6- (Sin uso)
19
7- (Sin uso)
8- (P o ocolo) En es e egis o Mic oBlaze esc ibi á el p o ocolo que se desea u iliza ,
indicando con un 1 el uso de SPI, un 2 el uso de QSPI, un 3 el uso de I2C y un 4 el uso
de pa alelo.
9- (Da o Pa ón) En es e egis o cada ez que se esc iba en modo pa ón se gua da á el
da o que se a a esc ibi .
10- (Modo) En es e egis o se esc ibi á desde Mic oBlaze “1” si se desea hace la
ope ación en modo solo una di ección o “2” en odas las posiciones de la memo ia
(limi adas a 255 en es a implemen ación).
11- (Ope ación) En es e egis o Mic oBlaze esc ibi á “1” si se desea ealiza la ope ación
de esc i u a o “2” si se desea ealiza la ope ación de lec u a de las memo ias.
Es os doce egis os son de 32 bi s debido a que la in e az AXI Li e u iliza una a qui ec u a
de 32 o 64 bi s. Al a a se de pocos egis os no supone una sob eca ga excesi a pa a la
implemen ación, pe mi iéndonos ácilmen e amplia el ango de di ecciones u ilizado de
las memo ias.
La implemen ación del modo pa ón donde lee y esc ibe en las p ime as 255 posiciones de
la memo ia, se ha implemen ado median e un bucle o en so wa e, ejecu ando 255 eces
la ope ación de esc ibi o lee cambiando la di ección.
En la imagen 14, podemos e la conexión de las memo ias u ilizadas en el p oyec o y
como han sido conec adas a los pines de la Basys3, haciendo uso de adap ado es y
p o oboa ds, donde la memo ia pa alela no ha sido conec ada con odas sus señales po
al a de pines en la FPGA. El cable mic o USB que podemos e conec ado a la placa es el
que usa emos pa a alimen a la, conec ándolo a nues o o denado y ambién el pue o
se ie po el que nos comunica emos con la placa.
20
Imagen 14 – Basys 3 con pinou a las memo ias
21
3. In e az de usua io
La implemen ación cons a de un menú elabo ado en C, el cual se con ola a a és del
pue o se ie y usando un hype e minal pa a isualiza lo en nues o o denado , en el cual
se pe mi e selecciona di e en es pa áme os desc i os a con inuación, de la memo ia que
se desea con ola :
1- Memo ia:
o Se selecciona el ipo de p o ocolo de comunicación que se desea con ola
(SPI, QSPI, I2C o pa alelas), como podemos e en la imagen 15.
2- Lec u a/esc i u a:
o Se selecciona si se desea esc ibi o lee en la memo ia seleccionada.
3- Modo:
o Se selecciona en e los modos de esc ibi /lee en una solo posición o
pa ón, es deci , esc ibi en odas las posiciones de la memo ia
4- Add :
o Se esc ibe la di ección donde se desea esc ibi /lee . En caso de habe
seleccionado el modo pa ón, se igno a á el alo de es e pa áme o.
5- Valo :
o Se esc ibe el alo que se quie e esc ibi o bien en la posición seleccionada
o en el caso se pa ón en odas las posiciones. Se igno a el alo si se
selecciona el modo lee .
6- F ecuencia:
o Con es e pa áme o, como podemos e en la imagen 16, se puede elegi
en e di e en es ecuencias a las que que emos que uncione nues o
sis ema, pa a las memo ias SPI, QSPI e I2C. Con el modo de pa alelas es a
opción no apa ece á, imagen 18. En algunos casos como en el modo SPI,
no nos deja á ejecu a el p og ama con una elocidad supe io a 30Mhz y
sald á un mensaje ale ando, como podemos e en la imagen 17.
7- Da o leído:
o En es e pa áme o apa ece á el da o leído de la memo ia.

22
Imagen 15 – Menú elección de
p o ocolo donde selecciona emos
en e los di e en es p o ocolos
Imagen 16 – Elección de ecuencia
a la que que emos ealiza la
ope ación de lec u a o esc i u a
Imagen 17 – E o de ecuencia al
in en a esc ibi a una ecuencia
supe io a 33MHZ con el p o ocolo SPI
Imagen 18 – Menú de memo ia
pa alela, sin la opción de elegi la
ecuencia
23
Una ez con igu ado odo, se in oduci á la le a p pa a empeza la ejecución del
con olado seleccionado con los pa áme os in oducidos.
Imagen 19 - In e az de Usua io
En el caso de que hayamos seleccionado esc ibi en una posición especí ica, después de
habe ealizado la esc i u a ol e á a apa ece el menú sin ningún indica i o adicional.
Como podemos e en la imagen 20, en el caso de habe seleccionado la lec u a en una
posición de e minada, apa ece á nue amen e el menú después de ealiza la ope ación y
en el apa a ado Da a Read pod emos isualiza el da o que se ha leído.
Imagen 20 - Lec u a Da o SPI
Como podemos e en la imagen 21, en el caso de habe seleccionado la esc i u a en modo
pa ón, una ez haya acabado apa ece á el menú con el mensaje “W i e pa on done” en la
pa e supe io .
24
Imagen 21 - Esc i u a pa ón SPI
Como podemos e en las imágenes 22 y 23, en el caso que leamos de la memo ia
seleccionando el modo pa ón, nues o sis ema hab á gua dado el alo que se esc ibió po
úl ima ez usando el modo pa ón y nos apa ece á en el e minal el mensaje “leído sin
e o es”, en caso de que odas las posiciones con engan el da o que se esc ibió la úl ima
ez, o nos apa ece á una lis a con las posiciones que han allado jun o al alo que se ha
leído de es as. Po úl imo, apa ece á un mensaje indicando la in oducción de cualquie
ecla pa a con inua y que apa ezca el menú nue amen e.
Imagen 22 - Lec u a pa ón Imagen 23 - Lec u a pa ón con e o es
25
4. Es uc u a del con olado de memo ias
implemen ado en HW.
En la imagen 24 podemos e la je a quía de los módulos en el con olado de memo ia.
Imagen 24 - Je a quía módulos VHDL
El op es el módulo p incipal del que dependen odos. Es á compues o de una máquina de
es ados pa a con ola los dis in os ipos de memo ia, que podemos e en la imagen 25.
Inicialmen e se man iene en el es ado ce o “s0”, has a que el usua io a a és de la in e az
de usua io indica el comienzo de la ope ación, en onces se esc ibi á un 1 en el egis o 0,
eso es lo que le indica á al op la señal de inicio pa a que comience y pase al es ado uno
“s1”.
En el es ado “s1” enemos un “i ” con di e en es opciones dependiendo el alo que
con enga el egis o ocho, indicando qué ipo de p o ocolo se a a usa pa a cambia a un
es ado o a o o. Si el egis o ocho ale uno, pasa á al es ado dos “s2”, pa a empeza la
ejecución del p o ocolo SPI. Si el alo del egis o ocho es dos pasa á al es ado es “s3”,
pa a inicia el p o ocolo QSPI. Si el alo del egis o ocho es es, pasa á al es ado cua o
“s4”, pa a ejecu a el p o ocolo I2C y, po úl imo, si el alo del egis o ocho es cua o,
pasa á al es ado seis “s6”, pa a u iliza el p o ocolo pa alelo.
En cada uno de los es ados se ma ca á el inicio al módulo co espondien e pa a ejecu a
la o den y se asigna an los alo es de da o, di ección, elocidad y modo de lec u a o
esc i u a. Los es ados espe a án la señal de e minación de su modulo co espondien e.
Una ez han ecibido es a señal de inalización pasa án al es ado sie e “s7”, donde a a és
del egis o ce o indica á a la in e az de usu a io que la ope ación ha e minado y ol e á
al es ado ce o espe ando un nue o comienzo.
32
Imagen 33 - Código VHDL de en i y SPI
Hace uso de dos módulos ex a, el módulo sende y eci e .
Las p incipales señales del sende son las siguien es:
Numbi s: núme o de bi s de da a que se an a en ia .
Da a: da o que se a a en ia .
Clkou : señal SCLK del p o ocolo SPI.
Da aou : señal MOSI del p o ocolo SPI.
Sl _ egclk: Da o e e en e a la ecuencia de SCLK.
El módulo sende se usa pa a en ia los ocho bi s de comando, pa a que dis inga en e una
ope ación de esc i u a o de lec u a, pa a en ia los ein icua o bi s de di ección y po
úl imo en ia ocho bi s de da os en caso de esc i u a.
Imagen 34 - Código VHDL de la en i y sende

33
Las p incipales señales del ecei e son las siguien es:
Numbi s, Clkou y Sl _ egclk iene la misma unción que en el sende .
Da a: señal donde almacena el da o ecibido.
Da ain: señal MISO del p o ocolo SPI.
El módulo ecei e se usa pa a ecibi los ocho bi s del da o leído en caso de lec u a.
Imagen 35 - Código VHDL de la en i y ecei e
El módulo de SPI mul iplexa á las salidas dependiendo de en qué es ado se encuen e.
5.1.4 Resul ados
Las imágenes 36 y 37 es án ex aída de un logic analyze conec ado a la memo ia SPI
pa a mos a el co ec o uncionamien o del sis ema empo ado
La imagen 36 es una esc i u a en SPI, en iando inicialmen e el código de esc i u a
0x02, la di ección 0x41 y el da o a esc ibi 0x56
Imagen 36 – Esc i u a SPI
34
La imagen 37 es una lec u a en SPI, en iando en es e caso el código de lec u a 0x03, la
di ección 0x41, y ecibiendo de la memo ia el da o 0x56 esc i o an e io men e.
Imagen 37 – Lec u a SPI
35
5.2. QSPI
(Quad Se ial Pe iphe al In e ace) ([6], s. .)
Al igual que SPI es un p o ocolo de comunicación se ie u ilizado pa a la ans e encia de
da os en e un mic ocon olado y uno o a ios pe i é icos. Funciona igual que SPI, con
a qui ec u a maes o escla o, donde el maes o es el enca gado de en ia el eloj al
escla o. Como podemos e en la imagen 38, aho a enemos cua o canales pa a en ia los
da os y los mismos cua o pa a ecibi los, lo que nos pe mi e aumen a conside ablemen e
el iempo de ansmisión añadiendo solo es cables más.
Líneas de comunicación:
SIO0, SIO1, SIO2, SIO3: Señales de en ada / salida de la FPGA conec adas a la memo ia
con la in o mación, cambiando de da o en el lanco de bajada y cogiendo el alo
en el lanco de subida de la señal SCLK.
SCLK: Po es a señal el maes o en ía el eloj con la ecuencia eque ida.
CS: Señal que se pone a 0 pa a indica que se es á ansmi iendo po el canal, se man iene
a 0 has a la inalización de la ansmisión.
Imagen 38 - Funcionamien o QSPI ([7], s. .)
5.2.1. Comunicación especí ica pa a la memo ia QSPI u ilizada
Los siguien es códigos, son en iados a la memo ia al p incipio de cada ansacción pa a
que es a sepa en qué modo se a a e ec ua la ope ación. Es os códigos solo se en ia án
haciendo uso de la señal SIO0 en modo SPI cómo podemos e en la imagen 39, la
di ección y los da os si se en ia an po los cua o canales en modo QSPI, pa a indica que
ope ación se a a ealiza :
36
Código 0xEB pa a indica que es una lec u a en QSPI.
Código 0x38 pa a indica que es una esc i u a en QSPI.
Pa a la lec u a de QSPI, ansmi i emos a a és de la señal SIO0 ocho bi s e e en es al
código co espondien e, a una ecuencia máxima de 30Mhz, en es e caso en ia emos
“0xEB” pa a indica le a la memo ia que que emos lee en modo QSPI. A con inuación,
en ia emos ein icua o bi s co espondien es a la di ección de memo ia que que emos
lee , u ilizando las cua o señales SIO del QSPI, empezando con el bi más signi ica i o
en iado po SIO3 el segundo menos signi ica i o po SIO2, y los siguien es po SIO1 y SIO0
espec i amen e, consiguiendo en ia cua o bi s po cada ciclo de eloj. Seguidamen e
espe a emos seis ciclos de eloj as los que ecibi emos los ocho bi s del da o almacenado
en la posición de memo ia indicada a a és de los bi s SIO, ecibiendo el más signi ica i o
po SIO3 de o ma simila al en ío de la di ección.
Imagen 39 - memo ia QSPI Read ([11], s. .)
Pa a la esc i u a de QSPI, ansmi i emos a a és de la señal SIO0 ocho bi s e e en es al
código a una ecuencia máxima de 50Mhz, en es e caso en ia emos “0x38”, pa a indica le
a la memo ia que que emos esc ibi en modo QSPI. A con inuación, en ia emos
ein icua o bi s co espondien es a la di ección de memo ia que que emos esc ibi ,
u ilizando las cua o señales SIO de la misma mane a que hacíamos en la esc i u a. A
con inuación, en ia emos el da o que que emos esc ibi en la posición de memo ia po las
señales SIO.
37
Imagen 40 - memo ia QSPI W i e ([11], s. .)
5.2.2. E o es encon ados:
Al lee de la memo ia en o ma o QSPI, cuando los alo es que de uel e ienen más de un
bi a 1 se p oduce inconsis encia en los da os debido a que la alimen ación que
p opo ciona la FPGA no es su icien e.
La solución es apo a le una alimen ación ex a con una uen e ex e na.
5.2.3. Modulo VHDL QSPI
Al se muy simila a SPI, iene los mismos módulos lige amen e modi icados pa a que aho a
en cada lanco de eloj, en íe o eciba cua o bi s, haciendo uso de los módulos sende ,
pa a en ía el código de ope ación, sende qpi y ecei e qpi, al igual que los módulos de SPI
hacen uso del módulo di pa a unciona a la ecuencia escogida po la in e az de usua io.
También hace uso de con ol_T, señal de con ol pa a indica el modo en ada salida de las
señales MISO y MOSI dependiendo en qué es ado se encuen e.

38
Imagen 41 - Código VHDL de la en i y QSPI
5.2.4 Resul ados
Las imágenes 42 y 43 es án ex aída de un analizado logico conec ado a la memo ia
QSPI pa a mos a el co ec o uncionamien o del sis ema empo ado.
La imagen 42 es una esc i u a en QSPI, en iando inicialmen e el código de esc i u a
0x38 solo po la señal SIO0, la di ección 0xD5 y el da o a esc ibi 0x08.
Imagen 42 – Esc i u a QSPI
39
La imagen 43 es una lec u a en QSPI, en iando en es e caso el código de lec u a 0xEB,
la di ección 0xD5, y ecibiendo de la memo ia el da o 0x08 esc i o an e io men e, con
los seis ciclos de espe a an es de ecibi lo.
Imagen 43 – Lec u a QSPI
40
5.3. P o ocolo pa alelo
Se a a de un p o ocolo de comunicación asínc ono, donde hay a ias líneas de da os y
di ecciones, donde cada una ansmi i á un da o en bina io an g ande como señales haya
implemen adas. También end emos dos líneas de con ol pa a maneja la esc i u a y
lec u a de los da os en la memo ia.
Líneas de comunicación:
Add ess: Bus de a ias señales de salida de la FPGA conec adas a la memo ia, pa a
indica la di ección de memo ia de la que lee o esc ibi el da o p opo cionado po
Da a.
Da a: Bus de a ias señales de en ada / salida de la FPGA conec adas a la memo ia que
ansmi e los da os.
We: Señal que se ac i a pa a ma ca la esc i u a de la di ección seleccionada en la
memo ia. Como podemos e en la imagen 44, se a a de una esc i u a, al ene
la señal We en al a, del da o “0x1” en la posición “0x6”.
Oe: Señal que se ac i a pa a ma ca la lec u a de la di ección seleccionada en la
memo ia.
Dependiendo de las señales que le lleguen, la memo ia lee á o esc ibi á en la posición de
memo ia de inida en Add ess el da o de la señal da a.
Imagen 44 - Funcionamien o Pa alelas
41
5.3.1. Comunicación especí ica pa a la memo ia Pa alela u ilizada
Pa a el p o ocolo pa alelo se ha u ilizado la memo ia CY62167DV30, ([12], s. .).
Pa a el uso de la memo ia pa alela no se han podido u iliza odos los pines de di ecciones
y da os po al a de conexiones, se han implemen ado ein e pines pa a la di ección de
lec u a / esc i u a, y cua o pa a los da os.
Pa a la lec u a de la memo ia pa alela, se ansmi en po los pines de add la di ección de
memo ia que se desea lee , la señal WE_n se pone a 1 y la OE_n a 0. La memo ia de ol e á
el da o leído de la posición indicada po los pines de da a.
Imagen 45 - memo ia Pa alelas ([12], s. .)
Pa a la esc i u a de la memo ia pa alela, se ansmi en po los pines de add la di ección
de memo ia que se desea esc ibi , la señal WE_n se pone a 0 y la OE_n a 1 y po los pines
de da os el da o que se desea esc ibi .
5.3.2. E o es encon ados
Ha sido necesa io aumen a el iempo que las señales man ienen el alo seleccionado,
has a pode consegui una buena lec u a y esc i u a de los da os, ya que la memo ia
sopo a una ecuencia máxima de 18 MHZ.
5.3.3. Módulo VHDL p o ocolo pa alelo
El módulo del p o ocolo de las memo ias pa alelas iene las mismas señales del con ol
que los demás módulos, el clk, ese , s a y end. También iene las señales p opias del
con ol de la memo ia, CE1_n, CE2, OE_n, BHE_n, BLE_n, que se á necesa io u iliza po
es a pun eadas ya en nues o adap ado . Las señales que si se á necesa io con ola son,
WE_n poniéndolo a “0” pa a ealiza la ope ación de esc i u a al es a in e ida,
man eniéndola en “1” en cualquie o o momen o y OE_n poniéndolo a “0” pa a ealiza la
ope ación de lec u a, ambién in e ida, man eniéndola ambién a “1” en o os casos.
48
7.Bibliog a ía
[1]. (s. .). Ob enido de Xilinx:
h ps://china.xilinx.com/suppo /documen s/ip_documen a ion/axi_ e _guide/la e
s /ug1037- i ado-axi- e e ence-guide.pd
[2]. (s. .). Ob enido de Docs AMD: h ps://docs.amd.com/ /en-US/ug953- i ado-7se ies-
lib a ies/IOBUF
[3]. (s. .). Ob enido de MCI educación: h ps://cu sos.mcielec onics.cl/2022/08/23/se ial-
pe iphe al-in e ace-
spi/#:~: ex =SPI%20 unciona%20de%20una%20mane a,ambos%20lados%20en
%20pe ec a%20sinc on%C3%ADa
[4]. (s. .). Ob enido de Vida Embebida:
h ps:// idaembebida.wo dp ess.com/2017/02/08/p o ocolo-de-comunicacion-
spi/
[5]. (s. .). Ob enido de Luis Llamas: h ps://www.luisllamas.es/a duino-spi/
[6]. (s. .). Ob enido de P odigy Techno a ions: h ps://www.p odigy echno.com/qspi-
p o ocol#:~: ex =QSPI%20P o ocol%3A%20In oduc ion,chip%20memo y%20is%
20no %20enough
[7]. (s. .). Ob enido de Gisselquis Technology:
h ps://zipcpu.com/blog/2019/03/27/q lexp ess.h ml
[8]. (s. .). Ob enido de He p o: h ps://he p o-s o e.com/TUTORIALES/i2c/
[9]. (s. .). Ob enido de Wikipedia: h ps://es.wikipedia.o g/wiki/I%C2%B2C
[10]. (s. .). Ob enido de Ap endiendo A duino:
h ps://ap endiendoa duino.wo dp ess.com/2017/07/09/i2c/
[11]. (s. .). Ob enido de Mouse Elec onics:
h ps://eu.mouse .com/da ashee /2/1127/APM_PSRAM_QSPI_APS6404L_3SQR_
2_3_PKG-1954826.pd
[12]. (s. .). Ob enido de Mouse Elec onics:
h ps://www.mouse .com/da ashee /2/100/CY62167DV30-29316.pd
[13]. (s. .). Ob enido de In ineon: h ps://www.in ineon.com/dgdl/In ineon-
CY14C101J_CY14B101J_CY14E101J_1_MBIT_(128K_X_8)_SERIAL_(I2C)_NVSRAM-
Da aShee - 17_00-EN.pd ? ileId=8ac78c8c7d0d8da4017d0eb c9013449