|
|
  |
Microblaze+DDR2+UART, собрать проект в ise |
|
|
|
Sep 16 2013, 13:13
|

Участник

Группа: Участник
Сообщений: 50
Регистрация: 1-08-12
Из: Смоленск
Пользователь №: 72 975

|
Цитата Частота дискретизации 3мегасемпла. Частота сигнала не помню какую точно задавал ( около 1кГц ) - значит на форме где-то 1/100 периода ? И еще, если АЦП 8-битное (это 24000000бит/сек) , а com-port настроен на 9600 бит/сек, то как происходит передача данных на ПК :принял семпл-передал, остальные пропустил или принял несколько семплов-отослал, потом опять часть принял-отослал)? в первом случае частота семплирования намного меньше, чем ожидается, а во втором должны выходить куски сигнала, не связанные с собой
|
|
|
|
|
Sep 16 2013, 14:55
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354

|
Ацп 14-ти разрядный. Данные я разделяю. Сначала 8, потом 6 дополненные двумя нулями. А в самой программе на c# данные скидываю в массив, но т.к ацп 14 разрдядный я просто делаю конкатенацию 0 элемент с 1, 2 c 3 и т.д. Скорость 921600. Вы мне скажите график не похож что ли? Golikov.A. Да, частота определяется самим ацп. Писалось по даташиту все - там прежде чем ацп запустить нужно предусилитель настроить. По поводу временной метки, не очень понял. Вообще я сейчас хочу все это доделать с памятью, вывести график и посмотреть как что) . Только вот не пойму все входы с ацп ли нужно к microblaze подключать. rst, clk и выход с ацп я подключил, ругается потом xps на spi_adc. Вообще хочу спасибо всем сказать что помогаете мне - тратите свое личное время
Сообщение отредактировал vitali36 - Sep 16 2013, 15:03
|
|
|
|
|
Sep 16 2013, 15:10
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599

|
Цитата(vitali36 @ Sep 16 2013, 18:55)  Ацп 14-ти разрядный. Данные я разделяю. Сначала 8, потом 6 дополненные двумя нулями. А в самой программе на c# данные скидываю в массив, но т.к ацп 14 разрдядный я просто делаю конкатенацию 0 элемент с 1, 2 c 3 и т.д. Скорость 921600. Вы мне скажите график не похож что ли? Golikov.A. Да, частота определяется самим ацп. Писалось по даташиту все - там прежде чем ацп запустить нужно предусилитель настроить. По поводу временной метки, не очень понял. Вообще я сейчас хочу все это доделать с памятью, вывести график и посмотреть как что) . Только вот не пойму все входы с ацп ли нужно к microblaze подключать. rst, clk и выход с ацп я подключил, ругается потом xps на spi_adc. Вообще хочу спасибо всем сказать что помогаете мне - тратите свое личное время Прицепите Чипскоп и он выведет Вам график. Вы пытаетесь настроить кучу модулей одновременно.
|
|
|
|
|
Sep 16 2013, 17:35
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Модуль АЦП человек написал сам, как я понимаю
учтите что обычно ресет шины (Bus2IP_Reset) обратный, посмотрите какой уровень у нее при ресете, там что-то не как обычно в микросхемах насколько я помню.
Не очень понятно как вы хотите привязать АЦП к фифо, я что-то такого фифо не припоминаю, по описанию оно для чего сделано? Это не от Езернета фифо случаем оторвали?
Про времянную метку я предлагаю вот что
берем счетчик 8 бит, который каждое считывание ацп увеличиваем на 1. и ваши данные с АЦП превращаем
временная метка + данные ацп, то есть 14+8 = 22 бита, потом это передаете на компьютер то есть не 2 байта на отсчет а 3.
если все хорошо там будет
1 АДЦ_код 2 АДЦ код ....
в таком варианте ваши точки графика получают не только Y но и Х координату, и уже можно будет определеннее сказать у вас нарушение данных или их последовательности, может какие то пропускаются, а какие то принимаются слишком долго с паузами.... Если есть какое то синхронизирующее устройство, то времянную метку лучше брать с него, запустить на нем такой же счетчик и забирать каждую синхропосылку...
Смысл локализовать проблему, а потом уже решать ее, а не крутить кучу блоков, половину которых вы соединяете методом тыка (как у меня создается впечатление)
|
|
|
|
|
Sep 16 2013, 18:26
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354

