ecos-rtos_in_ua
Jul 1 2008, 04:27
Собственно вопрос
Как сигнал от 10 битного АЦП передать к 8 битной sdram памяти с максимальной скоростью?
Лишние два разряда АЦП терять не хочется, но с другой стороны хочется максимальной скорости передачи, так как память и так узкое место.
Можно ли эти данные как-то сжать?
Цитата(ecos-rtos_in_ua @ Jul 1 2008, 08:27)

Собственно вопрос
Как сигнал от 10 битного АЦП передать к 8 битной sdram памяти с максимальной скоростью?
Лишние два разряда АЦП терять не хочется, но с другой стороны хочется максимальной скорости передачи, так как память и так узкое место.
Можно ли эти данные как-то сжать?
Все зависит от типа оцифровываемого сигнала. Что за сигнал?
Можно попробовать сжать если перед ацп поставить управяемый усилитель или цифровой потенциометр,динамически управляя диапазоном можно передавать 8бит,в низкочастотных применениях это использовалось ещё в советских разработках на к572пв1
ставить логику и упаковывать данные перед записью, имеется в виду следующее:
1 слово - старшие 8 бит пишем на прямую в память, а 2 младших запоминаем,
2 слово - старшие 8 бит пишем на прямую в память, а 2 младших запоминаем,
3 слово - старшие 8 бит пишем на прямую в память, а 2 младших запоминаем,
4 слово - старшие 8 бит пишем на прямую в память, а 2 младших запоминаем,
итого запомненных у нас 8 бит, вот их теперь тоже пишем в память.
Но! так с памятью лучше не работать (как писалось выше - узкое место) - лучше поставить еще одну микруху памяти, а этот алгоритм использовать при передаче данных "наружу"
Я бы упаковал 4 выборки АЦП в одно слово 40 байт и сохранил бы в память 5 байт. Какой обьём памяти и скорость надо? Если будет достаточно встроенной в FPGA то там нет проблем сделать и память двухпортовую и с разной разрядностью по входу и выходу, и работает на сотнях мегагерц. А варианты со сжатием это слишком сложный путь для такой проблемы. Да и цены на память уже не те, сейчас можно ставить 16-ти разрядные чипы, если это возможно конструктивно.
Огурцов
Jul 1 2008, 10:24
Цитата(ecos-rtos_in_ua @ Jul 1 2008, 04:27)

Можно ли эти данные как-то сжать?
Зависит от. Для звука и подобных можно попробовать нечто подобное u-law/a-law, для 10бит можно и таблично.
http://www.open.ge/el/?base=&view=0&am...wiki/A-law'
ecos-rtos_in_ua
Jul 1 2008, 13:58
Спасибо за ответы
Уточняю ситуацию
У меня есть плата на которой стоит FPGA (Spartan3e-250), SDRAM mt48lc8m8a2-7e (по документации максимальная частота 143МГц) . На ней есть разъем (40 выводов) к которому я хочу подключить платку расширения с АЦП (2 канала, 10 бит, максимальная скорость оцифровки 105 МГц). Реально ли затолкать эти данные в память без потерь на близкой к максимальной скорости оцифровки (100 МГц)?
EvgenyNik
Jul 2 2008, 10:57
Я бы взял частоту 250МГц (меандр):
поделил на 2 - получил 125МГц для SDRAM,
поделил (250МГц) на 2,5 (пользуясь скважностью меандра) - получил 100МГц для АЦП.
При таком соотношении можно на 100МГц (укладываемся в 105МГц) получать 10-битные данные с АЦП и складывать на 125МГц (опять-таки, укладываемся в 143МГц) 8-битные слова в ОЗУ пакетами по 40 бит.
Между приемом данных с АЦП и записью в ОЗУ надо будет сделать буфер и простенький конвеер на 4/5 стадий АЦП/ОЗУ.
ecos-rtos_in_ua
Jul 2 2008, 15:54
Цитата(Евгений Николаев @ Jul 2 2008, 13:57)

Я бы взял частоту 250МГц (меандр):
поделил на 2 - получил 125МГц для SDRAM,
поделил (250МГц) на 2,5 (пользуясь скважностью меандра) - получил 100МГц для АЦП.
При таком соотношении можно на 100МГц (укладываемся в 105МГц) получать 10-битные данные с АЦП и складывать на 125МГц (опять-таки, укладываемся в 143МГц) 8-битные слова в ОЗУ пакетами по 40 бит.
Между приемом данных с АЦП и записью в ОЗУ надо будет сделать буфер и простенький конвеер на 4/5 стадий АЦП/ОЗУ.
Спасибо за совет, попробую.
Цитата(Verifi @ Jul 1 2008, 10:25)

Можно попробовать сжать если перед ацп поставить управяемый усилитель или цифровой потенциометр,динамически управляя диапазоном можно передавать 8бит,в низкочастотных применениях это использовалось ещё в советских разработках на к572пв1
можно и еще проще сделать - передавать старшие 3 разряда только тогда, когда они изменяются (3 старших разряда + признак старших при их изменении, все остальное время 7 младших разрядов + признак младших) - вот вам и динамическое сжатие, но тут все зависит от того, что за сигнал
Цитата(Евгений Николаев @ Jul 2 2008, 14:57)

Я бы взял частоту 250МГц (меандр):
поделил на 2 - получил 125МГц для SDRAM,
поделил (250МГц) на 2,5 (пользуясь скважностью меандра) - получил 100МГц для АЦП.
При таком соотношении можно на 100МГц (укладываемся в 105МГц) получать 10-битные данные с АЦП и складывать на 125МГц (опять-таки, укладываемся в 143МГц) 8-битные слова в ОЗУ пакетами по 40 бит.
Между приемом данных с АЦП и записью в ОЗУ надо будет сделать буфер и простенький конвеер на 4/5 стадий АЦП/ОЗУ.
Так работать не будет. У Вас получился темп данных с АЦП в 1000 Мбит/c. При 125 МГц у памяти получим 100% загрузку пропускной способности её шины (125 МГц * 8 бит = 1000 Мбит/c). Но SDRAM это не статика. Для её работы обязательно нужно проводить регенерацию, открывать и закрывать банки.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.