|
Verilog, Altera + ADC нахождение максимума. |
|
|
|
Mar 10 2018, 16:52
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-10-05
Пользователь №: 9 192

|
Добрый день всем. Это мой первый проект на плис, до этого с ним дело не имел. Требуется отлавливать импульсы с АЦП выше определенной амплитуды и выдавать максимум импульса дальше... Плис Altera Cyclone 4, ADC AD9218BSTZ-65, 10 бит, тактирование от генератора 50 МГц. Кто мог бы объяснить в чем загвозка, огромное спасибо!!! Код module test3(clk, adc_clk, adc1_in, adc1_max);
input wire clk; input wire [9:0] adc1_in; //входные данные с ацп inout reg [9:0] adc1_max; // выход максимума импульса
output wire adc_clk; //PIN 85
reg [9:0] adc1_max_buff; //промежуточный буффер reg [9:0] dis_adc1_low=10'b1000100111; //нижний порог импульса
assign adc_clk = clk; //тактирование ацп
initial begin adc1_max_buff = 0; adc1_max=0; end
always @(negedge adc_clk) begin
if(adc1_in >= dis_adc1_low) begin if(adc1_in > adc1_max_buff) begin adc1_max_buff = adc1_in; end end
if(adc1_in < dis_adc1_low) begin
if(adc1_max_buff != 0) begin adc1_max = adc1_max_buff; end
if(adc1_max==adc1_max_buff) begin adc1_max_buff = 0; end
end end endmodule
Сообщение отредактировал M!TyA - Mar 10 2018, 16:52
|
|
|
|
|
 |
Ответов
|
Mar 10 2018, 18:48
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-10-05
Пользователь №: 9 192

|
Спасибо за советы!
А зачем задний фронт ? При спаде клока значения в устоявшемся состоянии. Ну судя по документации.
И еще добавлю... А АЦП имеет знаковый формат или беззнаковый? +-0.5В или +-1 Offset binary output.
Так после замены на неблокирующие присваивание код правильный, то есть искать проблемы надо в железе, а не в коде?
До этого не писал ничего для плис, так сказать первый блин)
Сообщение отредактировал M!TyA - Mar 10 2018, 19:05
|
|
|
|
|
Mar 10 2018, 19:42
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(M!TyA @ Mar 10 2018, 21:48)  А зачем задний фронт ? При спаде клока значения в устоявшемся состоянии. Ну судя по документации.
И еще добавлю... А АЦП имеет знаковый формат или беззнаковый? +-0.5В или +-1 Offset binary output.
До этого не писал ничего для плис, так сказать первый блин) То, что "блин", можно не объяснять. Это и так видно... "знаковый формат или беззнаковый" - не по входу, а по представлению двоичных данных на выходе АЦП. При "знаковом" формате, необходима и "знаковая арифметика"... Вы ищите максимум. А какой? С учетом знака или по абсолютной величине сигнала? Какой сигнал "больше": -0,3В или +0,2В ?? И какие "проблемы" Вы ищите? Можете их описать? Или "вот какой код и что в нем не так"?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Mar 10 2018, 20:00
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-10-05
Пользователь №: 9 192

|
Условно беззнаковый, АЦП диф после диф усилителя, смотрю только значения от 512 до 1023 (потом планирую оптимизировать под полный диапазон). На выход ацп приходят редкие импульсы (0-0.5В), нахожу амплитуду и отправляю дальше.
Из проблем, что на выходе всякая фигня, а не точная амплитуда...
|
|
|
|
|
Mar 10 2018, 20:30
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(M!TyA @ Mar 10 2018, 23:00)  Условно беззнаковый, АЦП диф после диф усилителя, смотрю только значения от 512 до 1023 (потом планирую оптимизировать под полный диапазон). На выход ацп приходят редкие импульсы (0-0.5В), нахожу амплитуду и отправляю дальше.
Из проблем, что на выходе всякая фигня, а не точная амплитуда... Упрямство не приводит к цели. Вы считаете, что подаете на вход 0В. Но при этом даете показания: "+-1 Offset binary output"... Это что? Смещение нуля в цифре? Т.е. при подаче на вход 0В, на выходе может получиться 1 LSB. Причем может быть как со знаком "плюс", так и "минус". Какой при этом код АЦП выдаст на выход? А поскольку на вход АЦП можно подавать и отрицательные значения, то кодировка "знаковая" вполне возможна... Уберите со входа "импульсы" и подайте напряжения с постоянного источника. А то, что получили из АЦП скиньте из ПЛИС в хост. И уже там проводите полный "разбор полетов"...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Mar 10 2018, 20:43
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 3-10-05
Пользователь №: 9 192

|
Цитата(iosifk @ Mar 10 2018, 23:30)  Упрямство не приводит к цели. Вы считаете, что подаете на вход 0В. Но при этом даете показания: "+-1 Offset binary output"... Это что? Смещение нуля в цифре? Т.е. при подаче на вход 0В, на выходе может получиться 1 LSB. Причем может быть как со знаком "плюс", так и "минус". Какой при этом код АЦП выдаст на выход? А поскольку на вход АЦП можно подавать и отрицательные значения, то кодировка "знаковая" вполне возможна...
Уберите со входа "импульсы" и подайте напряжения с постоянного источника. А то, что получили из АЦП скиньте из ПЛИС в хост. И уже там проводите полный "разбор полетов"... Если на вход АЦП 0 В выход 1000000000, если 0.5В то будет 1111111111
|
|
|
|
|
Mar 10 2018, 21:13
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(M!TyA @ Mar 10 2018, 23:43)  Если на вход АЦП 0 В выход 1000000000, если 0.5В то будет 1111111111 И ещё немного добавлю: АЦП Вам шлет данные. Но данные эти должны быть правильно приняты. Без правильных констрейнов достоверность данных не гарантируется... И можно очень долго менять HDL код, но так и не принять правильно данные. Попробуйте включить режим "Data aligned".
|
|
|
|
Сообщений в этой теме
M!TyA Verilog, Altera + ADC нахождение максимума. Mar 10 2018, 16:52 OM-S Кажется в блоке always нужно заменить блокирующее ... Mar 10 2018, 17:52 iosifk Цитата(Flip-fl0p @ Mar 10 2018, 21:1... Mar 10 2018, 18:29       M!TyA Цитата(Flip-fl0p @ Mar 11 2018, 00:1... Mar 10 2018, 21:55        iosifk Цитата(M!TyA @ Mar 11 2018, 00:55) А ... Mar 11 2018, 07:44         M!TyA Цитата(iosifk @ Mar 11 2018, 10:44) Вы бы... Mar 11 2018, 17:46          iosifk Цитата(M!TyA @ Mar 11 2018, 20:46) См... Mar 11 2018, 18:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|