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

|
Здравствуйте! помогите пожалуйста. я в этом деле новичок. только начал заниматься ПЛИС. Есть плата de0-nano и на ней уже имеющийся ADC. Как без лишних проблем снять сигнал с одного любого канала АЦП через ПЛИС, чтобы можно было пропустить его через схему, которая рисуется в редакторе block diagram? везде пишут, что нужно иметь контроллер АЦП, который управляет им с ПЛИС. и примеры построения через nios. можно ли не используя nios вставить в block diagram некий контроллер? как я понимаю, не получается считывать информацию с соответствующей ножки ADC c какой-то периодичностью как с простого input-пина...
|
|
|
|
|
Jul 2 2014, 07:44
|
Профессионал
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jul 2 2014, 08:22
|
Группа: Новичок
Сообщений: 3
Регистрация: 1-07-14
Пользователь №: 82 122

|
Спасибо большое за внимание. Попробую сделать что-нибудь самое простое... мне действительно сначала хватит моргания лампочками, и чтение регистров АЦП. попробую разобраться с spi и gpio
|
|
|
|
|
Sep 22 2014, 12:00
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Sep 23 2014, 06:58
|
Гуру
     
Группа: Свой
Сообщений: 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, то есть последний десятичный разряд у вас за точкой. И в таких символах и работаете....
Главное понять что любые точки - это условность.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|