Не далее как вчера приходилось применять чудеса акробатики, чтобы выделить свое собственное прерывание Digium-овской платке, и чтобы при этом и USB работал, и две сетевушки. Что касается нашей платы:
[nick@zap ~]$ cat /proc/interrupts
CPU0
0: 90263 XT-PIC timer
1: 1441 XT-PIC i8042
2: 0 XT-PIC cascade
5: 1882163 XT-PIC libata, ehci_hcd:usb1, Intel ICH5,
uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, uhci_hcd:usb5, ti24, eth0
6: 3 XT-PIC floppy
7: 0 XT-PIC parport0
8: 2 XT-PIC rtc
9: 1 XT-PIC acpi
NMI: 0
LOC: 90221
ERR: 0
MIS: 0
Это после небольших тестов под хорошей нагрузкой на винчестер, usb-жесткий диск и сеть. Ни одного потерянного прерывания. Звук не портится.
А знаете почему?
Я уверен, что при разработке Digium VoiceBus, были сделаны и другие заделы. Например, API для распознавания голоса для встраивания в tex2speech.
Объясняю почему. Начнем немного издалека, с позволения уважаемых читателей.
Вы никогда не задумывались, почему плата Digium видится в списке устройств BIOS, либо в списке, который выдается по команде lspci, как
Ethernet controller? Когда я в первый раз обратил на это внимание, мне показалось весьма странным, ведь в классификации PCI-SIG, организации - авторов стандартов PCI, существует специально выделенный тип устройств:
Computer telephony device. Так почему же в таком случае не используется он? Возьмите в руки плату Digium и посмотрите на большую прямоугольную микросхему, которая стоит рядом с разъемом PCI. На ней написана маркировка: Infineon AN983B. Зайдите на
сайт производителя микросхемы и в строке поиска "Part number" введите "AN983B". Так что это за микросхема? Ба! Да это же
High performance PCI Fast Ethernet controller with integrated physical layer interface for 10BASE-T and 100BASE-TX application! Можете скачать на нее
документацию, хотя и так, думаю, все понятно. Как вы считаете, имеет или данная микросхема специализированные ноги для общения с голосовыми кодеками? Ответ очевиден! Я еще не видел
ни одной сетевой карты, на которой бы были входы для телефонов :-)
Хотя нет, я это сказал не подумав. На самом деле, разумеется, видел, ведь я как раз сейчас держу в руках эту чудо-сетевую карту! Digium TDM2400P ;-)
Вся сущность их VoiceBus состоит в том, что они смогли подружить эту микросхему с телефонными кодеками путем подсоединения их на ноги общего назначения, которыми можно рулить из модуля ядра: записал "1" - записал "0" - прочитал. А поскольку в этих кодеках применяется последовательный протокол передачи данных, только для того чтобы записать в
один регистр
одно 32-х битное число, нужно фактически
как минимум 64 обращения по шине PCI к устройству. Каждое обращение по шине - это значит подождать пока шина освободится, захватить ее, записать битик и освободить шину. (Для сравнения, у нас для того чтобы записать в кодек одно 32-х битное число требуется ровно
одно обращение к шине). Нравится вам супер-патентованая технология VoiceBus?
Так что по поводу Text-to-speech... эмм... словом, шутка удалась :-)
Вы знаете, на Digium также прекрасно работают факсы, особенно в умелых руках.
Боитесь, что мы у вас хлеб отнимаем? :-) Не беспокойтесь, ваши умелые руки без работы не останутся, есть еще масса вещей, которые приходится крутить в астериске. :-)
У нас нормально реализован режим interconnect (т.е. когда общаются два абонента на одной плате - передача голоса без участия компьютера в 16-битном режиме без потери качества на преобразования alaw/ulaw)
У Digium это называется zero-latency TDM direct hardware-level cross-connect.
Совершенно верно. Небольшое отличие заключается двух вещах:
1. По-умолчанию он выключен. И для того чтобы его включить нужно как минимум в качестве параметра модуля ядра указать nativebridge=1. К слову, в триксбоке он, например, не указан. И вообще за что его Digium так не любит - я не знаю. (Может быть он просто не работает? :-))
2. У них все равно звук внутри кодека сжимается с помощью Alaw (т.е. оцифрованных 16 бит превращаются в 8 бит). Потом внутри другого кодека он снова разжимается обратно в 16 бит. Таким образом, мы теряем большое количество данных. А учитывая, что ЦАП/АЦП в кодеках и на телефонной линии совершенно одинаково быть настроены не могут даже теоретически, по факту мы теряем еще как минимум на 1 бит больше. Совершенно очевидно, что подобные потери в линии не могут положительно сказаться на работе факсимильного и модемного оборудования.
Мы в режиме интерконнекта передаем данные несжатые - 16 бит. Причем заложена в аппаратной части возможность передавать не только 16 бит, но и
16 килогерц (а не 8 килогерц). В следующих ревизиях прошивок мы такую возможность реализуем и все желающие смогут перепрошить свои платы. Заранее сложно оценить, на сколько именно это увеличит качество звука, но совершенно очевидно, что разница в лучшую сторону будет.
Но вот верчу в руках плату Digium, она тоже понатыкана всякого рода конденсаторами (я могу отличить кондер на плате от других элементов).
Конденсаторы бывают на разное напряжение. В случае превышения этого напряжения, они сгорают с теми или иными светошумовыми эффектами в зависимости от типа конденсатора.
Бесплатная помощь в подключении к PSTN
Засылаете своего биоробота, чтобы он у клиентов Амфенол в плату вставил? Это дело полезное :-) У нас был один клиент, который не прикрутил разъем к плате, потом кто-то за него дернул - и он отвалился. Несколько часов звонил "у меня телефоны не работают", потом извинялся :-)
возможность бесплатного апгрейда в течение гарантийного срока
А куда, кстати, б.у. оборудование деваете? А то у нас есть пара платок Digium ненужных...
А как быть с риском оказаться без поддержки, если Вы свернете производство карт? А Digium был, есть и будет.
А я раньше думал, что был есть и будет только Аллах и пророк его Мухамед, ибо он живет в сердцах миллионов верующих мусульман :-) Надеюсь, г-н Спенсер не будет объявлять нашей Родине джихад только потому что мы выпустили наши платы? ;-)