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