zoukankan      html  css  js  c++  java
  • 利用system generator 生成vivado ip—以低通滤波器举例

      前段时间自学了matlab和vivado联合推出的system generator工具,用来做数字信号处理,十分好用且使开发更便捷,下面举个例子来供大家一起学习下。

    首先打开matlab命令行,输入simulink。注意要先安装system generator ,这个网上有教程。

    然后新建一个model,拖入模块成我这样:

    一个一个来设置:首先是信号源,采样率模逆的WCDMA码速率,为3.84Mcps。                                                然后是Gateway In,这个是IP核的输入端口,设定如下:

                                                                           

     Register保持不变,事实上加不加好像都没什么影响。

    重点是滤波器的设计,先点开FDA tool,设计出一个通带截止点1MHz,阻带起始点1.2MHz的低通滤波器。

     然后打开FIR compiler7.2,设置如下:1)输入xlfda_numerator(‘FDATool’),绑定一个FDATool;2)量化形式选成跟随FDATool量化,一般都是16bit保持不变。

     接着做截断处理,这一步关系着IP输出位宽。然后勾选Provide enanle port,这样就多了个截断使能信号。

                                                        

     默认16bit位宽,滤波器输出位宽32bit,截断为16bit,损失了一些精度,但是减小了输出位宽。如果你想看各模块的数据位宽,可以点击model的菜单栏的Display->signals&Ports->Ports Datas type。

    然后设置system generator:1)主要找到对应的FPGA芯片型号,只有对应的型号才能调用该IP。2)设计输入时钟,为该IP的主时钟,仿真时钟设置为3.84MHz。

     最终连起来

     点击RUN,进行仿真,看看波形。频谱仪点红框可以看到双边谱,这里我就看了单边谱。

     

     结论:因为我的信号源是3.84Mcps的脉冲信号,频谱无限大,被一个单级低通滤波器限制带1MHz,阻带1.2MHz,功率下降了15个dbm,但是滤波器设计的是衰减80个db,看来实际用起来还是有一定差距。

    最后还是打开system generator,更改你想存放IP的文件夹,然后点gengerate。就生成了该低通滤波器的IP。

    至于如何在vivado中导入IP,网上也是有很多教程,这里就不细说了。

                                                                                                  

      

  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/johor-yangmumu/p/15133979.html
Copyright © 2011-2022 走看看