Olegus 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Может кто подскажет как в Matlab System generator набрать схемку которая бы считала количество импульсов на входе? Хочу декодировать PDM сигнал с микрофона. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Сначала наберите такую схемку просто в Симулинке с помощью Симулинковских блоков и промоделируйте пока она не будет работать. Потом: - введите в схему Gateway и поменяйте все блоки, которые пойдут в FPGA на блоки из блоксета System Generator - приведите все floating point сигналы к fixed point с учетом квантизации и переполнения. Задайте типы, количество бит и позицию запятой для них. - Промоделируйте и проверьте, что схема работает так, как вам нужно - теперь включайте pipelining delay для сложных блоков, так как иначе будут проблемы с таймингом - продолжайте моделировать - генерите код Примерно так, более подробно расписано и описано во всяких тренировочных мануалах. Есть еще вариант сразу начать делать схему в system Generator, но это не для начинающих и требуется только в том случае, если знаете изначально, что будете использовать специализированные блоки от Xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegus 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба Надо набрать схемку в SG чтобы считала количество импульсов (единиц). Можно ли задействовать для этого блок Counter? чтобы он считал количество внешних тактов (импульсов)? Это вроде не сложно и поэтому я хотел бы сразу в SG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 hour ago, Olegus said: Можно ли задействовать для этого блок Counter? чтобы он считал количество внешних тактов (импульсов)? Это вроде не сложно и поэтому я хотел бы сразу в SG. Схема довольно элементарная. Кидаете на схему фильтр-дециматор и все. Дальше только сгенерить сорсы остается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 6 hours ago, Olegus said: Может кто подскажет как в Matlab System generator набрать схемку которая бы считала количество импульсов на входе? Хочу декодировать PDM сигнал с микрофона. Не получится считать импульсы, обычно в PDM есть постоянная составляющая, количество единиц, превышает нули и есть смещение спектра шума... Только НЧ фильтр, как уже сказали! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegus 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 минуту назад, _4afc_ сказал: Не получится считать импульсы, обычно в PDM есть постоянная составляющая, количество единиц, превышает нули и есть смещение спектра шума... Только НЧ фильтр, как уже сказали! Где бы почитать о том что за фильтр и как декодировать PDM? Неужели нет примеров по PDM в Matlab Simulink? Вроде известная штука? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsl2640free 0 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба есть пример по PDM в верилог `timescale 1ns / 1ps module Mic_Demo( output anout, output ampSD, output sclk, output ncs, input sdata, input clk ); reg [4:0]clk_cntr_reg; reg pwm_val_reg; always @(posedge clk) begin clk_cntr_reg <= clk_cntr_reg + 1; end always @(posedge clk) begin if(clk_cntr_reg == 5'b01111) begin pwm_val_reg <= sdata; end end //sclk = 100MHz / 32 = 3.125 MHz assign sclk = clk_cntr_reg[4]; assign anout = pwm_val_reg; assign ncs = 1'b0; //mic LRSel assign ampSD = 1'b1; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 3 hours ago, Olegus said: Где бы почитать о том что за фильтр и как декодировать PDM? Неужели нет примеров по PDM в Matlab Simulink? Вроде известная штука? Вот АЧХ сигнала 1кГц записанного микрофоном PDM 2МГц, очевидно, что для этого микрофона - перед децимацией нужен НЧ фильтр убирающий частоты выше 20кГц, уровень подавления - зависит от требуемого сигнал/шум. Вариантов построения фильтров - масса, каждый делает как ему нужно или насколько разбирается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 hour ago, _4afc_ said: очевидно, что для этого микрофона - перед децимацией нужен НЧ фильтр убирающий частоты выше 20кГц Не факт. Неизвестно чем вы сэмплировали. Выбросы на графике больше похожи на погрешности или баги целочисленных операций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 9 minutes ago, AlexandrY said: Не факт. Неизвестно чем вы сэмплировали. Выбросы на графике больше похожи на погрешности или баги целочисленных операций. Ничем не семплировал. Это функция pwelch matlab "double" от однобитного цифрового потока длиной 4 секунды, полученного с микрофона 521, находящегося внутри заглушённых наушников на которые подан сигнал 1кГц с компьютера. Всплески - это КНИ наушников, ну и в НЧ области, если хорошо почистить, можно найти вибрацию в здании ниже 10Гц... Могу дать эту запись побаловаться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 minute ago, _4afc_ said: Это функция pwelch matlab "double" от однобитного цифрового потока длиной 4 секунды, полученного с микрофона 521, находящегося внутри заглушённых наушников на которые подан сигнал 1кГц с компьютера. Вопрос чем вы записали (т.е. сэмплировали) этот самый однобитный поток? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 13 minutes ago, AlexandrY said: Вопрос чем вы записали (т.е. сэмплировали) этот самый однобитный поток? На микрофон подавался клок, с микрофона снимались данные. Оба сигнала подавались на spi МК, который писал данные на флеш питаясь от аккумулятора (чтоб 50Гц не ловить). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 1 minute ago, _4afc_ said: На микрофон подавался клок, с микрофона снимались данные. Оба сигнала подавались на spi МК, который писал данные на флеш питаясь от аккумулятора (чтоб 50Гц не ловить). Вот там и надо ловить траблы. А дециматор сам является фильтром низкой частоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 19 марта, 2019 Опубликовано 19 марта, 2019 · Жалоба 9 minutes ago, AlexandrY said: Вот там и надо ловить траблы. А дециматор сам является фильтром низкой частоты. Нет там никаких проблем с сигналом. А ФНЧ - ФНЧ рознь. Некоторые CIC используют, потом говорят что 60дБ SNR не получить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 20 марта, 2019 Опубликовано 20 марта, 2019 · Жалоба 7 hours ago, _4afc_ said: Нет там никаких проблем с сигналом. А ФНЧ - ФНЧ рознь. Некоторые CIC используют, потом говорят что 60дБ SNR не получить... Читайте википедию - https://en.wikipedia.org/wiki/Cascaded_integrator–comb_filter Если че и фильтруют, то после CIC дециматора, чтобы не тратить зря энергию. Кстати, CIC дециматор - это просто бегущее среднее, но если бегущее среднее изобразить в симулинк, то получится очень медленный фильтр. Так что лучше генерить исходники прямо из блока CIC дециматора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться