масштабировать 14-битное слово в 8-битное слово - PullRequest
3 голосов
/ 10 марта 2012

Я работаю над проектом, в котором я сэмплирую сигнал с АЦП, который представляет значения в виде 14-битных слов. Мне нужно масштабировать значения до 8-битных слов. Какой хороший способ пойти об этом в общем. Кстати, я использую FPGA, поэтому я хотел бы сделать это в «аппаратном», а не программном решении. Также в случае, если вам интересно, цепочка событий будет: выборка аналогового сигнала, представление значения выборки с помощью 14-разрядного слова, масштабирование 14-разрядного слова в 8-разрядное слово, передача 8-разрядного слова с UART на ПК COM1.

Я никогда не делал этого раньше. Я предполагал, что вы используете уровни квантования, но я не уверен, какой будет эффективная схема для этой операции. Любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 марта 2012

Вам просто нужно добавить и сместить:

val_8 = (val_14 + 32) >> 6;

(+ 32 необходимо для правильного округления - вы можете его опустить, но вы получите больше шума усечения в вашем сигнале, если вы это сделаете.)

3 голосов
/ 10 марта 2012

Я думаю, что вы просто отбрасываете шесть битов с самым низким разрешением и называете это хорошо, верно?Но я не совсем понимаю формулировку проблемы.

2 голосов
/ 12 марта 2012

Алгоритм Пола верен, но вам понадобится проверка границ.

assign val_8 = (&val_14[13:5]) ?  //Make sure your sum won't overflow
                         8'hFF :  //Assign all 1's if it will
                         val_14[13:6] + val_14[5];
...