Documente Academic
Documente Profesional
Documente Cultură
Tema proiectului:
Comunicaie ntre calculator i placa Spartan-3E prin interfaa serial
Studeni: Boleac Andrei, Ciuperc Sergiu Grupa: 30232 Indrumator proiect: Dr. Baruch Zoltan Francisc Data:14.05.2012
Cuprins
1. 2. Rezumat .....................................................................................................................................2 Introducere.................................................................................................................................2 2.1. 2.2. 2.3. 2.4. 3. 4. Obiective.............................................................................................................................2 RS232, Descriere general....................................................................................................3 Configuratia pinilor standardului RS232 pe placa Spartan 3E ..................................................3 Modul de realizare a comunicatiei seriale..............................................................................4
Fundamentare teoretica ..............................................................................................................5 Proiectare i implementare ..........................................................................................................6 4.1. 4.2. 4.3. Arhitectura sistemului ..........................................................................................................7 Aplicaia software .............................................................................................................. 13 Instruciuni de utilizarea a aplicaiei software ...................................................................... 14
5. 6. 7.
1. Rezumat
Proiectul de implementat vizeaz modul de comunicatie serial ntre calculator i placa Spartan 3E, care este folosit n activitaile de laborator la materia Structura Sistemelor de Calcul. La nceput am definit comenzile care vor fi implementate pentru a exemplifica modul de comunicare serial. Comenzile de baz snt afiarea unui mesaj pe LCD-ul de pe plac la o comand a aplicaiei master de pe calculator, preluarea starii comutatoarelor de pe plac i afiarea configuraiei acestora la terminalul aplicaiei de control, afiarea unui caracter pe LEDuri dup transmiterea unei comenzi potrivite. S-a folosit modulul de comunicare asincron recepie-transmisie de la productorul plcii, Digilent Inc..
2. Introducere
Comunicaia serial ntre calculator i diferite periferice este folosit pe scar larg pentru transferul serial de date ntre acestea. Comunicaia serialp se realizeazp de cele mai multe ori prin standarde stabilite de organizaii de profil de nivel internaional. Un standard foarte bine cunoscut i mult utilizat n domeniul interfa rii seriale ntre calculator i diverse periferice este RS232. Tocmai folosind acest standard, ne-am propus s realizm comunicaia serial ntre calculator i placa Spartan 3E prin interfaa serial.
2.1.
Obiective
Obiectivul de baz al proiectului este exemplificarea modului de comunicatie ntre calculator i placa Spartan 3E prin interfaa serial. Pentru atingerea acestuia a trebuit sa identificm un set finit de comenzi capabile sa scoat n eviden principalele aspecte ale comunicrii seriale ntre un calculator i un periferic, i anume viteza de transmisie, modul de parsare a datelor ntre dispozitivul master i cel slave, i eventuale erori de transmisie care ar putea interveni i care trebuiesc corectate pentru a preveni transferul de date eronate ntre cele doua dispozitive vizate. Comenzile identificate i propuse spre implementare au fost: Transmiterea unui mesaj la plac prin intermediul aplicaiei control de pe calculator Preluarea datelor referitor la starea curenta a comutatoarelor de pe plac i afisarea configuratie acestora la terminalul aplicaiei de control Afiarea unui caracter in mod similar celui pentru LCD Scrierea unui mesaj n memorie i afisarea ulterioara a acestuia pe LCD-ul de pe placa Dintre comenzile propuse, primele trei au fost implementate cu succes.
2.2.
Standardul RS232 este un standard definit pentru interfaarea serial intre calculator i diverse perferice. Acum cteva decenii n urm era un standard des folosit n transferuri seriale de date. In etapa actual au fost dezvoltate standarde noi de transmisie, RS232 regasindu-i aplicaie din ce n ce mai puin. De obicei standardul presupune o comunicaie full-duplex, ceea ce inseamn ca masterul poate transmite i recepiona informaie in acelasi timp. Transmisia i recepia se realizeaz pe ci de date separate. Acest standard definete caracteristicile electrice i de timp ale semnalelor vehiculate ntre dispozitivele implicate n transmisie. Standardul nu definete modul de codificare a semnalelor, rata de transmisie a datelor pe secund.
Numar ul Pinului 1 2 3 4 5 6 7 8 9
Descriere Transport de date detectate Receptie date Transmisie date Terminalul de date gata pentru transmisie Ground Indica setarea datelor pentru transmisie Semnalul care initiaza cererea de transmisie Conectorul DCE gata pentru receptie Indicator de alarmare
Pentru a putea folosi unul dintre conectorii sus descrii pentru a incarca pe plac programul de control al datelor si modulul referinta RS232 trebuie declarate in fiierul UCF urmatoarele constrngeri specific pinilor conectorului DTE NET "RS232_DTE_RXD" LOC = "U8" | IOSTANDARD = LVTTL ; NET "RS232_DTE_TXD" LOC = "M13" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW i respectiv conectorului DCE: NET "RS232_DCE_RXD" LOC = "R7" | IOSTANDARD = LVTTL ; NET "RS232_DCE_TXD" LOC = "M14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW
2.4.
Pentru realizarea comunicrii ntre calculator i placa Spartan 3E ne vom folosi dupa cum am mentionat deja de implementarea standardului serial RS232 pe plac i pe calculator. In plus vom folosi un modul de UART de la producatorul plcii, Digilent Inc.. Modulul UART este folosit pe post de component intermediar intre plac i calculator. Acest modul se comport ca un tampon de date. Modulul include un transmitor i un receptor. Transmitatorul este n general un registru de deplasare, care ncarc datele paralel i le deplaseaz bit cu bit, la o rat definit de transmisie. Receptorul este constituit dintr-un registru n care se deplaseaza datele bit cu bit i apoi se reconstituie intr-un tampon de date intermediar. Transmisia unui pachet de date incepe cu un bit de start, care este 0, urmat de biii de date care pot fi in numar de 6, 7, 8, un bit de paritate opional i n final un bit de stop care este 1. Bitul opional de paritate este folosit pentru detecia erorilor n procesul de transmisie. Numarul biilor de stop poate fi 1, 1.5 sau 2.
In funcie de numrul de date, setate pentru a fi recepionate i transmise, se stabilesc parametrii precum snt baud rate, numrul de biti de start, numarul de bii de stop, numrul de biti de paritate. Modulul de UART de la digilent incorporeaz in sine de fiecare parte a transmisiei cte un tampon pentru recepie/transmisie i unul pentru deplasarea datelor recent achiziionate.
4
Programul nostru de control de la calculator seteaz toi parametrii sus mentionai pentru UART inainte de a iniia cererea de conectare la portul serial. Atunci cnd pe portul serial se scriu date din programul master de control acestea snt preluate serial de modulul de UART si la nevoie snt prelucrate de placa.
3. Fundamentare teoretica
In faza iniial a dezvoltrii proiectului dat a trebuit sa ne documentam despre particularitile implement rii protocolului de comunicare serial pe placa Spartan 3E i integrarea acestuia cu standardul de interfatare serial RS232. Documentarea am facut-o dintrun laborator de pe site-ul firmei producatoare de soft, pentru programarea unei game variate de plci printre care se regseste i Spartan 3E, Xilinx. In lucrarea vizat, la fel se abordeaz comunicarea prin interfaa serial ntre calculator i placa Spartan 3E. La nceput se detaliaz configuraia conectorilor ce particip la realizarea comunicaiei seriale de pe plac i semnalele de control nglobate in acetia. In faza urmtoare se intocmete o diagram generic a modului de interfaare. Interfatarea presupune definirea a doua componente mari: modulul de UART i un protocol de interaciune intre PC si modulul de UART, Wishbone protocol. Noi am urmat arihitectura generic de interfatare prezentat in laborator, doar c am folosit un alt protocol oferit de o librarie din cadrul frameworkului de dezvoltare .net. Acesta ofer implementarea unui pachet pentru operaiile de transfer de date prin intermediul portului serial. Ca modul UART, cum am menionat deja, am folosit cel de la producatorul placii, Digilent Inc. Iniial ne-am propus sa-l implementam noi, dupa un exemplu de prototipizare dintr-o carte de profil gasit pe internet editata de Pong P. Chu, dar dup ce am studiat modulul deja existent am identificat aceleai concepte de proiectare detaliate in cartea sus mentionata. Plus la aceasta am facut un test al acestui modul crend un proiect si testnd comunicaia cu placa prin Hyperterminal. In cartea lui Pong P.Chu am avut posibilitatea sa vedem abordarea proiectrii modulului UART n trei variante posibile. Primul mod presupunea dezvoltarea unei componente care s nglobeze att partea de receptiie/trasnmisie ct i partea de control intr-un tot intreg. Se preta controlul fluxului de date prin intermediul unui set de indicatori. Indicatorii aveau ca scop semnalizarea prezenei unui set de date de recepionat sau de transmis, sau lipsa n tamponul de date a datelor n cazul cnd se face un acces la locaia acestuia. Este o variant mai simpla, dar care nu asigura protecie impotriva efectului de suprascriere a datelor i eronarea transmisiei acestora. Varianta cea mai potrivit, care este similar cu abordarea modulului de
5
UART de la Digilent Inc. folosit, este modelul format din doua componente interconectate prin semnale de control. Componenta FIFO din aceasta implementare asigur evitarea fenomenului de suprascriere a datelor. Partea de control i recepie/transmisie a datelor este monitorizat de o entitate separat.
4. Proiectare i implementare
Pentru realizarea proiectului s-au utilizat dou implementari software diferite: una n VHDL, ce va rula pe placa Spartan-3E i una n C#, ce va rula pe calculator. Din aceast cauz este nevoie s fim ateni la configurarea parametrilor de rulare a interfeei seriale.
Ca s verificm i s testm datele trimise i primite prin interfaa serial, am decis sa implementm un decodificator. Decodificatorul va identifica un cteva operaii, n funcie de codul primit de la calculator. Cele mai simple operaii sunt: afiare cod caracter pe LED-uri, afiare text LCD i citire stare comutatoare.
4.1.
Arhitectura sistemului
Pentru realizarea implemntrii hardware, trebuie sa fim ateni att la semnalele de control , ct i la semnalele interne. Dup cum se poate observa n Schema bloc a UART-ului din figur, componenta UART conine 2 logici, logica de transmisie i logica de recepie.
Petru a seta parametrii de rulare, care s fie identici cu cei setai pe calculator, este novie sa definim n interiorul modulului UART o constant, care reprezint divizorul de ceas. Valoare acestei constante se afl in felul urmtor: Ceasul interior moduluilui UART trebuie sa transmit de 16 ori mai lent decat semnalul de ceas original transmis catre el. Noi dorim sa transmitem 9600 bps, iar ceasul FPGA are 50MHz De aici: Baud rate 16 = 9600 16 = 153600 Clock division ratio = 50 000 000 / 153600= 325.52 Clock divisor (divizorul de ceas) = 325.52 / 2 163
Proiectul are 4 module VHDL: DataCntrl, Rs232RefComp, lcd_ctrl i decFSM. n Rs232RefComp se afl arhitectura principala a UART-ului, reprezentnd componenta arhitectural principal a proiectului nostru. Aceast component se ocup de transmiterea i recepia serial a datelor. Intrrile principale sunt: CLK ceasul placii Spartan 3E DBIN registrul de 8 bii care reprezint datele pe care vrem sa le transmitem RXD bitul care este citit cand se primesc datele seriale Ieirile principale sunt: DBOUT registrul de 8 bii, actualizat de fiecare data
cnd s-a terminat citirea unui octet. RDA indicatorul valabilitii datelor primate
TXD bitul curent transmis cand sunt transmise datele seriale TBE indic finalizarea transmiterii datelor Restul ieirilor sunt indicatori de eroare sau stare.
Cea mai important parte a funcionalitii modului este exemplificat prin 3 maini de stare: una controleaz datele primite, una controleaz datele transmise, iar ultima contoleaz valoarea indicatorului TBE.
Automatul de trasmitere se activeaz atunci cand pe registrul de intrare apar date care trebuiesc transmise. n starea sttTransfer sunt setai indicatorii,
indicnd starea de transfer, urmnd ca n starea sttShift s fie deplasat registrul tampon, tranmiindu-se bit cu bit.
Indicatorul TBE este de tip inout, ceea ce indic faptul c acest semnal poate fi setat i din exteriorul componentei
Dup cum se observ in Figura 8, trecerea din starea strIdle n starea de recepie date are loc la trecerea semnalului RXD n 0 logic n starile strEighDelay i strGetData are loc recepia datelor i salvarea bit cu bit n registrul tampon de receptie. Dup primirea celor 8 bii de date se trece in starea strCheckStop, verificndu-se bitul de stop
decFSM este componenta implement de noi pentru decodificarea datelor primite de la calculator. Aces t modul este doar o simpl main de stare, care are 2 faze: 1decodificarea semnalului, 2-efectuarea comenzii.
Semnalul dbOut reprezin registrul cu date primite de la calculator, n prim faz aceste date sunt considerate un cod, reprezentnd aciunea care se va realiza la primirea urmtorului octet de date stOut este un semnal de ieire, reprezentnd starea curent a automatului
Astfel, dac valoarea(in Hexazecimal) semnalului dbOut este 77, respectiv codul ASCII al caracterului w, atunci automatul va trece in
starea afisLcd dac dbOut este 72, atunci se va trece in starea cnd se transmit datele de pe comutatoare daca dbOut este 6C, atuci se va trece in starea cand se asteapt urmatorul caracter, codul ASCII al cruia va fi afiat pe LED-uri
Componenta lcd_ctrl, realizeaz afiarea unui mesaj de 8 caractere pe ecranul LCD al placii Spartan3E
Semnalul folosit de noi este vectorul lcd, n care, in functie de starea semnalului stOut(decFSM), se vor afla un ir de 8 coduri ASCII ale anumitor caractere.
10
Data_CNTRL este modulul top al proiectului. n acest modul au loc maparea semnalelor de intrare/ieire pe componentele interne enumerate mai sus.
11
stare
lcd2
dbOutSig
SW dataToSend
4.2.
Aplicaia software
Aplicaia software care ruleaz pe calculator este programat n limbaj C#, folosind IDE-ul MS Visual Studio i conine 4 funcii: 1. Setarea i deschiderea portului COM, care trebuie s coincid cu cele abordate n implementarea hardware:
comport.BaudRate = 9600; comport.DataBits = 8; comport.StopBits = (StopBits)Enum.Parse (typeof(StopBits),"One"); comport.PortName = portBox.Text; comport.Open();
13
4.3.
Pas1:
In mediul de lucru Xilinx se face click-dublu pe Generate Programing File din panelul de implementare a partii vhdl a aplicatiei. Dup generarea cu success a fisierului .bit se face click pe Configure Device(care va porni utilitarul iMPACT folosit pentru configurarea placii). Dac va fi configurat cu succes atunci toate LED-urile vor fi pornite(Figura 14).
14
Pas2:
Dupa ce a fost configurata cu success placa si sa realizat conexiunea prin adaptorul serial intre placa si calculator, se ruleaza aplicatia de control de pe calculator. Mai intii de toate utilizatorul trebuie sa verifice lista porturilor seriale disponibile la moment(Figura 15a). In interfata utilizator care este afisata odata cu rularea cu success a aplicatiei utilizatorul trebuie sa introduca numele portului serial pentru a realiza o conexiune seriala cu placa (Figura 15b).
Daca portul introdus este corect se afieaza panoul cu comenzile disponibile i un log, n care sint afiate mesaje despre modul i starea aplicaiei de comunicare(Figura 16),alftel se ramne la panoul actual al aplicatiei.
15
Pas3:
Dupa realizarea conexiunii cu success utilizatorul poate trimite comenzi plcii. Daca este selectata optiunea Afisare LCD din lista de optiuni disponibila i se apas butonul execut, se va afia un mesaj LCD placii(Figura 17) i n log-ul interfeei.
Daca este selectata comanda de citire comutatoare atunci se vor prelua starile comutatoarelor 3-0 de pe placa si valoarea lor concatenata cu patru zerouri va fi afisata in cimpul text si suprafata log din interfata.
16
Daca este selectata optiunea Afisare Led atunci utilizatorul poate introduce un character in cimpul text din interfata i valoarea acestuia va fi afisata pe LED-urile de pe plac (Figura 19).
5. Rezultate experimentale
Pentru descrierea fizica a modulelor de UART si modulul de decodificare a comenzilor am folosit limbajul de descriere hardware VHDL si mediul de dezvoltare XILINX ISE 13.4. Aplicatia terminal de pe calculator a fost implementata folosind frameworkul de dezvoltare .net 2 care are inglobat in el o librrie cu implementarea claselor responsabile de comunicarea cu alte periferice pe portul serial. Limbajul folosit pentru implementarea aplicatiilor folosind acest framework este C#. Aplicaia a fost implementata pe un laptop cu sistem de operare Windows 7, dar poate rula si pe alte versiuni de Windows cu conditia ca acestea sa aiba instalat SDK pentru frameworkul .net 2. Noi am folosit varianta de framework integrate in mediul de dezvoltare Visual Studio 2010 de la Microsoft, de aceea nu a trebuie sa adaugam dependene de librarii la proiect, acestea fiind continute de mediul de dezvoltare. In urma sintetizrii proiectul hardware in mediul de dezvoltare Xilinx am putut extrage date referitor la resursele consumate de proiect, si anume numar de bistabile, numar de blocuri logice. Aceste date pot fi analizate din tabelul de la figura 4. Ele au fost colectate din sumarul modelului (Design summary), parte componenta a mediului de dezvoltare Xilinx ISE 13.4.
Logic Utilization
Total number slice registers Number used as flip flops Number used as Latches
Available 9312
Utilization 1%
Number of 4 inputs LUTs Number of occupied slices Number of slices containing only related logic Number of slices containing unrelated logic Total number of 4 input LUTs Number used as logic Number used as route-thru Number used as Shift registers Number of bonded IOBs
2% 4% 100% 0% 3%
232
10%
24
8%
Dupa ce am generat fisierul .bit si am reusit conexiunea seriala la placa am incercat sa testam comunicarea.Comanda de afisare pe LCD-ul de pe placa se efectua correct. Am avut problem cu citirea datelor de pe portul serial in mediul Visual Studio. Cnd incercam s citim datele de pe port primeam o eroare, c dou fire de executie incearca sa acceseze aceleasi date concomitent. Problema consta in faptul c incercam s citim i sa afim datele in aceeai istructiune, nelund in calcul c citirea de pe portul serial are loc intr-un fir de execuie separat si prelucrarea datelor preluate de pe port in alt fir de executie. A trebuie doar sa citim datele de pe port, s le convertim intr-o form usor de conceput si sa le afisam la terminalul aplicatiei de control. Astfel problema cu sincronizarea a disparut. Am observant ceva problem la inceput in modul de functionare a modulului de UART care se comporta instabil.Initial am crezut ca e ceva legat de mediul de dezvoltare Visual Studio si de bibliotecile folosite din framework ,dar dupa ce am testat programul cu Hyperterminalul din Windows am observat ca tentativa de a trimite un character si de a face echo nu se efectua correct pentru primele 7-8 scrieri pe portul serial. Nu am depistat care era motivul acestui comportament eronat, ns pn la urm problema de genul nu au mai persistat.
18
6. Concluzii
In urma implementrii proiectului obiectivele propuse au fost atinse. Am reuit s implementm comenzile de baza propuse pentru a exemplifica modul de comunicaie prin interfaa serial ntre calculator i placa Spartan3E. Proiectul ofer utilizatorilor o interfa grafic prietenoas, usor de conceput. Utilizatorul are nevoie doar de cteva instruciuni de utilizare pentru a puatea usor s trimit comenzi la placa, n scopul stabiliri unei comunicri. Proiectul ar putea fi usor de integrat in aplicaii de monitorizare a diferitor procese automatizate, prin extinderea setului de comenzi si a datelor vehiculate ntre cele dou prti implicate in comunicare. Un exemplu ar fi msurarea valorilor unui indicator fizic si afiarea la intervale temporizate pe afisajul LCD, in vederea evalurii modului de variatie a masurii sus vizate. Proiectul ar putea fi extins prin implementarea unui protocol de transfer al datelor intre calculator i plac printr-o descriere hardware si respective o implementare folosind resursele fizice disponibile pe plac i interfatarea acestuia cu modulul de UART existent i librriile din SDK .net pentru comunicaia serial.
7. Bibliografie
[1] Chu P.P.,FPGA prototyping by VHDL examples
[2] Spartan 3E Starter Kit Board User Guide pg.33-36,http://www.xilinx.com [3] Devarapalli, Vallabh Srikanth, Serial RS232, ISE 10.1 and Xilinx Simulator on the Digilent Spartan3E board
19