ЭУМК по дисциплине "Программирование проблемно-ориентированных вычислительных средств реального времени" › Теория › Тема 6. Использование проблемно-ориентированных процессоров для компрессии данных

# Электронный учебно-методический
комплекс по дисциплине
"Программирование проблемно-ориентированных вычислительных средств реального времени"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

6.2. Алгоритм компрессии сигналов по методу A-Law
6.2.1. Принцип сжатия данных по методу A-Law

Принцип кодирования при данном методе можно представить в следующем виде (табл. 6.4):

Таблица | 6.4 – Принцип кодирования для метода A-Law

Двоичные входные значения | Сжатое слово данных
Бит: 11 10 9 8 7 6 5 4 3 2 1 0 | Бит: 6 5 4 3 2 1 0
0 0 0 0 0 0 0 Q3 Q2 Q1 Q0 х | 0 0 0 Q3 Q2 Q1 Q0
0 0 0 0 0 0 1 Q3 Q2 Q1 Q0 х | 0 0 1 Q3 Q2 Q1 Q0
0 0 0 0 0 1 Q3 Q2 Q1 Q0 х х | 0 1 0 Q3 Q2 Q1 Q0
0 0 0 0 1 Q3 Q2 Q1 Q0 х х х | 0 1 1 Q3 Q2 Q1 Q0
0 0 0 1 Q3 Q2 Q1 Q0 х х х х | 1 0 0 Q3 Q2 Q1 Q0
0 0 1 Q3 Q2 Q1 Q0 х х х х х | 1 0 1 Q3 Q2 Q1 Q0
0 1 Q3 Q2 Q1 Q0 х х х х х х | 1 1 0 Q3 Q2 Q1 Q0
1 Q3 Q2 Q1 Q0 х х х х х х х | 1 1 1 Q3 Q2 Q1 Q0

Примеры:
(1) +43310 = +1B116 = (0) 0001 1011 00012 -> (0)100 10112 = 4B16
(2) -125610 = -4E816 = (1) 0100 1110 10002 -> (1)110 00112 = E316

6.2.2. Принцип восстановления данных по методу A-Law

Принцип декодирования при данном методе можно представить в следующем виде (табл. 6.5):

Таблица | 6.5 – Принцип декодирования для метода A-Law

Сжатое слово данных | Двоичные входные значения
Бит: 6 5 4 3 2 1 0 | Бит: 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 Q3 Q2 Q1 Q0 | 0 0 0 0 0 0 0 Q3 Q2 Q1 Q0 1
0 0 1 Q3 Q2 Q1 Q0 | 0 0 0 0 0 0 1 Q3 Q2 Q1 Q0 1
0 1 0 Q3 Q2 Q1 Q0 | 0 0 0 0 0 1 Q3 Q2 Q1 Q0 1 0
0 1 1 Q3 Q2 Q1 Q0 | 0 0 0 0 1 Q3 Q2 Q1 Q0 1 0 0
1 0 0 Q3 Q2 Q1 Q0 | 0 0 0 1 Q3 Q2 Q1 Q0 1 0 0 0
1 0 1 Q3 Q2 Q1 Q0 | 0 0 1 Q3 Q2 Q1 Q0 1 0 0 0 0
1 1 0 Q3 Q2 Q1 Q0 | 0 1 Q3 Q2 Q1 Q0 1 0 0 0 0 0
1 1 1 Q3 Q2 Q1 Q0 | 1 Q3 Q2 Q1 Q0 1 0 0 0 0 0 0

Примеры:
(1) 4B16 = (0)100 10112 -> (0) 0001 1011 10002 = +1B816 = +44010
(2) E316 = (1)110 00112 -> (1) 0100 1110 00002 = -4E016 = -124810

6.2.3. Алгоритмы сжатия и восстановления данных по методу A-Law

Схемы алгоритмов кодирования и декодирования данных по методу A-Law представлены на рис. 6.4 и 6.5.

