한 고정 소수점 표현에서 다른 고정 소수점 표현으로 숫자를 변환하려고합니다. 나는 2의 보수 표현 (Qmf 표현)을 사용하고있다. 이것은 하드웨어 구현을 검증하기위한 것이다. 하드웨어 구현은 다음과 같이 작동합니다.두 고정 소수점 표현 사이의 변환
입력 데이터는 Qmf 형식입니다. 입력 데이터의 폭은 8 비트이며 6 비트의 길이가 있습니다. 4 소수 비트 (정수 비트 없음) 4 비트 숫자로 변환 할 싶습니다 및 동일한 몇 가지 의심이 있습니다. I를 :
은 내가 {범위 [-2,1.984375]} 형식 Q04에 Q26에서 1.984375 같은 숫자로 변환하려고 할 때 {범위는 [-0.5,0.4375]} 형식, 하드웨어 구현은 다음 실행되는 것으로 나타났습니다 비트 6 & 7이 정수 부분에 사용되고 4 비트 레지스터에 저장되므로 비트 5-2를 읽습니다. 따라서이 값은 Q04 형식으로 변환 될 때 -0.5로 해석됩니다. -0.5가 맞습니까? 발생한 오류의 양은 엄청난 것 같습니다. 내가 뭔가 잘못하고 있는거야? 위에서 언급 한 접근 방식이 올바른 경우. 위에 설명 된 하드웨어 접근 방식을 모방 한 소프트웨어에서 하나의 고정 소수점 표현을 다른 고정 소수점 표현으로 변환하는 표준 절차가 있습니까? 나는 숫자를 Q26 표현에서 부동 소수점으로 변환하고이를 다시 고정 소수점으로 변환하는 것을 고려하고 있습니다. 소프트웨어로 이것을 수행하는 더 깨끗한 방법이 있습니까?
Q26 번호가 Q04 형식으로 저장할 수있는 최대 값보다 크기 때문에 변환은 오류 (오버플로)를보고하거나 가능한 최대 값을 반환해야합니다. – 1201ProgramAlarm
Q0.4 형식은 [range -0.5 .. + 0.4375] 또는 unsigned [0..0.9375]로 서명됩니까? – NickJH
서명 된 표현을 사용하고 있습니다. – a220599