Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

VLSI

ELECTRONICA SI TELECOMUNICATII

VLSI


 




Isi propune familiarizarea studentului cu uneltele de lucru oferite de mediul Xilinx WEB Pack avand ca scop :

1.    sinteza unor fisiere VHDL deja create

2.    simularea cu ajutorul fisierelor test bench

3.    implentarea in FPGA


Pentru exercitiul de mai sus s-au ales fisierele sursa ale unui microprocessor PicoBlaze,iar pentru

-> simulare vom folosii un fisier test bench waveform,

->pentru aplicatia de implementat in FPGA vom folosii un IP,care simuleaza o memorie de unde vom citi instructiunile necesare.



Sinteza VHDL

Limbajul VHDL a fost mai intai dezvoltat ca limbaj de descriere si simulare a circuitelor si abia mai tarziu acest limbaj a fost adaptat pentru sinteza. Astfel ca limbajul are multe caracteristici si constructii care nu pot fi sintetizate. Subsetul de instructiuni si programe prezentate in aceasta sectiune sunt sintetizabile majoritatea.

Trebuie de retinut ca modul in care este descris un circuit in VHDL, se rasfrange asupra "calitati" circuitului sintetizat, in continuare sunt prezentate cateva recomandari:

- Structurile de control seriale de tipul if-elsif-elsif-else pot fi sintetizate sub forma unui lant serial de porti logice, ceea ce favorizeaza intarzierile, astfel ca in acest caz este mai bine sa se foloseasca instructiunile de selectie case sau with daca conditiile se exclud reciproc.

- In cazul in care se folosesc instructiuni conditionale in cadrul unui proces, daca pentru o anumita combinatie a intrarilor se omite specificarea valori pe care

trebuie sa o ia aiba iesirea, compilatorul va crea un latch la iesire care sa poata pastra vechea valoare a semnalului de iesire care altfel ar trebui sa se schimbe.

In general generarea unui astfel de latch nu este dorita.

- Instructiunile de ciclare creeaza in general copii multiple ale logicii combinationale descrise in cadrul instructiunii. Daca se doreste folosirea unei singure astfel copii a logici combinationale intr-o secventa de pasi atunci trebuie sa se proiecteze un circuit secvential.

Este posibil ca sinteza unor constructii si structuri ale limbajului sa nu fie posibila cu anumite programe de sinteza, pentru aceasta trebuie consultata documentatia respectivelor programe pentru a vedea ce este si ce nu este sintetizabil.

Se deschide mediul ISE,si se alege New Project,dupa ce se salveaza cu numele dorit si in folderol dorit,se alege optiunea add sources ,si aleg surcele microprocesorului PicoBlaze,apoi se apasa next.

1.png

Se alege apoi Implement top module,iar daca alegem Synthesys XST

2.png



Putem vedea raportul de sinteza, schema RTL,verifica erorile de syntaxa sau genera un model de simulare post sinteza..

Simularea VHDL

Se ataseaza la PicoBlaze (selectat - main file Picoblaze) un fisier de test cu (right click) Add New. de tip Test Bench Waveform. cu un clk si cu instructii pe intrarile de Instruction.Instructiile de Pico se pot obtine din pBlazeIDE conform figurii urmatoare.Pentru cine doreste si se simte dornic sa explorezee poate sa incerce si alte serii de mici Module de cod in HEX obtinut simplu cu pBlazeIDE C:Documents and SettingsijMy DocumentsMy Picturespico_code.JPG

Test Bench Waveform (Xilix simulator) cere un clk - se lasa 100 ns si toate setarile Initiale (nu conteaza!). Apoi se seteaza In Waveform la intrarile Instruction - Instructiile luate din pBlazeIDE.

Fiecare instructie are nevoie de 2 DOUA tacte sa fie executata. Setati deci pe interfata grafica de vectori de test noi instructii de 16 biti din doua in doua tacte!

