lunes, 11 de mayo de 2009

Unidade de Cálculo de Módulos: Unidade de Red. / Trunc. e Saturación

Documentación "definitiva" sobre o circuito denominado Unidade de Redondeo/Truncado e Saturación, que forma parte da Unidade de cálculo de Módulos. En principio é definitiva, pero cabe a posibilidade de que sufra pequenas variacións.

-----------------------------------------------------------------------------

----------------------------------------------------------------------------

Modelo VHDL do circuito de redondeo/truncado e saturación.

-----------------------------------------------------------------------------

1.- Descrición do circuito.


Este circuito permite converter un dato numérico de 19 bits sen signo a un valor de 9 bits mediante unha operación de escalado e a posterior saturación do resultado. Ambos datos, no que segue, considéranse valores enteiros.

O escalado realízase sempre por un factor que é menor ou igual á unidade, o que en xeral dá lugar a cifras decimais que deben ser eliminadas, ben por un proceso de redondeo ou ben por truncamento directo. Para a elección dunha ou outra alternativa só é necesario varia-las opcións de implementación adecuadas (os parámetros xenéricos do modelo VHDL).

O factor de escalado pode establecerse dinamicamente (durante a operación do circuito) a través dun bus de entrada de dúas liñas, sendo sempre da forma 2^-(3*B) con B o valor numérico dese bus: 0,1,2 ou 3. Isto implica que o escalado é equivalente (e así se implementa na circuitería) a un desprazamento á dereita de 0, 3, 6 ou 9 bits, cun posíbel axuste posterior cando se seleccione o modo de traballo con redondeo.

Por último, o resultado do escalado pode limitarse a un valor arbitrario entre 1 e 2^9-1, que se fixa durante o deseño do circuito e unha vez implementado este permanece constante para tódalas operacións. Con esta saturación evítase o problema que se derivaría da asignación directa dos 9 bits menos significativos do valor escalado á saída: se algún bit de maior peso estivese activo obteriamos o mesmo valor ca no caso de que non estivera.


2.- Estructura interna.




No esquema UD_RD_SAT.jpg represéntase a forma máis xeral da Unidade de Redondeo/ Truncado e saturación. En función das opcións de implementación (isto é, os valores que asignemos ós parámetros xenéricos no modelo VHDL) podemos cambia-la estructura interna e conseguir dende un circuito totalmente combinacional a un circuito con procesado en pipeline e distintos niveis, así como seleccionar escalados con redondeo ou con truncado.


Os parámetros xenéricos afectan ó circuito da seguinte maneira:

- O parámetro REDONDEO pode tomar valor true ou false; cando se establece a true o circuito redondeará os valores escalados, mentres que se se establece a false estes só se truncarán. No esquema, a zona do interior do recadro punteado só existe cando se establece un modo de redondeo; en caso contrario só haberá un bus dende a saída do dato escalado ata a entrada da seguinte etapa.

- O parámetro NIVEL_PIPELINING pode tomar os valores 0, 1 ou 2, cos que se consegue varia-la cantidade de etapas de pipeline do circuito:

- Co valor 0 non se emprega ningún rexistro de pipeline: o circuito de redondeo/truncado e saturación será a cascada dunha serie de etapas combinacionais conectadas directamente, e polo tanto, posuirá un certo retardo combinacional (da orde dos 10ns nunha FPGA Virtex2pro) que haberá que ter en conta no deseño.

- Co valor 1 só se implementa un ou dous rexistros de pipeline, dependendo de se se elixe o modo de traballo con redondeo ou con truncamento: con redondeo instanciarase un rexistro intermedio e outro para os datos de saída (rexistros e biestábeis 2 e 4 no esquema), mentres que con truncamento só este último (rexistro e biestábel 4). Neste caso o circuito introduce unha latencia inicial de dous ciclos de reloxo en modo de redondeo, e de un ciclo en modo de truncado.

- Co valor 2 impleméntanse tódolos posíbeis rexistros de pipeline: un entre cada dúas etapas combinacionais máis outro final para os datos de saída. Se se traballa con modo de redondeo o circuito pasará polo tanto a ter catro etapas pipeline (rexistros e biestábeis 1, 2, 3 e 4) co que introducirá unha latencia de catro ciclos; no modo de truncado o circuito posuirá dous rexistros (r. e b. 3 e 4) o que supón unha latencia de só dous ciclos.

- O parámetro VALOR_MAXIMO determina o valor de saturación para a última etapa combinacional do circuito. Pode fixarse a calquera valor enteiro entre 1 e 511, e non inflúe na estructura do circuito, só no funcionamento.



3.- Descrición dos terminais de entrada e saída.


Os terminais de entrada son:


· D_IN: bus de datos de entrada de 19 bits.


· DV_in: sinal de datos válidos á entrada. Este sinal só é relevante cando se realiza unha implementación con pipelining: neste caso o valor establecido no bus D_IN captúrase no primeiro rexistro de pipelining cando DV_in está a nivel alto e ocorre un flanco de reloxo ascendente. Cabe destacar que o tempo de establecemento para este rexistro dependerá do número de etapas combinacionais que deba atravesa-lo sinal de entrada antes de acada-la entrada do rexistro, ou o que é o mesmo, do nivel de pipelining establecido.

Se se realiza unha implementación totalmente combinacional este terminal pontéase directamente ó terminal de saída DV_out.


· Escala: bus de dúas liñas para a elección do factor de escala.


· Escala_WE: sinal de habilitación de escritura para o bus Escala. A captura destes datos ocorrerá cando Escala_WE estea a nivel alto e se produza un flanco de reloxo ascendente. O valor de Escala non forma parte da estructura pipeline do circuito: o rexistro só evita a necesidade de manter estábel o dato no bus Escala constantemente.



Os terminais de saída son:


· D_OUT: bus de saída de datos de 9 bits.


· DV_out: sinal de datos válidos no bus D_OUT. Este sinal actívase durante un ciclo de reloxo por cada dato válido que se presente no bus D_OUT cando se realiza unha implementación con pipeline; noutro caso reflexará sempre o valor do terminal DV_in, xa que se pontean directamente.

-----------------------------------------------------------------------------

-----------------------------------------------------------------------------


No hay comentarios:

Publicar un comentario