Thursday, April 29, 2010

Spartan3 ja PicoBlaze programmimälu värskendamine üle JTAG liidese

Kogu vajatav atribuutika selleks on kaasas PicoBlaze protsessori assembleri KCPSM3 failidega XILINX PicoBlaze lehelt.
Tähelepanu tuleb pöörata lühijuhendile JTAG_loader_quick_guide.pdf, mis annab üsna ammendava ja pildirohke seletuse.
  1. Asendada mälu alusfailid ROM_form.vhd ja ROM_form.v, mis vaikimisi on koopiad failidest Normal_ROM_form.vhd ja Normal_ROM_form.v.
    Kopeeri nende asemele failid JTAG_Loader_ROM_form.vhd ja JTAG_Loader_ROM_form.v.
  2. Põhimoodulis, mis paigaldab KCPSM3 ja selle nüüdseks kahepordilise programmimälu, tuleb tagada JTAG-laaditava ROM-mooduli poolt genereeritava RESET-signaali jõudmine protsessorisse. Kui on soov protsessori RESET-i sõltumatult väljastpoolt juhtida, siis tuleb lihtsalt vastavad signaalid liita, nt.:
    reset <= CLEAR or proc_reset; -- siin CLEAR on minu kasutatud välise RESET-signaali nimi
  3. See pole veel kõik - tõenäoliselt tabab teid sünteesil teade, et prog_rom.vhdl failis on puudu komponent BSCAN_VIRTEX2. Tõepoolest, sellist pole Xilinx Unisim teegis olemaski, küll on seal aga BSCAN_SPARTAN3 - ja mis võiks olla parem! S.t. prog_rom.vhdl failis tuleb teha vastav asendus, ju on universaalsena mõeldud KCPSM3 paketis vaiikimisi üht teist Xilinx kiibisarja silmas peetud.
    Veelgi enam - kuna prog_rom.vhdl fail on genereeritud ROM_form.vhd aluspõhjast, siis tuleb see asi korda ajada hoopis aluspõhjas ROM_form.vhd, et uuel programmi kompileerimisel sama tüli ei tekiks!
  4. Kompileerida ja laadida Spartan3 arendusplaadile mistahes kanali/rakenduse kaudu.
Kui nüüd on disainis vaja muuta ainult PicoBlaze programmi, siis sedapuhku saab programmi maha laadida ilma pikka sünteesiprotsessi läbimata.
  1. Programm kompileeritakse nagu tavaliselt, kuid sorry, sobib ainult KCPSM3 kompilaator, mitte pBlazIDE. Viimane ei genereeri väljundiks vajalikku .hex formaadis failil.
  2. Järgneb rida hex faili teisendusi, milleks on KCPSM failide hulgas olemas sobiv käsufail jtag_loader.bat, mis esmalt kontrollib vastava Boundary_scan konfiguratsioonifaili (hex2svf.cnf) olemasolu töökaustas ja puudumisel loob selle dialoogis kasutajaga. Sisendiks tuleb anda Xilinx kiibi tüüp (Spartan3 on 4) ja kirjeldada ahelat, s.t. Spartan3-le eelnevaid ja järgnevaid kiipe ahelas. No Nexys2 arendusplaadil on üks järgnev mäluelement xcf04s, mille kood dialoogis on 8, tavaahel on näha joonisel:

  3. Pärast teisendusi laadib jtag_loader.bat plokk-ROM-i sisu (.xsvf faili) ka paralleelpordis oleva JTAG liidese kaudu Xilinx kiipi.
    USB-liidese kaudu laadimiseks on lihtsaim kasutada Xilinx IMPACT rakendust (alternatiiviks oleks modifitseeritud .bat faili, mis sama IMPACT-i käsurežiimis rakendab). IMPACT graafilises režiimis kasutamiseks tuleb kustutada jtag_loader.bat-failis viimane käsk playxsvf %1.xsvf.
    IMPACT käivitatakse puhta tööväljaga. Kui eelenvast tööst on Boundary-scan ahel tööväljal, siis tuleb see kustutada (klikkides hiire vasaku klahviga elementidel ja ükshaaval kustutades Del-klahviga).
    Seejärel tühjal tööväljal parem hiire klikk ja valida hüpikmenüüst Add Xilinx Device.
    Valida töökaustast vastav .xsvf fail (minul prog_rom.xsvf), mille järele ilmub tööväljale ahel XSVF elemendiga.


    Valida element parema hiire klahviga ja hüpikmenüüst valida Execute XSVF/SVF.
    Prototüüpplaadil võib olla jälgitav (kui programm jooksis ja midagi dünaamiliselt esitas) programmi seiskumine ja toimub PicoBlaze lähestamine. Voila!
Originaaljuhis on SIIN. Samal lehel allpool on soovitusi jtag_loader.bat faili modifitseerimiseks IMPACT kasutamiseks käsurežiimis.
Kui see protseduur on korra juba läbi tehtud, siis järgmistel PicoBlaze koodi uuenduste kordadel piisab lahtihoitud käsu- ja IMPACT akendes väheste korralduste kordamisest, see läheb tõesti nobedalt.

No comments:

Post a Comment

Followers