|
Ацп Linear Technology LTC1407A-1 ADC. Я так же хочу сделать как в этом примере http://www.fpgadeveloper.com/2008/10/integ...peripheral.html , только вместо модуля умножителя мой модуль ацп. Фифо не отрывал ни откуда: xps сгенерил вместе с ddr2 похоже. Вот мой проект ( не microblaze ) . там все с комментариями.
|
|
|
|
|
Sep 16 2013, 19:50
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599

|
Цитата(vitali36 @ Sep 16 2013, 22:26)  Ацп Linear Technology LTC1407A-1 ADC. Я так же хочу сделать как в этом примере http://www.fpgadeveloper.com/2008/10/integ...peripheral.html , только вместо модуля умножителя мой модуль ацп. Фифо не отрывал ни откуда: xps сгенерил вместе с ddr2 похоже. Вот мой проект ( не microblaze ) . там все с комментариями. замените данные АЦП на счетчик - проверите стык uart и Ваш софт. И начните с 8 бит
|
|
|
|
|
Sep 17 2013, 07:44
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354

|
Ребят, ну выконечно разогнались)) В данный момент пока что задача состоит только в том, чтобы проверить то же самое(не меняя ничего в модклях, без добавления временных меток и т.д), только задействовав память. Посмотреть результат и уже от этого отталкиваться. Для этого я решил использовать microblaze. Создал проект microblaze, в sdk протестировал память и uart - работает. Следующий шаг - добавление модуля ацп. В этой статье(уже кидал ссылку) http://www.fpgadeveloper.com/2008/10/integ...peripheral.html показано добавление модуля на примере умножителя(два числа перемножаются, записываются в fifo, считываются и по uart передаются на комп). Вот я хочу сделать также, только вместо этого умнжителя мой модуль ацп.
|
|
|
|
|
Sep 17 2013, 10:39
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
хотите я кину пример где через езернет настраиваются драйверы шаговых двигателей, и вы попробуете свое АЦП вместо мотора воткнуть?..
У вас есть модуль сбора данных с ацп? он может полученные данные выдать на параллельную шину, и дернуть одной ножкой вверх-вниз?
Не может - допишите это дело 10 минут.
Дальше делаете так микроблайз + уарт дальше добавляете стандартную IPcore fifo
у него есть вход и выход, подаете данные АЦП на вход, и дергаете ножкой они сохраняются в ФИФО.
дальше это фифо вешаете на шину процессора, для того чтобы забрать данные надо будет просто прочитать из адресного пространства этого модуля и все.
дальше процессором в вечном цикле читаете данные из фифо и кладете в память, а потом читаете из памяти и кладете в уарт, и делаете что хотите...
но реально проблему решаете не с того конца.
я бы взял написал модуль что читает данные с ацп и пихает их в фифо. Для этого сделал бы фифо не на шину проца, а нативным, там есть такая галочка.
Обернул бы этот модуль в модуль что данные из фифо по запросу выдает на проц, это тоже делается через визард (создается шаблон модуля с регистровым доступом и чуть дописывается внутри)
дальше бы все это запустил и читал бы данные из фифо и слал бы их наверх, размер фифо может быть до полумегобайта (зависит от плис). Оттестировтаь тракт хватит. Но только реально никакая память не решит проблемы разности скорость приема и передачи, при условии бесконечности данных...
|
|
|
|
|
Sep 17 2013, 11:00
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354

|
Цитата хотите я кину пример где через езернет настраиваются драйверы шаговых двигателей, и вы попробуете свое АЦП вместо мотора воткнуть?.. Т.е вместо uart попробовать спользовать ethernet и тогда память никакая не нужна? Цитата У вас есть модуль сбора данных с ацп? он может полученные данные выдать на параллельную шину, и дернуть одной ножкой вверх-вниз? Модуль сбора данных с ацп есть. Выдать данные на параллельную шину - это можно организовать. Цитата Дальше делаете так микроблайз + уарт Микроблайз с uart есть. Сделал проект а xps. Там же ddr2 у меня(при создании проекта указывал). Цитата дальше добавляете стандартную IPcore fifo Это каким образом добавить и где его взять?
|
|
|
|
|
Sep 17 2013, 11:53
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Т.е вместо 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, таймеры, порты ввода-вывода и куча куча куча всего
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|