基于FPGA的RC滤波器设计实现

目录

简介:

传递函数

FPGA代码实现

总结

 

简介:

RC滤波器的特性基本情况介绍

RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测试的领域中最经常用到的滤波器是RC滤波器。

9372093cbf9d4fd1bdd7b7e2f36e7846.png

这里我们主要认识和介绍低通滤波器。

尝试根据现有的知识,推导以下他的传递函数。

Uo/Ui=wl/wl+r

这里有个许哟注意的地方时标量还是向量的问题。

 

     最主要的原因,这个电路的电容是储能器件,电容左端a点在信号某个时刻的变化,如果要是传递到下一级,需要一个时间,这个时间一般叫时间常数,用τ表示,对于电阻不是储能器件,电阻前端的电流发生变化会立刻传递到后端,如果前级信号的变化传递到后级中间有个延时,就导致后级的信号和前级的信号有一定的相位差。对于理想电容来说,幅值可能没有变化,但是相位可能会有变化。相位的变化可通过反正切函数计算出来。

 

传递函数

     推导一阶滤波器的传递函数,重点介绍标量与向量之间的关系,有个博客写的非常好,可以借鉴过来

     阻抗等于电容的容抗+电阻,这个“+”是向量相加。
1.先计算电容的容抗,容抗值用Xc表示,单位Ω,Xc=1/(2πfc),f是频率,单位Hz,c是电容值,单位F;带入公式计算要用标准单位。

4cbbf3aea8a842b4b5f6ff57db26ee6f.png

 

a9ec97450ef046c3b988a9f23a089583.png

 

 

 

FPGA代码实现

这里我们主要介绍一阶滤波器的实现

主要借鉴代码的代码,实现滤波功能

一阶RC滤波器级联,一阶RC滤波器传递函数为:

Uo1/Ui1=1/(2*pi*RC*f)^2+1)^0.5,

依次迭代可算出级联型RC滤波器传递函数:

Uom/Ui1=1/((2*pi*RC*f)^2+1)^(0.5*m)  式中m表示级联的滤波器阶数

取Uom/Ui1=1/2^0.5来计算时间常数Tc与3dB截止带宽fcut-off之间的对应关系,得到:

Tc=(2^(1/m)-1)^0.5/(2*pi*fcut-off)

 

///

module RC_LP1_module_new(

    input           clk,

    input           clk_enable,

    input           reset,

    input [63:0]    filter_input,

    output reg signed [63:0] filter_output,

    input           in_valid,

    output reg     out_valid,

    input [47:0]    coe_a1,         //coefficients---------------

    input [47:0]    coe_b0

    );

 

reg         [47:0]  local_coe_a1;

reg         [47:0]  local_coe_b0;

reg  signed [63:0]  input_register;

reg         [2:0]   out_valid_counter;

wire signed [104:0] b0_mul1;

wire signed [104:0] a1_mul1;

wire signed [104:0] filter_sum;

 

(* keep = "true"*) reg [47:0] local1_coe_a1;

(* keep = "true"*) reg [47:0] local1_coe_b0;

 

always@(posedge clk or posedge reset)

begin

    if(reset==1) begin

        local_coe_a1 <= 48'd0;

        local_coe_b0 <= 48'd0;

    end

    else begin

        local_coe_a1 <= coe_a1;

        local_coe_b0 <= coe_b0;

        local1_coe_a1 <= local_coe_a1;

        local1_coe_b0 <= local_coe_b0;

    end

end

 

always@(posedge clk or posedge reset)

begin

    if(reset==1) begin

        input_register <= 64'sd0;

        out_valid <= 1'b0;

        out_valid_counter <= 3'd0;

    end

    else

        if(clk_enable==1 && in_valid==1) begin

            input_register <= filter_input;

            if(out_valid_counter == 3)

                out_valid <= 1'b1;

            else begin

                out_valid <= 1'b0;

                out_valid_counter <= out_valid_counter + 1'b1;

            end

        end

        else begin

            input_register <= 64'sd0;

            out_valid <= 1'b0;

            out_valid_counter <= 3'd0;

        end

end

 

