реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Microblaze+DDR2+UART, собрать проект в ise
vitali36
сообщение Sep 10 2013, 11:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354



Здравствуйте! Тема такая. Делал проект в ise, целью которого было принять данные на ацп , а потом отправить по com-port'у на компьютер. На C# написал программу которая принимает эти данные, которые я скидывал в массив и выводил график. Но данные похоже приходят неккоректно, поэтому решил задействовать память на борту spartan 3an ddr2 sdram. Создал Microblaze проект. Затем экспортнул в sdk,там протестировал память и перифирию - все работает. Т.е проект создан корректно. ТЕПЕРЬ ВОПРОС: мне нужно, чтобы данные с ацп приходили в память (на ацп поступает аналоговый сигнал извне) а уж потом шли по ком-порту на комп. Так вот как мне добавить к этому microblaze мой модуль, в котором описана работа АЦП. Это все нужно сделать же в ise. Есть еще uart модуль , но я так понял он мне не понадобиться больше, т.к uart в microblaze задействован. Вообщем подскажите как собрать этот проект. Еще раз: есть microblaze проект с ddr2 и uart и vhdl модуль с описанием работы ацп. Цель: данные с ацп записываются в ddr2 , а после отправляются по uart в комп.

Сообщение отредактировал vitali36 - Sep 10 2013, 11:23
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 13 2013, 20:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ответил в прошлой вашей теме..

если связались с микроблайзом, то ваши инструменты платформ студия и СДК, ISE теперь только для создания модулей. Собирать финальный проект в ISE не советую...

П.С. Все немного глючное, когда обновляете (после модификации) проц и экспортите его в сдк, в существующий проект, настойчиво рекомендую удалить все созданные софтварные проекты (только проекты из прожект эксплорера, не файлы на диске) и заново их импортнуть, потом сделать клинап проектов, всех, и заново их билднуть... а то иногда половина файлов остается старых, половина новых и вот тут уже вообще беда начинается... билдишь одно, запускаешь другое, редактируешь тертье...
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 15 2013, 14:43
Сообщение #3


Местный
***

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



Цитата(vitali36 @ Sep 10 2013, 15:22) *
Здравствуйте! Тема такая. Делал проект в ise, целью которого было принять данные на ацп , а потом отправить по com-port'у на компьютер. На C# написал программу которая принимает эти данные, которые я скидывал в массив и выводил график. Но данные похоже приходят неккоректно, поэтому решил задействовать память на борту spartan 3an ddr2 sdram. Создал Microblaze проект. Затем экспортнул в sdk,там протестировал память и перифирию - все работает. Т.е проект создан корректно. ТЕПЕРЬ ВОПРОС: мне нужно, чтобы данные с ацп приходили в память (на ацп поступает аналоговый сигнал извне) а уж потом шли по ком-порту на комп. Так вот как мне добавить к этому microblaze мой модуль, в котором описана работа АЦП. Это все нужно сделать же в ise. Есть еще uart модуль , но я так понял он мне не понадобиться больше, т.к uart в microblaze задействован. Вообщем подскажите как собрать этот проект. Еще раз: есть microblaze проект с ddr2 и uart и vhdl модуль с описанием работы ацп. Цель: данные с ацп записываются в ddr2 , а после отправляются по uart в комп.



Не нужен Вам Microblaze - только время потеряете. Контроллер DDR2 сгенерите прямо в ISE.

Только Вам для себя нужно ответить на пару вопросов
- как Вам поможет DDR получить правильные данные?
- какой объем Ваших данных? Вполне вероятно что они влезут в BRAM

Если уж сильно хочется майкроблэйз - добавьте туда еще один уарт. К одному подцепите свой старый, второй киньте на комп.

Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 15 2013, 16:39
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Sergey_Bekrenyov @ Sep 15 2013, 17:43) *
Не нужен Вам Microblaze - только время потеряете. Контроллер DDR2 сгенерите прямо в ISE.

Только Вам для себя нужно ответить на пару вопросов
- как Вам поможет DDR получить правильные данные?
- какой объем Ваших данных? Вполне вероятно что они влезут в BRAM

Если уж сильно хочется майкроблэйз - добавьте туда еще один уарт. К одному подцепите свой старый, второй киньте на комп.

я такой совет уже давал... sm.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 15 2013, 18:41
Сообщение #5


Местный
***

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



Цитата(Maverick @ Sep 15 2013, 20:39) *
я такой совет уже давал... sm.gif


sm.gif

