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