|
|
  |
ацп+плис+цап, проблема с фильтром,с fixed point |
|
|
|
Jun 10 2014, 14:49
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923

|
здравствуйте. раньше не занимался фильтрацией на плис,поэтому столкнулся с проблемой при реализации полосового фильтра на xilinx. реализую пф с полосой 100кгц на частоте 450кгц. ацп и цап 10-разрядные. в fdatool использую следующие настройки fixed point: коэфф. использую 16-ти разрядные, вход и выход 10-разрядные,а вот величина fraction length вызвала некоторые вопросы, я не могу понять исходя из чего она выбирается... при синтезе нескольких вариантов я на выходе цап получаю или 0 вне зависимости от того что на входе ацп,или просто какую то генерацию импульсов не зависимо от входа(как предполагаю от переполнения...). правильность работы с ацп и цап проверял соединив их в плис на прямую. поэтому возникли два вопроса:
1.как правильно выбирать разрядность fixed point 2.данные ацп прежде чем подавать на фильтр надо преобразовывать?
|
|
|
|
|
Jun 10 2014, 15:02
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Valentin-k по поводу fixed point и fractional length: вот тут неплохая наглядная картинка есть Fixed-Point ArithmeticА если словами то наверное так: Цитата ...Простейший пример арифметики с фиксированной запятой — перевод рублей в копейки. В таком случае, чтобы запомнить сумму 12 рублей 34 копейки, мы записываем в ячейку памяти число 1234... Ну а если всё равно не понятно, тогда вам сюда: Fixed-Point Arithmetic: An Introductionили я вас не понял? (если вопрос в том - сколько бит? - тогда нужно считать ошибку и смотреть при скольки дробных битах она начинает вас устраивать)
|
|
|
|
|
Jun 11 2014, 04:02
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Ну плюс, даже если сигнал с АЦП вещественный, какая частота дискритезации АЦП, и согласован ли используемый фильтр с ней, может быть разумно децимацию сделать перед фильтрацией. Есть ли антиалайзинговый фильтр в системе?
Ну и самое главное, проведена ли симуляция проекта, перед тем как что-то делать с железкой? Если работаете с матлаб, то вообще замечательно. Делаете исходный тестовый сигнал, прогоняете через RTL симуляцию, потом обратно в матлаб и сравниваете с референсной моделью. На симуляции вы решите большинство вопросов с тем, что на что влияет. Какой должен быть порядок фильтра, какая должна быть разрядность данных, аккумуляторов, коэффициентов для обеспечения приемлемого для вас качества фильтрации.
|
|
|
|
|
Jun 11 2014, 09:23
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923

|
Цитата(Kuzmi4 @ Jun 10 2014, 22:12)  или я вас не понял? (если вопрос в том - сколько бит? - тогда нужно считать ошибку и смотреть при скольки дробных битах она начинает вас устраивать) точнее именно определение кол-ва бит интересует, точнее методика. но возможно причина в : Цитата(bogaev_roman @ Jun 11 2014, 08:49)  Что за ЦАП/АЦП ? У меня, например, после ацп в плис заходят многоразрядные p и n компоненты, где I и Q составляюшие одного канала идут попеременно, поэтому я ставлю DDR регистр, после них обычные и получаю многоразрядные I и Q компоненты. Если Вы просто взяли выход после дифференциального пина и подали на фильтр (а реально там несколько каналов или I и Q компоненты), то у Вас и будет мусор на выходе. Плюс еще этот мусор неправильно подается на вход ЦАП я использую AD9201, у него выход параллельный 10-ти битный или я все же что-то не досмотрел в даташите?! Цитата(Mad_max @ Jun 11 2014, 11:12)  Ну плюс, даже если сигнал с АЦП вещественный, какая частота дискритезации АЦП, и согласован ли используемый фильтр с ней, может быть разумно децимацию сделать перед фильтрацией. Есть ли антиалайзинговый фильтр в системе?
Ну и самое главное, проведена ли симуляция проекта, перед тем как что-то делать с железкой? Если работаете с матлаб, то вообще замечательно. Делаете исходный тестовый сигнал, прогоняете через RTL симуляцию, потом обратно в матлаб и сравниваете с референсной моделью. На симуляции вы решите большинство вопросов с тем, что на что влияет. Какой должен быть порядок фильтра, какая должна быть разрядность данных, аккумуляторов, коэффициентов для обеспечения приемлемого для вас качества фильтрации. частота дискретизации взята 3 МГц. меня пока что интересует только одиночный фильтр, точнее его реализация в железке, чтобы сократить расстояние отделяющее от теории до практики в ПЛИС. в Матлабе проигрывал - все устраивало, а вот RTL-симуляцию не пробовал. она подразумевает симуляцию в iSim? фильтра и типового сигнала?
|
|
|
|
|
Jun 12 2014, 03:21
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Valentin-k касательно вашего AD9201 - у него на выходе интегер, НО Цитата The AD9201 ADC outputs are interleaved onto a single output bus saving board space and digital pin count. Это надо учитывать когда загребаете данные с него (ASYNCHRONOUS MULTIPLEXER и всё такое): Figure 1. ADC Timing Ну а по симуляции RTL - я думаю вам лучше смотреть в сторону Modelsim. По сути то же что и в Matlab, но в другой среде. Можете начать с этого: ModelSim® Tutorial
|
|
|
|
|
Jun 23 2014, 14:43
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923

