MegaElektronik 0 23 января, 2008 Опубликовано 23 января, 2008 · Жалоба Уважаемый brag,а не могли бы вы выложить проект здесь, либо на почту [email protected]. Буду очень признателен!!! :) Мне Cypress тоже очень понравился, тока вот времени небыло разобратся со связью Cypress с АЦП . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaElektronik 0 23 января, 2008 Опубликовано 23 января, 2008 · Жалоба Каков протокол аудиоданных на компьютере? Как их софт понимает? А то без этих знаний и схему не нарисовать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 23 января, 2008 Опубликовано 23 января, 2008 (изменено) · Жалоба Ну и что что 30мбайт, частота всеравно около 500МГц, вне зависимости от скорости. Или я не прав? Конечно работает, но вы же сами на глюки жаловались... Или там глюки другого рода? Я писал в чем были глюки. С самой плисиной.. Там сльно большие задержки. На дорожке клок уже пришел.пока долез до стейт-машин в плисе,пока изменилось состояние машины и пока оно вылезло наружу(на дорожку), так клок уже упал,или даже собрался подыматься. Вобщем переделывал машины... В железе глюк был только один - генератор для аналогового тракта был на 5в,я их переводил в 3в полевиком. полевикаа чет колбасило,я резанул дорогу,подал на генер 3в и пустил клок на прямую.а аналоговая часть и 3вольтовый клок прохавывает без проблем. Частота то 480мгц,но там ей и место :) Выше предлагали использовать неизохронный режим USB. Какая макс. скорость возможна? Из за чего могут быть потери в изохронном режиме? (если используем хороший экранированный USB кабель, и нормально разведена плата) Изохрон имиет высокий приоритет, но не имеет коррекции ошибок. Он гарантирует, кажись 80%(не помню) пропускной способности шины. Но он не гарантирует доставку информации в ее исходном виде,те могут быть ошибки. Дорога вам на usb.org Кстати вы не ответели что есть такое MAX3000 и MAX2? Это семейства плисов. Как было написано выше, altera.com все скажет ;) Уважаемый brag,а не могли бы вы выложить проект здесь, либо на почту [email protected] К сожалению, пока нет. Проект имеет возможность принести денег, почему бы ею не воспользоватся. Ведь это все таки должен быть мой хлеб. Да и зачем он вам? вы же свое делаете. Тем более инфы много в инете,а ее особо там и не надо много. Даташитов достаточно. По драйверам сам помочь не могу,тк сам еще баран в них. На вопросы отвечу ;) Каков протокол аудиоданных на компьютере? Как их софт понимает? А то без этих знаний и схему не нарисовать! НА каком компютере? :) на моем? Почему не нарисовать? вам надо доставить даные на комп,а что дальше с ними делать - проблеммы вашего драйвера. Вобще я гоню, как есть. 8bit dummy+24bit Signed big endian msb first. те всего у нас 8 байт. первые 4-левый,вторые-правый.первый байт ис каждого канала лишний,остальные идут в порядке от старшего к младшему. вот и все. Мне Cypress тоже очень понравился, тока вот времени небыло разобратся со связью Cypress с АЦП . Только через плисочку,если ацп с последовательным интерфейсом ;) Изменено 23 января, 2008 пользователем brag Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 23 января, 2008 Опубликовано 23 января, 2008 · Жалоба К сожалению, пока нет. Проект имеет возможность принести денег, почему бы ею не воспользоватся. На вопросы отвечу ;) Если можно немного подробнее. Через какой ендпоинт гонится поток? Поток изохронный? Можете ли поделится дескриптором устройства? Формат и скорость жестко забиты или ими можно управлять с компа? Частота кварца? Очень большое пожалуста ответить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 23 января, 2008 Опубликовано 23 января, 2008 · Жалоба Изохрон имиет высокий приоритет, но не имеет коррекции ошибок. Он гарантирует, кажись 80%(не помню) пропускной способности шины. Но он не гарантирует доставку информации в ее исходном виде,те могут быть ошибки. Дорога вам на usb.org Только через плисочку,если ацп с последовательным интерфейсом ;) С изохрлоном ясно. А ошибки-то вот откуда возьмутся, если используем хороший экранированный USB кабель, и нормально разведена плата? Вы изохрон пользуете? А через регистр сдвига + триггер почему нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 23 января, 2008 Опубликовано 23 января, 2008 · Жалоба В нормальных условиях взяться им неоткуда. Мы много разных деталей делаем на USB - нет там ошибок, пока не работаешь на электроподстанции. Там - есть, когда земля импульсно на десяток наносекунд киловольта на 2 подскакивает. Но в этом случае все кончается, как правило, переподключением устройства, чтобы подвисшие драйвера освободить. Но это экзотика. Средней пропускной способности хватит как в изохроне, так и в балке, но в последнем никто не гарантирует равномерность потока. Если буфер в устройстве большой - без проблем магабайт 25-30 в секунду качается. Есть еще одна проблема. Если падать на микрософтовские драйвера, а не делать свои, то по спецификации USB-audio они требуют изохрона. Еще одна проблема с драйверами - Vista. У мелкомягкого как всегда семь пятниц на неделе. Вместо того, чтобы вылизать имеющееся - сделали новую спецификацию на драйвера. По мне, так лучше немного помучиться с железом, но лечь в стандарт, а дальше пусть микрософт разбирается, что он там нагородил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 24 января, 2008 Опубликовано 24 января, 2008 (изменено) · Жалоба Если можно немного подробнее. Через какой ендпоинт гонится поток? Поток изохронный? Можете ли поделится дескриптором устройства? Формат и скорость жестко забиты или ими можно управлять с компа? Частота кварца? Очень большое пожалуста ответить. Какая разница, через какой. через какой захотел,через такой и погнал. сейчас 2-OUT,4-IN. Сейчас Bulk. Причем сдесь скорость? или вы о частоте дискретизации? - тогда жестко. мне надо макс. разрешение. Одного 24.000мгц. второго 24.576мгц. Тоже из серии - почитай даташит... дескриптор: // Device Descriptor { 0x12, // bLength USB_DESCRIPTOR_DEVICE, // bDescriptorType USBW(0x0200), // USB 2.0 0xFF, // bDeviceClass 0x00, // bDeviceSubclass 0x00, // bDeviceProtocol 0x40, // bMaxPacketSize0 USBW(USB_VENDOR_BRAG), // idVendor USBW(USB_PRODUCT_BRAG_DD2), // idProduct USBW(0x0001), // bcdDevice :Device Release Number 0x01, // iManufacturer 0x02, // iProduct 0x00, // iSerialNumber 0x01 // bNumConfigurations }, // Configuration Descriptor { // std configuration descriptor 0x09, // bLength USB_DESCRIPTOR_CONFIG, // bDescriptorType USBW(USB_CFGDESCSIZE), // wTotalLength 0x01, // bNumInterfaces 0x01, // bConfigurationValue 0x00, // iConfiguration 0xC0, // bmAttributes 0x00, // bMaxPower // Interface descriptor 0x09, // bLength USB_DESCRIPTOR_IFACE, // bDescriptorType 0x00, // bInterfaceNumber 0x00, // bAlternateSetting 0x03, // bNumEndpoints 0xFF, // bInterfaceClass 0x00, // bInterfaceSubClass 0x00, // bInterfaceProtocol 0x00, // iInterface // Endpoint descriptor (OUT EP2) 0x07, // bLength USB_DESCRIPTOR_ENDPOINT, // bDescriptorType 0x02, // bEndpointAddress : D0..D3 - ep num; D7 - IN endpoint 0x02, // bmAttributes USBW(0x200), // wMaxPacketSize 0x01, // bInterval // Endpoint descriptor (IN EP4) 0x07, // bLength USB_DESCRIPTOR_ENDPOINT, // bDescriptorType 0x84, // bEndpointAddress : D0..D3 - ep num; D7 - IN endpoint 0x02, // bmAttributes USBW(0x200), // wMaxPacketSize 0x01, // bInterval // Endpoint descriptor (IN EP1) 0x07, // bLength USB_DESCRIPTOR_ENDPOINT, // bDescriptorType 0x81, // bEndpointAddress : D0..D3 - ep num; D7 - IN endpoint 0x02, // bmAttributes USBW(0x40), // wMaxPacketSize 0x80 // bInterval }, #if USB_CFGDESCSIZE & 1 0, #endif // LangID {USB_DESCRIPTOR_STRING_SIZE(1),USB_DESCRIPTOR_STRING,USB_LANG_EN_US}, // Manufacturer { USB_DESCRIPTOR_STRING_SIZE(4),USB_DESCRIPTOR_STRING, 'B',0,'r',0,'a',0,'g',0 }, // Product { USB_DESCRIPTOR_STRING_SIZE(12),USB_DESCRIPTOR_STRING, 'D',0,'i',0,'g',0,'i',0,'D',0,'e',0,'g',0,'a',0,'n',0,' ',0,'I',0,'I',0 } Толку вам от него? Дескрипторов никогда не видели? ;) Где-то видел страницу - сборник дескрипторов популярных усб-устройств, типа для коллекции :D С изохрлоном ясно. А ошибки-то вот откуда возьмутся, если используем хороший экранированный USB кабель, и нормально разведена плата? Вы изохрон пользуете? Ошибки дажа на шинах ATA,SATA,DDR,... есть, не даром есть такие вещи,как ECC, CRC итп..а вы тут о usb.. Читайте доку с usb.org Ошибки - это не подвисание драйвера. Это просто ошибки и они всегда могут встретится. usb_20.pdf say: isochronous transfers have the general implication of constant-rate, errortolerant transfers. In the USB environment, requesting an isochronous transfer type provides the requester with the following: • Guaranteed access to USB bandwidth with bounded latency • Guaranteed constant data rate through the pipe as long as data is provided to the pipe • In the case of a delivery failure due to error, no retrying of the attempt to deliver the data и еще USB Communication Flow Transfer |Bandwidth |Error Detection |Retrying Control |Not guaranteed |Yes |Automatic Isochronous |Guaranteed |Yes |No Interrupt |Not guaranteed |Yes |Yes Bulk |Not guaranteed |Yes |Yes USB-audio мягкий не по карману.глючный он сильно,особенно в win2000 В FreeBSD он и то более-менее работает Изменено 24 января, 2008 пользователем brag Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaElektronik 0 24 января, 2008 Опубликовано 24 января, 2008 (изменено) · Жалоба На счет аудиоданных я имел ввиду чтобы стандартный драйвер все понимал. Да хоть чтоб Winamp :05: играл! Как определить левый правый канал? Изменено 24 января, 2008 пользователем MegaElektronik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 24 января, 2008 Опубликовано 24 января, 2008 · Жалоба Во,блин :) #1. http://www.usb.org/developers/docs/usb_20_092407.zip #2. http://www.usb.org/developers/devclass_docs#approved __1. http://www.usb.org/developers/devclass_docs/audio10.pdf __2. http://www.usb.org/developers/devclass_docs/frmts10.pdf __3. http://www.usb.org/developers/devclass_doc...io2.0_final.zip - Виндой не поддерживается пока)вроде) Платку немного переделал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 24 января, 2008 Опубликовано 24 января, 2008 · Жалоба Платку немного переделал. За ссылки и дескриптор спасибо. Кому оно очевидно, а кое-кто и первый раз видит. К сожалению, как я понял, ваше устройство к аудиоклассу никаким боком не относится. Меня интересовали рабочие примеры дескриптора канала записи для устройств, совместимых с виндой. Доки конечно читал, но как-то криво оно работает. По поводу платы. Я незря спрашивал про то, что дал Rightmark Audioanalyzer. Без него понять что и как шумит - невозможно. Я бы обязательно поставил между Альтерой и АЦП_ЦАП RC цепи по цифровым линиям. А возможно и предусмотрел место под гальваноразвязку. Запаять вместо нее перемычки никогда не поздно, а вот наоборот... Фильтр по питанию преобразователей как организован? Джиттер вы не меряли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 24 января, 2008 Опубликовано 24 января, 2008 (изменено) · Жалоба Фильтр еще будем думать. О гальв.развязке..ее где-то ставят на более-менее крутых картах? сомневаюсь,что она нужна. тогда уж надо делать гальваническую развязку по 3.3в на питание цыфровой части :)) Да.даное устройство никаким боком к usb-audio class не относится. Вот дескриптор для аудио класса.только ацп. const struct usbDevDesc UsbDevDesc={ sizeof(struct usbDevDesc), USB_DESCRIPTOR_DEVICE, 0x0200, // USB 2.0 0xEF, // bDeviceClass 0x02, // bDeviceSubclass 0x01, // bDeviceProtocol USB_EP0_MAXSIZE, USB_VENDOR_BRAG, USB_BRAG_PRODUCT_DD, 0x0001, // Serial 0x01, // iManufacturer 0x02, // iProduct 0x00, // iSerialNumber 0x01 //bNumConfigurations }; const struct usbAuCfgDesc UsbCfgDesc={ { sizeof(struct usbStdCfgDesc), USB_DESCRIPTOR_CONFIG, sizeof(struct usbAuCfgDesc), 1, //interfaces 1, //bConfigurationValue 0, //iConfiguration 0xC0, //SelfPowered 0 //bMaxPower }, /* Audio Control Interface */ { sizeof(struct usbStdIfDesc), USB_DESCRIPTOR_IFACE, 0, //bInterfaceNumber 0, //bAlternateSetting 0, //bNumEndpoints 0x01, //AUDIO 0x01, //AUDIOCONTROL 0, 0 //iInterface }, { sizeof(struct usbCsAcDesc), 0x24, //CS_INTERFACE 0x01, //HEADER 0x0100, //bcdADC sizeof(struct usbCsAcDesc)+sizeof(struct usbCsItDesc)+ sizeof(struct usbCsOtDesc), //wTotalLength USB_AUDIO_IFS, 1 //baInterfaceNr }, { sizeof(struct usbCsItDesc), 0x24, //CS_INTERFACE 0x02, //INPUT_TERMINAL 0x01, //bTerminalID 0x0200, //Input Undefined term type 0x00, //bAssocTerminal 2, //bNrChannels 0x00000003, //wChannelConfig 0, //iChannelNames 0 //iTerminal }, { sizeof(struct usbCsOtDesc), 0x24, //CS_INTERFACE 0x03, //OUTPUT_TERMINAL 0x02, //bTerminalID 0x0101, //Usb Streaming 0x00, //bAssocTerminal 0x01, //bSourceID (from input terminal) 0 //iTerminal }, /* Zero Bandwidth (alt setting 0) */ { sizeof(struct usbStdIfDesc), USB_DESCRIPTOR_IFACE, 1, //bInterfaceNumber 0, //bAlternateSetting 0, //bNumEndpoints 0x01, //AUDIO 0x02, //AUDIOSTREAMING 0, 0 //iInterface }, /* Audio Streaming descriptor (alt setting 1) */ { sizeof(struct usbStdIfDesc), USB_DESCRIPTOR_IFACE, 1, //bInterfaceNumber 1, //bAlternateSetting 1, //bNumEndpoints 0x01, //AUDIO 0x02, //AUDIOSTREAMING 0, 0 //iInterface }, { sizeof(struct usbAuCsAsDesc), 0x24, //CS_INTERFACE 0x01, //AS_GENERAL 0x02, //bTerminalLink (Out Terminal) 0x01, //bDelay 0x0001 //wFormatTag (PCM format) }, { sizeof(struct usbAuCsFmt1Desc), 0x24, //CS_INTERFACE 0x02, //FORMAT_TYPE 0x01, //FORMAT_TYPE1 0x02, //bNrChannels 0x03, //3 bytes/frame 24, //24 bits/sample 0x01, //bSamFreqType - One frequency supported {B3VAL(96000)} //tSamFreq }, /* IN ISO Endpoint 1 */ { {sizeof(struct usbAuStdAsIsoEpDesc), USB_DESCRIPTOR_ENDPOINT, 0x81, //IN endpoint 1 0x01, //Isochronous, No synchronous, Data endpoint 64, //wMaxPacketSize 9}, //packets per frame 0,0 //bRefresh, bSynchAddress }, { sizeof(struct usbAuCsAsIsoEpDesc), 0x25, //CS_ENDPOINT 0x01, //EP_GENERAL 0x00, //bmAttributes 0x00, //bLockDelayUnits 0x0000 //wLockDelay } }; Также есть пару примеров в тех ссылках,что я давал. именно аудио. Джиттер нечем мерять... Изменено 24 января, 2008 пользователем brag Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 24 января, 2008 Опубликовано 24 января, 2008 · Жалоба Вот теперь такая платка ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 24 января, 2008 Опубликовано 24 января, 2008 (изменено) · Жалоба brag и Alex 11, благодарю за помощь! :) Вот теперь такая платка ;) Вижу, вы все же прислушались к моему совету доработать разводку USB :) Эти изменения что-то дали? Еще, как я вижу вы убрали X2. Я так понимаю вы через него программировали ЕЕПРОМ. А теперь как? По поводу платы. Я незря спрашивал про то, что дал Rightmark Audioanalyzer. Без него понять что и как шумит - невозможно. Я бы обязательно поставил между Альтерой и АЦП_ЦАП RC цепи по цифровым линиям. А возможно и предусмотрел место под гальваноразвязку. Запаять вместо нее перемычки никогда не поздно, а вот наоборот... Фильтр по питанию преобразователей как организован? Джиттер вы не меряли? Полгостью согласен! Я уже давно про это говорил... Но это если вы особо заботитесь о качестве. Помехи и джиттер могут испоганить результат самых лучших преобразователей. Возможно выложу нашу разработку, когда заработает :) За ссылки и дескриптор спасибо. Кому оно очевидно, а кое-кто и первый раз видит. К сожалению, как я понял, ваше устройство к аудиоклассу никаким боком не относится. Меня интересовали рабочие примеры дескриптора канала записи для устройств, совместимых с виндой. Доки конечно читал, но как-то криво оно работает. По поводу платы. Я незря спрашивал про то, что дал Rightmark Audioanalyzer. Без него понять что и как шумит - невозможно. Я бы обязательно поставил между Альтерой и АЦП_ЦАП RC цепи по цифровым линиям. А возможно и предусмотрел место под гальваноразвязку. Запаять вместо нее перемычки никогда не поздно, а вот наоборот... Фильтр по питанию преобразователей как организован? Джиттер вы не меряли? А вы умеете мерять джиттер? :) Изменено 24 января, 2008 пользователем MAXvaLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
brag 0 24 января, 2008 Опубликовано 24 января, 2008 · Жалоба Вижу, вы все же прислушались к моему совету доработать разводку USB Эти изменения что-то дали? Да,немного разсунул,хотя там далеко нету тех параметров.зазор 0.7мм, расстояние до других макс 7мм. Хз дало,не дало.плату еще не делал новую. пока дрова пишу.как все будет готово,в том числе и ламповая часть(вход,выход), тогда уже буду делать вторую плату, со всеми доработками... Еще, как я вижу вы убрали X2. Я так понимаю вы через него программировали ЕЕПРОМ. А теперь как? Та не,я его просто так воткнул :) EEPROM самим же cypressom и шьется. Гробик бы с удовольствием всунул,только нету таких гробиков. надо именно 24.576мгц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 24 января, 2008 Опубликовано 24 января, 2008 (изменено) · Жалоба ...в том числе и ламповая часть(вход,выход)... Та не,я его просто так воткнул :) EEPROM самим же cypressom и шьется. Ну, ты зверь! :07: Круто!!! :a14: Мы вот предвариловку на крутых опер.ах делаем :crying: Через USB? Кстати, возник вопрос: а зачем serial<->parallel преобразователь надо было на ПЛИСине делать? Есть ведь готовенькие... PS А за дескрипторы спасибо большое! Темный мы народ... :) Изменено 24 января, 2008 пользователем MAXvaLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться