Obsługa interfejsu I2C za pomocą kontrolera picoBlaze pomocą

Transkrypt

Obsługa interfejsu I2C za pomocą kontrolera picoBlaze pomocą
Obsługa interfejsu I2C za
pomocą kontrolera picoBlaze
i magistrali Wishbone
Techniki Mikroprocesorowe, AGH WFiIS
2015‐12‐12
I2C
1
Architektura sprzętu
port id
port_id
adr
out_port
dat_m2s
in_port
picoBlaze
Wishbone
write_strobe master
dat_s2m
cyc
stb
read_strobe
scl
I2C
master
I2C
slave
sda
we
ack
2015‐12‐12
I2C
2
Graf automatu modułu
Wishbone master
Zapis i odczyt do I2C master musi
przebiegać tak aby na koniec układ
Wishbone master wracał do stanu IDLE.
Kodowanie stanów:
IDLE
WAIT
_
ON_WB_AC
K
ack=1
SOFTWARE
SOFTWARE
READ
_
HAND
SHAKE
_
IDLE
00
WAIT_ON_WB_ACK
01
SOFTWARE HANDSHAKE
SOFTWARE_HANDSHAKE
10
READ
11
W
symulatorze
y
Veriloga
g
warto
obserwować rejestr stanu state aby mieć
pewność, czy operacje na magistrali
Wishbone przebiegają poprawnie.
2015‐12‐12
I2C
3
Rejestry I2C master
Moduł posiada siedem rejestrów wewnętrznych zmapowanych do
nstępujących numerów portów picoBlaze:
2015‐12‐12
R
W
DSIN
DSOUT
Mapowanie w projekcie
laboratoryjnym
Status Register
Command Register
$84
Receive Register
Transmit Register
$83
Control Register
Control Register
$82
Prescale Register MSB
Prescale Register MSB
$81
Prescale Register MSB
Prescale Register MSB
$80
I2C
4
Zasada odczytu
na magistrali
g
Wishbone
‰Cykl wejściowy polega na ustawiemiu (przez picoBlaze) numeru portu na magistrali
adresowej port_id i wysłaniu sygnału sterujacego read_strobe.
‰Potrzebnych jest kilka wejściowych cykli służących odpytaniu potwierdzenia na
magistrali Wishbone z użyciem tego samego numeru portu port_id.
port id Potwierdzenie
to jest na LSB magistrali danych in_port.
‰Następny cykl wejściowy po otrzymaniu potwierdzenia zawiera wejściowe dane na
magistrali danych in_port.
Jeśli potrzeć na poziomie symulacji Veriloga to widać conajmniej trzy cykle wejściowe dla jednego odczytu.
LOAD wb_addr , <nr_portu>
; ustawienie numeru portu
CALL wb_rd
wb rd
; rozpoczęcie odczytu na wishbone
LOAD <dane> , wb_data
; zmienna wb_data jest zaktualizowana
<nastepne instrukcje>
; odczyt zakończony
Procedura
d
operacji odczytu
d
na magistralil Wishbone:
hb
wb_rd:
CALL wb_wait_on_ack
IN wb_data
wb data , port_addr
port addr
RET
2015‐12‐12
I2C
5
Zasada zapisu
na magistrali
g
Wishbone
‰Cykl wyjściowy polega na ustawiemiu (przez picoBlaze) numeru portu na magistrali
adresowej port_id, danych do wysłania na magistrali danych out_port i wysłaniu
sygnału sterujacego write_strobe.
‰Po zapisie potrzebnych jest kilka wejściowych cykli służących odpytaniu potwierdzenia
na magistrali Wishbone z użyciem tego samego numeru portu port_id.
Potwierdzenie to jest na LSB magistrali danych in_port.
Jeśli potrzeć na poziomie symulacji Veriloga to widać jeden cykl zapisu i jeden cykl odczytu dla jednego zapisu.
LOAD wb_addr , <nr_portu>
; ustawienie numeru portu
LOAD wb_data , <dane>
; ustawienie danych do wysłania
CALL wb_wr
; rozpoczęcie zapisu na wishbone
<nastepne instrukcje>
; zapis zakończony
Procedura operacji zapisu na magistrali Wishbone:
wb_wr:
OUT wb_data , port_addr
CALL wb_wait_on_ack
RETURN
2015‐12‐12
I2C
6
Odpytanie potwierdzenia
na magistrali
g
Wishbone
Procedura oczekiwania na potwierdzenie na magistrali Wishbone.
Bit potwierdzenia
t i d i tto LSB magistrali
i t li d
danych
h in_port.
i
t
WB_ACK_FLAG
EQU
$01
wb_wait_on_ack:
b
i
k
IN wb_data , wb_addr
TEST wb_data , WB_ACK_FLAG
JUMP Z , wb_wait_on_ack
RET
2015‐12‐12
I2C
7
Przerwania
Opisane transakcje zapisu i odczytu na magistrali Wishbone stanowią integralną
całość i nie mogą być przerywane.
Przerwanie transakcji magistrali Wishbone może spowodować załamanie się
pracy automatu skończonego modułu master. Szczególnie gdy obsługa
przerwania wymaga innej transakcji na magistrali Wishbone.
2015‐12‐12
I2C
8
Literatura:
‰K. Świentek, „Projekt laboratoryjny z mikroprocesorem PicoBlaze”,
http://orion.fis.agh.edu.pl/~swientek/asm/projekt_lab_picoblaze‐notes.pdf
//
f
/
/
/
f
‰Xilinx, „Spartan‐3A/3AN FPGA Starter Kit Board User Guide”,
http://www.fis.agh.edu.pl/~skoczen/tm/pdf2/ug334.pdf
‰R.. Herveille,
e e e, „I2C‐Master
„ C aste Core
Co e Spec
Specification”,
cat o ,
http://www.fis.agh.edu.pl/~skoczen/tm/pdf2/i2c_specs.pdf
2015‐12‐12
I2C
9

Podobne dokumenty