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

 
 
 
Reply to this topicStart new topic
> ADC на плате de0-nano
Fiorreel
сообщение Jul 1 2014, 20:31
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-14
Пользователь №: 82 122



Здравствуйте! помогите пожалуйста. я в этом деле новичок. только начал заниматься ПЛИС.
Есть плата de0-nano и на ней уже имеющийся ADC.
Как без лишних проблем снять сигнал с одного любого канала АЦП через ПЛИС, чтобы можно было пропустить его через схему,
которая рисуется в редакторе block diagram?
везде пишут, что нужно иметь контроллер АЦП, который управляет им с ПЛИС. и примеры построения через nios.
можно ли не используя nios вставить в block diagram некий контроллер?
как я понимаю, не получается считывать информацию с соответствующей ножки ADC c какой-то периодичностью
как с простого input-пина...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 2 2014, 05:55
Сообщение #2


Гуру
******

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



конечно можно.
Только контроллером тоже надо управлять....


Вообще если говорит строго то НИОС тоже огромный конечный автомат и никто не мешает вам сделать свой меньший автомат который работает так же как та часть ниос что связана с АЦП.

Думаю основная причина предложения ниоса в том что после получения данных с АЦП с ними надо что-то сделать. Что?

В вашем случае, если хотите обойтись без ниоса, вам надо создать конечный автомат который будет забирать данные с АЦП и класть их в фифо (фифо-стандартный блок), а также написать конечный автомат который будет забирать данные с другой стороны фифо и отправлять их дальше, например в компьютер по UART или что-то типа. В целом такие блоки можно нарисовать и в схемном редакторе, но это дьявольски сложно, на порядок легче сделать это на верилоге-вхдле
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 2 2014, 07:11
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Глянул, что за плата и АЦП. Всё общение с АЦП и приём данных по SPI. Совет, начинайте с Nios II. Для Nios II Вам понадобится только SPI-ядро и пару GPIO (лампочками поморгать). Ничего сложного там нет, берёте соответствующий мануал и вперёд!
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 2 2014, 07:29
Сообщение #4


Гуру
******

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



человеку который не имел дело с плис, вы советуете начинать со встройки готового ядра? При условии что SPI - это стандартная студенческая задача?

В этой ситуации я бы советовал начинать с написания SPI, тем более это SPI мастер...
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 2 2014, 07:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jul 2 2014, 10:29) *
человеку который не имел дело с плис, вы советуете начинать со встройки готового ядра? При условии что SPI - это стандартная студенческая задача?

По-моему, собрать систему из готовых блоков в Qsys и подключить необходимые входы-выходы к нужным пинам FPGA не составит большого труда. В крайнем случае недели, думаю, точно должно хватить, чтобы слегка пройтись по мануалам, начать моргать лампочками и читать-писать регистры АЦП по SPI.

Цитата(Golikov A. @ Jul 2 2014, 10:29) *
В этой ситуации я бы советовал начинать с написания SPI, тем более это SPI мастер...

Это хорошо конечно, но управлять АЦП при помощи SPI и железной обвязки (машины состояний), на мой взгляд, с нуля это сложнее.

Да и не будет той гибкости, как если бы встроить в систему Nios II.
Go to the top of the page
 
+Quote Post
Fiorreel
сообщение Jul 2 2014, 08:22
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-14
Пользователь №: 82 122



Спасибо большое за внимание. Попробую сделать что-нибудь самое простое...
мне действительно сначала хватит моргания лампочками, и чтение регистров АЦП.
попробую разобраться с spi и gpio
Go to the top of the page
 
+Quote Post
Fiorreel
сообщение Sep 22 2014, 12:00
Сообщение #7





Группа: Новичок
Сообщений: 3
Регистрация: 1-07-14
Пользователь №: 82 122



Здравствуйте! С этим вопросом разобрался.
В продолжение появился еще один.
АЦП однополярный, а сигнал двуполярный. Пришлось поднимать напряжение, смещать сигнал на входе.
И теперь в цифровом виде надо вычесть добавку, причем дробную.
Как я понимаю можно использовать VHDL fixed point. и вопрос, сколько бит идет у АЦП на дробную часть..
Как правильнее произвести вычитание дробных чисел?
точка фиксированная, достаточно 1 знака после запятой..
Прикрепленный файл  adc_ctrl.v ( 2.52 килобайт ) Кол-во скачиваний: 160

Прикрепленный файл  ADC128S022.pdf ( 436.97 килобайт ) Кол-во скачиваний: 137


я правильно понимаю, что если я знаю добавку, то я могу ее преобразовать в двоичный код,
учитывая Va/(2^12) и, посчитав количество отсчетов, присвоить надбавке двоичное значение
по шкале АЦП. а потом просто вычесть с помощью LPM_ADD_SUB.
Сохранятся ли тогда знаки для отрицательных значений, если буду использовать знаковое вычитание?

Сообщение отредактировал Fiorreel - Sep 22 2014, 12:01
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 23 2014, 06:58
Сообщение #8


Гуру
******

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



точка - это условность, и ее на самом деле нет%)
АЦП как выдавала от 0 до 2^12 так и будет выдавать

если у вас был диапазон от 0 до 5 вольт, то у вас по
5/(2^12) ~= 1.2 мВ на код.

теперь если вы вход подняли на 2.5 вольта, чтобы получить диапазон от -2.5 до 2.5,
то это соотвествует 2.5/0.0012 = 2048 кодам.

Если я правильно понимаю, то вас беспокоит, когда добавка не 2.5, а 2.5006, например, ну тут вам надо применить правила округления.
Если вы получите смещение 2048.3 - то считать это 2048, а если 2048.6, то считать это 2049.

эти десятые кода не имеют смысла, потому что каким бы АЦП не было могучим, а разрешение в 1 разряд все равно не даст, и десятые ловить нет смысла.
Если же вы интегрируете, то тогда можно все домножить на 10, то есть вы складываете 10 результатов АЦП, и вычитаете из них смещение, так же умноженное на 10, то есть либо 20486, либо 20483. И понимаете что полученный результат - это код умноженный на 10, то есть последний десятичный разряд у вас за точкой. И в таких символах и работаете....

Главное понять что любые точки - это условность.
Go to the top of the page
 
+Quote Post

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

 


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


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