C:Documents and SettingsijMy DocumentsMy Picturespico_wb.JPG

O data creat sistemul de test cu Micro si Waveform se selecteaza Pico si se lanseaza Fereastra - Behavioral Simulation pornind din ImplementationC:Documents and SettingsijMy DocumentsMy Picturespico_rez_test.JPG

Nota: Instructiile se pun pe magistrala de date din trei in trei tacte sa fie 'acceptate' la final de Load in ciclul de executie de doua tact.

IP CORE



Se da click dreapta pe top-module si se alege new source ,iar din meniul aparut alegem IP core generator,pentru aplicatia curenta vom genera un bloc de memorie pe care o vom initialize cu instructiunile din PicoIDE.

Putem alege tipul de memorie dorit,latimea minima ,lungimea,nu avem nevoie decat de o memorie simpla ROM din care sa citim,se apasa next iar in dreptul instructiuni initialization file se alege fisierul de tip coe care contine instructiunile,in fisierul top module se adauga componenta de memorie si se fac maparile necesare.


Implementarea in FPGA

pico_rom.JPG

Pentru implementarea in FPGA vom folosii o IP core generator pentru a genera un block de memorie,din care vom citii instructiunile necesare aplicatiei.urmatorul pas e setarea constangerilor.In fereastra Processes (stanga-jos) se selecteaza optiunea Floorplan IO - Pre-Synthesys. Fie se face dublu clic, fie se face clic dreapta si se alege optiunea Run.

L2p7

ISE lanseaza utilitarul Xilinx PACE.


In fereastra aparuta, la mijloc-jos se apasa tabul Package View ce ne permite sa vedem configuratia pinilor FPGA-ului folosit.

L2p8

Dintre cele 8 LED-uri disponibile pe placa, alegem LED-ul LD0, care e legat la pinul J14.

L2p9



Se face File/ Save, se alege optiunea implicita (XST Default: <>). Se inchide fereastra Xilinx PACE si se revine in programul ISE

Din meniul Process se alege optiunea Implement Top Module. Se lanseaza in executie implementarea - sintetiza proiectul in cipul FPGA - Spartan 3E. Dupa incheierea procesului de implementare, in fereastra Process (stanga jos), liniile Synthesize - XST si Implement Design trebuie sa fie marcate cu o bifare de reusita de culoare verde.

Se genereaza fisierul de configurare al integratului Spartan. In fereastra Process (stanga jos) se face sublu clic (sau clic dreapta - Run) pe linia Generate Programing File:

L2p10

Se stabileste legatura calculatorului cu placa Nexys2 prin intermediul cablului USB. Se porneste alimentarea placii prin comutarea butonului de Pornit/Oprit de pe placa.

Se porneste programul Adept: Start/Programs/Digilent/Adept/ExPort, sau se face dublu clic pe ichonita ExPort de pe desktop.

Se face initializarea circuitului de programare prin apasarea butonului Initialize Chain.Se bifeaza memoria XCF04S, care este o memorie Platform Flash si pe care nu dorim sa o programam. Prin aceasta bifare, memoria XCF04S este scoasa din lantul de programare.

L2p11

Cu Browse se merge in directorul Student/SLP/and_gate2 si se alege fisierul de tip .bit care contine informatia de configurare a FPGA-ului si care a fost generat .

Se apasa OK la informarea de atentionarea legata de tactul de programare.

Se apasa butonul Program Chain si se asteapta informarea de programare reusita.

Pe placa Nexys2 LED-ul portocaliu DONE trebuie sa lumineze, indicand programarea FPGA-ului



Concluzii

Acest proiect prin intermediul celor trei etape :

sinteza

simulare

implemtare in FPGA,

folosind mediul de dezvoltare Xilinx ISE a oferit posibilitatea dezvoltarii unei aplicatii pentru microprocessor-ului 8 bit RISC PicoBlaze si intelegeri functionarii acestuia.