Я в свое время отучился на Кзайлинкс тренингах по поводу встраиваемых микропроцессорных систем -без этого тяжко с нуля разбираться. Проще накодировать в ПЛИС, да и отлаживать проще.
Go to the top of the page
 
+Quote Post
vitali36
сообщение Sep 15 2013, 19:02
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354



Цитата
- как Вам поможет DDR получить правильные данные?
Сергей, DDR2 поможет тем, что скорости уарта не хватает "хватать данные с ацп и передавать". С ацп они сыпятся быстрее. Буфер однозначно нужен. По поводу объема данных. Для теста хватит совсем чуть-чуть. К примеру записать 4096 отсчетов. Но а если будет работаь все в реале, т.е постоянно? нужно же будет накапливать отправлять, очищать и снова так по кругу(если я правилно понимаю).
Цитата
Если уж сильно хочется майкроблэйз - добавьте туда еще один уарт. К одному подцепите свой старый, второй киньте на комп.

Не совсем понял как это.

Сообщение отредактировал vitali36 - Sep 15 2013, 19:03
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 15 2013, 19:37
Сообщение #7


Местный
***

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



Цитата(vitali36 @ Sep 15 2013, 23:02) *
Сергей, DDR2 поможет тем, что скорости уарта не хватает "хватать данные с ацп и передавать". С ацп они сыпятся быстрее. Буфер однозначно нужен. По поводу объема данных. Для теста хватит совсем чуть-чуть. К примеру записать 4096 отсчетов. Но а если будет работаь все в реале, т.е постоянно? нужно же будет накапливать отправлять, очищать и снова так по кругу(если я правилно понимаю).

Не совсем понял как это.


Если не хватает скорости, то ничего не поможет! От того что Вы сложите данные в ДДР данных меньше не станет. Либо прореживать придется, либо фильтровать, либо нужен другой интерфейс - посмотрите в сторону Ethernet. На опенкорес вполне рабочий MAC лежит

Делаете систему с двумя уартами и ддр контроллером. Один цепляете к передатчику в FPGA (там можете скорость задрать), а второй к компьютеру. А уж между ними ставьте хоть ДДР буфер, хоть фильтр ...



Но все же сгенерите ДДР контроллер с помощью MIG - у Вас будет просто доступ ДДР через 2 FIFO. Микроблэйз для Вашей задачи слишком ресурсо-. энерго- и время- затратен
Go to the top of the page
 
+Quote Post
vitali36
сообщение Sep 15 2013, 20:43
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354



Я в MIG пытался сделать. Сгенерил контроллер, добавил файлы в проект, их там куча просто. Сплошные компоненты. Ни разу не пользовался ранее MIG. Создал тестбенч(пустой).
В тесте задать можно только входы(clk и reset). А мне нужно же задать адрес, cntrl0_ddr2_a : OUT std_logic_vector(12 downto 0), банк, который буду использовать и т.д. cntrl0_ddr2_ba : OUT std_logic_vector(1 downto 0);
иначе рабоать то не будет. Плюс еще модуль ацп и уарт как туда запилить и связать...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 15 2013, 21:10
Сообщение #9


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(vitali36 @ Sep 15 2013, 23:43) *
Я в MIG пытался сделать. Сгенерил контроллер, добавил файлы в проект, их там куча просто. Сплошные компоненты. Ни разу не пользовался ранее MIG. Создал тестбенч(пустой).
В тесте задать можно только входы(clk и reset). А мне нужно же задать адрес, cntrl0_ddr2_a : OUT std_logic_vector(12 downto 0), банк, который буду использовать и т.д. cntrl0_ddr2_ba : OUT std_logic_vector(1 downto 0);
иначе рабоать то не будет. Плюс еще модуль ацп и уарт как туда запилить и связать...

Для начала Вам необходимо разобраться как записывать в память данные и читать из нее. Для этого используйте возможности тестбенч...
MIG должен вроде должен создавать тестбенч к топ-левелу...
Потом создайте FSM которая б это делала в ПЛИС
Можете применять интрумент для отладки чипскоп в железе - смотреть сигналы на входе/выходе...
Как-то так...
Это в кратце... дальше по мере поступления вопросов....


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 16 2013, 04:03
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(vitali36 @ Sep 16 2013, 00:43) *
Я в MIG пытался сделать. Сгенерил контроллер, добавил файлы в проект, их там куча просто. Сплошные компоненты. Ни разу не пользовался ранее MIG. Создал тестбенч(пустой).
В тесте задать можно только входы(clk и reset). А мне нужно же задать адрес, cntrl0_ddr2_a : OUT std_logic_vector(12 downto 0), банк, который буду использовать и т.д. cntrl0_ddr2_ba : OUT std_logic_vector(1 downto 0);
иначе рабоать то не будет. Плюс еще модуль ацп и уарт как туда запилить и связать...


