Turinys:

„I2C Master“dizainas VHDL: 5 žingsniai
„I2C Master“dizainas VHDL: 5 žingsniai

Video: „I2C Master“dizainas VHDL: 5 žingsniai

Video: „I2C Master“dizainas VHDL: 5 žingsniai
Video: Implementation of I2C Master Bus Controller on FPGA 2024, Lapkritis
Anonim
„I2C Master“dizainas VHDL
„I2C Master“dizainas VHDL

Šioje instrukcijoje aptariamas paprasto I2C meistro kūrimas VHDL.

PASTABA: Norėdami pamatyti visą vaizdą, spustelėkite kiekvieną vaizdą

1 žingsnis: I2C magistralės apžvalga

• Integracinės grandinės stovai.

• Sinchroninis, pusiau dvipusis.

• Dviejų laidų sąsaja - SDA ir SCL.

• SDA - serijinių duomenų linija, valdoma „Master“ir „Slave“

• SCL - serijos laikrodis, sukurtas meistro

• Multi-master, Multi-slave protokolas.

• Du režimai - 100 kbits/sec ir 400 kbits/sec: lėtas ir greitas.

2 žingsnis: RTL dizainas VHDL

Mūsų „I2C Master“dizaino specifikacijos

  • 8 bitų duomenų rėmas.
  • Tik vienpusis SCL valdymas.
  • 7 bitų vergo adresas.
  • Palaiko lėtus ir greitus režimus.
  • Vienas meistras, kelių vergų.
  • Atitinka originalias „Philips“„I2C“specifikacijas.

Naudojamas grynas RTL kodas. Taigi IP yra lengvai nešiojamas visuose FPGA. Kompaktiškas FSM pagrįstas dizainas, naudojant vidinį laikrodį, užtikrina optimalų plotą ir našumą.

3 žingsnis: modeliavimas ir testavimas

Bandymo aplinka

  • Funkcinis modeliavimas ir testavimas naudojant trečiosios šalies „I2C Slave IP“.
  • Sintezuojamas naudojant „Xilinx Vivado“įrankių rinkinį.
  • Įdiegta ir išbandyta „Artix-7 FPGA“plokštėje.
  • Laiko patikrintas dizainas 100 MHz.
  • Išbandytos bangos formos DSO/CRO.
  • Sėkmingai išbandytas ryšys su „Arduino UNO“kaip „I2C Slave“.

4 žingsnis: svarbios pastabos

  • Bandydami „Master“naudodami „I2C Slave IP“, sukonfigūruokite vergo kodą pagal savo reikalavimus. Galbūt norėsite pakeisti numatytąjį laikrodžio dažnį ir vergo adresą. Laikrodžio dažnis taip pat turėtų būti sukonfigūruotas pagrindiniame kode.
  • Atliekant bandymus laive, nepamirškite traukiamųjų rezistorių, nes SDA linija yra įprasta išleidimo anga !!! Patikrinkite „Google“, ar nėra rekomenduojamo pritraukimo rezistoriaus, skirto skirtingiems „i2c“greičiams. 100 kHz naudojau 2,2K.
  • Jei nenaudojate bandymo stendo ir savarankiškai imituojate pagrindinį, atsargiai imituokite SDA signalą, nes tai yra dvikryptis (įvesties) signalas. Jame yra dvi tvarkyklės - pagrindinė ir verginė. Turėtumėte žinoti, kada „priversti“ir kada „nepriversti“.
  • SCL yra vienkryptė linija. Nereikia prisitraukti.
  • Atidžiai perskaitykite IP dokumentus.

5 veiksmas: pridedami failai

  • Visi „I2C Master“RTL kodai.
  • Bandymo stendas, I2C slave kodai taip pat, bandymui.
  • IP dokumentacija.

Jei turite klausimų, nedvejodami susisiekite su manimi:

Mitu Raj

sekite mane:

Jei turite klausimų, susisiekite: [email protected]

Rekomenduojamas: