Verilog로 하드웨어 이중 정밀도 가산기를 구현 중입니다. 확인 단계에서 하드웨어 출력을 MATLAB (또는 C) 배 정밀도 추가 출력과 비교할 때 LSB가 일치하지 않는 몇 가지 이상한 경우를 발견했습니다. 동일한 반올림 모드 (가장 가까운 것부터 반올림)를 사용하고 있습니다. . 제 질문은 C 계산의 정확성에 관한 것입니다. 반올림을 할 때 실제로 정확합니까 아니면 일부 CPU 아키텍처 (32 또는 64 비트)로 제한되어 있습니까? 단지 가산을 수행하여 다음 LSB 오류가있는 부동 소수점 추가
이 예제,A = 0x62a5a1c59bd10037 = 1.5944933396238637e + 167
B = 0x62724bc40659bf0c = 1.685748657333889e + 166 = 0.1685748657333889e + 167
올바른 출력 (수동으로 위의 실수)의
= 1.7630682053572526e + 167 = 0x62a7eb3e1c9c3819 (이 내 하드웨어)
일치3210I는 C에서 A +의 B를 시도하여, 그 결과는 동일하다
= 1.7630682053572525e + 167 =
I가 중간 조작 http://www.ecs.umass.edu/ece/koren/arith/simulator/FPAdd/
I 수를 확인하기 위해이 애플리케이션을 시도 0x62a7eb3e1c9c3818 C가 반올림을 정확하게 수행하지 못한다 (가장 가까운 것부터 반올림). 이 경우 가수는 하나를 더하여 반올림해야합니다. 왜 이런 일이 일어나는 지 아십니까?