по описанию вы не топ левел компонент запустили...
Go to the top of the page
 
+Quote Post
lastpoint
сообщение Sep 16 2013, 07:06
Сообщение #11


Участник
*

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



Все же, возвращаясь к основной задаче, а Вы уверены, что использование DDR позволит передавать все данные с АЦП? Если проблема в том, что данные приходят не корректно, то скорее всего после отладки проекта при помощи chipscope ее можно будет локализовать и исправить, вполне может быть ошибка типа перепутанного MSB и LSB: все работает по одиночке, а вместе - нет. Вряд ли добавлением новых блоков все решится.
Go to the top of the page
 
+Quote Post
vitali36
сообщение Sep 16 2013, 09:32
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354



Вот результат работы на графике оцифрованной синусоиды без использования DDR2(данные с ацп на uart и потом на комп).
И таким макаром весь график. Выложил естественно только часть. Сейчас пытаюсь к microblaze добавить ацп модуль. В user_logic добавил компонент и потом в port map связал так clk => Bus2IP_CLK,
rst => Bus2IP_Reset,
adc_a => IP2RFIFO_Data); Но потом выдает ошибку что еще оказывается нужно вход spi_adc с чем-то связать. С каким-то из этих портов?(как и rst, clk и adc_a)
Bus2IP_Clk : in std_logic;
Bus2IP_Reset : in std_logic;
Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
Bus2IP_RdCE : in std_logic_vector(0 to C_NUM_REG-1);
Bus2IP_WrCE : in std_logic_vector(0 to C_NUM_REG-1);
IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
IP2Bus_RdAck : out std_logic;
IP2Bus_WrAck : out std_logic;
IP2Bus_Error : out std_logic;
IP2RFIFO_WrReq : out std_logic;
IP2RFIFO_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
IP2RFIFO_WrMark : out std_logic;
IP2RFIFO_WrRelease : out std_logic;
IP2RFIFO_WrRestore : out std_logic;
RFIFO2IP_WrAck : in std_logic;
RFIFO2IP_AlmostFull : in std_logic;
RFIFO2IP_Full : in std_logic;
RFIFO2IP_Vacancy : in std_logic_vector(0 to log2(C_RDFIFO_DEPTH));
IP2WFIFO_RdReq : out std_logic;
IP2WFIFO_RdMark : out std_logic;
IP2WFIFO_RdRelease : out std_logic;
IP2WFIFO_RdRestore : out std_logic;
WFIFO2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
WFIFO2IP_RdAck : in std_logic;
WFIFO2IP_AlmostEmpty : in std_logic;
WFIFO2IP_Empty : in std_logic;
WFIFO2IP_Occupancy : in std_logic_vector(0 to log2(C_WRFIFO_DEPTH))

Сообщение отредактировал vitali36 - Sep 16 2013, 09:39
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
lastpoint
сообщение Sep 16 2013, 12:46
Сообщение #13


Участник
*

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



Цитата
Вот результат работы на графике оцифрованной синусоиды без использования DDR2(данные с ацп на uart и потом на комп).
И таким макаром весь график. Выложил естественно только часть

Вы пробовали подключаться к входу с АЦП (какой вид графика уже там)? Еще интересна частота АЦП и синусоиды
Go to the top of the page
 
+Quote Post
vitali36
сообщение Sep 16 2013, 12:54
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 2-07-13
Пользователь №: 77 354



Частота дискретизации 3мегасемпла. Частота сигнала не помню какую точно задавал ( около 1кГц ). От полтора кГц уже плохо начинает отрисовывать.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 16 2013, 13:12
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Я бы поступил так.

я бы передавал не данные АЦП, а данные АЦП + Временная метка. тогда сразу было бы ясно теряется что-то или повторяется.

то есть в модуле что принимает данные на каждый принятый отсчет надо увеличивать счетчик и отправлять его вместе с данными АЦП.
думаю 8 бит хватит, чтобы понять что происходит.

а в поступлении отсчетов есть перерывы? И какая максимальная частота поступления отсчетов? Или у Вас считал - передал, и максимальная частота определяется каналом?
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 02:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016