Last_point 0 September 16, 2013 Posted September 16, 2013 · Report post Частота дискретизации 3мегасемпла. Частота сигнала не помню какую точно задавал ( около 1кГц ) - значит на форме где-то 1/100 периода ? И еще, если АЦП 8-битное (это 24000000бит/сек) , а com-port настроен на 9600 бит/сек, то как происходит передача данных на ПК :принял семпл-передал, остальные пропустил или принял несколько семплов-отослал, потом опять часть принял-отослал)? в первом случае частота семплирования намного меньше, чем ожидается, а во втором должны выходить куски сигнала, не связанные с собой Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 16, 2013 Posted September 16, 2013 (edited) · Report post Ацп 14-ти разрядный. Данные я разделяю. Сначала 8, потом 6 дополненные двумя нулями. А в самой программе на c# данные скидываю в массив, но т.к ацп 14 разрдядный я просто делаю конкатенацию 0 элемент с 1, 2 c 3 и т.д. Скорость 921600. Вы мне скажите график не похож что ли? Golikov.A. Да, частота определяется самим ацп. Писалось по даташиту все - там прежде чем ацп запустить нужно предусилитель настроить. По поводу временной метки, не очень понял. Вообще я сейчас хочу все это доделать с памятью, вывести график и посмотреть как что) . Только вот не пойму все входы с ацп ли нужно к microblaze подключать. rst, clk и выход с ацп я подключил, ругается потом xps на spi_adc. Вообще хочу спасибо всем сказать что помогаете мне - тратите свое личное время Edited September 16, 2013 by vitali36 Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 16, 2013 Posted September 16, 2013 · Report post Ацп 14-ти разрядный. Данные я разделяю. Сначала 8, потом 6 дополненные двумя нулями. А в самой программе на c# данные скидываю в массив, но т.к ацп 14 разрдядный я просто делаю конкатенацию 0 элемент с 1, 2 c 3 и т.д. Скорость 921600. Вы мне скажите график не похож что ли? Golikov.A. Да, частота определяется самим ацп. Писалось по даташиту все - там прежде чем ацп запустить нужно предусилитель настроить. По поводу временной метки, не очень понял. Вообще я сейчас хочу все это доделать с памятью, вывести график и посмотреть как что) . Только вот не пойму все входы с ацп ли нужно к microblaze подключать. rst, clk и выход с ацп я подключил, ругается потом xps на spi_adc. Вообще хочу спасибо всем сказать что помогаете мне - тратите свое личное время Прицепите Чипскоп и он выведет Вам график. Вы пытаетесь настроить кучу модулей одновременно. Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 16, 2013 Posted September 16, 2013 · Report post Мне не график нужно вывести в данный момент. Я добавляю ацп ( vhdl модуль к микроблейз) . Вернее уже добавил, теперь хочу связать входы-выходы. clk, rst от ацп привязал к Bus2IP_CLK, Bus2IP_Reset, а выход ацп с данными к IP2RFIFO_Data. но ругается xps потом на вход spi_adc. С чем его связать нужно? Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 September 16, 2013 Posted September 16, 2013 · Report post Опишите для ясности чем Вы владеете - какое ацп - с помощью какой микросхемы передаете порядка 1 мегабита по юарту (просто возможно передача и на большей скорости например через FIFO, SPI, например это возможно у FTDI) Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 16, 2013 Posted September 16, 2013 · Report post Модуль АЦП человек написал сам, как я понимаю учтите что обычно ресет шины (Bus2IP_Reset) обратный, посмотрите какой уровень у нее при ресете, там что-то не как обычно в микросхемах насколько я помню. Не очень понятно как вы хотите привязать АЦП к фифо, я что-то такого фифо не припоминаю, по описанию оно для чего сделано? Это не от Езернета фифо случаем оторвали? Про времянную метку я предлагаю вот что берем счетчик 8 бит, который каждое считывание ацп увеличиваем на 1. и ваши данные с АЦП превращаем временная метка + данные ацп, то есть 14+8 = 22 бита, потом это передаете на компьютер то есть не 2 байта на отсчет а 3. если все хорошо там будет 1 АДЦ_код 2 АДЦ код .... в таком варианте ваши точки графика получают не только Y но и Х координату, и уже можно будет определеннее сказать у вас нарушение данных или их последовательности, может какие то пропускаются, а какие то принимаются слишком долго с паузами.... Если есть какое то синхронизирующее устройство, то времянную метку лучше брать с него, запустить на нем такой же счетчик и забирать каждую синхропосылку... Смысл локализовать проблему, а потом уже решать ее, а не крутить кучу блоков, половину которых вы соединяете методом тыка (как у меня создается впечатление) Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 16, 2013 Posted September 16, 2013 · Report post Ацп Linear Technology LTC1407A-1 ADC. Я так же хочу сделать как в этом примере http://www.fpgadeveloper.com/2008/10/integ...peripheral.html , только вместо модуля умножителя мой модуль ацп. Фифо не отрывал ни откуда: xps сгенерил вместе с ddr2 похоже. Вот мой проект ( не microblaze ) . там все с комментариями. rx_tx_amp_adc_v3.rar Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 16, 2013 Posted September 16, 2013 · Report post Ацп Linear Technology LTC1407A-1 ADC. Я так же хочу сделать как в этом примере http://www.fpgadeveloper.com/2008/10/integ...peripheral.html , только вместо модуля умножителя мой модуль ацп. Фифо не отрывал ни откуда: xps сгенерил вместе с ddr2 похоже. Вот мой проект ( не microblaze ) . там все с комментариями. замените данные АЦП на счетчик - проверите стык uart и Ваш софт. И начните с 8 бит Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post Ребят, ну выконечно разогнались)) В данный момент пока что задача состоит только в том, чтобы проверить то же самое(не меняя ничего в модклях, без добавления временных меток и т.д), только задействовав память. Посмотреть результат и уже от этого отталкиваться. Для этого я решил использовать microblaze. Создал проект microblaze, в sdk протестировал память и uart - работает. Следующий шаг - добавление модуля ацп. В этой статье(уже кидал ссылку) http://www.fpgadeveloper.com/2008/10/integ...peripheral.html показано добавление модуля на примере умножителя(два числа перемножаются, записываются в fifo, считываются и по uart передаются на комп). Вот я хочу сделать также, только вместо этого умнжителя мой модуль ацп. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 17, 2013 Posted September 17, 2013 · Report post хотите я кину пример где через езернет настраиваются драйверы шаговых двигателей, и вы попробуете свое АЦП вместо мотора воткнуть?.. У вас есть модуль сбора данных с ацп? он может полученные данные выдать на параллельную шину, и дернуть одной ножкой вверх-вниз? Не может - допишите это дело 10 минут. Дальше делаете так микроблайз + уарт дальше добавляете стандартную IPcore fifo у него есть вход и выход, подаете данные АЦП на вход, и дергаете ножкой они сохраняются в ФИФО. дальше это фифо вешаете на шину процессора, для того чтобы забрать данные надо будет просто прочитать из адресного пространства этого модуля и все. дальше процессором в вечном цикле читаете данные из фифо и кладете в память, а потом читаете из памяти и кладете в уарт, и делаете что хотите... но реально проблему решаете не с того конца. я бы взял написал модуль что читает данные с ацп и пихает их в фифо. Для этого сделал бы фифо не на шину проца, а нативным, там есть такая галочка. Обернул бы этот модуль в модуль что данные из фифо по запросу выдает на проц, это тоже делается через визард (создается шаблон модуля с регистровым доступом и чуть дописывается внутри) дальше бы все это запустил и читал бы данные из фифо и слал бы их наверх, размер фифо может быть до полумегобайта (зависит от плис). Оттестировтаь тракт хватит. Но только реально никакая память не решит проблемы разности скорость приема и передачи, при условии бесконечности данных... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post хотите я кину пример где через езернет настраиваются драйверы шаговых двигателей, и вы попробуете свое АЦП вместо мотора воткнуть?.. Т.е вместо uart попробовать спользовать ethernet и тогда память никакая не нужна? У вас есть модуль сбора данных с ацп? он может полученные данные выдать на параллельную шину, и дернуть одной ножкой вверх-вниз? Модуль сбора данных с ацп есть. Выдать данные на параллельную шину - это можно организовать. Дальше делаете так микроблайз + уарт Микроблайз с uart есть. Сделал проект а xps. Там же ddr2 у меня(при создании проекта указывал). дальше добавляете стандартную IPcore fifo Это каким образом добавить и где его взять? Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 17, 2013 Posted September 17, 2013 · Report post Т.е вместо uart попробовать спользовать ethernet и тогда память никакая не нужна? это был сарказм на тему что вы используете не те модули что вам надо, а те что у вас есть... Вам надо понять так называемый workflow, перестать спешить, сделать 1 раз хорошо а не много раз плохо. И так, вот как все делается: 1. в платформ студии делаете процессор микроблайз, добавляете уарт, память все что вам надо. 2. в платформ студии делаете шаблон нового модуля -Hardware -> create or import ... -> create template for new.... задаете где положить модуль, даете ему имя и версию, выбираете тип шины к которой он подключится и так далее в самом конце не забудьте попросить визард сделать ISE и XST проекты. не делайте сразу мастер, сделайте сначала слейв 3. открываете ISE в нем открываете только что сделанный проект вашего модуля. в нем вы увидите какие то файлы, есть основной верхний файл, и в нем есть файл user.v(vhd) зависит от того верилог или вхдл вы попросите у визарда. Это файл - ваша модуль, в нем есть кусок доступа к регистрам со стороны процессора, кусок чтения и записи. 4. теперь в ISE делаете добавить новый модуль, и там выбираете IP core, в выпавшем меню выбираете FIFO, просите сделать его нативным а не на шину (так проще с ним работать в вашем модуле) 5. можете добавить ваш модуль сбора данных с ацп, и собираете все во едино, ваша задача чтобы данные с АЦП попадали в ФИФО, а при запросе на чтение регистра процессором, туда пихались данные из ФИФО. как диагностировать пустоту фифо придумывайте сами. 6. имплементируете проект в ISE и возвращаетесь в платформ студию 7. в платформ студии импортируете модуль - hardware -> create or import ... -> import exist выбираете ваш модуль, теперь в списке доступных модулей в разедел пользовательских (user) добавлен ваш модуль, перетаскиваете его и подключаете к процессору. 8. создаете процессор, и экспортите его в сдк 9. открываете сдк пишите программу. это базовый поток, НАСТОЯТЕЛЬНО рекомендую по нему пройти, сделать простенький модуль, почитать пописать регистры, по получать данные. Далее вы сможете сделать модуль который будет мастером на шине, сможет сам пихать данные в ДДР без процессора и так далее, но на первом этапе поскольку процессор у вас ничем не занят можете спокойно перегружать данные из АЦП в память полингом, а фифо позволит не терять их в момент обмена... также добавление IP core возможны и в платформ студии к процессору напрямую или к другим вашим модулям, среди них множество всяких полезностей: UART, SPI, Ethernert-mac, таймеры, порты ввода-вывода и куча куча куча всего Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post Ладно, буду делать все по порядку, как ты сказал. Сгенерил проект в xps, открыл в ise, при добавлении fifo в ip core можно выбрать fifo generator v. 8.5 или 9.1. Но рядом колонки Axi4, axi4-stream, axi4 - lite. Мне не plb случаем нужно? Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 17, 2013 Posted September 17, 2013 · Report post если фифо к процу на прямую, то плб, если такого нет, то есть переходник. Но для использования в вашем модуле внутри ISE надо натив фифо, оно вообще не на шину, у него параллельный выход - выход, клок, и строб разрешения чтения и записи... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post у меня ise не ниже 14. Толоко axi4 interface. Может другую ise скачать? Quote Share this post Link to post Share on other sites More sharing options...