码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 升余弦滤波器的FPGA实现


    目录

    升余弦滤波器与无码间串扰(一)
    升余弦滤波器与无码间串扰(二)
    升余弦滤波器的FPGA实现

    一、FIR ip核

    成形滤波器采用vivado中的FIR ip核实现。滤波器的系数用matlab产生并转成coe文件。

    wire m_axis_data_tvalid;
    rcos_fir u_rcos_fir(
        .aclk(fs_clk),                              // input wire aclk
        .s_axis_data_tvalid(chip1_valid),           // input wire s_axis_data_tvalid
        .s_axis_data_tready(),                      // output wire s_axis_data_tready
        .s_axis_data_tdata({{6{chip1[1]}},chip1}),  // input wire [7 : 0] s_axis_data_tdata
        .m_axis_data_tvalid(m_axis_data_tvalid),    // output wire m_axis_data_tvalid
        .m_axis_data_tdata(rcos_out)                // output wire [15 : 0] m_axis_data_tdata
    );  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    二、FIR滤波器的输入输出

    FIR滤波器的输入数据是s_axis_data_tdata,输出数据是m_axis_data_tdata。输入和输出接口均采用AXIS总线,即接口的位数只能是8的倍数位。比如,输入为2位数据时,需要通过符号位扩展,将两位数据扩展为8位再给到FIR ip核的输入。

    • 符号位扩展,即把最高位(符号位)复制,直至所需位数。

    三、COE系数

    1.coe系数的格式

    首先要注意的是,FIR ip核与ROM ip核所需要的coe文件是不同的,它们的不同之处仅在于coe文件的前两行。

    • FIR ip核的coe文件格式要求

    在这里插入图片描述



    • ROM ip核的coe文件格式要求
      在这里插入图片描述

    2.matlab产生coe文件

    注意,matlab生成的滤波器系数是0~1之间的,不能直接导入FIR ip核中,需要先进行系数量化。系数量化可以理解为将所有的小数乘一个整数然后取整,用这些得到的整数来代替原来的小数。

    • 系数量化
      若将系数量化为11位,即用11位二进制表示原来的小数,则将小数乘(2^11-1)然后取整。
    %% -----------------产生coe文件----------------- %%
    clear;clc
    load shape_fir.mat
    y=shape_fir;
    
    N=11;           % 滤波器系数用11位二进制表示
    y=y/max(y);     % 归一化
    y=y*(2^N-1);   
    y=round(y);
    
    fid=fopen('rcos.coe','w');%打开一个.coe文件
    %存放ROM中的.coe文件第一行字符串,16表示16进制,可以改成其他进制
    fprintf(fid,'radix=10;\n');
    %存放在ROM中的.coe文件第二行字符串
    fprintf(fid,'coefdata=\n');
    %把前255个数据写入.coe文件中,并用逗号隔开,每行一个数据
    fprintf(fid,'%d,\n',y(1:end-1));
    %把最后一个数据写入.coe文件中,并用分号结尾
    fprintf(fid,'%d;\n',y(end));
    fclose(fid);%关闭文件指针
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    CAS与原子类
    【js基础】js中常用的操作数组的方法
    ioremap()
    宗老师团队国家工程-园区GIS应用
    Ubuntu20.04安装EasyConnect后兼容性问题无法启动的解决方法
    小啊呜产品读书笔记001:《邱岳的产品手记-13》第24讲 产品案例分析:PathSource的混乱与直观 & 25讲 产品世界的暗黑模式:操纵的诱惑
    善用Google搜索,资源唾手可得
    基站天线交叉极化比测量的不确定度评定
    QT-串口工具
    初认识vue,v-for,v-if,v-bind,v-model,v-html等指令
  • 原文地址:https://blog.csdn.net/weixin_45545092/article/details/127873903
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号