在FPGA中,随着信号处理层次加深,对信号进行乘、累加、滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源越多,但位宽超过一定范围后,位宽的增宽并不会对处理精度带来显著的改善,这时就需要对信号进行截位。写过FPGA HDL代码的童鞋应该都知道,截位是最为经常的一种操作。
一般来说,截位只需要截掉低几位即可,这时最简单的做法:对于无符号数来说,这样做也没有问题;当然也有四舍五入的截位方法,就是给地位加1后再进行截位。
下面讨论三种截位策略:1)直接截位;2)复数截位后加1;3)复数取绝对值后再截位。
在matlab中模拟FPGA截位过程,运行如下一段程序,得到四幅图。

a=10000*randn(1,1000);
%% 截位方式一:直接截位
b=floor(a/2^5);         %截去低5位
afft=fft(a);
bfft=fft(b);
figure;                  %观察原始信号与截位后信号的频谱
subplot(2,1,1);plot(abs(afft)/max(abs(afft)));grid;title('原始信号');
subplot(2,1,2);plot(abs(bfft)/max(abs(bfft)));grid;title('截位信号');
b=floor(a/2^12);        %截去低12位
afft=fft(a);bfft=fft(b);
figure;                 %观察原始信号与截位后信号的频谱
subplot(2,1,1);plot(abs(afft)/max(abs(afft)));grid;title('原始信号');
subplot(2,1,2);plot(abs(bfft)/max(abs(bfft)));grid;title('截位信号');  %%  截位方式二:负数截位后加1
b=zeros(1,length(a));
for ii=1:length(a)  if a(ii)<0  b(ii)=floor(a(ii)/2^12)+1; %截去低12位后加1  else  b(ii)=floor(a(ii)/2^12);   %直接截位  end
end
afft=fft(a);bfft=fft(b);
figure;                %观察原始信号与截位后信号的频谱
subplot(2,1,1);plot(abs(afft)/max(abs(afft)));grid;title('原始信号');
subplot(2,1,2);plot(abs(bfft)/max(abs(bfft)));grid;title('截位信号');%%   截位方式三:负数取绝对值后再截位
b=zeros(1,length(a));
for ii=1:length(a)  if a(ii)<0  b(ii)=-floor(-a(ii)/2^12); %负数取绝对值后截去低12位再变回原来符号  else  b(ii)=floor(a(ii)/2^12);   %直接截位  end
end
afft=fft(a);bfft=fft(b);
figure;                %观察原始信号与截位后信号的频谱
subplot(2,1,1);plot(abs(afft)/max(abs(afft)));grid;title('原始信号');
subplot(2,1,2);plot(abs(bfft)/max(abs(bfft)));grid;title('截位信号');


图一:直接截去低5位

图二:直接截去低12位

图三:截去低12位且复数截位加一

图四:截去低12位且复数取绝对值后再截位,截位完再变回原先的符号
由图三和图四可以看出,采用第二种和第三种截位策略后,直流分量消失。
其实第三种截位策略达到了这样一种效果:一对相反数在截位后仍然是一对相反数。这种效果在直接截位时对于奇数是达不到的。
其实直接截位之所以出现直流分量可以这样直观的来认识:从matlab程序中也可以看出,对于FPGA信号截位来说,实际上就是向下取整;对于有符号数来说,整数向下取整在数轴上是向原点零靠近,然后负数向下取整则是远离原点零了,这是因为负数以补码形式表示,它的补码所对应的无符号数经截位后向原点零靠近了,换算成有符号数的负数时,则是远离原点零了。因此截位实际造成的效果是符号整体向负无穷方向平移了,即对一个白噪声序列来讲,原本均值为零,截位后值变为了负数。

FPGA信号截位策略相关推荐

  1. fpga数据位宽截取_FPGA信号截位策略研究

    在FPGA中,随着信号处理的层次加深,对信号进行乘.累加.滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源就越多,但位宽超过一定范围后,位宽的增宽并不会对处理精度 ...

  2. 常用FPGA截位扩位方法及代码

    FPGA在进行数字信号处理时会涉及到很多的截位扩位操作,如FFT/IFFT,FIR滤波等.一般的位宽操作主要有扩高位,扩低位,截高位,截低位. 扩高位 在信号的高位填补多个符号位,信号的幅值不会发生变 ...

  3. 北斗三号b1c频点带宽_【导航论坛】北斗三号卫星导航信号及接收策略

    原标题:[导航论坛]北斗三号卫星导航信号及接收策略 编者按 以"5G/GNSS高精度定位与空间数据深度应用"为主题的高峰论坛上,来自清华大学的陆明泉教授为与会代表带来了题为< ...

  4. 基于FPGA的两位按键控制LED数码管加减计数实验

    两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...

  5. 北斗三号频点_【导航论坛】北斗三号卫星导航信号及接收策略

    原标题:[导航论坛]北斗三号卫星导航信号及接收策略 编者按 以"5G/GNSS高精度定位与空间数据深度应用"为主题的高峰论坛上,来自清华大学的陆明泉教授为与会代表带来了题为< ...

  6. 北斗三号卫星导航信号及接收策略

    一.北斗三号卫星导航信号的特点 从上个世纪九十年代初北斗一号立项到现在,我国的北斗卫星导航系统已经走过了二十多年的发展历程.根据三步走的发展计划,先后经历了北斗一号和北斗二号两个阶段,目前正在向北斗三 ...

  7. 北斗三号b1c频点带宽_北斗三号卫星导航信号及接收策略

    北斗三号卫星导航信号及接收策略 北斗三号系统的正式部署序幕,也终于揭开了北斗三号导航信号的面纱.根据这个ICD测试版,我们可以了解到北斗三号的一些基本情况,包括星座结构.导航信号.服务功能等,但服务性 ...

  8. 京微齐力:基于HMEP060的心率血氧模块开发(1:FPGA发送多位指令)

    目录 日常·唠嗑: 实验结果 一.硬件解析 1.国产FPGA:HMEP060 2.MAX30102心率传感器模块 二.程序设计 1.波特率计算(25MHz时钟) 2.顶层模块 3.子模块 三.工程获取 ...

  9. 数据传输完整性_基于IBIS模型的FPGA信号完整性仿真验证方法

    人工智能与深度学习等领域的快速发展,使得FPGA等器件应用范围愈加广泛,同时也要求器件的开关速率加快.引脚数量增多.但陡峭的时钟边沿和增加的引脚数使得杂散.耦合.寄生电容电感会对器件产生诸多信号完整性 ...

  10. SQLyog 的 截位数据库(又叫截断数据库)的作用

    突然发SQLyog有个功能叫截位数据库,位置在:右键数据库-更多数据库操作-截位数据库 试了一下,是把数据库下所有表给清空了,相当于将所有表执行了一次 TRUNCATE

最新文章

  1. JAVA抽象类和接口的区别【附经典分析用例Door】
  2. 高手都不用dw_雅诗兰黛DW粉底液好用吗?雅诗兰黛DW粉底液如何辨别真假?
  3. VTK:结构化网格之StructuredGrid
  4. android studio 连不上设备,Android Studio-设备已连接但“脱机”
  5. Apache Flink 零基础入门(八)Flink中指定算子的方式
  6. 随笔② Java中的关键字 --- final关键字
  7. cad渐开线齿轮轮廓绘制_如何在机械CAD软件中自动生成齿轮
  8. android在副屏中运行一个应用_android一个app打开另一个app的指定页面
  9. 服务目录-运维管理SLA服务
  10. 宏基ACER E1-471G拆机心得及注意事项
  11. Autocad中批量调整增强属性块中的元素的位置
  12. 支付路由适配服务技术实现
  13. java文章采集爬虫代码示例
  14. 前端研发生态环境构建经验谈
  15. Ubuntu 中文字体美化方案大全 (1): 概述篇
  16. OKCC外呼中心为什么要把语音引入WEB中?
  17. 安卓手机视频消重 去除qq短视频水印链接
  18. SWUST OJ 980
  19. 【日常】矩阵正态分布参数检验问题
  20. mysql 取24小时数据_mysql获取24小时前数据

热门文章

  1. MimeType对照表
  2. (42.1)【操作系统漏洞发现专题】操作系统漏洞之简介、分类、危害、发现工具、利用
  3. 给女朋友讲解什么是代理模式 【java3y将东西太有意思了】
  4. 学习TypeScript4这一篇就够了
  5. java贪吃蛇添加背景音乐_java代码中简单添加背景音乐(亲测有效)
  6. “M1芯片”电脑杀手:Windows笔记本电脑目前岌岌可危
  7. oracle保留小数位数
  8. 售前技能——寻找客户
  9. 关于大学生如何进行编码规范的火拼
  10. 申城最浪漫的法国普卢旺司餐厅--Bistro Latitude