Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: параллельный ЦАП и AT91SAM7X256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Диm
на AT91SAM7X256 делаю генератор сигнала, с выводом информации на параллельный ЦАП нету(все работает,сигнал получаю) ,НО скорость выдачи данных составляет порядка 3,5 Мгц, а мне требуется 6,75 мГц поэтому возникает такие вопросы:
1. частота кварца на плате 18,432мГц заменив его на другой вырастет ли скорость выдачи данных и как её просчитать??
2. как повысить скорость выдачи информации?режима ДМА для памяти как я понял не существует.....
и вообще,какие будут соображения на эту тему
с уважением,Дмитрий
nameless
Цитата(Диm @ May 21 2007, 13:38) *
на AT91SAM7X256 делаю генератор сигнала, с выводом информации на параллельный ЦАП нету(все работает,сигнал получаю) ,НО скорость выдачи данных составляет порядка 3,5 Мгц, а мне требуется 6,75 мГц поэтому возникает такие вопросы:
1. частота кварца на плате 18,432мГц заменив его на другой вырастет ли скорость выдачи данных и как её просчитать??
2. как повысить скорость выдачи информации?режима ДМА для памяти как я понял не существует.....
и вообще,какие будут соображения на эту тему
с уважением,Дмитрий


Вы наверное имели в виду ДМА для PIO? Насколько помню EBI у Х-ов нет. Только порты. Если там все так же как и у SAM-цов, то на 60Мгц из RAM в THUMB mode у меня порты работали 3 такта на ввод и 4 на вывод. Получаецца больше он ничего сделать у вас (как и у меня) не может. А частота кварца множится на "почти" любой коэффициент и больше 72 МГц в нормальных условиях не хочет.

Хотя с тактами я мог и промахнуться...но порядок тот еще...

Есть и альтернативы:
1. DDS от AD (если только гармонический сигнал синтезировать)
2. CPLD/FPGA + SRAM
3. FIFO от IDT

2 и 3 - в любом случае - НЕ бюджетные решения.
Диm
Цитата(nameless @ May 21 2007, 17:44) *
Вы наверное имели в виду ДМА для PIO?


да, дма для пио имел ввиду...

Цитата
на 60Мгц из RAM в THUMB mode у меня порты работали 3 такта на ввод и 4 на вывод.

а вот про это можно поподробнее чуток?
DDS от AD не пойдет так как сигнал негармонический и весьма непростой и возможно буду делать фазоманипулированный....

у меня появилась идея конечноsmile.gif взять атмегу,сделать её управляемой от х7 и на ней тупо проигрывать файл из память программ в порт на цап
хотелось бы без лишних корпусов...чтож буду думать что и как....
nameless
У меги инструкция LPM Rd, Z+ выполняется за 3 такта, плюс такт на OUT (если цап 8 бит и дополнительно клокать ничего не надо {т.е. асинхронный интерфейс}[даже не знаю таких ЦАП-ов]) итого 5 МГц при тактовой 20МГц (по-моему есть и такие меги) но при всем при этом не обойтись без опроса регистров (SPI например) на предмет фазы с последующей загрузкой в Z. Никак 6.5 не получается.

Лучше попробуйте помароковать вокруг связки CPLD+RAM. По-крайней мере 150nS память дешево встанет и контроллер освободите. У меня похожая задача и я рулю именно туда. Хотя в плане сокращения числа камней лучше FIFO.
Диm
Цитата(nameless @ May 21 2007, 18:45) *
У меги инструкция LPM Rd, Z+ выполняется за 3 такта, плюс такт на OUT (если цап 8 бит и дополнительно клокать ничего не надо {т.е. асинхронный интерфейс}[даже не знаю таких ЦАП-ов]) итого 5 МГц при тактовой 20МГц (по-моему есть и такие меги) но при всем при этом не обойтись без опроса регистров (SPI например) на предмет фазы с последующей загрузкой в Z. Никак 6.5 не получается.

инструкция LPM Rd, Z+ да это делается за три такта, но ведь Rd можно разный задатьsmile.gif
и выставить цепочку так что может и потянет 6.5МГц
спасибо за ответы,буду думатьsmile.gif
_pv
Цитата(Диm @ May 22 2007, 15:15) *
инструкция LPM Rd, Z+ да это делается за три такта, но ведь Rd можно разный задатьsmile.gif
и выставить цепочку так что может и потянет 6.5МГц
спасибо за ответы,буду думатьsmile.gif


LDI K, Reg - один такт
OUT Port,Reg - еще один такт
если забить флэш парами таких инструкций то и 10МГц при 20 МГц тактовой получить можно.
если конечно ЦАП 8 битный а не больше.

еще можно попробовать использовать EMAC, у него есть DMA,
завести на ETXTCK 13 МГц с таймера, а потом на логике склейть два полследовательных 4 битных слова в одно 8 битное.
правда если ЕМАС не занят езернетом,то в чем прелесть использования sam7x для данной задачи?
лучше уж тогда взять проц с нормальным параллельным портом . например blackfin 531 / 532. стоит столько же, корпус почти такой-же, lqfp-176.
Диm
Цитата(_pv @ May 22 2007, 20:48) *
еще можно попробовать использовать EMAC, у него есть DMA,
завести на ETXTCK 13 МГц с таймера, а потом на логике склейть два полследовательных 4 битных слова в одно 8 битное.
правда если ЕМАС не занят езернетом,то в чем прелесть использования sam7x для данной задачи?
лучше уж тогда взять проц с нормальным параллельным портом . например blackfin 531 / 532. стоит столько же, корпус почти такой-же, lqfp-176.

хм...а вот это уже интересно и оригинально!!!
использовать блэкфин нецелесообразно по той причине что это нормальный процессор и к нему ещё обвязку нормальную надо,а х7 микроконтроллер просто,все в одномsmile.gif
khach
Все таки это изврат. Взять AD9954 c встроенным ОЗУ, загрузить в него самплы, а АРМом только управлять. Нормально выливать поток получалось только по SSP c ДМА, а потом на CPLD был преобразователь последовательный- параллельный. xc9572 хватало. Но все равно это надежно работало только когда АРМ ничем более кроме формирования потока к ЦАП незанимался. Если приходил пакет по эзернету- все срывалось. По ЮСБ еще как-то удавалось разруливать. Что бы поток не рвался, пришлось вместо xc9572 ставить XC3S200-TQFP100 и организовывать буфер фифо на 16 кбайт в ее внутренней памяти. А потом вообще отдать формирование потока внутрь спартана и освободить АРМ для коммуникации. :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.