always@(posedge clk or posedge reset)

begin

    if(reset==1)

        filter_output <= 64'sd0;

    else

        filter_output <= filter_sum[104:41];

end

 

mult_u41_s64 mult1(

    .A(local1_coe_b0[47:7]),

    .B(input_register),

    .P(b0_mul1)

    );

   

mult_u41_s64 mult2(

    .A(local1_coe_a1[47:7]),

    .B(filter_sum[104:41]),

    .P(a1_mul1)

    );

   

adder_s105_s105 adder1(

    .CLK(clk),

    .A(b0_mul1),

    .B(a1_mul1),

    .S(filter_sum)

    );    

 

edmodule

a8df2cfb3c9b4af094e424058b1c8705.png

 

 

a9ed4ac7c4c6474b83a96d7b0cd3d690.png

 

总结

FPGA实现的话两个乘法器和一个加法器即可,能满足单时钟周期计算出结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】十分钟带你了解java的前世今生

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【初始JAVA】 文章目录 前言JAVA介绍诞生&#x1f52c;名字与图标&#x1f916;发展&#x1f6e9;️未来&#x1fa84; 前言 玩过我的世界的朋友想必对JAVA以及它的图标都很熟悉&#xff0c;在游戏开始画面…

7.3 SpringBoot整合MyBatis分页插件github.pageHelper:实现图书列表API

文章目录 前言一、自己实现分页第一步&#xff0c;count 查询 总记录数&#xff08;totalCount&#xff09;&#xff0c;计算总页数&#xff08;totalPages&#xff09;第二步&#xff0c;limit 查询 指定页数据 二、不考虑分页的查询图书列表MapperBookServiceImplBookListPar…

FastDFS单机部署及SpringBoot整合

前言 FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括&#xff1a;文件存储、文件同步和文件访问&#xff08;文件上传和文件下载&#xff09;&#xff0c;可以解决高容量和负载平衡问题。FastDFS应满足其服务基于文件的网站的要求&#xff0c;如照片共享网站和视…

Maynor的博客专家成长之路——暨2023年中复盘

文章目录 博客专家成长之路——暨2023年中复盘前言念念不忘的博客专家每天只做三件事敲代码写博客健健身 我的感悟 不足之处未来&#xff1a;和CSDN共同成长最后 博客专家成长之路——暨2023年中复盘 前言 ​ 2023年不知不觉已经过去了半年有余&#xff0c;也是时候作年中复盘…

ChatGPT 是什么?

写在前面&#xff1a;这篇文章是今年1月份对chatgpt做调研学习时写的&#xff0c;都是从别处搬来的&#xff0c;纯扫盲的作用。本来一直以草稿的形势存在&#xff0c;但今天整理博客&#xff0c;顺便给发出来吧。 文章目录 1. ChatGPT简介1.1 ChatGPT 支持的场景举例 2 ChatGPT…

计算机网络————应用层

文章目录 概述域名系统DNS域名结构域名服务器解析过程常见的DNS记录DNS报文格式基础结构部分问题部分资源记录(RR, Resource Record)部分 万维网WWWURLHTTPHTTP发展HTTP报文结构请求报文响应报文 cookie 内容分发网络CDN 概述 应用层的具体内容就是规定应用进程在通信时所遵循的…

python数据分析之利用多种机器学习方法实现文本分类、情感预测

大家好&#xff0c;我是带我去滑雪&#xff01; 文本分类是一种机器学习和自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;旨在将给定的文本数据分配到预定义的类别或标签中。其目标是为文本数据提供自动分类和标注&#xff0c;使得可以根据其内容或主题进行组织、排…

【AI】PyTorch安装记录及Anaconda环境配置

【AI】PyTorch安装记录及Anaconda环境配置 说下本地环境&#xff0c;RTX4070 12GB GPU&#xff1b;618刚买&#xff0c;不能让他闲着&#xff0c;配置一下炼丹环境&#xff0c;开始为打工人工作。为了方便后续部署模型之间依赖不冲突&#xff0c;所以使用Anaconda管理Python环…

网络环境TFTPNFS搭建