|
спасибо за советы, Active_hdl оказалась интересной средой, но проблему не решила...в принципе что в железе на осциллографе, что в симулинке, что в симуляции в ise все равно генерация...кстати fir compiler из logicore такой же результат дал... где то я туплю...но вот в fdatool получается что на выходе фильтра получается отфильтрованная частота только когда я ставлю параметр fraction length больше чем кол-во бит для входа и выхода (т.е. на вход и выход у меня 10 бит, а fraction length в районе 16...но сигнал очень низкоамплитудный, а вот fir compiler ограничивает диапазон аналогичного параметра значением входного слова, но в симулинке в данном диапазоне я не получаю полезного сигнала. кстати параметры fixed point мне наглядно объяснила табличка в даташите на fir compiler)
Сообщение отредактировал Valentin-k - Jun 23 2014, 14:46
|
|
|
|
|
Jun 23 2014, 15:31
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(Valentin-k @ Jun 23 2014, 18:43)  спасибо за советы, Active_hdl оказалась интересной средой, но проблему не решила...в принципе что в железе на осциллографе, что в симулинке, что в симуляции в ise все равно генерация...кстати fir compiler из logicore такой же результат дал... где то я туплю...но вот в fdatool получается что на выходе фильтра получается отфильтрованная частота только когда я ставлю параметр fraction length больше чем кол-во бит для входа и выхода (т.е. на вход и выход у меня 10 бит, а fraction length в районе 16...но сигнал очень низкоамплитудный, а вот fir compiler ограничивает диапазон аналогичного параметра значением входного слова, но в симулинке в данном диапазоне я не получаю полезного сигнала. кстати параметры fixed point мне наглядно объяснила табличка в даташите на fir compiler) Что-то подобное припоминаю с "уменьшением" амплитуды отфильтрованного сигнала. Увеличьте количество бит под дробную часть коэффициентов фильтра.
|
|
|
|
|
Jun 23 2014, 16:26
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923

|
Цитата(Mad_max @ Jun 23 2014, 18:31)  Что-то подобное припоминаю с "уменьшением" амплитуды отфильтрованного сигнала. Увеличьте количество бит под дробную часть коэффициентов фильтра. а куда больше?у меня получается длина слова - 10 бит, а на дробную часть отведено уже 16 - и тогда появляется ослабленный полезный сигнал 1.111111111111111 _._____1111111111 - получается я использую число такого вида (fix10_16), а не (fix10_9 скажем): 1.111111111______ Но если скажем симулинк в этом смысле особо не ограничивает, в fir compilere в параметрах ставится диапазон не больше чем заданное слово на входе, если 10 бит как у меня, то соответственно после точки максимум 10 бит...(хотя могу ошибаться, но кажись так) а кстати русскоязычные статьи-описания по logicore есть?
Сообщение отредактировал Valentin-k - Jun 23 2014, 16:28
|
|
|
|
|
Jun 24 2014, 14:39
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923

|
нашел косяк...я все изменения производил с размерностями входных и выходных слов, а размерности аккумулятора и пр не учитывал...симулинк показал хорошие графики... но в плисине пока не заработало, хотя хоть и генерации нет, только простые тычки редкие
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|