AbstractEn el presente documento se explica el diseo de
un cronmetro digital con precisin de centsimas de segundo,
capaz de contar hasta 59 minutos con 59 segundos y 99 centsimas de segundo. El diseo del circuito ser descrito mediante el lenguaje !"# $acrnimo de !"#, !ard%are "escription #anguage y !&'(, ery !igh &peed 'ntegrated (ircuits), se utilizar el so*t%are '&E +,-."/0',. para la simulacin y se har una descripcin de diseo jerr1uico 0op #e2el. El diseo ser implementado en una +34/ $+ield 3rograma5le 4ate /rray) 6ilinx &partan '' de la tarjeta 3egasus de "igilent, Index Terms(ronmetro, diseo, 7a1uina de estados, simulacin, 0op le2el, !"#. I. INTRODUCTION L diseo de sistemas electrnicos para FPGA mediante VDL! "a permitido el desarrollo e incremento de la comple#idad de los dispositi$os di%itales. &l len%'a#e VDL ('e desarrollado para llenar 'n n)mero de necesidades en el proceso de diseo* primeramente! permite la descripcin de la estr'ct'ra de 'n diseo! esto es! como es descomp'esto en s'+,diseos! - como estos s'+,diseos son interconectados. Permite la especi(icacin de la ('ncin del diseo 'sando len%'a#es de pro%ramacin (amiliar. Permite .'e 'n diseo sea sim'lado antes de ser (a+ricado! para .'e los diseadores p'edan comparar rapidamente alternati$as - pr'e+as para las correcciones sin el retardo - lo costoso del prototipo "ard/are. & &n este doc'mento se descri+e el diseo de 'n cronmetro di%ital! implementado en 'na FPGA! mediante VDL - con descripcin de diseo #er0r.'ico. Como primera medida! se e1plicar0n las caracter2sticas del circ'ito .'e se pretende reali3ar! se%'ido por la e#ec'cin! donde se m'estran todos los componentes desarrollados! las sim'laciones! los cdi%os VDL - los dia%ramas RTL de cada 'no. Al (inal se reali3a la descripcin Top Le$el para interconectar todos los componentes diseados! para o+tener el cronmetro (inal. II. DI4&5O PROPU&4TO Reali3ar 'n cronmetro di%ital con precisin de 6In(orme presentado en oct'+re 78! 799:. Los a'tores pertenecen al Departamento de &lectricidad - &lectrnica! Uni$ersidad Francisco de Pa'la 4antander! C)c'ta! Colom+ia. cent;simas de se%'ndo - $alor m01imo de c'enta de 8< min'tos! 8< se%'ndos - << cent;simas de se%'ndo. &l cronmetro de+e contar con dos p'lsadores! start=split - stop=reset* cada 'no de+e reali3ar dos ('nciones. Uno de ellos "ace las ('nciones de start >iniciar el conteo al tiempo .'e se m'estra este dato en los displa-s?! c'ando el cronmetro est0 detenido! al iniciar o c'ando "a sido parado! - "acer 'n split >detener el $alor .'e se m'estra en los displa-s! pero se%'ir incrementando internamente? c'ando es presionado mientras el cronmetro est0 contando. &l otro p'lsador reali3a las ('nciones de stop >detener el conteo de modo .'e se m'estra en los displa-s el $alor en el .'e .'edaron los contadores?! c'ando el cronmetro se enc'entre contando! - reset >lle$ar todos los contadores a cero? c'ando el cronmetro se enc'entre detenido desp';s de 'n stop. Ntese .'e el cronmetro desp';s de 'n split! a'n.'e el $alor .'e se m'estra en los displa-s est0 detenido! ;ste si%'e contando internamente! de modo .'e c'ando se oprima n'e$amente start=split >.'e en este caso "ar2a la ('ncin de start?! se act'ali3ar2a el $alor de los displa-s de modo .'e la c'enta se%'ir2a mostr0ndose en estos.
III. &@&CUCIAN Para reali3ar el cronmetro prop'esto! se disean cinco md'los o componentes principales! los c'ales son interconectados mediante 'na descripcin de diseo #er0r.'ico mediante 'n cdi%o VDL. &l componente principal es 'na ma.'ina de estados de Boore! la c'al se encar%a de reci+ir las entradas de los dos p'lsadores - %enerar a partir de estas! seales .'e les indi.'en a los contadores de min'tos! se%'ndos - cent;simas de se%'ndo! c'al de las c'atro ('nciones del cronmetro es la .'e de+en reali3ar. Los tres contadores nom+rados anteriormente #'nto con 'n +lo.'e .'e reali3a el desplie%'e din0mico en los displa-s C se%mentos! son los otros componentes .'e con(orman el sistema. &l componente de desplie%'e din0mico es el mismo md'lo .'e se "a $enido 'tili3ando en los pro-ectos anteriores >s'mador de D +its - sem0(oro?. Cada 'no de los componentes de los contadores se encar%a de %enerar los n)meros de la c'enta en ECD >Decimal Codi(icado en Einario! del in%les Einar- Coded Decimal?! -a .'e es ;ste tipo de dato el .'e re.'iere el md'lo de desplie%'e La+oratorio F G, Diseo e implementacin de 'n cronmetro di%ital en 'na FPGA >Field Pro%rama+le Gate Arra-? Cesar A. Ri$era! @"on @. 4antia%o din0mico a la entrada! para reali3ar s' ('ncin. A. Diseo de la mquina de estados La m0.'ina de estados reci+e como entradas las seales de los p'lsadores! las c'ales son llamadas sHs >start=split? - sHr >stop=reset? - %enera a s' salida las seales .'e indican a los contadores .'e ('ncin reali3ar. La m0.'ina consta de c'atro estados principales! inicio! start! split! - stop! pero para e$itar los re+otes prod'cidos al p'lsar los p's"+otton! se crearon estados alternos .'e e$itar0n .'e esta sit'acin se presente* los n'e$os estados creados son! inicioI! startI! splitI! - stopI. 1) Descripcin VHDL de la maquina de estados A contin'acin se presenta el cdi%o en VDL .'e descri+e la m0.'ina diseada. Note .'e la ma.'ina de estados se compone de dos procesos! ma.'ina - salida* en el proceso ma.'ina! solo se e$al)an las transiciones! - en salida! se reali3an los cam+ios .'e de+en a(ectar la salida del componente. La descripcin de la ma.'ina de Boore se reali3a de ;sta manera por.'e as2! se sinteti3a me#or! -a .'e si se incl'-en las salidas con las transiciones se presentan errores en el circ'ito implementado. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL* 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* entit- ma.Hcrono is Port > sHs! sHr! clJ K in stdHlo%ic* reset! st! sp K o't stdHlo%ic?* end ma.Hcrono* arc"itect're Ee"a$ioral o( ma.Hcrono is t-pe state is >inicio! inicioI! start! split! startI! splitI! stop! stopI?* si%nal ep! e( K state* +e%in
act'ali3a K process>clJ? +e%in i( >clJLe$ent and clJMLIL? t"en ep NM e(* end i(* end process act'ali3a* ma.'ina K process >ep! sHs! sHr? +e%in case ep is /"en inicio MO i( sHsMLIL t"en e( NM startI* elsi( sHrMLIL t"en e( NM inicio* else e( NM inicio* end i(* /"en startI MO i( sHsMLIL t"en e( NM startI* else e( NM start* end i(* /"en start MO i( sHsMLIL t"en e( NM splitI* elsi( sHrMLIL t"en e( NM stopI* else e( NM start* end i(* /"en splitI MO i( sHsMLIL t"en e( NM splitI* else e( NM split* end i(* /"en split MO i( sHsMLIL t"en e( NM startI* elsi( sHrMLIL t"en e( NM stopI* else e( NM split* end i(* /"en stopI MO i( sHrMLIL t"en e( NM stopI* else e( NM stop* end i(* /"en stop MO i( sHsMLIL t"en e( NM startI* elsi( sHrMLIL t"en e( NM inicioI* else e( NM stop* end i(* /"en inicioI MO i( sHrMLIL t"en e( NM inicioI* else e( NM inicio* end i(* end case* end process ma.'ina* salida K process>ep? +e%in case ep is /"en inicio MO reset NM LIL* st NM L9L* sp NM L9L* /"en inicioI MO reset NM LIL* st NM L9L* sp NM L9L* /"en startI MO reset NM L9L* st NM LIL* sp NM L9L* /"en start MO reset NM L9L* st NM LIL* sp NM L9L* /"en splitI MO reset NM L9L* st NM L9L* sp NM LIL* /"en split MO reset NM L9L* st NM L9L* sp NM LIL* /"en stopI MO reset NM L9L* st NM L9L* sp NM L9L* /"en stop MO reset NM L9L* st NM L9L* sp NM L9L* end case* end process salida* end Ee"a$ioral* 2) Simulacin de la maquina de estados La (i%. I m'estra la sim'lacin de la ma.'ina descrita con el cdi%o VDL presentado anteriormente. Inicialmente la salida es con reset en alto >estado inicial?! c'ando se acti$a sHs! la salida st >start? pasa a alto! .'e indica a los contadores empe3ar* c'ando se $'el$e a acti$ar sHs! la salida sp >split?! pasa a alto al tiempo .'e st pasa a +a#o! se%'idamente se acti$a sHr >los contadores se enc'entran en split! entonces la ('ncin de ;ste! es stop?! lle$ando todas las salidas a cero! de modo .'e c'ando los contadores ten%an esta condicin >toda las salidas en cero?! realicen la ('ncin stop* n'e$amente sHs es p'esto en alto! lle$ando los contadores a start! con la acti$acin de st* el si%'iente p'lso detiene los contadores n'e$amente - el )ltimo p'lso >dos $eces se%'idas sHr?! clarea todos los contadores con la acti$acin de la salida reset. La (i%.7 m'estra el dia%rama RTL de la ma.'ina de estados de Boore descrita. B. Diseo del segundero &l relo# de 'n se%'ndo se reali3a creando 'na $aria+le .'e c'ente con cada transicin del relo# de la tar#eta Pe%as's! "asta cinc'enta millones! -a .'e el relo# de ;sta es de 89 B3! lo%rando de esta (orma o+tener 'n se%'ndo. &l comportamiento del circ'ito depende de las seales pro$enientes de la m0.'ina de estados* &l cdi%o VDL si%'iente descri+e el circ'ito. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL*
Fi%. I >a?.4im'lacin de la ma.'ina de estados del cronmetro. Fi%. 7. Dia%rama es.'em0tico RTL de la m0.'ina de estados. 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* entit- se%Hcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end se%Hcrono* arc"itect're Ee"a$ioral o( se%Hcrono is si%nal s%H'ni! s%Hdec K stdHlo%icH$ector>G do/nto 9?* +e%in relo#HIse% K process>clJ! st! sp! reset? $aria+le i K inte%er ran%e 9 to 89999999* +e%in i( >clJLe$ent and clJMLIL? t"en i( resetMLIL t"en i KM 9* s%H'ni NM P9999P* s%Hdec NM P9999P* 'ni NM P9999P* dec NM P9999P* elsi( stMLIL t"en i KM iQI* 'ni NM s%H'ni* dec NM s%Hdec* elsi( spMLIL t"en i KM iQI* else 'ni NM s%H'ni* dec NM s%Hdec* end i(* i( i M 89999999 t"en i KM 9* i( s%H'ni M PI99IP t"en s%H'ni NM P9999P* i( s%Hdec M P9I9IP t"en s%Hdec NM P9999P* else s%Hdec NM s%HdecQI* end i(* else s%H'ni NM s%H'niQI* end i(* end i(* end i(* end process relo#HIse%* end Ee"a$ioral* La (i%. G m'estra el dia%rama es.'em0tico RTL del contador de se%'ndos. Las salidas dec - 'ni corresponden a las decenas - 'nidades de la c'enta de los se%'ndos en +inario. &l dia%rama RTL de la (i%. G es e1actamente i%'al para el contador de min'tos - el contador de cent;simas de se%'ndo - las seales de entrada de los G md'los tam+i;n son las mismas! -a .'e pro$ienen de 'na misma ('ente >m0.'ina de estados?. Fi%. G. Dia%rama es.'em0tico RTL del contador de se%'ndos! el contador de min'tos! - el contador de cent;simas de se%'ndo. . Diseo del contador de minutos o minutero. &l diseo del min'tero se reali3a con +ase en el componente descrito anteriormente! &l cdi%o de VDL se presenta a contin'acin. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL* 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* entit- minHcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end minHcrono* arc"itect're Ee"a$ioral o( minHcrono is si%nal s%H'ni! s%Hdec K stdHlo%icH$ector>G do/nto 9?* +e%in relo#HImin K process>clJ! st! sp! reset? $aria+le i K inte%er ran%e 9 to 89999999* $aria+le # K inte%er ran%e 9 to :9* +e%in i( >clJLe$ent and clJMLIL? t"en i( resetMLIL t"en i KM 9* s%H'ni NM P9999P* s%Hdec NM P9999P* 'ni NM P9999P* dec NM P9999P* elsi( stMLIL t"en i KM iQI* 'ni NM s%H'ni* dec NM s%Hdec* elsi( spMLIL t"en i KM iQI* else 'ni NM s%H'ni* dec NM s%Hdec* end i(* i( i M 89999999 t"en i KM 9* # KM #QI* i( #M:9 t"en # KM 9* i( s%H'ni M PI99IP t"en s%H'ni NM P9999P* i( s%Hdec M P9I9IP t"en s%Hdec NM P9999P* else s%Hdec NM s%HdecQI* end i(* else s%H'ni NM s%H'niQI* end i(* end i(* end i(* end i(* end process relo#HImin* end Ee"a$ioral* D. Diseo del componente contador de cent!simas &l cdi%o VDL .'e descri+e el componente! se presenta a contin'acin. &n este caso la $aria+le .'e c'enta los p'lsos de relo#! solo de+e lle%ar "asta .'inientos mil. La descripcin para las ('nciones .'e de+e reali3ar es i%'al a la de los dos componentes descritos anteriormente. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL* 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* entit- centesHcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end centesHcrono* arc"itect're Ee"a$ioral o( centesHcrono is si%nal s%H'ni! s%Hdec K stdHlo%icH$ector>G do/nto 9?* +e%in relo#HIcent K process>clJ! st! sp! reset? $aria+le i K inte%er ran%e 9 to 899999* +e%in i( >clJLe$ent and clJMLIL? t"en i( resetMLIL t"en i KM 9* s%H'ni NM P9999P* s%Hdec NM P9999P* 'ni NM P9999P* dec NM P9999P* elsi( stMLIL t"en i KM iQI* 'ni NM s%H'ni* dec NM s%Hdec* elsi( spMLIL t"en i KM iQI* else 'ni NM s%H'ni* dec NM s%Hdec* end i(* i( i M 899999 t"en i KM 9* i( s%H'ni M PI99IP t"en s%H'ni NM P9999P* i( s%Hdec M PI99IP t"en s%Hdec NM P9999P* else s%Hdec NM s%HdecQI* end i(* else s%H'ni NM s%H'niQI* end i(* end i(* end i(* end process relo#HIcent* end Ee"a$ioral* ". Despliegue dinmico &ste componente se encar%a de reali3ar el desplie%'e din0mico en los c'atro displa-s C se%mentos de la teRar%eta Pe%as's. &l cdi%o .'e descri+e el circ'ito es el si%'ienteK li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL* 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* entit- desplie%'e is port > clJK in stdHlo%ic* displa-9K in stdHlo%icH$ector>G do/nto 9?* displa-IK in stdHlo%icH$ector>G do/nto 9?* displa-7K in stdHlo%icH$ector>G do/nto 9?* displa-G K in stdHlo%icH$ector>G do/nto 9?* se%mentosK o't stdHlo%icH$ector>: do/nto 9?* anodosK o't stdHlo%icH$ector>G do/nto 9??* end desplie%'e* arc"itect're Ee"a$ioral o( desplie%'e is si%nal datoK stdHlo%icH$ector>G do/nto 9?* si%nal m'1 K 'nsi%ned >I do/nto 9?* si%nal relo# K stdHlo%ic* +e%in relo# K process>relo#? +e%in i(>relo# M LIL and relo# Le$ent? t"en m'1 NM m'1 Q I* end i(* end process relo#* desplie%'e K process>m'1!displa-9!displa-I!displa-7! displa-G? +e%in case m'1 is /"en P99P MO anodos NM PIII9P* datoNMdispla-9* /"en P9IP MO anodos NM PII9IP* datoNMdispla-I* /"en PI9P MO anodos NM PI9IIP* datoNMdispla-7* /"en PIIP MO anodos NM P9IIIP* datoNMdispla-G* /"en ot"ers MO n'll* end case* end process desplie%'e* di$isor K process >clJ? $aria+le #K inte%er ran%e 9 to 799999* +e%in i( >clJL e$ent and clJMLIL? t"en #KM #QI* i( #M799999 t"en relo#NMLIL* else relo#NML9L* end i(* end i(* end process di$isor* codi(icador K process >dato? +e%in case dato is /"en P9999P MO se%mentos NMP999999IP* /"en P999IP MO se%mentos NMPI99IIIIP* /"en P99I9P MO se%mentos NMP99I99I9P* /"en P99IIP MO se%mentos NMP9999II9P* /"en P9I99P MO se%mentos NMPI99II99P* /"en P9I9IP MO se%mentos NMP9I99I99P* /"en P9II9P MO se%mentos NMP9I99999P* /"en P9IIIP MO se%mentos NMP999IIIIP* /"en PI999P MO se%mentos NMP9999999P* /"en PI99IP MO se%mentos NMP9999I99P* /"en ot"ers MO se%mentos NMPIIIIIIIP* end case* end process codi(icador* end Ee"a$ioral* La (i%. D m'estra el circ'ito es.'em0tico RTL implementado para el desplie%'e din0mico en los displa-s. #. reacin del paquete Los componentes .'e componen el cronmetro son creados dentro de 'n pa.'ete en la li+rer2a SorJ! para poder ser 'tili3ados en la descripcin de alto ni$el. &l cdi%o .'e %enera cada 'no de los componentes es el si%'iente. Fi%. D. Dia%rama es.'em0tico RTL para el desplie%'e din0mico. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.all* pacJa%e cronoHpacJ is component ma.Hcrono is Port > sHs! sHr! clJ K in stdHlo%ic* reset! st! sp K o't stdHlo%ic?* end component ma.Hcrono* component centesHcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end component centesHcrono* component se%Hcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end component se%Hcrono* component minHcrono is Port > reset! st! sp! clJ K in stdHlo%ic* 'ni! dec K o't stdHlo%icH$ector>G do/nto 9??* end component minHcrono* component desplie%'e is port > clJK in stdHlo%ic* displa-9K in stdHlo%icH$ector>G do/nto 9?* displa-IK in stdHlo%icH$ector>G do/nto 9?* displa-7K in stdHlo%icH$ector>G do/nto 9?* displa-G K in stdHlo%icH$ector>G do/nto 9?* se%mentosK o't stdHlo%icH$ector>: do/nto 9?* anodosK o't stdHlo%icH$ector>G do/nto 9??* end component desplie%'e* end cronoHpacJ* $. reacin del arc%i&o 'op Le&el &l arc"i$o Top Le$el o descripcin #er0r.'ica "ace posi+le interconectar los componentes creados en este diseo. &l dia%rama es.'em0tico RTL del cronmetro di%ital se m'estra en la (i%. 8. La (i%. : m'estra los componentes .'e ('eron instanciados con el arc"i$o de Top Le$el. Para la implementacin de este circ'ito se asi%n a la entrada sHr el p'lsador ETNI - a la entrada sHs el p'lsador ETN9! las salidas 0nodos - se%mentos corresponden a los 0nodos - a los se%mentos de cada 'no de los displa-s de la tar#eta Pe%as's* &l relo# CLT es el relo# interno de la tar#eta. Las salidas 'niHmin - decHmin son las 'nidades - las decenas de min'tos respecti$amente* a 'niHminUGK9V le ('eron asi%nados los leds LDUCKDV - a decHminUGK9V! se le asi%naron los leds LDUGK9V. Las cent;simas de se%'ndo son desple%adas en los displa-s 9 - I - los se%'ndos en los displa-s 7 - G. &l cdi%o de la descripcin de alto ni$el es el si%'iente. li+rar- I&&&* 'se I&&&.4TDHLOGICHII:D.ALL* 'se I&&&.4TDHLOGICHARIT.ALL* 'se I&&&.4TDHLOGICHUN4IGN&D.ALL* 'se /orJ.cronoHpacJ.ALL* entit- cronotop is Port > clJ! sHs! sHr K in stdHlo%ic* 'niHmin! decHmin K o't stdHlo%icH$ector>G do/nto 9?* se%mentos K o't stdHlo%icH$ector>: do/nto 9?* anodos K o't stdHlo%icH$ector>G do/nto 9??* end cronotop* arc"itect're Ee"a$ioral o( cronotop is si%nal s%'niHse% K stdHlo%icH$ector >G do/nto 9?KMP9999P* si%nal s%decHse% K stdHlo%icH$ector >G do/nto 9?KMP9999P si%nal s%'niHcent K stdHlo%icH$ector>G do/nto 9?KMP9999P* si%nal s%decHcent K stdHlo%icH$ector>G do/nto 9?KMP9999P* si%nal s%Hreset! s%Hst! s%Hsp K stdHlo%ic* +e%in 'IKma.Hcrono port map >sHs! sHr! clJ! s%Hreset! s%Hst! s%Hsp?* '7KcentesHcrono port map >s%Hreset! s%Hst! s%Hsp! clJ! s%'niHcent! s%decHcent?* 'GKse%Hcrono port map >s%Hreset! s%Hst! s%Hsp! clJ! s%'niHse%! s%decHse%?* 'DKminHcrono port map >s%Hreset! s%Hst! s%Hsp! clJ! 'niHmin! decHmin?* '8Kdesplie%'e port map>clJ! s%'niHcent! s%decHcent! s%'niHse%! s%decHse%! se%mentos! anodos?* end Ee"a$ioral* IV. CONCLU4ION &l proceso de diseo en VDL! re.'iere de 'na descripcin .'e sea ptima para la implementacin en 'na FPGA! de manera .'e no se presenten estados no esperados en la salida! a'n c'ando la sinta1is sea correcta. Para e$itar ;sto de+emos tener siempre presente .'e en VDL se est0 es pro%ramando en "ard/are o descri+iendo circ'itos di%itales. Para conse%'ir 'n me#or desempeo del circ'ito a disear es con$eniente! si no se tiene m'c"a e1periencia! reali3ar $arias descripciones del mismo circ'ito - $alidar la mas ptima. C'ando se descri+en ma.'inas de estado! para conse%'ir 'na me#or sinteti3acin del circ'ito! es aconse#a+le asi%nar las salidas - las transiciones entre estados! en procesos di(erentes. Fi%. 8. Dia%rama es.'em0tico RTL del cronmetro di%ital. Fi%. :. Dia%rama es.'em0tico RTL de los componentes instanciados >ma.'ina de estados! contador de min'tos! contador de se%'ndos! - contador de cent;simas de se%'ndo? en el dia%rama RTL de la (i%. D.