我正在开展一个项目,我用ADC对信号进行采样,将值表示为14位字。我需要将值缩放为8位字。一般来说,这是一个很好的方法。顺便说一下,我正在使用FPGA,所以我想在“硬件”而不是软件解决方案中使用它。如果您想知道事件链将是:采样模拟信号,用14位字表示采样值,将14位字缩放到8位字,用UART将8位字发送到PC COM1。
我以前从未这样做过。我假设你使用量化级别,但我不确定这个操作的有效电路是什么。任何帮助,将不胜感激。
由于
答案 0 :(得分:3)
我认为你只丢掉六个最低分辨率的位并称之为好,对吧?但我可能不完全理解问题陈述。
答案 1 :(得分:3)
你只需要一个添加和一个班次:
val_8 = (val_14 + 32) >> 6;
(+ 32
是获得正确舍入所必需的 - 你可以省略它,但是如果你这样做,你的信号会产生更多的截断噪声。)
答案 2 :(得分:2)
保罗的算法是正确的,但你需要一些边界检查。
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];