Easy DSP Project — различия между версиями
Материал из Модулярная арифметики
Turbo (обсуждение | вклад) |
Turbo (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Структурная схема == | == Структурная схема == | ||
− | [[Файл:Easy-DSP.png | + | [[Файл:Easy-DSP.png]] |
== Как оно работает== | == Как оно работает== |
Текущая версия на 14:31, 20 мая 2013
Содержание
Структурная схема
Как оно работает
На каждое переключение CLOCK из 0 в 1 считываются входы и выполняется какое-то действие, номер которого задан на входе command.
Входы устройства
- IN1 – вход 1 (4 бита)
- IN2 – вход 2 (4 бита)
- COMMAND – вход с заданием команды на выполнение
- CLOCK – тактовый вход синхронизации
Выходы устройства
- OUT – выход (8 бит)
Внутренние блоки
- AX – регистр (4 бит)
- BX – регистр (4 бит)
- CX – регистр (8 бит)
- Memory – ОЗУ 16 слов по 8 бит
Система команд
- 00 – ничего не делать (IDLE)
- 01 – поместить вход 1 в регистр AX
- 02 – поместить вход 2 в регистр BX
- 03 – поместить вход 1 в память по адресу заданному на входе 2
- 04 – сложить AX и BX и поместить результат в CX
- 05 – умножить AX и BX и поместить результат в CX
- 06 – поместить CX в память по адресу заданному на входе 1
- 07 – перенести значение из памяти по адресу заданному на входе 1 в регистр CX
- 08 – подать значение CX на выход OUT
- 09 – 15 – зарезервировано под новые команды
Как будет выглядеть программа для DSP, на языке типа Assembler
// Сложение двух чисел COM 01 // Читаем вход 1 в регистр AX COM 02 // Читаем вход 2 в регистр BX COM 04 // Складываем AX+BX = CX COM 08 // Помещаем результат на выход
Внутри можно впоследствии добавлять блоки не только для сложения и умножения, но и для более сложных операций – предварительно выделив для них отдельный номер команды.