###

### Рисунок 6.4 – Алгоритм сжатия данных по методу A-Law

###

### Рисунок 6.5 – Алгоритм восстановления данных по методу A-Law

6.2.4. Программная реализация метода A-Law

Ниже представлены примеры программ сжатия и восстановления данных по методу μ-255.

    ; ППО ЭВС РВ Лекции
    ; (c) Клюс В.Б. 07/12/04 15:00
    ; Сжатие и восстановление сигналов методом A-law
    	.mmregs				; Определение регистров
    TEMP	.set	60h
    ONE	.set	61h
    X	.set	62h
    Y	.set	63h
    P	.set	64h
    S	.set	65h
    Q	.set	66h
    Cnt	.set	2048-1			; Число элементов массива
    Buf	.set	1000h				; Буфер ввода
    BufI	.set	2000h				; Буфер ввода
    BufO	.set	3000h				; Буфер вывода
    	.def	_c_int00			; Метка начала программы
    	.align	80h			; Выровнять на начало страницы
    _c_int00:
    	stm	#BufI, SP			; Указатель стека
    	ld	#0, DP			; Текущая страница
    	st	#1, ONE
    	ssbx	SXM				; Расширение знака
    	ssbx	OVM				;
    	stm	#Cnt, BRC
    	ld	#8000h-32, a
    	rptbd	Fill-1
    	stm	#BufI, ar1			;2w

    	add	#32, a
    	stl	a, *ar1+
    Fill
    	stm	#Cnt, ar1
    	stm	#BufI, ar2
    	stm	#BufO, ar3
    	stm	#Buf, ar4
    Loop	mvdk	*ar2+, X
    ;	stm	#-0aaah, X
    	call	AlawCom
    	mvkd	Y, *ar3+
    	call	AlawExp
    ;	call	AlawTab
    	mvkd	X, *ar4+
    	banz	Loop, *ar1-
    	nop
    	nop

    AlawCom:					; Normal -> A-law
    ;	portr	PA0, X
    	ld	X, 16, a
    	bcd	ts1, ageq
    ;	bcd	ts1, aleq			; для таблицы
    	stm	#0, P				;2w

    	orm	#8000h, P			;
    ts1:	abs	a
    	nop					;PPC1
    	bitf	ah, #7F00h
    	bcd	ts2, ntc
    	exp	a				;1w
    	ld	#7, b				;1w

    	sub	T, b
    	addm	#-6, T
    	ld	bl, 16, b
    	norm	a
    	and	#0F0h, 16, a
    	or	b, 8, a
    ts2	sfta	a, 4
    	add	P, 16, a
    	xor	#5500h, 16, a
    	sth	a, Y
    ;	portw	Y, PA0
    	ret
    AlawExp:					; A-law -> Normal
    ;	portr	PA0, Y
    	ld	Y, 16, a
    	xor	#5500h, 16, a
    	bcd	tc1, ageq
    	stm	#0, P				;2w

    	orm	#8000h, P			;
    tc1:	ld	a, -4, b
    	and	#7000h, 16, a
    	or	#8h, 16, b
    	bcd	tc2, aeq
    	and	#0F8h, 16, b

    	add	#-1000h, 16, a
    	sth	a, -12, T
    	or	#100h, 16, b
    	norm	b
    tc2	bitf	P, #8000h
    	bc	tc3, ntc
    	neg	b
    tc3	sth	b, X
    ;	portw	X, PA0
    	ret
    AlawTab:					; A-law -> Normal
    	ld	Y, 8, a
    ;	cmpl	a
    	and	#0FFh, 16, a
    	add	#ALAW, 16, a
    	sth	a, ar5
    	nop
    	nop
    	ld	*ar5, 3, b
    	stl	b, X
    	ret
    	.align	80h			; Выровнять на начало страницы
    	.include "A-law.inc"
    	.end					; Конец программы

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах
© БГУИР , 2012