Nesta se¸c˜ao apresentam-se os resultados de valida¸c˜ao das arquiteturas propostas ap´os a execu¸c˜ao no dispositivo FPGA. As melhores condi¸c˜oes de opera¸c˜ao dos algoritmos implementados em hardware foram escolhidas com base nas simula¸c˜oes apresentadas em [130], [129], [132], [131]. Os principais resultados destas simula¸c˜oes s˜ao descritos a seguir.
Visando analisar o impacto do formato utilizado pelo padr˜ao IEEE-754 (tamanho de palavra) no erro associado, assim como a influˆencia do n´umero de itera¸c˜oes no tempo de execu¸c˜ao, os experimentos consideraram os seguintes fatores: (a) tamanhos de pa- lavra, (b) n´umero de sementes dos algoritmos GS e NR e (c) n´umero de itera¸c˜oes ou microrrota¸c˜oes. Para isto, foi usada a ferramenta ModelSim [142] ap´os o processo PAR (placement and routing) e um ambiente de simula¸c˜ao constru´ıdo no Matlab no qual ´e poss´ıvel gerar os vetores de teste aleat´orios e decodificar os resultados.
Em [130] apresenta-se uma an´alise dos operadores aritm´eticos levando em considera¸c˜ao o tamanho de palavra, erro associado, o tempo de execu¸c˜ao em ciclos de rel´ogio e o tamanho da mem´oria para armazenar as sementes iniciais dos algoritmos de divis˜ao e raiz quadrada. Os resultados de simula¸c˜ao obtidos apontam que o algoritmo NR atinge as melhores condi¸c˜oes de opera¸c˜ao para trˆes itera¸c˜oes e 16 palavras para armazenar as sementes iniciais, sendo necess´arios 11 e 16 ciclos de rel´ogio para a divis˜ao e raiz quadrada, respectivamente.
Com rela¸c˜ao aos operadores trigonom´etricos, em [129] apresenta-se uma an´alise das condi¸c˜oes de funcionamento em fun¸c˜ao do tamanho de palavra, erro associado e n´umero de microrrota¸c˜oes do algoritmo CORDIC. Nas simula¸c˜oes observou-se que o c´alculo da fun¸c˜ao arco-tangente possui um erro associado maior do que as unidades CORDIC para c´alculo das fun¸c˜oes seno, cosseno e exponencial. Entretanto, foi observado um in- cremento do erro no c´alculo destas trˆes ultimas fun¸c˜oes quando as unidades de redu¸c˜ao de argumento s˜ao usadas, isto ´e, quando o argumento de entrada est´a fora da faixa
[−π/2, π/2] e [-1,1] para as fun¸c˜oes seno/cosseno e exponencial, respectivamente. Na ar- quitetura proposta em [129] cada microrrota¸c˜ao requer de 4 ciclos de rel´ogio e o c´alculo da redu¸c˜ao de argumento requer de 12 ciclos de rel´ogio, portanto, cada execu¸c˜ao do algoritmo CORDIC requer de 4 ∗ NI + 12 ciclos de rel´ogio, sendo NI o n´umero total de microrrota¸c˜oes.
A seguir s˜ao apresentados os resultados obtidos pelas arquiteturas descritas na se¸c˜ao anterior. ´E importante salientar que estas arquiteturas diferem das arquiteturas apre- sentadas em [130], [129] no sentido de que a descri¸c˜ao hardware dos circuitos foi apri- morada visando uma economia de recursos, especificamente de blocos DSPs, e um aumento da frequˆencia de opera¸c˜ao. Contudo, a l´ogica dos algoritmos NR e COR- DIC foi mantida e, em consequˆencia, n˜ao houve um detrimento do erro associado. As condi¸c˜oes experimentais s˜ao as seguintes:
• Trˆes itera¸c˜oes do algoritmo NR para divis˜ao e raiz quadrada.
• Mem´oria de 16 posi¸c˜oes para armazenamento das aproxima¸c˜oes iniciais do algo- ritmo NR para divis˜ao e raiz quadrada.
• 15 microrrota¸c˜oes do algoritmo CORDIC para c´alculo das fun¸c˜oes seno, cosseno e arco-tangente.
• 25 microrrota¸c˜oes do algoritmo CORDIC para c´alculo da fun¸c˜ao exponencial. • Valida¸c˜oes para tamanhos de palavra de 27, 32 e 64 bits. As representa¸c˜oes de 32 e
64 bits foram escolhidas por serem as mais amplamente usadas na literatura al´em de permitir uma compara¸c˜ao mais eficiente com solu¸c˜oes baseadas em software. A representa¸c˜ao de 27 bits foi escolhida pelo baixo custo em ´area l´ogica (vide resultados de s´ıntese), demonstrando ser mais eficiente em termos de recursos de hardware para implementa¸c˜oes em FPGA.
• Os vetores de teste usados para valida¸c˜ao consideram exce¸c˜oes como divis˜ao por zero, raiz quadrada de n´umero negativos, multiplica¸c˜ao por zero, multiplica¸c˜ao por um, soma/subtra¸c˜ao de operandos iguais, arco-tangente de π/2, etc. Adicio- nalmente outros valores das mantissas e expoentes considerados importantes para efeitos de valida¸c˜ao foram utilizados, por exemplo, combina¸c˜oes das seguintes condi¸c˜oes: mantissa igual a zero, mantissa igual ao valor m´aximo (2F W−1), sendo
F W o n´umero de bits da mantissa, e expoente representando infinito (2EW − 1),
• Os operadores aritm´eticos foram validados para valores na faixa [-1000,1000]. A raiz quadrada foi validada para valores da faixa [0,1000]. Por outro lado, os operadores seno e cosseno foram validados para argumentos de entrada na faixa [−100π, 100π] e os operadores para c´alculo das fun¸c˜oes arco-tangente e exponencial na faixa de valores [-100,100] e [-10,10], respectivamente.
• A comunica¸c˜ao serial RS232 foi usada para comunica¸c˜ao entre o FPGA e o am- biente de valida¸c˜ao desenvolvido no Matlab. Este ambiente permite codificar e enviar na representa¸c˜ao IEEE-754 os operandos de entrada, assim como receber e decodificar o resultado das opera¸c˜oes.
• A quantifica¸c˜ao do erro foi feita a partir das medidas do erro quadr´atico m´edio (MSE) e erro absoluto m´edio (MAE) usando 36 amostras para cada tamanho de palavra, sendo o Matlab usado como estimador estat´ıstico (opera¸c˜ao de 64 bits). • Um gerador de c´odigo VHDL foi desenvolvido no Matlab. Esta ferramenta, cha- mada vFPUgen, permite selecionar o tamanho de palavra na representa¸c˜ao IEEE- 754 assim como os parˆametros dos algoritmos NR e CORDIC, fornecendo a des- cri¸c˜ao de hardware dos operadores aritm´eticos e trigonom´etricos estudados neste trabalho. Desta forma ´e reduzido o tempo de desenvolvimento, teste e valida¸c˜ao das arquiteturas propostas, al´em de viabilizar o desenvolvimento de futuras im- plementa¸c˜oes de hardware.
A tabela 3.4 apresenta os valores do erro quadr´atico m´edio (MSE) e erro absoluto m´edio (MAE) obtidos ap´os o processo de valida¸c˜ao dos operadores aritm´eticos implementados.
Tabela 3.4: Erro quadr´atico m´edio e erro absoluto m´edio dos operadores aritm´eticos Operador Erro 27(8,18) 32(8,23) 64(11,52)
F P add MSE 1.54E-5 1.26E-7 2.73E-10
[−100, 100] MAE 2.34E-3 8.90E-5 2.92E-6
F P mul MSE 3.34E-4 1.34E-7 8.82E-13
[−100, 100] MAE 3.17E-3 1.32E-4 1.67E-7
divN R MSE 2.36E-9 6.97E-13 4.97E-14
[−100, 100] MAE 1.52E-5 2.68E-7 6.85E-8
sqrtN R MSE 1.81E-10 2.54E-11 8.80E-19
[0, 100] MAE 8.28E-6 1.44E-6 3.00E-10
Como esperado, o melhor comportamento ´e encontrado para um formato de 64 bits. O MSE das unidades FPadd e FPmul ´e maior do que as unidades de divis˜ao e raiz quadrada. Isto pode ser explicado devido aos refinamentos sucessivos realizados pelo
algoritmo NR. Entre todos os operadores aritm´eticos, a unidade FPmul apresenta o maior valor de MSE devido a erros incorporados no processo de truncamento. No entanto, este problema pode ser facilmente resolvido acrescentando um estado de ar- redondamento no resultado da multiplica¸c˜ao das mantissas [143].
A tabela 3.5 apresenta os resultados de erro quadr´atico m´edio (MSE) e de erro absoluto m´edio (MAE) para as unidades Cordicsincos, Cordicatan e CordicTaylorexp em fun¸c˜ao do tamanho de palavra.
Tabela 3.5: Erro quadr´atico m´edio e erro absoluto m´edio dos operadores trigonom´etricos
Operador Erro 27(8,18) 32(8,23) 64(11,52)
Cordicsincos(seno) MSE 3.64E-8 9.10E-10 5.70E-10
[−100π, 100π] MAE 9.06E-5 2.44E-5 1.84E-5
Cordicsincos(cosseno) MSE 1.39E-8 5.64E-10 6.00E-10
[−100π, 100π] MAE 6.82E-5 1.79E-5 1.83E-5
Cordicatan MSE 4.52E-4 1.21E-9 9.65E-10
[−100, 100] MAE 3.79E-3 2.97E-5 2.68E-5
CordicT aylorexp MSE 3.07E-10 7.38E-13 6.17E-12
[0, 1] MAE 1.34E-5 6.26E-7 7.55E-7
CordicT aylorexp MSE 6.30E-5 4.41E-5 4.40E-5
[1, 5] MAE 3.67E-3 1.93E-3 1.92E-3
CordicT aylorexp MSE 1.09E-1 7.29E-5 1.59E-7
[5, 10] MAE 1.86E-1 4.93E-3 1.97E-4
CordicT aylorexp MSE 1.75E-10 1.39E-10 1.65E-10
[−10, 0] MAE 7.69E-6 6.40E-6 6.46E-6
Pode-se observar que o valor do erro das unidades Cordicsincos e Cordicatan varia com o tamanho de palavra. Como esperado, representa¸c˜oes com tamanho de palavra menor apresentam erros maiores. No entanto observou-se uma pequena diferen¸ca entre as implementa¸c˜oes de 32 e 64 bits. Isto pode ser explicado devido ao uso de multiplicadores em ponto flutuante nas unidades de redu¸c˜ao de argumento e a erros de truncamento nos componentes FPfrac, usados durante a etapa de redu¸c˜ao do argumento de entrada.
A unidade CordicT aylorexp para c´alculo da fun¸c˜ao exponencial apresenta um erro de aproxima¸c˜ao pequeno (aproximadamente de 1E-10) para argumentos de entrada pequenos (na faixa [−1, 1]) ou negativos. Entretanto, esta unidade apresenta um erro maior para argumentos de entrada positivos. Observe-se que conforme aumenta o argumento de entrada maior ´e o erro associado. Este problema ´e evidente no caso da representa¸c˜ao de 27 bits, em que o MSE ´e aproximadamente igual a 1.09E-1 para uma faixa de valores de [5,10], indicando que o tamanho da mantissa n˜ao fornece suficiente
precis˜ao para representar n´umeros grandes com varias casas decimais. Este problema ´e resolvido pelo uso da representa¸c˜ao de 32 bits (precis˜ao simples), em que o MSE ´e aproximadamente 7.29E-5 para a mesma faixa de valores.
Embora as arquiteturas CORDIC propostas possuam um erro de aproxima¸c˜ao pequeno para o c´alculo de fun¸c˜oes trigonom´etricas, trˆes fontes de propaga¸c˜ao de erro foram identificadas. A primeira se apresenta por erros de quantiza¸c˜ao durante o c´alculo do argumento reduzido, especificamente pelo uso de truncamentos nas unidades FPmul e FPfrac. Por´em, este problema pode ser resolvido utilizando estados de arredonda- mento. A segunda fonte de propaga¸c˜ao de erro ´e o uso das t´ecnicas de redu¸c˜ao de argumento. As t´ecnicas de redu¸c˜ao de argumento apresentadas neste trabalho foram escolhidas pela sua f´acil implementa¸c˜ao. No entanto, t´ecnicas mais sofisticadas podem ser estudadas visando melhoras na aproxima¸c˜ao, como apresentado em [138]. A terceira fonte de erro apresenta-se no c´alculo da fun¸c˜ao exponencial para argumentos reduzidos pequenos [139]. Neste trabalho, o impacto da terceira fonte de erro foi minimizado usando uma unidade de compara¸c˜ao e uma expans˜ao em s´eries de Taylor de segunda ordem para argumentos reduzidos pequenos (na faixa de [-0.05,0.05]), como mostrado na figura 3.8.
A figura 3.9 apresenta uma valida¸c˜ao da metodologia h´ıbrida CordicTaylor proposta para o c´alculo da fun¸c˜ao exponencial. Nesta figura foi calculado o erro quadr´atico m´edio (MSE) para 1000 argumentos de entrada aleat´orios na faixa [-1,1] usando uma implementa¸c˜ao de precis˜ao dupla. Pode-se observar que a arquitetura original FPCor- dic, que usa exclusivamente o algoritmo CORDIC em coordenadas hiperb´olicas para o c´alculo da fun¸c˜ao exponencial, apresenta um MSE aproximado de 1E−2 quando o valor
do argumento reduzido est´a na faixa [-0.05, 0.05]. Entretanto, a arquitetura Cordic- Taylorexp proposta, a qual considera a expans˜ao por s´eries de Taylor, apresenta um MSE m´aximo de 1E−8 para valores de argumento reduzido na mesma faixa.