2014-11-15 2 views
0

저는 Analog Devices DSP를 사용하고 있으며 알고리즘에 대한 시뮬레이션을하고 싶습니다.고정 소수점 도구 상자를 사용하여 DSP의 동작 시뮬레이션

F = fimath('MaxProductWordLength', 40, ... 
    'MaxSumWordLength', 40, ... 
    'OverflowAction', 'Saturate', ... 
    'ProductMode', 'KeepLSB', ... 
    'RoundingMethod', 'Floor', ... 
    'SumMode', 'KeepLSB', ... 
    'SumFractionLength', 8, ... 
    'SumFixedExponent', 40, ... 
    'ProductFixedExponent', 40, ...  
    'SumWordLength', 40); 

R = numerictype(1, 40, 8); 

가 그럼 난 몇 가지 숫자를 선언하고 곱셈을 수행 할 수 있습니다 :

a = fi(32.25, R, F); 
b = fi(1234, R, F); 
c = fi(0.1, R, F); 
a*b+c 

출력이로 포맷 :

 WordLength: 40 
    FractionLength: 16 

가 어떻게 강제 할 수 이것에서 내 아키텍처를 지정 지정된 유형 (Q32.8)에 숫자를 남기려면 Matlab을 사용 하시겠습니까?

같은 문제는 a*b으로 발생합니다

ans = 
3.2768e+04 
     DataTypeMode: Fixed-point: binary point scaling 
     Signedness: Signed 
     WordLength: 32 
    FractionLength: 16 

    RoundingMethod: Floor 
    OverflowAction: Saturate 
     ProductMode: KeepLSB 
ProductWordLength: 32 
      SumMode: KeepLSB 
    SumWordLength: 40 
    CastBeforeSum: true 

내가 Q16.16 그러나 다시 Q40.8을하지 않으 ...

답변

0

ProductWordLength : 32

(40)로 변경합니다 ?

이 프로세서에 대해 잘 모르겠지만 일부 프로세서에는 곱셈 및 시프트가 있으므로 일반적으로 곱셈 및 시프트를 시뮬레이트하기 위해 더 짧은 제품 길이를 사용합니다.