В общих чертах разобрались как работает IDCT преобразование в MDEC. Матричное умножение еще предстоит симулировать чтобы понять его досконально. но кое-какие результаты уже есть.
Преобразование осуществляется за 2 прохода:
1) На первом проходе осуществляется умножение результата RLE декомпрессии и Scale Table Matrix хранящейся в UNIT 00. Она хранится в виде 32 записей по 26 бит. После выхода данные попарно поступают на мультиплексоры где выбирается какие 13 бит использовать.
Входы:
- RLE вход: 12 бит
- Scale Table Matrix вход: 13 бит
- Сумма предыдущего этапа вычисления: 17 бит
Схема сразу умножает 2 входа и суммирует умножение с результатом предыдущего шага вычисления. 17 бит результата вновь подается на схему.
В конце вычисления старшие 13 бит результата сохраняются в UNIT 01, который, по всей видимости, представляет из себя двухпортовую память. то есть на вход и выход которой могут подаватся разные значения.
2) На втором проходе перемножается уже 13 бит результата первого прохода и 12 верхних бит Scale Table Matrix.
Входы:
- Результат первого прохода: 13 бит
- Scale Table Matrix вход: верхние 12 бит
- Сумма предыдущего этапа вычисления: 17 бит
Схема вновь умножает 2 входа и суммирует умножение с результатом предыдущего шага вычисления. 17 бит результата вновь подается на схему.
В конце вычисления старшие 10 бит результата передаются на схему знакового деления на 2 с клампингом -128, 127. На выходе мы получаем 8 бит со знаком.