Здравствуйте, господа! Я разрабатываю устройство, выполненное на основе процессорной платы Diamond Athena и платы АЦП/ЦАП Diamond DMM32X-AT, форм-фактора PC-104. Устройство должно оцифровывать сигнал с аналоговых входов, производить обработку сигналов, и параллельно с этим, с минимально возможной задержкой выводить сигнал на выходы ЦАПа. Жесткое РВ не требуется, поэтому используется Linux. Проблема следующая: для АЦП на плате существует FIFO-буфер, а для ЦАП - нет! Программная генерация сигнала точка-за-точкой - не устраивает из-за непредсказуемой паузы между обновлениями ЦАПа, вызываемой переключениями контекста. Генерация сигнала по прерываниям - также не устраивает (в существующем виде), так как в данном режиме прерывание генерируется НА КАЖДУЮ ТОЧКУ выводимого сигнала, и несколько десятков тысяч прерываний в секунду - это явный перебор. Меня интересует ответ на следующий вопрос: существуют ли в природе платы ЦАП форм-фактора PC/104 со встроенной буферной памятью на борту? Или же существует другой путь решения проблемы?
А в ответ тишина...
Подумалось вот: а как же происходил вывод звука в старых звуковых картах на шине ISA? Был ли на них аппаратный буфер? Или на каждый отсчёт, 44100 раз в секунду, дёргалось прерывание? Вряд-ли... Если нет аппаратного буфера - остаётся DMA... Но каким боком DMA происходит на ISA, где нет Bus Mastering'а, и во время сеанса DMA процессор всё равно простаивает? Большой вопрос... Но звук-то как-то выводился :)
Сдается мне, что столь резвый аналоговый вывод лежит где-то за рамками традиционных задач промышленной автоматизации. 20 лет назад очень похожую задачу решал разработкой модуля ЦАП в стандарте CAMAC с буфером соответствующего объема на борту :).
Мдя... Только своей платы мне и не хватало :)
А вообще, насколько это сложно - разработать собственную ISA-плату? И существуют ли какие-нибудь прототипные платы под это дело?
PS. То есть плата-то нужна PC/104, но электрически это та же ISA.
Полагаю, что не сложно (при определенных навыках, разумеется). Кстати, практически все производители PC/104 в том числе и Diamond продают prototype board - звоните ближайшему дилеру.
А почему-бы не использовать собственно звуковую плату ? На входе конденсатор убрать надо. А буфер у нее - будь здоров.
С уважением, SAN
>> А почему-бы не использовать собственно звуковую плату ? На входе конденсатор убрать надо. А буфер у нее - будь здоров.
Есть две проблемы:
1) звуковая плата не калибрована по напряжению;
2) параметры могут плавать в зависимости от температуры, времени, и т.д.
И если первую проблему можно хоть как-то побороть (составлять калибровочные таблицы на каждый экземпляр устройства, благо устройство малотиражное), то вторая вводит в глубокий транс...
Первоначально опубликовано serj_obninsk
Подумалось вот: а как же происходил вывод звука в старых звуковых картах на шине ISA? Был ли на них аппаратный буфер? Или на каждый отсчёт, 44100 раз в секунду, дёргалось прерывание? Вряд-ли... Если нет аппаратного буфера - остаётся DMA... Но каким боком DMA происходит на ISA, где нет Bus Mastering'а, и во время сеанса DMA процессор всё равно простаивает? Большой вопрос... Но звук-то как-то выводился :)
Насколько помню, в звуковых картах не тормозит, потому что там именно DMA и используется...
Первоначально опубликовано Builder
Насколько помню, в звуковых картах не тормозит, потому что там именно DMA и используется...
А насколько я помню - ЦП и периферийное устройство на шине ISA не могут _одновременно_ иметь доступ к ОЗУ. То есть, пока звуковая карта выполняет цикл DMA, процессор либо простаивает, либо выполняет инструкции из кэша. Для моей задачи это неприемлемо ни в каком виде: процессор должен быть всегда готов к приходу прерывания от АЦП, а если ISA-ЦАП будет выполнять DMA, то процессор оказывается недоступен. Насколько мне помнится, именно по этой причине на "дешёвых" ISA-саундкартах был невозможен полноценный полный дуплекс с низкой задержкой. А на "дорогих" как раз были буферы FIFO. На шине PCI, с полноценным арбитражом шины памяти, такой проблемы нет. Прав ли я?
Sond Blaster может служить и как превосходный АЦП. Тогда звукашка вообще превратиться в целый АЦП-ЦАП 16-ти разрядный комплект, с полной самосинхронизацией. Пример описан в книге С.В. Зубкова "Assembler для DOS, Windows и UNIX".
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме