news 2026/3/27 4:12:50

FPGA应用开发和仿真【3.3】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA应用开发和仿真【3.3】
7.1.4 离散量化信号的信噪比

不失一般性,考虑一个幅度为1、频率为1的正弦信号a(t)=sin(2πt),经过采样周期Ts的采样离散化之后,如果被DAC以零阶保持特性输出,将得到信号:

如果还经过分辨力δ的量化,取最接近的量化阶梯,将得到信号:

其中 符号表示取最接近自变量的整数。显然,信号x(t)与原信号a(t)存在偏差:

这个偏差也称为量化噪声。

图7-6所示是Ts=0.05、δ=0.05时a(t)、x(t)和e(t)的波形。

显然,Ts越小,δ越小,DAC输出信号的偏差越小,这些偏差在频域中主要是上节所述的频谱镜像。虽然可以通过模拟滤波器滤除大部分,但这就是系统设计者需要考虑的数字系统复杂度和模拟系统复杂度的平衡问题了。采样率越大,量化分辨率越大,DAC输出的量化噪声越小,对模拟重构滤波器的要求越低,但数字系统复杂度高;而如果降低数字系统复杂度,降低采样率和量化分辨率,对模拟重构滤波器的要求就会变高。

图7-6 信号的量化误差

a(t)的能量和e(t)的能量之比,称为这个单频信号的信噪比:

7.2 数值计算

7.2.1 乘法

在FPGA中做乘法,使用乘法运算符“*”即可,前面已有很多例子了。如果是变量和变量的乘法,FPGA编译工具会根据情况选择使用专用乘法单元(如果有)或者使用通用逻辑单元实现。

如果是变量和常量的乘法,常用移位求和的方法:

其中“>>>”和“<<<”分别为算术右移和算术左移运算符。

考虑常量b=0b0.0111,如果直接用上式计算:

共需要3次移位和3次加法。而b=0b0.0111=0b0.1-0b0.0001,所以:

仅使用两次移位和两次加法(减法同加法)。

再比如:0b1011100111=0b10100101001,“1”位表示减去该位的权,这种二进制数值表达法称为CSD表达。依据常量的CSD表达来进行移位加减,计算变量与常量之积的乘法器称为CSD乘法器,CSD乘法器比直接移位相加在数量上平均节省1/3的加法器。

遇到变量和常量乘法,FPGA工具一般会自行使用通用逻辑单元来实现CSD乘法器,仍然是一个乘法运算符“*”即可。

使用乘法运算符“*”实现的乘法器,无论是专用乘法单元实现的还是通用逻辑单元实现的,都主要是组

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 11:24:22

深入解析HMAC:消息认证码的核心原理

好的&#xff01;我们来对 HMAC&#xff08;Hash-based Message Authentication Code&#xff0c;基于哈希的消息认证码&#xff09; 进行一次全面、深入且结构清晰的详解。 HMAC 是现代密码学和网络安全中确保数据完整性与身份认证的核心工具。它不是用来加密数据的&#xff…

作者头像 李华
网站建设 2026/3/27 0:20:07

【课程设计/毕业设计】基于python机器学习的苹果和西红柿识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/18 5:15:38

Linux Kernel 4.4 `printk` 源码分析与使用详解

Linux Kernel 4.4 printk 源码分析与使用详解 参考资料&#xff1a;百问网 - UART子系统Kernel版本&#xff1a;Linux 4.4.154开发板&#xff1a;Firefly-RK3288关键文件&#xff1a;kernel/printk/printk.c, include/linux/kern_levels.h 一、printk 的基本使用与打印级别 调…

作者头像 李华
网站建设 2026/3/27 0:20:08

要实现应用的高弹性、可扩展性与快速迭代,可以结合现代云原生技术栈,包括容器化(如Docker)、Kubernetes编排、微服务架构

要实现应用的高弹性、可扩展性与快速迭代&#xff0c;可以结合现代云原生技术栈&#xff0c;包括容器化&#xff08;如Docker&#xff09;、Kubernetes编排、微服务架构、服务网格&#xff08;如Istio&#xff09;以及CI/CD流水线。以下是整体架构设计与关键实践&#xff1a;容…

作者头像 李华
网站建设 2026/3/27 0:20:24

【Qt改变虚拟键盘的大小】

默认情况下qtvirtualkeyboard占据了半个屏幕 可以通过修改源码的方式来修改其大小。 1.找到desktopinputpanel.cpp,参考路径 2.修改show函数注释的代码为源文件原来的代码。 3.键盘样式修改需要修改对应的qml文件&#xff0c;路径为qtvirtualkeyboard/src/virtualkeyboard/cont…

作者头像 李华