
- •1. Реализация универсальной “бабочки” с прямой адресацией для алгоритма бпф с прореживанием по времени.
- •2. Реализация универсальной “бабочки” с прямой адресацией для алгоритма бпф с прореживанием по частоте.
- •3. Реализация “бабочек” для специальных значений поворачивающих множителей.
- •4. Алгоритм бпф с прореживанием по времени и двоично-инверсным расположением входных данных.
- •5. Программа бпф с прореживанием по времени и двоично-инверсным расположением входных данных.
- •6. Алгоритм бпф с прореживанием по времени и прямым расположением входных данных.
- •7. Программа бпф с прореживанием по времени и прямым расположением входных данных.
- •8. Алгоритм бпф с прореживанием по частоте и прямым расположением входных данных.
- •10. Алгоритм бпф с прореживанием по частоте и двоично-инверсным расположением входных данных.
- •11. Программа бпф с прореживанием по частоте и двоично-инверсным расположением входных данных.
- •12. Программная реализация алгоритма бпф с поблочно-плавающей запятой.
- •13. Организация двоично-инверсного счетчика (алгоритм Рэйдера) и перестановка данных.
- •14. Форматы чисел с плавающей запятой.
- •15. Алгоритм сложения чисел с плавающей запятой.
- •16. Программа сложения чисел с плавающей запятой.
- •17. Алгоритм умножения чисел с плавающей запятой.
- •18. Программа умножения чисел с плавающей запятой.
- •19. Алгоритм деления чисел с плавающей запятой.
- •20. Программа деления чисел с плавающей запятой.
- •21. Использование процессов семейства tms320 для компрессии сигналов. Два метода сжатие сигналов.
- •22. Алгоритм компрессии сигналов по методу μ-Law.
- •23. Программа компрессии сигналов по методу μ-Law.
- •24. Алгоритм восстановления сигналов, закодированных по методу μ-Law.
- •25. Программа восстановления сигналов, закодированных по методу μ-Law.
- •26. Алгоритм компрессии сигналов по методу a-Law.
- •27. Программа компрессии сигналов по методу a-Law.
- •28. Алгоритм восстановления сигналов, закодированных по методу a-Law.
- •28. Программа восстановления сигналов, закодированных по методу a-Law.
- •30. Алгоритм бпф для обработки многомерных векторных процессов.
14. Форматы чисел с плавающей запятой.
Применяются несколько форматов чисел с ПЗ. При этом в любом формате обязательно присутствуют мантисса и порядок. Транслятор dska поддерживает четыре формата: два простых и два IEEE (с обычной и повышенной точностью).
Простые форматы (мантисса в дополнительном коде и обычный порядок): с обычной точностью (2 слова): .efloat (m 16*2p16).
Форматы IEEE (нормализованная мантисса в прямом коде, порядок со смещением и знак мантиссы): с обычной точностью (2 слова):
.float (-1ms·(1+m23)·2p8-127).
Для выполнения операций формат IEEE не очень удобен, т.к. в нем в одном слове данных находится и порядок и мантисса, а также в мантиссе имеется скрытая единица. Поэтому можно применить дополнительный формат, в котором все компоненты числа с ПЗ (знак мантиссы, мантисса и порядок) сохраняются в отдельных словах. К такому формату могут быть сведены все вышеперечисленные форматы, и он имеет следующий вид:
Данный формат, который может быть представлен как 0.1F·2(E+1), легко
преобразуется в формат IEEE представляемый как 1.F·2E.
15. Алгоритм сложения чисел с плавающей запятой.
Основу алгоритма операции сложения составляет выравнивание порядков слагаемых, а затем выполнение операции с нормализацией результата и коррекцией переполнения.
В общем виде число с плавающей запятой представляется в виде:
f = m · be
где m – мантисса, b – основание, e – порядок.
Тогда алгоритм сложения/вычитания двух чисел с одинаковым основанием f1 = m1 · be1 и f2 = m2 · be2 может быть записан следующим образом:
f1 ± f2 = (m1 ± m2 · b-(e1-e2)) · be1 , e1≥e2
f1 ± f2 = (m1 · b-(e2-e1) ± m2) · be2 , e1<e2
Схема алгоритма сложения двух чисел с плавающей запятой А и В с фор-мированием результата в С (все числа в вышеприведенном формате) представлена ниже (рис.4.1).
Далее приведен пример программы с прямой адресацией вычисления суммы двух чисел с ПЗ.
В данном примере нет проверки на специальные случаи еС и формат выходных данных несколько отличается от формата входных. Младшая часть суммы содержит данные без знака во всех разрядах CLO.
Для округления результата и приведения его в соответствие с форматом входных данных необходимо перед выводом данных (перед командой RPT) добавить следующие команды:
AROUND stl a, CEXP ; новый порядок
dld CHI, a
add #1, 6, a
bcd NOFL, anov ; кор рекция CLO
sth a, CHI ;1w
sfta a ,-1 ;1w
* переполнение при округлении
sth a, CHI
sfta a ,-1
addm #1, CEX P
NOFL and #7FC0h, a
stl a, CLO
16. Программа сложения чисел с плавающей запятой.
; ППО ВС РВ Сложение с ПЗ
.mmregs ; Определение регистров
.def _ c_int00 ; Метка начала программы
_c_int00:
ld #ASIGN, DP ; Текущая страница
ld #ASIGN, SP ; Указатель стека
ssbx SXM ; Расширение знака
rsbx OVM ; Запрет корр. переполнения
rsbx OVA ; Сброс переполнения
rsbx C16 ; Работа с двойными словами
callADDFLT
nop
ADDFLTstm#ASIGN,ar2 ; Адрес 1-го операнда
; rpt#7
; portrPA0, *ar2+
UP ld AEXP, a ; Оп ределение большего числа
sub BEXP, a ; acc A = D
bc AEQB, aeq
bc ALTB, alt
AGTB neg a
add #16, a ; D = (16-D)
bcd A1, aleq ; D > 15
; разность порядков < 16
stlm a ,T ;1w
nop ;1w
ld BHI, TS, a ;
sth a, BHI ; сдв иг BHI вправо на D
stl a, TEM P ; выд вигаемые биты BHI
ld BLO, TS, a ; сдвиг вправо BLO на D
sftl a, -15, a ; убираем старший 0 в BLO
bd A2
or TEMP, a ;1w объ единение с битами BHI
stl a, BLO ;1w нов ое значение BLO
; разность порядков > 15
A1add#16,a;D= (32-D)
bcd A3, aleq ; D > 31
stlm a ,T ;1w
nop ;1w
ld BHI, TS, a
sth a, BLO ; сдв иг BHI на D (в BLO)
ld #0,a
stl a, BHI ; обн уление BHI
A2 ld ASIGN, a ; A > B
stl a, CSIGN ; CSIGN = ASIGN
ld ALO, 1, a
bd CHKSGN
stl a, ALO ;1 w уби раем старший 0 в ALO
ld AEXP, a ;1w CEXP = AEXP
; A >> B -> C = A
A3 ld ASIGN, a ; A >> B
stl a, CSIGN ; CSIGN = ASIGN
ld AHI,a
stl a, CHI ; CHI = AHI
ld ALO, 1, a
bd AROUND
stl a, СLO ;1w CLO = ALO (без старш.0)
ld AEXP, a ;1w CEXP = AEXP
ALTB add #16, a ; D = (16-D)
bcd B1, aleq ; D > 15
; разность порядков < 16
stlm a ,T ;1 w
nop ;1 w
ld AHI, TS, a
sth a, AHI ; сдв иг AHI вправо на D
stl a, TEM P ; выд вигаемые биты AHI
ld ALO, TS, a ; сдвиг вправо ALO на D
sftl a, -15, a ; убираем старший 0 в ALO
bd B2
or TEMP, a ;1 w объ единен. с битами AHI
stl a, ALO ;1 w нов ое значение ALO
; разность порядков > 15
B1add#16,a;D= (32-D)
bcd B3, aleq ; D > 31
stlm a ,T ;1 w
nop ;1 w
ld AHI, TS, a
sth a, ALO ; сдв иг AHI на D (в ALO)
ld #0,a
stl a, AHI ; обн уление AHI
B2 ld BSIGN, a ; B > A
stl a, CSIGN ; CSIGN = BSIGN
ld BLO, 1, a
bd CHKSGN
stl a, BLO ;1 w уби раем старший 0 в ALO
ld BEXP, a ;1w CEXP = BEXP
; B >> A -> C = B
B3 ld BSIGN, a ; A >> B
stl a, CSIGN ; CSIGN = BSIGN
ld BHI,a
stl a, CHI ; CHI = BHI
ld BLO, 1, a
bd AROUND
stl a, СLO ;1w CLO = BLO (без старш.0)
ld BEXP, a ;1w CEXP = BEXP
; порядки А и В равны
AEQBldASIGN,a;AEXP=BEXP
stl a, CSI GN ; для одинаковых знаков
ld ALO, 1, a
stl a, ALO ; уби раем старший 0 в ALO
ld BLO, 1, a
stl a, BLO ; уби раем старший 0 в BLO
ld AEXP, a ; CEXP = AEXP
CHKSGN stl a, CEXP ; новый порядок
ld ASIGN, a
sub BSIGN, a ; сра внение знаков
bcd ADNOW, aeq ; оди наковые знаки SUB
ld ASIGN,b ;1 w
stl b,CSI GN ;1 w
bcd AISNEG, alt
dld AHI, b ;1 w ста рший в двойном слове
dsub BHI, b ;1w |A|-|B| если A>0, B<0
BISNEG bcd CZERO, beq
dst b,CHI ;1 w
nop ;1 w
bc CNEG, blt
CPOS bd NORMAL
ld #0,a ;1 w
nop ;1 w
AISNEG neg b ; |B|-|A| если A<0, B>0
bc CZERO, beq
dst b,CHI ;1 w
nop ;1 w
bc CPOS, bgt
CNEG abs b
dst b,CHI
bd NORMAL
ld #-1,a ;2 w
CZERO bd AROUND
stl b, CSIGN ;1w acc B = 0
nop;1w
ADNOWdldAHI,a; старший в двойном слове
dadd BHI,a
bcd CZERO, aeq
dst a,CHI ;1 w
nop ;1 w
bcd AROUND, anov
sftl a, -1, b ;1w
ld CEXP, a ;1w A = CEXP
; переполнение при сложении
OVFLOWdstb,CHI;
bd AROUND
add #1,a ;2 w
NORMAL dld CHI, b
exp b
stl a,CSI GN ;
ldm T,a
neg a
norm b
bd AROUND
dst b,CHI ;1 w
add CEXP,a ;1 w
AROUND stl a, CEXP ; новый порядок
; rpt#3
; portw*ar2+,PA0
ret
.align80h; Выровнять на страницу
ASIGN .word 0 ; 1-й операнд
AEXP .word 0
AHI.word5555h; двойное слово
ALO .word 2222h ; с четного адреса
BSIGN .word -1 ; 2-й операнд
. . .
СLO .word 0 ; с четного адреса
TEMP .word 0
.end ; Конец программы