文章目录 1. TFTP服务搭建2. NFS 环境搭建 1. TFTP服务搭建 1、Ubuntu上搭建TFTP服务器&#xff0c;需要安装tftp-hpa和tftpd-hpa&#xff0c;命令如下&#xff1a; sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd2、TFTP也需要一个文件夹来存放文件…

Django DRF - 【Token】认证基本使用

一. 前言 Django Rest Framework Token是Django Rest Framework中的一个扩展&#xff0c;用于实现用户认证和授权。它为每个用户生成一个唯一的Token&#xff0c;并将其存储在数据库中。在用户进行API请求时&#xff0c;用户需要在请求的HTTP Header中包含Token&#xff0c;这…

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法&#xff0c;考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为&#xff0c;对考生的行为进行自动抓拍&#xff0c;并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…

关于Apache Dubbo反序列化漏洞(CVE-2023-23638)的预警提示与对应的Zookeeper版本

公司在升级dubbo过程中因zookeeper版本不匹配&#xff0c;导致服务注册和调用出现异常 一、漏洞详情 Apache Dubbo是一款高性能、轻量级的开源Java服务框架。 Apache官方发布安全公告&#xff0c;修复了Apache Dubbo中的一个反序列化漏洞&#xff08;CVE-2023-23638&#xff…

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环&#xff0c;而GDB&#xff08;GNU调试器&#xff09;作为一款功能强大的调试工具&#xff0c;在开发者中得到广泛应用。除了传统的命令行调试功能外&#xff0c;GDB还提供了Python的GDB库&#xff0c;…

计算机网络——自顶向下方法(第一章学习记录)

什么是Internet? 可以从两个不同的方面来理解Internet。&#xff08;它的构成。它的服务&#xff09; 1.因特网的主要构成 处在因特网的边缘部分就是在因特网上的所有主机&#xff0c;这些主机又称为端系统&#xff08;end system&#xff09;&#xff0c;端系统通过因特网服…

【C2】文件,时间,多线程,动静态库

文章目录 1.文件&#xff1a;fprint/fgets/fwrite/fread&#xff0c;ftell/rewind/fseek/fflush1.1 文本文件&#xff1a;FILE结构体1.2 二进制文件&#xff1a;没有行概念1.3 文件定位&#xff1a;linux下文本文件模式和二进制文件模式没有区别。fgets和fprintf以行方式读写文…

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册

【测试效率提升技巧】xmind测试用例转换为excel工具使用手册 一、前置环境配置二、执行Xmind2testcase的转换方法1.在控制台输入xmind2testcase [path/xmind文件路径] [-csv] [-xml] [-json]&#xff0c;例&#xff1a;xmind2testcase /root/homin/XX测试点.xmind -csv ##在当前…

MacOS 升级golang版本后无法debug,升级delve版本

golang版本升级到1.20以后导致debug失效了&#xff0c;本文针对MacOS系统&#xff0c;win系统也可作参考。 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.4 (maximum supported version 1.19) 1、升级delve版本 brew install delve 安装…

抖音seo账号矩阵系统源码代开发组件

一.开发矩阵系统的项目背景&#xff1a; 目录 一.开发矩阵系统的项目背景&#xff1a; 二.短视频矩阵系统SaaS模板组件通常包含以下几个方面的内容&#xff1a; 三.抖音SEO账号矩阵系统源码的技术搭建过程可以分为几个步骤&#xff1a; 1.确定系统的需求和目标&#xff0c…

MATLAB App Designer基础教程 Matlab GUI入门(一)

MATLAB GUI入门 第一天 学习传送门&#xff1a; 【MATLAB App Designer基础教程Matlab GUI界面设计&#xff08;全集更新完毕-用户界面设计appdesigner&#xff08;中文&#xff09;Matlab Gui教程】 https://www.bilibili.com/video/BV16f4y147x9/?p2&share_sourcecopy_…

Spring Boot是什么?详解它的优缺点以及四大核心

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、Spring Boot 是什么&#xff1f; 二、Spring Boot 的优缺点 1、优点 ①可快速构建独立的 Spring 应用 ②直接嵌入Tomcat、Jett…