scieee Open visual document viewer

Diseño de un Time-to-Digital Converter en FPGA Xilinx Artix-7

Naranjo Carrizosa, Manuel

Abstract

La versatilidad de las FPGAs permite un uso muy amplio en el ámbito de la investigación, debido a su capacidad de interconexión de diferentes elementos lógicos y la parametrización de estos, a través de un entorno de desarrollo. Este proyecto trata de codificar un intervalo temporal en dígitos binarios, ayudándose del código termométrico. Vivado 2021.1 es el sofware de desarrollo que soporta nuestra FPGA de la familia Artix-7, cuyo comportamiento es modelado por los algoritmos de nuestro proyecto. Con esto se pretende analizar el comportamiento en simulación y proponer su estudio experimental como línea de investigación futura.

Full text

P oyec o Fin de Ca e a Ingenie ía de Telecomunicación Diseño de un Time- o-Digi al Con e e en FPGA Xilinx A ix-7 Au o : Manuel Na anjo Ca izosa Tu o es: Fe nando Muñoz Cha e o F ancisco Rogelio Palomo Pin o Dp o. Ingenie ía Elec ónica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2024 Uni e sidad de Se illa P oyec o Fin de Ca e a Ingenie ía de Telecomunicación Diseño de un Time- o-Digi al Con e e en FPGA Xilinx A ix-7 Au o : Manuel Na anjo Ca izosa Tu o es: Fe nando Muñoz Cha e o F ancisco Rogelio Palomo Pin o Dp o. Ingenie ía Elec ónica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2024 P oyec o Fin de Ca e a: Diseño de un Time- o-Digi al Con e e en FPGA Xilinx A ix-7 Au o : Manuel Na anjo Ca izosa Tu o : Fe nando Muñoz Cha e o El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os: P esiden e: Vocales: Sec e a io: Acue dan o o ga le la cali icación de: Se illa, 2013 El Sec e a io del T ibunal AGRADECIMIENTOS En p ime luga , me gus a ía ag adece a mi u o Fe nando Muñoz Cha e o po su con ianza en mí y en es e p oyec o, a pesa de los obs áculos y di icul ades que ha conlle ado. Su o ien ación y expe iencia han sido undamen ales pa a la ealización de es e abajo. Po descon ado, le doy las g acias a mi amilia po su apoyo incondicional a lo la go de es e du o pe o sa is ac o io camino, que, a pa e de p opo ciona me conocimien os écnicos; me ha hecho mejo a como pe sona. Finalmen e, ag adezco a odos los p o eso es de la i ulación, que siemp e han es ado dispues os a ayuda ; al igual que compañe os de ca e a, que me lle o como amigos. RESUMEN La e sa ilidad de las FPGAs pe mi e un uso muy amplio en el ámbi o de la in es igación, debido a su capacidad de in e conexión de di e en es elemen os lógicos y la pa ame ización de es os, a a és de un en o no de desa ollo. Es e p oyec o a a de codi ica un in e alo empo al en dígi os bina ios, ayudándose del código e momé ico. Vi ado 2021.1 es el so wa e de desa ollo que sopo a nues a FPGA de la amilia A ix-7, cuyo compo amien o es modelado po los algo i mos de nues o p oyec o. Con es o se p e ende analiza el compo amien o en simulación y p opone su es udio expe imen al como línea de in es igación u u a. Figu a 5.9 Simulación Reinicio Fine_TDC 35 Figu a 5.10 Bloques línea de aca eo 36 Figu a 5.11 Re a dos Bloques Ca y4 36 Figu a 5.12 Simulación Value_ ine_ eó ico = 0 36 Figu a 5.13 Simulación Value_ ine_ eó ico = 128 37 Figu a 5.14 Simulación Value_ ine_ eó ico = 256 37 Figu a 5.15 Esquema lógico in e conexión módulo CARRY4 - bies ables 38 Figu a 5.16 Pa icula ización salida Fine_ dc 38 Figu a 5.17 Fase Reinicio Codi icado Te móme o - Bina io 39 Figu a 5.18 Simulación salida codi icado Bin[7:0]_ eó ico = 0 39 Figu a 5.19 Simulación salida codi icado Bin[7:0]_ eó ico = 100 39 Figu a 5.20 Simulación salida codi icado Bin[7:0]_ eó ico = 128 39 Figu a 5.21 Simulación salida codi icado Bin[7:0]_ eó ico = 200 40 Figu a 5.22 Simulación salida codi icado Bin[7:0]_ eó ico = 256 40 Figu a 6.1 Fiche o es icciones 43 ÍNDICE DE TABLAS Tabla 5.1 Análisis e a dos 27 Tabla 5.2 Análisis e a dos línea de aca eo 34 Tabla 5.3 Valo es salida sis ema 34 1 INTRODUCCIÓN La o ma adicional de ap ende y enseña sis emas digi ales ha ido cambiando en las úl imas décadas median e el uso de lenguajes de desc ipción de ha dwa e (HDL) y FPGAs (Field P og ammable Ga e A ay) [1].Es os p ocesado es se es án posicionando como una solución pe ec a pa a muchas aplicaciones en el campo de IoT, la in o má ica pe ime al y las ecnologías especí icas pa a la in eligencia a i icial. Su capacidad de se p og amadas pa a usos conc e os y su g an e sa ilidad es án con enciendo a la indus ia, y cada ez hay más pla a o mas de es e ipo en sec o es inno ado es. La e sa ilidad de es e disposi i o semiconduc o p o iene de un as o núme o de elemen os básicos de lógica elec ónica, cuya in e conexión es p og amable (“de o ma indi ec a”). Es e abajo iene como obje i o el diseño y la implemen ación de un ‘TDC’, pa a su es udio, análisis y juicio compa a i o de los p ocesos de simulación y expe imen ación. Pa a el desa ollo de es e p oyec o, se u iliza una placa Basys 3, es deci , una FPGA Xilinx de la amilia A ix-7, con núme o de pieza Xilinx “XC7A35T-1CPG236C” [2] En cuan o al so wa e que sopo a y puede ges iona dicho ha dwa e, el en o no de desa ollo ‘Vi ado 2021.1’ es el elegido en es e p oyec o. Las bases eó icas del p oyec o, jun o con los algo i mos que se implemen a án pa a su desa ollo, son desc i os de alladamen e en el po al web h ps://sps.ewi. udel .nl/ pga_ dc/TDC_basic.h ml (ac ualmen e no disponible). 1.1 Obje i o y alcance El obje i o de es e p oyec o adica en el es udio de un TDC ( ime o digi al con e e ), es deci , un disposi i o que dado un pe iodo de iempo de e minado, p opo ciona una secuencia de da os bina ia equi alen e; además, es a cadena bina ia se codi ica como un núme o bina io en una e apa pos e io . Es a de inición se desa olla de o ma más de allada en índices pos e io es. Se ha p ocedido a desc ibi el diseño median e el lenguaje . hdl de o ma modula haciendo uso del IDE Vi ado an es mencionado; además de los iche os de es icciones .xdc y o as u ilidades. Es e modelo pasa po a ios p ocesos has a que se gene a el iche o .bi , aquel que puede ca ga se en la memo ia de la Basys3. Es os p ocesos co esponden a la sín esis, que gene a un ci cui o digi al a pa i de una desc ipción en VHDL; y a la (pos e io ) implemen ación, que u a es e ci cui o según es icciones y ecu sos. Además, se á necesa io comp oba el co ec o uncionamien o median e simulaciones an es de gene a dicho a chi o. Pa a el es udio de dicho con e so se lle a án a cabo las ases de simulación y expe imen ación. El p ocedimien o de la e apa de simulación ha consis ido en examina los e asos inducidos po los componen es lógicos c í icos pa a el diseño, pa a su pos e io es udio y compa ación con los esul ados ob enidos en la segunda ase. 2 In oducción 1.2 P opósi o del p oyec o: La elección de plan ea es e p oyec o, es iba en la g an esolución empo al que los TDC pueden llega a o ece . Po ello es e disposi i o es de i al impo ancia en aplicaciones que equie en una al a esolución como los LIDAR (Ligh De ec ion and Ranging), que p ecisa de medi el iempo de un pulso láse e lejado en un obje o pa a ol e al ansmiso ; o en ísica de al a ene gía, llegándose a usa en de ec o es de pa ículas. [3] Además, se puede p opone como línea de in es igación el uso conjun o y sinc onizado del disposi i o “TDC” jun o con un “ADC”. Es os con e ido es abajan conjun amen e en los senso es de imagen CMOS de al a elocidad [4] 2 FUNDAMENTOS CONCEPTUALES 2.1 Ca ychain Con el p opósi o de diseña un TDC, se p ocede a implemen a como es uc u a lógica un ‘Ca ychain’; se a a de una línea de e aso empo al (Figu a 2.1). Es a hile a es á o mada po bloques ‘Ca y’ , es deci , módulos de ope ado es suma cuya salida de ol e á el aca eo esul an e de la ope ación.(Figu a 2.2). La impo ancia de es a en idad (se de ine como al) adica en la inducción de un e aso empo al del pulso que exci a su en ada. 2.2 Slo “START – STOP” Pa a la ealización de es e p oyec o, se conside a una anja empo al ∆𝑻 como la en ada TDC. Pa a de ini es a di e encia de iempos, lancos de subida de 2 pulsos han e e enciado inicio y inal de dicho ‘slo ’ (aunque con algunos ma ices como e emos al especi ica el diseño). Denominamos los ins an es ‘START’ y ‘STOP’ pa a designa dichos lími es del pe iodo (Figu a 2.3). 2.3 Código e momé ico Pa a pode in e p e a de mane a compac a y compendiada el esul ado del TDC ( an o expe imen al como as una simulación), se hace uso de una e apa llamada “The m_ o_bin”; que codi ica a bina io un núme o de e minado de líneas de pulso ( alo es bina ios en úl ima ins ancia). La can idad o al de dichas señales co esponde a una po encia bina ia p ede inida. Llamamos código e momé ico a un alo de 1’s y 0’s , ob enido según qué líneas de pulso de nues o diseño es án ac i as y cuáles no, en un ins an e de iempo conc e o. El alo esul an e de nues o código puede se ep esen ado como una unción escalón uni a ia; el ins an e de pe mu ación 0 – 1 de la unción co esponde con el p ime índice cuyo alo es ‘1’(es a analogía es in álida pa a el caso en el que el alo del código e momé ico es ‘0’). Dicho código e momé ico se basa en la escala e momé ica, cuya co ec a ep esen ación es iba en la medición de un in e alo ( anja empo al de en ada ∆𝑻) di idido en pa es iguales, as de ini 2 pun os de e e encia (‘START’ y ‘STOP’) [5] 4 P oblemas Concep uales Figu a 2.1 Ca ychain Figu a 2.2 Bloque Ca y Figu a 2.3 F anja empo al de en ada ∆T del TDC 3 PLANTEAMIENTO Es a sección a a de desc ibi las siguien es pa es del p oyec o de o ma uncional; an esala de la desc ipción cuali a i a y es uc u al del diseño. 3.1 Delay Line La línea de e aso se basa en la es uc u a ‘Ca ychain’ an es de inida, así, se de e mina su con igu ación de la siguien e mane a. En p ime luga , de inimos el bloque ‘Ca y’ con 3 en adas y 1 salida (Figu a 2.1), cuya espues a de uel e el aca eo esul an e de una suma bina ia. A endiendo al p ime bloque de la cadena de dichas ins ancias, 2 de sus 3 en adas son es imuladas con ni eles lógicos bajo y al o espec i amen e, es deci , en el plano lógico se nos p esen a una suma bina ia “1 + 0”; a p io i, el alo de aca eo equi ale a ‘0’ , ci a que pe mu a en el ins an e en el que un es ado al o de la señal exci a la en ada es an e (la llama emos CI), y que, hace cambia , en consecuencia, la salida del bloque a ‘1’. Es e bi al o se p opaga á a lo la go de los módulos ‘Ca y’, agando así, po la línea de e aso. Es ele an e señala que la señal exci an e de en ada del p ime bloque se co esponde con el pulso START. A pa i del segundo bloque, la en ada CI de cada módulo se conec a con la salida del bloque an e io , o mando así la denominada ‘Ca ychain’. De o ma que, cada una de las en adas CI de dichos bloques ecibi á la señal digi al ‘START’, con un e a do es imado eó ico de en e 15 y 25 ps espec o de la en ada del bloque an e io . De es a mane a, con la con igu ación es uc u al mencionada, se nos p esen a una línea digi al de e aso, cuyo come ido consis e en la p opagación de un al o ni el po la misma. La salida de cada ins ancia ‘Ca y’ más allá de conec a se con su homólogo pos e io , se in e conec a con la en ada de un bies able. En la Figu a 3.1 especi icamos que dichos bies ables se co esponden con los bies ables ipo D; cada uno de ellos se de ine como un ‘Flip- Flop’ que ecibe un alo digi al po su en ada D, que se p opaga á hacia la salida (Q) as el egis o de un lanco de subida digi al po pa e de la en ada C. El da o bina io a la salida del módulo en cues ión se man iene has a que el alo ac ual sea dis in o del p esen e en la en ada en el p eciso ins an e del e en o cambio de es ado a ni el al o en la en ada C. Además, el papel despeñado de las en adas CLR y CE consis en en el einicio de la salida y en la habili ación de la en ada C, espec i amen e. La is a de ‘Flip-Flops’ in e conec ados uno a uno con la cadena de módulos ‘Ca ychain’ cons i uyen lo que denominamos ‘delayline’, ilus ada en la Figu a 3.2 (se omi en las en adas de los bies ables ‘C’ y ‘CLR’). 6 Plan eamien o La señal que pe u ba la en ada C se co esponde con la señal de eloj CLK. Pues bien, uno de los lancos ascenden es de CLK, se a ibuye al pulso STOP; el indicado se á de allado en la siguien e sección. El come ido de es e pulso adica en decidi el momen o exac o en el que se con o ma á el ec o salida “Q1,Q2…Qn” según el alo de la en ada de los bies ables. Es e ec o salida indica median e un código bina io, el iempo anscu ido en e los lancos de subida de las señales START y STOP, es deci el ∆𝑻 obje o de es e p oyec o. Cabe espe a que los bi s menos signi ica i os del ec o salida man end án un alo cons an e de '1' has a que alguna de las salidas adquie a el alo de '0'. En ese momen o, odas las salidas subsiguien es oma án el alo de '0' has a el é mino del ec o . Figu a 3.1 Bies able ipo D Figu a 3.2 Delay line 7 Plan eamien o 3.2 Inpu Fil e Desglosamos la e apa “Inpu Fil e ” en 2 conjun os, compues o cada uno po 2 bies ables ipo D; cada conjun o, cumple un come ido especí ico. A endiendo al p ime o de los conjun os, es e iene la inalidad de aco a empo almen e po la de echa una señal digi al, de iniendo así el pulso ‘START’. Se a a de un obje i o p escindible, pues o que, el único desempeño de la señal de inicio eside en la conc eción del inicio de ∆𝑻. Así, la jus i icación del uso de es e módulo es iba en una mayo cla idad a la ho a de de ini la anja empo al de en ada. Re e enciamos la con igu ación es uc u al de es a p ime a e apa en la Figu a 3.3. La onda p edeceso a a ‘START’, a la que llamamos ‘hi ’, que ges iona el inicio del in e alo ∆𝑻, pe u ba la en ada de eloj ‘C’ del p ime bies able ‘inpu _ il e 1’ de es a p ime a sección. Un es ado ac i o digi al de la señal p opaga á el ‘1’ cons an e p esen e en ‘D’ hacia la salida ‘Q’. Es e ni el lógico al o, p o oca el einicio en ambos bies ables. El p ime o de dichos módulos pe mu a á su salida al es ado digi al posi i o, o iginándose así un pulso de co a du ación a su salida, mien as que, el e ec o en la segunda ins ancia consis e en es ablece un ‘0’ a su salida, que, a su ez, induce el es ado ‘1’ a la salida del in e so ; cuyo alo man end á has a que un lanco de subida in ie a en el pin de eloj ‘C’ de ‘inpu _ il e 2’. Como a es a señal la llamamos pulso ‘START’, así, se concluye, que: ↑ 𝑺𝑻𝑨𝑹𝑻 ≡ ↑ 𝒉𝒊𝒕 + 𝒓𝒆𝒕𝒓𝒂𝒔𝒐𝒔 𝒃𝒍𝒐𝒒𝒖𝒆𝒔 𝒍ó𝒈𝒊𝒄𝒐𝒔 El segundo conjun o de bies ables sinc oniza la salida del bloque a diseña basado en “ delay- line” con la e apa enca gada de la codi icación código bina io – e móme o median e la emisión de un pulso disc e o decla ado como ‘ alid’. Pa a ello, al como mues a la Figu a 3.4, la en ada del p ime bies able coincide con la salida del in e so , y, po an o, con ‘START’. Desc ibiendo su uncionalidad, es e pulso se p opaga as 2 ciclos de eloj hacia la salida del módulo, pa a con o ma la onda obje o ‘ alid’; pa a ello, el eloj ges iona la sinc onización, exci ando la en ada C. Tenemos que cada bies able in ie e una posposición de 1 CLK. El e a do gene ado es á en consonancia con el e aso inducido po el bloque lógico ‘ ine_ dc’, que se á diseñado en el p óximo apa ado. 14 Diseño Figu a 4.4 Algo i mo ins ancia delayblock_2 Figu a 4.5 Algo i mo Ca ychain 15 Diseño Figu a 4.6 CLB 16 Diseño Figu a 4.7 Slice_X8Y75 Figu a 4.8 Algo i mo En idad Flip-Flop ipo D 17 Diseño Figu a 4.9 Es uc u a lógica bies ables ine_ dc implemen ación Figu a 4.10 Algo i mo ins ancias columnas bies ables Flip lop_1 Flip lop_2 18 Diseño Figu a 4.11 Algo i mo ins ancia ine_ dc 4.2 Inpu Fil e Desglosamos la e apa “Inpu Fil e ” en 2 conjun os, compues o cada uno po 2 bies ables ipo D; cada conjun o, cumple un come ido especí ico. En p ime luga , y abo dando los p opósi os del p ime o de es os p ime os conjun os pa a op imiza el diseño (desc i os en el apa ado ‘plan eamien o’), se p e ende aco a en el dominio del iempo, el pulso de en ada al sis ema y así conside a un pulso de inicio ‘START’ cuyo lanco de bajada coincidi á con el lanco de subida de la señal de ‘STOP’. En lo ela i o a la es uc u a lógica, se mues a un esquema de dicho p ime conjun o en la Figu a 3.3, haciendo uso de la he amien a ‘RTL Analysis’ de Vi ado. El bloque es á cons i uido po 2 ins ancias: ‘inpu _ il e 1’ e ‘inpu _ il e 2’, basadas en la en idad ‘FDCE’ desc i a en la Figu a 4.8 (misma es uc u a lógica que pa a los bies ables de la línea de e aso). Se busca nega el pulso de la salida del segundo il o, ob eniendo un ni el al o digi al as un es ado lógico bajo, suminis ando el pulso START (señal igge ) como ni el al o a la en ada de la línea de e aso; ep esen ándose en el esquema como un ecu so LUT. Se ija un ni el bajo en la salida mencionada as el e en o de un lanco de subida de eloj en la en ada ‘CLK’ del segundo bies able. Las señales implicadas en la in e conexión en e ambos bloques, así como la de inición de sus ins ancias ienen desc i as en el algo i mo ilus ado en la Figu a 4.12 ( agmen o del iche o op: “ ine_ dc_encode . hd”). 19 Diseño A endiendo a la segunda e apa de es os il os, su p opósi o adica en sinc oniza la salida de la línea de e aso con la e apa enca gada de la codi icación “código bina io – e móme o” median e la emisión de un pulso disc e o decla ado como ‘ alid’. De nue o, la en idad ‘FDCE’ ins ancia 2 bies ables enca gados de dicho p opósi o (obsé ese Figu a 4.13). Se a i ica de o ma g á ica la desc ipción de es e algo i mo en la Figu a 3.4. La o ma de sinc oniza ambos elemen os eside en la ijación de un e a do de 2 CLK con espec o al ins an e del suceso del e en o de un lanco de subida del pulso ‘START’ an o a la en ada de da os (D) del p ime Flip- Flop del conjun o en cues ión, como a la en ada ‘ igge ’ del “delay_line” ; po an o, la ansmisión de la señal de alidación se ajus a al iempo de p ocesamien o que su e la línea de e aso. Figu a 4.12 Algo i mo ins ancias inpu _ il e 1 inpu _ il e 2 20 Diseño Figu a 4.13 Algo i mo ins ancias inpu _ il e _ i ed1 inpu _ il e _ i ed2 4.3 Decodi icado Te móme o – Bina io Como se ha comen ado en el apa ado plan eamien o, es e bloque a a de decodi ica el código e móme o a bina io. La uncionalidad y es uc u a del diseño del decodi icado puede se di idida en 2 e apas dis in a. El come ido de la p ime a e apa eside en busca un ango, cons i uido po 15 bi s, en el que se da luga la pe mu ación bina ia ′𝟏′→ ′𝟎′ ; a pa i de una secuencia bina ia de un amaño de e minado. Dicha sucesión de da os p o iene de la salida de la línea de e aso, siendo cada bi ansmi ido po un bies able de la segunda columna. En cuan o a la magni ud de la secuencia, es e iene de e minado po el amaño del ec o en ada de da os de la en idad decodi icado ‘ he m2bin_pipeline_coun ’ (Figu a 4.16), de inida po : ((2**b)-1); es ando ‘b’ de inida como cons an e ‘gene ic’. En nues o diseño, se de ine: b = 8 → ((2**b)-1) = 255 Es a e apa cons a de dis in as ases de elemen os MUX, cuya unción adica en di idi en 2 pa es de igual magni ud una se ie bina ia, pa a pos e io men e, op a po el agmen o en el que 21 Diseño uno de los bi s es obje o de pe mu ación. A endiendo al p ime mul iplexo de la e apa (indicado po el índice de la señal ‘decoding’) ilus ado en la Figu a 4.15, es e se enca ga de escindi dicha secuencia bina ia en 2 ec o es de un ango [126:0], y según el dígi o ecibido po la en ada de selección, una de las en adas se p opaga hacia la salida. El alo bina io que pe u ba la en ada ‘S’ del mul iplexo , coincide con el alo del índice cen al del ec o en ada; ‘ he mo[255]’ en el mul iplexo ep esen ado en la Figu a 4.15. Pa a jus i ica es e p ocede , se señala que la en ada de da os del bloque sigue un pa ón e momé ico: “1111111111111…11000…0000” ; po an o, se deduce que si el alo cen al es ‘1’, la pe mu ación bina ia se ubica á en la mi ad de echa de la secuencia; dicha ansición ocu i á en la p ime a mi ad pa a el caso con a io. Es e algo i mo se desc ibe en unción de ‘i’ en la Figu a 4.16. Es e índice e leja el alo de secuencia de la i e ación (bucle FOR), que a su ez, ija la ase de la e apa; ejecu ada cada lanco de subida de eloj (obsé ese la Figu a 4.17). Como se obse a en la Figu a 4.14, la salida del decodi icado , y po an o del TDC, se de ine como un ec o cuya magni ud depende del pa áme o b : “b – 1 = 7 “; según nues os pa áme os de diseño. Así los ‘b-4’(4) alo es más signi ica i os de es a salida quedan de inidos po la p ime a e apa. Es os alo es co esponden con los alo es cen ales de la en ada de cada ase, conco dando así con cada i e ación ges ionada sínc onamen e. La segunda e apa consis e implemen a un con ado bina io de ‘1’s, cuyo obje o de medición son los 15 bi s esul an es de la salida de la p ime a e apa. Son necesa ios 4 bi s como máximo pa a exp esa el núme o 15 en bina io (𝟐𝟒=𝟏𝟔). La uncionalidad de es a e apa es á desc i a en 2 p ocesos sínc onos. El p ime o, ilus ado en la Figu a 4.18, se enca ga de conca ena la espues a de la p ime a e apa con el esul ado de la unción ‘coun _ones ‘, cuyo a gumen o e e encia los 15 bi s donde se encuen a la pe mu ación bina ia. Además, p opaga la señal de alidación sínc onamen e, al igual que en la p ime a e apa. El segundo p oceso(Figu a 4.19) cons a de una es uc u a secuencial que asigna la salidas conca enadas de ambos a la salida del decodi icado , y po an o, del TDC. Figu a 4.14 Algo i mo En idad codi icado emóme o-bina io 22 Diseño Figu a 4.15 Mul iplexo Figu a 4.16 Algo i mo Mul iplexo Figu a 4.17 Algo i mo i e aciones ins ancia s age_p oc + 23 Diseño Figu a 4.18 Algo i mo p oceso conca enación salida Figu a 4.19 Algo i mo p oceso asignación salida 30 Simulación Compá ese la Figu a 2.3 (boce o del p oblema eó ico) con la Figu a 5.6 (simulación del p oblema del p oyec o); el pulso ‘ igge ’ ep esen a START, mien as que, la señal de eloj “clock_IBUF_BUFG” se co esponde con STOP. Obse amos que la ansición ‘0’ → ‘1’ iene luga 10,816 ns an es de la mi ad de un pe iodo de eloj, es deci , 10,816 ns p e ios a un lanco de subida de eloj. Es e alo se ha ob enido sumando los di e en es e asos cons an es, jun o con el e aso que se p e ende que el pulso START expe imen e en la línea de aca eo pa a el caso alue_ ine = 256; es deci , pa a es e alo de salida, se es ima que dicho pulso se p opaga has a la salida del úl imo bloque de aca eo. Así, la espues a de salida del sis ema depende del alo del pa áme o BLOQUES CARRY4(pa áme o a con igu a ) de la siguien e exp esión ma emá ica (obsé ese Tabla 5.1): ∆𝑻 = RETRASOS CONSTANTES (HIT-TRIGGER + TRIGGER-CARRY4_1 + CAPTURA CLK EN FF + CLK CLK_IBUF_BUFG) + BLOQUES CARRY4 A con inuación, se exponen los 3 casos más signi ica i os de la elación en ada-salida del sis ema: Value_ ine: 0 ↔ ∆𝑻 = 3333 ps / BLOQUES CARRY4 = 0 ps Value_ ine: 128 ↔ ∆𝑻 = 7074.5 ps / BLOQUES CARRY4 = 3741.5 ps Value_ ine: 256 ↔ ∆𝑻 = 10816 ps / BLOQUES CARRY4 = 7483 ps Es ele an e des aca que pa a pode añadi un DUT al iche o banco de p uebas, se equie e desc ibi el componen e de la en idad a examina ; además, en la en idad del iche o de simulación se han de inido las cons an es gene ic: 𝐒𝐓𝐀𝐆𝐄𝐒 = 𝟐𝟓𝟔 y FINE_BITS = 8 (la línea de aca eo de nues o diseño con iene 256 bloques ‘Ca y’, como se ha comen ado an e io men e). 31 Simulación Figu a 5.5 Algo i mo Tes Bench Figu a 5.6 Simulación Resumen P oblema P oyec o 32 Simulación 5.4 Resul ados Simulación Es a subsección a a de analiza los esul ados de la simulación empo al pos -implemen ación p esen ados en la in e az g á ica de Vi ado. El iempo de simulación se ha de inido a 500 ns y la ecuencia de la señal de eloj a 100 MHz. También se ha ejecu ado la simulación pa a los alo es de ecuencia de 1 y 10MHz, sin obse a se modi icaciones en la espues a. Se es udian las o mas de pulsos de cada e apa del p oyec o: 5.4.1 Inpu Fil e Es a e apa se puede desglosa en 2 g upos: un p ime conjun o cons i uido po los bies ables “inpu _ il e 1” e “inpu _ il e 2”, enca gados de de ini el pulso ‘START’ a pa i del pulso de en ada de nues o sis ema ‘hi ’. Su unción adica en aco a po la de echa es a señal digi al. A dicho conjun o lo denomina emos ase 1. El g upo es an e, al que designa emos como ase 2, cons a de los Flip-Flops “inpu _ il e _ i ed1” e “inpu _ il e _ i ed2”. Su come ido eside en sinc oniza las e apas “ inde_ dc” y “ he m_ o_bin” median e la emisión de un pulso de alidación al bloque de codi icación, y así señaliza le del ins an e co ec o en el que ecibi á los da os. Pa a in e p e a adecuadamen e es as señales, obsé ese la es uc u a lógica del il o en la Figu a 3.3 Fase 1 La Figu a 5.7 mues a g á icamen e cómo el p ime il o emi e un pulso ins an áneo (salida Q), que se inicia cuando la en ada de eloj C ecibe un lanco de subida del pulso ‘hi ’ (en ada de da os D es á a ni el al o de o ma cons an e). Como la salida es á conec ada a la en ada CLR (clea ), el pulso pe mu a á a un es ado lógico bajo inmedia amen e después; po an o, la du ación del pulso depende del iempo de p ocesamien o pa a la ejecución de esa ope ación (1.533 ns). Dicho des ase empo al sees ima meno que el in e alo empo al anscu ido en e los lancos de subida de los pulsos ‘hi ’ y ‘Q’. Además, se ilus a que as 1.533 ns del lanco de subida ‘Q’, la salida del segundo il o pe mu a a eposo, o zando así el es ado lógico posi i o en el pulso ‘ igge ’, es deci , en START; ins an e en el que empieza la p opagación del pulso obje o de es udio a a és de la línea de aca eo. Es a señal uel e a conmu a hacia el ‘0’ bina io debido a la azón sínc ona del p oceso. 33 Simulación Fase 2 El come ido de los 2 bies ables in e conec ados p esen es en la Figu a 3.4, eside en la sinc onización del pulso ‘ alid’ con el ec o señal ‘la ched_ou pu ’ (ejemplo simulación en Figu a 5.8). 5.4.2 Fine dc Re e enciando las en adas y salidas de la e apa “Fine_ dc” en la Figu a 5.9, se mues a el p ocedimien o ope a i o del einicio. Es a ope ación consis e en la inicialización (a ni el al o, en es e caso) de los pulsos ‘ igge ’ (impulsado po la e apa de il os) y ‘la ched_ou pu ’. Se ha comp obado que es a ope ación se ejecu a siemp e, independien emen e del es ado de la en ada ‘ ese ’. A endiendo a la línea de aca eo, cuyo esquema lógico es uc u al esul an e de la ase de implemen ación, queda de inido median e una indexación en la Figu a 5.10; la Figu a 5.11 expone los e a dos que inducen los bloques ‘Ca y’ (ag upados en los módulos ‘Ca y4’). Se calculan 1113 ps de di e encia en e los lancos de subida ‘hi ’ y ‘CO[0:3]’ (p ime bloque CARRY4); alo que dis a mucho de los 117 ps de e a do en e el es o de bloques consecu i os (sal o o as excepciones). La abla 5.2 de alla los esul ados cuan i a i os. Además, cabe ag ega que las salidas de un mismo bloque CARRY4 no su en ningún des ase empo al en e sí; de acue do con la es uc u a lógica expues a en la Figu a 4.1. A cada bloque de aca eo se le asocia un bies able (Figu a 4.9), que cap u a el da o en un ins an e de iempo de e minado, as de ec a el consiguien e lanco de subida de eloj. Pa a es udia es a ope ación, se an a e alua pa icula izaciones en simulación de los 3 casos que co esponden con los alo es más signi ica i os de la espues a del sis ema, cuya elación con la en ada (y cálculo del mismo) se ha analizado en la subsección iche o es bench : Value_ ine (bina io) ≡ La ched_ou pu ( e momé ico) = 0 – Figu a 5.12 Value_ ine (bina io) ≡ La ched_ou pu ( e momé ico) = 128 - Figu a 5.13 Value_ ine (bina io) ≡ La ched_ou pu ( e momé ico) = 256 - Figu a 5.14 En las Figu as 5.12 y 5.13 se obse a un e o de 3 bi s po encima del alo eó ico. En la Figu a 5.14, el bi más signi ica i o es á conec ado a al a impedancia. Es o se debe a que, como se obse a la Figu a 5.15, la salida CO[3] es á lo an e, sin conec a se al bies ables_line[255] de la p ime a columna que le co esponde ía; un lip- lop que no exis e en nues o diseño. 34 Simulación Una ez cap u ados los pulsos que se p esen an a la salida de los bloques ‘Ca y’, se p opaga án a a és de la segunda columna de bies ables hacia la salida, as el siguien e ciclo de eloj, al y como se ilus a en la Figu a 5.16. 5.4.3 The m_ o_bin De o ma análoga a la e apa “ ine_ dc”, se ha de conside a la ase de einicio en es e bloque. Como se ep esen a en la Figu a 5.17, la salida se de ine a su máximo alo pa a es a ase. T as es e p eludio, se ilus a la espues a del bloque (en es a e apa coincide con la del sis ema) en unción de las en adas de bloque y sis ema. Se exponen a ios ejemplos en la Tabla 5.3: Salida bloque/sis ema En ada bloque En ada sis ema Bin[7:0] - expe imen al Bin[7:0] - eó ico The mo[255:0]- eó ico ∆T Figu a 0 0 0 3333 5.18 102 100 100 6258 5.19 131 128 128 7074.6 5.20 202 200 200 9180.6 5.21 256 256 256 10816 5.22 Tabla 5.3 Valo es salida sis ema Resul a ele an e señala que, la in e az g á ica compu a el alo en bina io del ec o señal ‘Bin[7:0] ‘en el ins an e en el que es á ijada la ba a ama illa. RETARDOS (ps) Ca y_delay_line[0] Ca y_delay_line[1] Ca y_delay_line[1 - 62] Ca y_delay_line[63] 1113 126 117 229 Tabla 5.2 Análisis e a dos línea de aca eo 35 Simulación Figu a 5.7 Simulación In e conexión Fil os Fase 1 Figu a 5.8 Simulación In e conexión Fil os Fase Figu a 5.9 Simulación Reinicio Fine_TDC 36 Simulación Figu a 5.10 Bloques línea de aca eo Figu a 5.11 Re a dos Bloques Ca y4 Figu a 5.12 Simulación Value_ ine_ eó ico = 0 37 Simulación Figu a 5.13 Simulación Value_ ine_ eó ico = 128 Figu a 5.14 Simulación Value_ ine_ eó ico = 256 38 Simulación Figu a 5.15 Esquema lógico in e conexión módulo CARRY4 - bies ables Figu a 5.16 Pa icula ización salida Fine_ dc 39 Simulación Figu a 5.17 Fase Reinicio Codi icado Te móme o - Bina io Figu a 5.18 Simulación salida codi icado Bin[7:0]_ eó ico = 0 Figu a 5.19 Simulación salida codi icado Bin[7:0]_ eó ico = 100 Figu a 5.20 Simulación salida codi icado Bin[7:0]_ eó ico = 128 46 Anexo LIBRARY ieee; USE ieee.s d_logic_1164.ALL; USE ieee.s d_logic_a i h.ALL; LIBRARY unisim; USE unisim. componen s.ALL; LIBRARY wo k; USE wo k. dc_lib a y.ALL; ENTITY ine_ dc_wi h_encode IS GENERIC ( STAGES : INTEGER := 256; FINE_BITS : INTEGER := 8; Xo : INTEGER := 8; Yo : INTEGER := 24); PORT ( clock : IN s d_logic; ese : IN s d_logic; hi : IN s d_logic; alue_ ine : OUT s d_logic_ ec o ((FINE_BITS-1) DOWNTO 0)); END ine_ dc_wi h_encode ; ARCHITECTURE s uc u e OF ine_ dc_wi h_encode IS ATTRIBUTE keep_hie a chy : s ing; ATTRIBUTE keep_hie a chy OF s uc u e : ARCHITECTURE IS " ue"; SIGNAL ine_ alue_ eg : s d_logic_ ec o ((STAGES-1) DOWNTO 0); SIGNAL ine_ alue_bin : s d_logic_ ec o ((FINE_BITS-1) DOWNTO 0); SIGNAL il e ed_hi _1 : s d_logic; SIGNAL il e ed_hi _2 : s d_logic; SIGNAL il e ed_hi : s d_logic; SIGNAL i ed : s d_logic; 47 Anexo SIGNAL alid : s d_logic; COMPONENT FDCE IS GENERIC ( INIT : STD_LOGIC); PORT ( D : in STD_LOGIC; C : in STD_LOGIC; CE : in STD_LOGIC; CLR : in STD_LOGIC; Q : ou STD_LOGIC); END COMPONENT; BEGIN inpu _ il e 1 : FDCE GENERIC MAP ( INIT => '0') PORT MAP ( Q => il e ed_hi _1, CLR => il e ed_hi _1, D => '1', C => hi , CE => '1'); inpu _ il e 2 : FDCE GENERIC MAP ( INIT => '0') PORT MAP ( Q => il e ed_hi _2, CLR => il e ed_hi _1, D => '1', C => clock, CE => '1'); il e ed_hi <= NOT il e ed_hi _2; 48 Anexo inpu _ il e _ i ed1 : FDCE GENERIC MAP ( INIT => '0') PORT MAP ( Q => i ed, CLR => '0', D => il e ed_hi , C => clock, CE => '1'); inpu _ il e _ i ed2 : FDCE GENERIC MAP ( INIT => '0') PORT MAP ( Q => alid, CLR => '0', D => i ed, C => clock, CE => '1'); ine : ine_ dc GENERIC MAP ( STAGES => STAGES, Xo => Xo , Yo => Yo ) PORT MAP ( igge => il e ed_hi , clock => clock, ese => ese , la ched_ou pu => ine_ alue_ eg); 2b : he m2bin_pipeline_coun GENERIC MAP ( b => FINE_BITS) PORT MAP ( clock => clock, ese => ese , alid => alid, 49 Anexo he mo => ine_ alue_ eg, bin => ine_ alue_bin); alue_ ine <= ine_ alue_bin; END s uc u e 50 Anexo lib a y IEEE; use IEEE.STD_LOGIC_1164.ALL; en i y FDCE is GENERIC ( INIT : STD_LOGIC := '0' ); Po ( D : in STD_LOGIC; C : in STD_LOGIC; CE : in STD_LOGIC; CLR : in STD_LOGIC; Q : ou STD_LOGIC); end FDCE; a chi ec u e Beha io al o FDCE is begin sinc:p ocess(C,CE,CLR) begin i (CLR = '1') hen Q <= '0'; elsi ( ising_edge(C) and (CE = '1')) hen Q <= D; end i ; end p ocess; end Beha io al; 51 Anexo lib a y IEEE; use IEEE.STD_LOGIC_1164.ALL; Lib a y UNISIM; use UNISIM. componen s.all; en i y ine_ dc is GENERIC ( STAGES : INTEGER; Xo : INTEGER; Yo : INTEGER); PORT( igge : IN STD_LOGIC; ese : IN STD_LOGIC; clock : IN STD_LOGIC; la ched_ou pu : OUT STD_LOGIC_VECTOR(STAGES-1 DOWNTO 0)); end ine_ dc; a chi ec u e Beha io al o ine_ dc is signal un eg: s d_logic_ ec o (STAGES-1 DOWNTO 0); signal eg: s d_logic_ ec o (STAGES-1 DOWNTO 0); ATTRIBUTE keep_hie a chy : s ing; ATTRIBUTE keep_hie a chy OF Beha io al : ARCHITECTURE IS " ue"; A ibu e LOC: s ing; 52 Anexo begin ca y_delay_line: FOR i IN 0 TO STAGES/4-1 GENERATE i s _ca y4: IF i = 0 GENERATE ATTRIBUTE LOC OF delayblock: LABEL IS "SLICE_X"&INTEGER'image(Xo )&"Y"&INTEGER'image(Yo +i); BEGIN delayblock: CARRY4 PORT MAP( CO => un eg(3 DOWNTO 0), O => open, CI => '0', CYINIT => igge , DI => "0000", S => "1111"); END GENERATE; nex _ca y4: IF i > 0 GENERATE ATTRIBUTE LOC OF delayblock: LABEL IS "SLICE_X"&INTEGER'image(Xo )&"Y"&INTEGER'image(Yo +i); 53 Anexo BEGIN delayblock: CARRY4 PORT MAP( CO => un eg(4*(i+1)-1 DOWNTO 4*i), O => open, CI => un eg(4*i-1), CYINIT => '0', DI => "0000", S => "1111"); END GENERATE; END GENERATE; bies ables_line: FOR j IN 0 TO STAGES-1 GENERATE begin Flip lop_1: FDCE PORT MAP( D => un eg(j), C => clock, CE => '1', CLR => ese , Q => eg(j)); Flip lop_2: FDCE PORT MAP( D => eg(j), C => clock, CE => '1', CLR => ese , Q => la ched_ou pu (j)); 54 Anexo END GENERATE; end Beha io al; LIBRARY ieee; USE ieee.s d_logic_1164.ALL; USE ieee.nume ic_s d.ALL; LIBRARY wo k; USE wo k. dc_lib a y.ALL; ENTITY he m2bin_pipeline_coun IS GENERIC ( b : INTEGER := 8); PORT ( clock : IN s d_logic; ese : IN s d_logic; alid : IN s d_logic; he mo : IN s d_logic_ ec o (((2**b)-1) DOWNTO 0); bin : OUT s d_logic_ ec o ((b-1) DOWNTO 0)); END he m2bin_pipeline_coun ; ARCHITECTURE beha iou OF he m2bin_pipeline_coun IS ATTRIBUTE keep_hie a chy : s ing; ATTRIBUTE keep_hie a chy OF beha iou : ARCHITECTURE IS " ue"; SIGNAL s age_ inal_bin : s d_logic_ ec o ((b-1) DOWNTO 0); SIGNAL s age_ inal : s d_logic_ ec o (15 DOWNTO 0); SIGNAL da a_ alid : s d_logic_ ec o ((b-3) DOWNTO 0); TYPE decode _a ay IS ARRAY (0 TO b-4) OF s d_logic_ ec o (((2**b)-2) DOWNTO 0); SIGNAL decoding : decode _a ay; TYPE bina y_a ay IS ARRAY (0 TO b-4) OF s d_logic_ ec o (b DOWNTO 0); SIGNAL bina y : bina y_a ay; BEGIN 55 Anexo decoding(0) <= he mo(((2**b)-2) DOWNTO 0); da a_ alid(0) <= alid; gene a e_s ages : FOR i IN 0 TO b-5 GENERATE s age_p oc : PROCESS (clock, ese ) BEGIN IF ese = '1' THEN decoding(i+1) <= (OTHERS => '0'); bina y(i+1) <= (OTHERS => '0'); da a_ alid(i+1) <= '0'; ELSIF ising_edge(clock) THEN bina y(i+1)(b DOWNTO b-1-i) <= bina y(i)(b DOWNTO b-i) & decoding(i)(((2**(b- i))-2)/2); da a_ alid(i+1) <= da a_ alid(i); IF decoding(i)(((2**(b-i))-2)/2) = '1' THEN decoding(i+1)(((2**(b-i))-2)/2-1 DOWNTO 0) <= decoding(i)(((2**(b-i))-2) DOWNTO ((2**(b-i))-2)/2+1); ELSE decoding(i+1)(((2**(b-i))-2)/2-1 DOWNTO 0) <= decoding(i)(((2**(b-i))-2)/2-1 DOWNTO 0); END IF; END IF; END PROCESS; END GENERATE; s age_ inal <= decoding(b-4)(15 DOWNTO 0); -- The inal s age o he decode is a bi coun e o he emaining 16 bi s s age_ inal_p oc : PROCESS (clock, ese ) BEGIN IF ese = '1' THEN s age_ inal_bin <= (OTHERS => '0'); da a_ alid(b-3) <= '0'; ELSIF ising_edge(clock) THEN s age_ inal_bin <= bina y(b-4)(b-1 DOWNTO 4) & s d_logic_ ec o ( o_unsigned(coun _ones(s age_ inal), 4)); da a_ alid(b-3) <= da a_ alid(b-4); END IF;