精华内容
下载资源
问答
  • digital filter

    2009-09-11 21:51:44
    Digital filter: low pass filter, high pass filter, band filter, baterworth filter
  • Digital filter

    2018-06-10 22:49:00
    https://ww2.mathworks.cn/help/signal/examples/practical-introduction-to-digital-filter-design.html Design filter via matlab: d= designfilt(resp,Name,Value)designs adigitalFil...

     https://ww2.mathworks.cn/help/signal/examples/practical-introduction-to-digital-filter-design.html

    Design filter via matlab:

    d = designfilt(resp,Name,Value) designs a digitalFilter object, d, with response type resp. Specify the filter further using a set of Name,Value pairs. The allowed specification sets depend on the response type, resp, and consist of combinations of the following:

    • Frequency constraints correspond to the frequencies at which a filter exhibits a desired behavior. Examples include 'PassbandFrequency'and 'CutoffFrequency'. (See the complete list under Name-Value Pair Arguments.) You must always specify the frequency constraints.

    • Magnitude constraints describe the filter behavior at particular frequency ranges. Examples include 'PassbandRipple' and 'StopbandAttenuation'. (See the complete list under Name-Value Pair Arguments.) designfilt provides default values for magnitude constraints left unspecified. In arbitrary-magnitude designs you must always specify the vectors of desired amplitudes.

    • 'FilterOrder'. Some design methods let you specify the order. Others produce minimum-order designs. That is, they generate the smallest filters that satisfy the specified constraints.

    • 'DesignMethod' is the algorithm used to design the filter. Examples include constrained least squares ('cls') and Kaiser windowing ('kaiserwin'). For some specification sets, there are multiple design methods available to choose from. In other cases, you can use only one method to meet the desired specifications.

    • Design options are parameters specific to a given design method. Examples include 'Window' for the 'window' method and optimization 'Weights' for arbitrary-magnitude equiripple designs. (See the complete list under Name-Value Pair Arguments.) designfilt provides default values for design options left unspecified.

    • 'SampleRate' is the frequency at which the filter operates. designfilt has a default sample rate of 2 Hz. Using this value is equivalent to working with normalized frequencies.

     

    Note

    If you specify an incomplete or inconsistent set of name-value pairs at the command line, designfilt offers to open a Filter Design Assistant. The assistant helps you design the filter and pastes the corrected MATLAB® code on the command line.

    If you call designfilt from a script or function with an incorrect set of specifications, designfilt issues an error message with a link to open a Filter Design Assistant. The assistant helps you design the filter, comments out the faulty code in the function or script, and pastes the corrected MATLAB code on the next line.

     

     

    • Use filter in the form dataOut = filter(d,dataIn) to filter a signal with a digitalFilterd.

    • Use fvtool to visualize a digitalFilterd.

    • Type d.Coefficients to obtain the coefficients of a digitalFilterd. For IIR filters, the coefficients are expressed as second-order sections.

    • See digitalFilter for a list of the filtering and analysis functions available for use with digitalFilter objects.

     

    designfilt(d) lets you edit an existing digital filter, d. It opens a Filter Design Assistant populated with the filter’s specifications, which you can then modify. This is the only way you can edit a digitalFilter object. Its properties are otherwise read-only.

    FIR Filter Design

    Lowpass Filter Specifications

    The ideal lowpass filter is one that leaves unchanged all frequency components of a signal below a designated cutoff frequency, , and rejects all components above . Because the impulse response required to implement the ideal lowpass filter is infinitely long, it is impossible to design an ideal FIR lowpass filter. Finite length approximations to the ideal impulse response lead to the presence of ripples in both the passband () and the stopband () of the filter, as well as to a nonzero transition width between passband and stopband.

    Both the passband/stopband ripples and the transition width are undesirable but unavoidable deviations from the response of an ideal lowpass filter when approximated with a finite impulse response. These deviations are depicted in the following figure:

     

     

    • Practical FIR designs typically consist of filters that have a transition width and maximum passband and stopband ripples that do not exceed allowable values. In addition to those design specifications, one must select the filter order, or, equivalently, the length of the truncated impulse response.

    A useful metaphor for the design specifications in filter design is to think of each specification as one of the angles in the triangle shown in the figure below.

     

     

    The triangle is used to understand the degrees of freedom available when choosing design specifications. Because the sum of the angles is fixed, one can at most select the values of two of the specifications. The third specification will be determined by the particular design algorithm. Moreover, as with the angles in a triangle, if we make one of the specifications larger/smaller, it will impact one or both of the other specifications.

    FIR filters are very attractive because they are inherently stable and can be designed to have linear phase. Nonetheless, these filters can have long transient responses and might prove computationally expensive in certain applications.

    Minimum-Order FIR Designs

    Minimum-order designs are obtained by specifying passband and stopband frequencies as well as a passband ripple and a stopband attenuation. The design algorithm then chooses the minimum filter length that complies with the specifications.

    Design a minimum-order lowpass FIR filter with a passband frequency of 0.37*pi rad/sample, a stopband frequency of 0.43*pi rad/sample (hence the transition width equals 0.06*pi rad/sample), a passband ripple of 1 dB and a stopband attenuation of 30 dB.

    Fpass = 0.37; 
    Fstop = 0.43;
    Ap = 1;
    Ast = 30;
    
    d = designfilt('lowpassfir','PassbandFrequency',Fpass,...
      'StopbandFrequency',Fstop,'PassbandRipple',Ap,'StopbandAttenuation',Ast);
    
    hfvt = fvtool(d);

    The resulting filter order can be queried using the filtord function.

    N = filtord(d)
    N = 39
    

    You can use the info function to get information about the parameters used to design the filter

    info(d)
    ans = 17x44 char array
        'FIR Digital Filter (real)                   '
        '-------------------------                   '
        'Filter Length  : 40                         '
        'Stable         : Yes                        '
        'Linear Phase   : Yes (Type 2)               '
        '                                            '
        'Design Method Information                   '
        'Design Algorithm : Equiripple               '
        '                                            '
        'Design Specifications                       '
        'Sample Rate     : N/A (normalized frequency)'
        'Response        : Lowpass                   '
        'Specification   : Fp,Fst,Ap,Ast             '
        'Stopband Atten. : 30 dB                     '
        'Passband Ripple : 1 dB                      '
        'Stopband Edge   : 0.43                      '
        'Passband Edge   : 0.37                      '
    

     

    Fixed Order, Fixed Transition Width

    Fixed-order designs are useful for applications that are sensitive to computational load or impose a limit on the number of filter coefficients. An option is to fix the transition width at the expense of control over the passband ripple/stopband attenuation.

    Consider a 30-th order lowpass FIR filter with a passband frequency of 370 Hz, a stopband frequency of 430 Hz, and sample rate of 2 kHz. There are two design methods available for this particular set of specifications: equiripple and least squares. Let us design one filter for each method and compare the results.

    N = 30;
    Fpass = 370;
    Fstop = 430;
    Fs = 2000; 
    
    % Design method defaults to 'equiripple' when omitted
    deq = designfilt('lowpassfir','FilterOrder',N,'PassbandFrequency',Fpass,...
      'StopbandFrequency',Fstop,'SampleRate',Fs);
    
    dls = designfilt('lowpassfir','FilterOrder',N,'PassbandFrequency',Fpass,...
      'StopbandFrequency',Fstop,'SampleRate',Fs,'DesignMethod','ls');
    
    hfvt = fvtool(deq,dls);
    legend(hfvt,'Equiripple design', 'Least-squares design')

    Equiripple filters are ideally suited for applications in which a specific tolerance must be met, such as designing a filter with a given minimum stopband attenuation or a given maximum passband ripple. On the other hand, these designs may not be desirable if we want to minimize the energy of the error (between ideal and actual filter) in the passband/stopband.

    • If you want to reduce the energy of a signal as much as possible in a certain frequency band, use a least-squares design.

    In the examples above, the designed filters had the same ripple in the passband and in the stopband. We can use weights to reduce the ripple in one of the bands while keeping the filter order fixed. For example, if you wish the stopband ripple to be a tenth of that in the passband, you must give the stopband ten times the passband weight. Redesign the equiripple filter using that fact.

    deqw = designfilt('lowpassfir','FilterOrder',N,'PassbandFrequency',Fpass,...
      'StopbandFrequency',Fstop,'SampleRate',Fs,...
      'PassbandWeight',1,'StopbandWeight',10);
    
    hfvt = fvtool(deq,deqw);
    legend(hfvt,'Equiripple design', 'Equiripple design with weighted stopband')

    Fixed Order, Fixed Cutoff Frequency

    You can design filters with fixed filter order and cutoff frequency using a window design method.

    • You can use different windows to control the stopband attenuation while keeping the filter order unchanged.

    For example, consider a 100-th order lowpass FIR filter with a cutoff frequency of 60 Hz and a sample rate of 1 kHz. Compare designs that result from using a Hamming window, and a Chebyshev window with 90 dB of sidelobe attenuation.

    dhamming = designfilt('lowpassfir','FilterOrder',100,'CutoffFrequency',60,...
      'SampleRate',1000,'Window','hamming');
    
    dchebwin = designfilt('lowpassfir','FilterOrder',100,'CutoffFrequency',60,...
      'SampleRate',1000,'Window',{'chebwin',90});
    
    hfvt = fvtool(dhamming,dchebwin);
    legend(hfvt,'Hamming window', 'Chebyshev window')

    There are other ways in which you can specify a filter with fixed order: fixed cutoff frequency, passband ripple, and stopband attenuation; fixed transition width; and fixed half-power (3dB) frequency.

     

    IIR Filter Design

    One of the drawbacks of FIR filters is that they require a large filter order to meet some design specifications. If the ripples are kept constant, the filter order grows inversely proportional to the transition width. By using feedback, it is possible to meet a set of design specifications with a far smaller filter order. This is the idea behind IIR filter design. The term "infinite impulse response" (IIR) stems from the fact that, when an impulse is applied to the filter, the output never decays to zero.

    • IIR filters are useful when computational resources are at a premium. However, stable, causal IIR filters cannot have perfectly linear phase. Avoid IIR designs in cases where phase linearity is a requirement.

    Another important reason for using IIR filters is their small group delay relative to FIR filters, which results in a shorter transient response.

    Butterworth Filters

    Butterworth filters are maximally flat IIR filters. The flatness in the passband and stopband causes the transition band to be very wide. Large orders are required to obtain filters with narrow transition widths.

    Design a minimum-order Butterworth filter with passband frequency 100 Hz, stopband frequency 300 Hz, maximum passband ripple 1 dB, and 60 dB stopband attenuation. The sample rate is 2 kHz.

    Fp = 100;
    Fst = 300;
    Ap = 1;
    Ast = 60;
    Fs = 2e3;
    
    dbutter = designfilt('lowpassiir','PassbandFrequency',Fp,...
      'StopbandFrequency',Fst,'PassbandRipple',Ap,...
      'StopbandAttenuation',Ast,'SampleRate',Fs,'DesignMethod','butter');

    Chebyshev Type I Filters

    Chebyshev Type I filters attain smaller transition widths than Butterworth filters of the same order by allowing for passband ripple.

    • Butterworth and Chebyshev Type I filters both have maximally flat stopbands. For a given filter order, the tradeoff is between passband ripple and transition width.

    Design a Chebyshev Type I filter with the same specifications as the Butterworth filter above.

    dcheby1 = designfilt('lowpassiir','PassbandFrequency',Fp,...
      'StopbandFrequency',Fst,'PassbandRipple',Ap,...
      'StopbandAttenuation',Ast,'SampleRate',Fs,'DesignMethod','cheby1');

    Chebyshev Type II Filters

    • Chebyshev Type II filters have maximally flat passbands and equiripple stopbands.

    Since extremely large attenuations are typically not required, we may be able to attain the required transition width with a relatively small order by allowing for some stopband ripple.

    Design a minimum-order Chebyshev Type II filter with the same specifications as in the previous examples.

    dcheby2 = designfilt('lowpassiir','PassbandFrequency',Fp,...
      'StopbandFrequency',Fst,'PassbandRipple',Ap,...
      'StopbandAttenuation',Ast,'SampleRate',Fs,'DesignMethod','cheby2');

    Elliptic Filters

    Elliptic filters generalize Chebyshev and Butterworth filters by allowing for ripple in both the passband and the stopband. As ripples are made smaller, elliptic filters can approximate arbitrarily close the magnitude and phase response of either Chebyshev or Butterworth filters.

    • Elliptic filters attain a given transition width with the smallest order.

    dellip = designfilt('lowpassiir','PassbandFrequency',Fp,...
      'StopbandFrequency',Fst,'PassbandRipple',Ap,...
      'StopbandAttenuation',Ast,'SampleRate',Fs,'DesignMethod','ellip');

    Compare the response and the order of the four IIR filters.

    • For the same specification constraints, the Butterworth method yields the highest order and the elliptic method yields the smallest.

    FilterOrders = [filtord(dbutter) filtord(dcheby1) filtord(dcheby2) filtord(dellip)]
    FilterOrders = 1×4
    
         7     5     5     4
    
    
    hfvt = fvtool(dbutter,dcheby1,dcheby2,dellip);
    axis([0 1e3 -80 2]);
    legend(hfvt,'Butterworth', 'Chebyshev Type I',...
      'Chebyshev Type II','Elliptic')

     

    转载于:https://www.cnblogs.com/fellow1988/p/9164856.html

    展开全文
  • Digital Filter Design.pdf

    2011-05-27 09:42:19
    Digital Filter Design.pdf Digital Filter Design.pdf Digital Filter Design.pdf
  • Digital filter design

    2007-09-13 18:54:18
    Digital filter design
  • Digital Filter. Designer's Handbook. Featuring C Routines. C. Britton Rorabaugh. TAB BOOKS. Division of McGraw-Hill, Inc. Blue Ridge Summit,PA 17294-0850
  • Design of FIR Digital Filter

    2018-04-01 16:44:14
    Design of FIR Digital Filter:Design Linear Phase FIR filter by Kaiser window:Wp = 0.3π; Ws = 0.4π; As = 40dB;
  • Digital Signal Processing and Digital Filter Design
  • digital filter report

    2010-01-27 00:30:09
    RMIT 课程报告 EEET1150 是有关 digital filter 的研究报告
  • Realization of Digital Filter Structures in MATLAB.pdf
  • Practical Analog And Digital Filter Design
  • LabVIEW Tools for Digital Filter Design and Implementation LabVIEW Tools for Digital Filter Design and Implementation LabVIEW Tools for Digital Filter Design and Implementation LabVIEW Tools for ...
  • Digital Filter Design Lite v1.01 滤波器设计软件,来自micrchips
  • This documents presents a novel digital filter design for 3g applications. It provides a detailed descriptions with respect to the filter design using ads. I think it useful for whoever engaged in the...
  • 通过使用巴特沃斯近似的双线性变换的 IIR 数字滤波器
  • Practical Analog And Digital Filter 经典英文教材 模拟 数字 滤波器
  • Digital Filter Design

    2010-08-09 19:23:52
    一本讲数字滤波器设计的书,很经典,很适用
  • System Generator从入门到放弃(三)-Digital Filter 本文转自:https://blog.csdn.net/fpgadesigner/article/category/6985565/3 文章目录System Generator从入门到放弃(三)-Digital Filter一、Digital Filter1、...

    System Generator从入门到放弃(三)-Digital Filter

    本文转自:https://blog.csdn.net/fpgadesigner/article/category/6985565/3



      System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Simulink中进行定点仿真,可以设置定点信号的类型,这样就可以比较定点仿真与浮点仿真的区别。并且可以生成HDL文件,或者网表,可以在ISE中进行调用。或者直接生成比特流下载文件。能够加快DSP系统的开发进度。


    一、Digital Filter

    1、简介

    2、产生正弦信号

    2.1 本部分设计使用到的block

    3、数字滤波器的设计

    3.1 本部分设计使用到的block

    3.2 数字滤波器设计

    3.3 FPGA系统配置

    3.4 将设计导出到FPGA

    3.5 打开Vivado示例工程

    4、FDATool block的使用

    5、生成说明文档与testbench

    5.1 生成说明文档

    5.2 生成testbench

    6、资源分析与时序分析

    6.1 查看分析结果

    6.2 时序分析

    6.3 资源分析

    6.4 资时序/资源分析失败的说明


    以上内容请移步

    https://blog.csdn.net/Pieces_thinking/article/details/83656785


    7、Gateway In和Gateway Out详解

    7.1 Simulink到FPGA的转换

      Simulink中的仿真模型为连续时间系统,数据格式多种多样;而FPGA中为离散时间系统,数据必须用一定的位数进行量化。两者之间必须要进行从连续到离散的转换、数据格式的转换,否则无法进行正确的FPGA设计。Xilinx Blockset中提供了相应的解决方案。
    在这里插入图片描述

      Gateway In和Gateway Out这两个block便是Simulink与FPGA之间的转换接口。经过转换后,Gateway In对应的是HDL模型中input;Gateway Out对应的是HDL模型中的output。可以说,所有的System Generator设计中必须包含至少一个Gateway In和Gateway Out。

    7.2 Gateway In block

    7.2.1 数据类型转换

      Gateway In block可以完成从Simulink数据类型到FPGA数据类型的转换:
    在这里插入图片描述

      借助于此功能,在Simulink中搭建仿真模型,外部信号可以传入FPGA系统,方便的进行仿真测试。数据类型转换势必会牵扯到量化和溢出的问题,Gateway In block也对此做了相关支持,具体可参考参数设置小节。

    7.2.2 block特性

      除了数据类型转换功能外,Gateway In block还具有如下特性功能:

    • 定义了FPGA设计中的输入端口,修改block名称即可修改HDL端口信号名称;
    • 使用System Generator生成testbench时,软件会将输入到Gateway In
      block的Simulink仿真信号按照设置的数据格式转换并存储到dat文件中,在testbench中调用(具体可参考本系列上一篇博文)。

    7.2.3 参数设置

    在这里插入图片描述

      (1).在Output Type和Arithmetic type中可以设置转换后输出数据的格式:

    • Boolean:布尔逻辑值,在HDL模型中对应单比特信号。
    • Fixed-point:定点数,包括“Signed(2’s comp)”带符号数二进制补码和“Unsigned”无符号数两种。
    • Floating-point:浮点数,Floating-point
      Precision可以设置数据为单精度(Single)、双精度(Double)或自定义的浮点数格式(Custom,自行规定指数与尾数位宽)。

      (2).用有限位宽表示Simulink中的数据类型,必然会产生量化误差。在Quantization中可以选择数据的量化方式:

    • Truncate:直接舍弃不需要的低位。
    • Round(unbiased:+/-Inf):以四舍五入的方式量化。

      (3).数据转换过程中还可能会出现溢出(设置的数据格式无法表示Simulink中的值),Overflow中可以设置不同的处理方式:

    • Wrap:舍弃掉需要表示的值的高位。
    • Saturate:溢出的数转换为(所设置的数据格式能表达的)最大值或最小值。
    • Flag as error:溢出时Simulink会报错(这个选项只在Simulink仿真时有效,在导出到FPGA时仍当作wrap处理)。

    在这里插入图片描述

      这里可以设置Gateway In转换到FPGA设计后的接口类型:“None”表示作为HDL设计的输入端口;“AXI4-Lite”表示会被当作AXI4-Lite总线(目前不会用到,相关配置也暂时不做介绍)。

      IOB timing constraint设置该端口的时序约束:“None”表示不作约束;“Data rate”会将System Generator block中的系统时钟周期设置作为IO时钟约束。

      如果System Generator的设计中,Gateway In恰好对应于FPGA硬件设计中的某个管脚,可以选中“Specify IOB location constraints”,根据提示完成管脚位置与IO电平标准的设置。

    7.3 Gateway Out block

    7.3.1 block特性

      与上一个block相反,Gateway Out block是完成从FPGA数据类型到Simulink数据类型的转换。其具有如下特性:

      定义了FPGA设计中的输出端口,修改block名称即可修改HDL端口信号名称。Gateway Out还可以只作为测试端口,此时只是为了观察DSP系统内部,不会导出到FPGA设计中。
      使用System Generator生成testbench时,软件会把从Gateway Out block输出的Simulink仿真信号存储到dat文件中,在testbench中调用来帮助设计中检查设计是否符合预期。

    7.3.2 参数设置

    在这里插入图片描述

      当System Generator设计的DSP系统后续还接入了其它Simulink仿真模块时(即System Generator仅作为Simulink仿真的一个子系统),需要选中“Propagate data type to output”,将FPGA数据类型转换为相应的Simulink数据类型。

      当选中“Translate into output port”时,该block将会作为FPGA设计的输出端口;如果没有选中,则该block会被视作为了观察DSP系统内部信号的测试端口,同时该block在Simulink中显示为灰色,如下图:
    在这里插入图片描述

      “Implementation”标签下的设置与上一个block基本相同,不再赘述。


    8、设计优化与导入MATLAB变量

    8.1 优化设计

      在第4篇中我们进行了设计的资源分析,结果如下:
    在这里插入图片描述

      该设计使用了6个DSP单元,这是因为该FIR滤波器系数有11个,且具有对称性,因此需要使用6个乘法器并行运算。打开FDATool,点击上方的“Filter Coefficients”按钮,可查看滤波器系数:
      System Generator中FPGA时钟设置为20MHz;Gateway In block的采样率也为20MHz。这样每个时钟都要处理一个数据,因此在实现滤波器时采用了并行结构,占用了6个乘法器。

      我们可以设置过采样模式来优化设计的资源使用率。在System Generator block中将FPGA clock period设置为8.33ns(120Mhz);Simulink system period设置为1/120e6(120MHz);Gateway In的采样率比便。这样每6个时钟处理一个数据,期望所有的乘法操作能共用一个乘法器。

      点击Generate导出设计,此时Simulink会提示一个警告:
    在这里插入图片描述
      主要提示我们采样率和时钟的设置,本设计是故意采用这种设置方式的,因此不用在意这个警告。运行结束后,生成资源分析报告:
    在这里插入图片描述
      看到DSP单元只使用了一个,其它资源也节省了超过一半,符合预期。总而言之,在进行System Generator设计时,要综合考虑设计指标和硬件实际情况来对设计进行针对性优化。

    8.2 导入MATLAB变量

      Simulink已经提供了足够强大的功能,但有些设计还是需要在MATLAB中进行(比如考察位宽对数据量化的影响)。System Generator提供了该特性:可以将MATLAB的workspace中的变量直接用于block参数配置。

      假设在MATLAB中已经确定某一数据的最佳位宽,workspace如下:
    在这里插入图片描述
      打开Gateway In block(或其它需要配置该值的block),在编辑框里直接输入workspace中的变量名称即可:
    在这里插入图片描述
      所有的block都支持该特性。


    9、选择最佳数据类型


      目前,还有些问题需要解决:
    • 如何选择一个最合适的数据类型(以最少资源达到性能需求)?
    • 如何选择系统的输出位宽(保证信号不失真)?

      传统的HDL模型设计方法中,博主通常会用MATLAB进行仿真,确认位宽对数据量化的影响;或在Vivado中仿真,截取合适的滤波器输出位数。System Generator提供的相关特性可以大大简化该流程,本文将对此做介绍。


    9.1 本设计使用到的block

    Xilinx block

    • Convert(->Basic Elements):数据格式转换
    • Reinterpret(->Basic Elements):数据格式转换

    其它block

    • Digital Filter Design(DSP System Toolbox->Filtering->Filter
      Implementations):设计数字滤波器

      这里给出了设计中用到的所有block在库中的路径,后文不再提及(前文用过的block没有给出;同一block会包含在多个库中,为了寻找方便这里只列出一个路径)。

    9.2 FPGA设计与理想情况对比

      虽然在第2篇的设计中观察到输出信号的频谱图确实符合设计要求,但由于经过数据转换,数据类型、位宽等问题都会影响到计算精度,我们很难评估该结果与理想情况的偏差。

      Simulink环境可近似为理想环境,因此我们将System Generator滤波结果与Simulink的滤波结果作对比。添加Digital Filter Design到model中,该block的配置界面与FDATool工具完全相同,对输入信号进行滤波。此时model如下:
    在这里插入图片描述

      将Digital Filter Design与Digital FIR Filter的滤波器参数设置为完全相同(20Mhz采样、1.5MHz通带截止、8.5MHz阻带截止、0.01dB通带衰减、100dB阻带衰减)。运行,理想情况(左)与System Generator的输出频谱对比如下:

    在这里插入图片描述

      可以看到System Generator设计的滤波器,由于数据格式、位宽的影响,与理想情况下的频谱结果并不完全相同。对于设计者而言,需要考虑的就是这种差异是否可以接受,即是否会影响到实际的系统性能。

    9.3 不同字长定点数据的对比

      如果System Generator和理想情况之间的差异不能接受,就该考虑修改设计。FPGA设计可以考虑使用定点数据类型(Fixed-point)或浮点数据类型(Floating-point),但后者消耗的资源几乎是前者的十几倍甚至更多,设计中通常都采用定点数据格式。

      在System Generator再添加一组滤波器设计(可以复制粘贴),将Gateway In的数据格式设置为32-30Bits定点(32表示整体位宽,30表示小数部分位宽),与原来的16-14Bits定点数据格式作对比。此时的model如下:

    在这里插入图片描述

      如果运行后想观察整个model中的数据类型变化,可以在System Generator的General->Block icon display中选择“Input data types”或“Output data types”。运行完成后相关信息会显示在block上。
    在这里插入图片描述

      Fixed_32_30(右)与Fixed_16_14(左)的输出频谱对比如下:
    在这里插入图片描述

      可以看到提高了定点数的位宽后,计算精度明显提高,输出信号频谱与理想情况的频谱已经几乎相同。导出设计到FPGA,运行资源分析:

    在这里插入图片描述

      可以看到增加了数据位宽后,系统使用的FPGA资源几乎增加了一倍(FIR single与FIR fixed相比)。设计者需要在资源和性能之间衡量,选择最合理的设计。用类似的方法也可以比较不同滤波器系数位宽对FIR滤波系统的影响。

    9.4 系统输出位宽选择

      当使用Fixed_16_14格式时,FIR滤波器的输出位宽系统会自动设定为Fixed_36_33,这是全精度输出结果。而在FPGA设计中我们经常需要截位,否则位宽在整个系统中不断积累,大大增加资源的消耗。如何确定截取的位数呢?

      System Generator中有两个与此相关的block:Convert和Reinterpret,都可以进行数据的转换。Convert可以实现不同数据类型、不同位宽之间的转换,且可以设置量化和溢出的处理方式;Reinterpret可以实现数据类型之间的转换,还可以重新定义输出数据小数点的位置。

      添加这两个block到model中,按下图连接:
    在这里插入图片描述

      使用Convert将FIR输出的Fixed_36_33数据转换为Fixed_16_13数据;使用Reinterpret将小数点重定位在第31bit(即数据放大4倍),具体配置可参考本系列第8篇。运行仿真:

    在这里插入图片描述

      从频谱图对比可以看出,经过Convert转换后,输出信号的频谱情况进一步恶化,设计者需要考虑截位是否会影响到系统性能。

      使用Scope分别观察FIR输出、Convert转换后、Reinterpret转换后的信号:
    在这里插入图片描述

      可以看到Fixed_36_33和Fixed_16_13两种数据格式的信号波形几乎完全相同(第一和第二个波形)。Reinterpret由于将小数点从33bit重新定义到了31bit,相当于放大了4倍,输出信号的范围扩展为-4~4(Sine Wave block输出信号的幅度设置为1)。

      将用作测试端口的Gateway设置为不作为output,导出到FPGA中后,滤波器输出位宽只有16Bits(第2篇没有截位的设计为输出36Bits)。

    9.5 Scope使用技巧

      在第2篇中已经介绍了如何用Scope观察多路信号,本文不再赘述。这里在介绍两个设计技巧:
    设置显示范围

    在这里插入图片描述

      在View->Configuration Properites:Scope->Display中可以设置波形显示范围。Active display选择信号通道,设置Minimum和Maximum。点击Apply即可应用该设置。

    在这里插入图片描述

    设置信号名称

      在Simulink模型中,双击接入Scope的连线,即可出现一个编辑框(同时线变为蓝色),输入的名称将作为Scope中波形窗口的title(也可以在上图中的“Title”编辑框中设置)。


    10、Reinterpret和Convert详解

      本文将对其中使用到的Reinterpret和Convert模块进行详细介绍。

    10.1 模块功能概述

    •   数据转换,数据类型、位宽等问题都会影响到计算精度,对于设计者而言,需要考虑的就是相关影响是否可以接受,即是否会影响到实际的系统性能。FPGA设计中还经常需要截位,否则位宽在整个系统中不断积累,大大增加资源的消耗。
    •   数据类型的转换和截位是FPGA系统设计的重要内容,博主在《FPGA数字信号处理》系列的很多设计中都有详细讨论。而在System Generator设计中,完成这项任务的便是Reinterpret和Convert模块。
    •   数据类型转换模块在导出到FPGA设计中(定点与浮点之间的转换、浮点与浮点之间的转换),会使用Floating-Point IP核实现,具体可参考《FPGA数字信号处理》,本系列不详细介绍。

    10.2 Reinterpret block

    10.2.1 block特性

      这个block可以完成以下数据转换功能:

    • 将无符号数转换为带符号数;
    • 将带符号数转换为无符号数;
    • 通过重新规定小数点位置来定义数据范围。

      需要注意的是,“转换”在这个block中的含义更接近于其英文直译“重新解释”。事实上,数据在经过该block后,其位宽与每一位的值都没有发生任何改变,变化的只有其所表示的“意义”。正如博主在《FPGA数字信号处理》系列中强调的一样,一个二进制数是无符号数还是带符号数、小数点在哪一位仅仅取决于设计者如何规定和看待它。而Reinterpret改变的便是这种“规定和看待”方式。

      比如,“1100”这个数,当视作UFix_4_0(无符号定点数、4Bits位宽、小数部分0bit)时,其值为12;当视作Fix_4_2(带符号定点数、4Bits位宽、小数部分2Bits)时,其值为-1。因为reinterpret实现的只是一种意义上的转换,因此其在转换为FPGA设计后,不会消耗任何资源。

      既然reinterpret的输出和输入完全相同,那么加入此模块有什么作用?

    •   从FPGA设计转换到Simulink环境中时会按设定的“意义”解析数据格式;
    •   完成不同格式数据之间的的拼接。

    10.2.2 参数设置

    在这里插入图片描述

      (1).选中“Force Arithmetic Type”后,输出数据格式的“意义”将转换为(没有选中,则输出与输入的表征意义相同):无符号数(Unsigned)、带符号数二进制补码(Signed(2’s comp))、浮点数(Floating-point)。

      (2).选中“Force Binary Point”后,可以重新规定输出数据的小数点位置。比如设置为31时,表明数据中的低31Bits为小数部分。

      

    10.3 Convert block

    10.3.1 block特性

      该block不仅可以完成数据类型的转换,还具有如下特性:

    • 重新设置数据的量化、溢出方式;
    • 重新设置定点数格式(进行数据截位)。

    10.3.2 参数设置

    在这里插入图片描述
      其中大部分参数设置方法与Gateway In模块的设置完全相同,具体可参考本系列第5篇。这里只讲述两者不同的地方。

      (1).Convert模块的量化方式可以配置为“Round(unbiased: even values)”,这是针对“四舍五入”量化方式的缺点所作的改进:

    • 传统的四舍五入所有的中间值(如1.5、2.5)都会向更大的值量化,即不是完全对称的,这样会导致一组数据量化后平均值高于量化前的平均值。
    • unbiased: even
      values在处理中间值时会向更接近的偶数量化。比如1.5会量化为2;2.5仍然会量化为2(因为二者最接近的偶数都是2)。这样量化规则在整体上会呈现出对称性。

      (2).选中“Provide enable port”后,block会增加一个en使能管脚,只有当使能有效时convert block才会执行数据转换功能,否则将保持当前状态不变。

      (3).Latency设置了Convert输出数据要经过多少个采样时钟周期的延时。注意不要混淆“采样时钟周期”和“FPGA时钟周期”的概念,在过采样系统中,一个采样时钟周期可能等于多个FPGA时钟周期。
    在这里插入图片描述
      前文提到Convert在导出到FPGA中时会以Floating-Point IP核的方式实现,“Implementation”标签下可以设置Latency在FPGA中的实现方式:

    ●选中“Pipeline for maximum performance”时,Latency以流水线的方式实现,即在计算过程中增加中间级寄存器,以更多的资源实现更快的计算速度和更大的数据吞吐量。

    ●未选中“Pipeline for maximum performance”时,Latency以在IP核末尾增加一级移位寄存器的方式实现,这样只是单纯的实现了延时功能。



    展开全文
  • •A digital filter uses a digital processor to perform numerical calculations on sampled values of the signal. The processor may be a general-purpose computer such as a PC, or a specialised DSP ...
  • System Generator从入门到放弃(二)-Digital Filter

    千次阅读 多人点赞 2018-11-02 15:56:14
    System Generator从入门到放弃(二)-Digital Filter 文章目录System Generator从入门到放弃(二)-Digital Filter一、安装与使用1、简介   System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它...

    System Generator从入门到放弃(二)-Digital Filter



      System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Simulink中进行定点仿真,可以设置定点信号的类型,这样就可以比较定点仿真与浮点仿真的区别。并且可以生成HDL文件,或者网表,可以在ISE中进行调用。或者直接生成比特流下载文件。能够加快DSP系统的开发进度。

    一、Digital Filter

    1、简介

      数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
      数字滤波一般分为时域滤波和频域滤波。频域滤波是将时域变换到频域,对相应频率做调整,然后反变换到时域,抛开FFT的话过程相对简单。在这里我们主要说时域滤波。
      时域滤波器分为无限脉冲响应IIR和有限脉冲响应FIR两种。IIR滤波器的优点是可以用较低的阶数(相比同样指标的FIR滤波器)实现滤波器。缺点一:不是线性相位,只能用于对相位信息不敏感的信号(如音频信号)。缺点二:有可能是不稳定的。在设计的过程中为了保持稳定性和因果性,要求z变换所有的极点都必须位于单位圆内。但即使是这样,也可能由于量化舍入等因素引起的误差最终导致IIR滤波器不稳定。FIR滤波器的优点是可以设计成具有线性相位的,并且是稳定的(FIR滤波器除原点处外没有极点),缺点是阶数高,也就是说计算量大。
      具体介绍大家可以查阅相关资料。

    2、产生正弦信号

    2.1 本部分设计使用到的block


    Xilinx block

    其它block

    • Sin Wave(Simulink->Sources):生成正弦波
    • Add(Simulink->Math Operations):加法器
    • Scope(Simulink->Commonly Used Blocks):示波器

      在库中在库中找到Sine Wave、add、scope,分别添加带哦model中,如下:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
      添加完后如下:
    在这里插入图片描述
      修改相关属性:
      双击Sine Wave,可以设置正弦波的幅度、电平偏置、频率、初相、采样时间等信息。这里只需要将频率分别设置为1MHz(2pi1e6)和9MHz(2pi9e6)。
    在这里插入图片描述

      双击Add,“List of signs”设置加法器的输入端口,“++”表示两个输入相加(“±”则表示A-B)。
    在这里插入图片描述

      双击打开示波器窗口,在View->Configuration Properties:Scope中(或者如下图方式进行设置),将Number of input ports设置为3(观察3路信号);点击Layout,选择3*1排列方式(每路信号分开显示):
    在这里插入图片描述
      连线,结果如下。 将Simulink仿真时间设置为0.00001(时间太长会导致仿真很慢),点击运行,Simulink窗口的右小角可以观察到运行状态。运行结束后打开Scope:
    在这里插入图片描述
    在这里插入图片描述

      第一个为1Mhz信号,第三个为9MHz信号,中间为两路信号叠加。接下来设计一个LPF滤除掉9MHz频率分量。
      PS:双击Scope可能看到的波形如下,是三路信号混合在了一起,想要分开三路进行查看,View->Layout,设置成三行模式。
    在这里插入图片描述
    在这里插入图片描述
      最终的结果如下,第一个为1Mhz信号,第三个为9MHz信号,中间为两路信号叠加。接下来设计一个LPF滤除掉9MHz频率分量。
    在这里插入图片描述

    3、数字滤波器的设计

    3.1 本部分设计使用到的block


    Xilinx block

    • Digital FIR Filter(->DSP):数字滤波器
    • Gateway In(->Basic Elements):数据输入
    • Gateway Out(->Basic Elements):数据输出
    • System Generator(->Basic Elements):系统管理
    • FDATool(->DSP):滤波器设计

    其它block

    • Sin Wave(Simulink->Sources):生成正弦波
    • Add(Simulink->Math Operations):加法器
    • Scope(Simulink->Commonly Used Blocks):示波器
    • Zero-Order Hold(Simulink->Discrete):零阶保持器
    • Spectrum Analyzer(DSP System Toolbox->Sinks):频谱分析仪

    3.2 数字滤波器设计

      我们知道,Simulink中的仿真模型为连续时间系统,数据格式多种多样;而FPGA中为离散时间系统,数据必须用一定的位数进行量化。两者之间必须要进行从连续到离散的转换、数据格式的转换,否则无法进行正确的FPGA设计。Xilinx Blockset中提供了相应的解决方案。

      添加一个Gateway In和一个Gateway Out模块到model中,再添加一个Digital FIR Filter模块。按照加法器输出->Gateway In->Digital FIR Filter->Gateway Out的顺序依次连接。
    在这里插入图片描述
    在这里插入图片描述

      添加如下block到model并按图中方式进行连线。

    在这里插入图片描述

      双击打开Gateway In模块的属性窗口:
    在这里插入图片描述
      这个模块可以Simulink到FPGA之间的数据转换。将Sample period设置为“1/20e6”(20MHz采样率),完成连续时间到离散时间的转换;设置Out Type完成数据格式的转换。这里保持为默认的二进制带符号数补码、定点数的设置。Quantization中可以设置量化方式为Truncate(截断)或者round(四舍五入)。

      Gateway In的设置会自动传递到Gateway In和Gateway Out之间的整个系统中,因此不需要再设置其它模块的采样率与数据格式。

    Digital FIR Filter设置


    频率参数

    • Units = MHz
    • Fs = 20
    • Fpass = 1.5
    • Fstop = 8.5

    Magnitude Specifications

    • Units = dB
    • Apass = 0.01
    • Astop = 100

      两种方式,其中第一种方式,在其他模块没有FDATOOL工具时,需要使用第二种方式。
    第一种方式
      双击Digital FIR Filter: 选中“Use FDA Tool as coefficient source”,点击“FDA Tool”按钮,会弹出FDATOOL窗口,设置采样率为20Mhz,通带截止频率1.5MHz,阻带截止频率8.5Mhz,通带衰减0.01dB,阻带衰减100dB,点击“Design Filter”设计后退出。
    在这里插入图片描述
    在这里插入图片描述

    第二种方式
      第二种方式是使用FDATool,这部分会在后面介绍。

    3.3 FPGA系统配置

      以上仅仅是完成了数字滤波器的设计,但是仍然没有建立起模型与FPGA之间的实质联系。添加System Generator模块到model中,这个block便是配置与FPGA相关的系统参数。这个block的配置会应用到Gateway In和Gateway Out之间的所有模块中。双击打开,切换到Clock标签:
    在这里插入图片描述

    • a. Specify an FPGA clock Period of 50 ns (1/20 MHz).
    • b. Specify a Simulink system period of 1/20e6 seconds.
    • c. From the Perform analysis menu, select Post Synthesis and from
      Analyzer type menu select
        FPGA clock period设置为50ns,Simulink system period设置为1/20e6(都是20Mhz)。Perfor analysis设置为Post Sythesis,Analyzer type设置为Resource,在系统综合后会进行资源使用情况的分析。

    3.3 开始仿真

      使用Simulink完成FPGA中的DSP系统设计,最大的好处就是仿真极其方便(包括后面文章会用到的ModelSim协同仿真、硬件协同仿真等特性)。

      添加一个Scope观察Gateway Out输出的波形(滤波后波形),再添加两个Spectrum Analyzer观察滤波前后的信号频谱。Spectrum Analyzer这个block必须输入离散的数据,因此在加法器输出后需要经过一个零阶保持器Zero-Order Hold,转换为离散数据后再输入到Spectrum Analyzer中。零阶保持器的采样率设置为1/20e6(20Mhz)。
    在这里插入图片描述
      系统的整体连接框图如下:

    在这里插入图片描述

      注意,虽然Gateway In转换后的数据也是离散的,但是Spectrum Analyzer不能接入到这里,否则会出现错误。Gateway In和Gateway Out之间只能连接其它Xilinx Blockset中的模块。

      将仿真时间设置为0.0005(Spectrum Analyzer必须有足够多的采样数据才能计算出频谱),输出信号的波形如下所示,经过滤波后仅剩下1MHz的单频分量,且数据为离散值。
    在这里插入图片描述

      FIR滤波器前后的频谱:
    在这里插入图片描述

      可以看到经过滤波后,9Mhz的频率分量有大约100dB的衰减(频谱呈对称性),设计符合预期。

    3.3 将设计导出到FPGA

      仿真验证功能正确后,需要将设计导出到FPGA中,这个步骤仍然要借助System Generator这个block。双击打开,切换到Compilation标签下,这里可以设置使用的开发板(Board,只能选择Xilinx官方开发板)、FPGA芯片(Part),也可以设置导出设计的硬件描述语言(Verilog或VHDL)。点击“Generate”,System Generator会将Gateway In和Gateway Out之间的模块导出到FPGA中。运行结束后,根据前面的设置,弹出了资源分析报告:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
      在slx同文件夹下,生成netlist文件夹。其中sysgen子文件夹包含了导出的Verilog或VHDL设计文件;ip子文件夹是设计导出的IP核形式;ip_catalog子文件夹包含一个调用该IP核的Vivado的示例工程。
    在这里插入图片描述

    3.3 打开Vivado示例工程

      在ip_catalog文件夹下打开Vivado工程,其中顶层文件如下:

    //Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.
    //--------------------------------------------------------------------------------
    //Tool Version: Vivado v.2017.4 (win64) Build 2086221 Fri Dec 15 20:55:39 MST 2017
    //Date        : Sun Nov  4 02:06:37 2018
    //Host        : LAPTOP-8E6RLG3I running 64-bit major release  (build 9200)
    //Command     : generate_target xilinx_lab1_bd.bd
    //Design      : xilinx_lab1_bd
    //Purpose     : IP block netlist
    //--------------------------------------------------------------------------------
    `timescale 1 ps / 1 ps
    
    (* CORE_GENERATION_INFO = "xilinx_lab1_bd,IP_Integrator,{x_ipVendor=xilinx.com,x_ipLibrary=BlockDiagram,x_ipName=xilinx_lab1_bd,x_ipVersion=1.00.a,x_ipLanguage=VERILOG,numBlks=1,numReposBlks=1,numNonXlnxBlks=1,numHierBlks=0,maxHierDepth=0,numSysgenBlks=1,numHlsBlks=0,numHdlrefBlks=0,numPkgbdBlks=0,bdsource=SYSGEN,synth_mode=OOC_per_IP}" *) (* HW_HANDOFF = "xilinx_lab1_bd.hwdef" *) 
    module xilinx_lab1_bd
       (clk,
        gateway_in,
        gateway_out);
      (* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.CLK CLK" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.CLK, CLK_DOMAIN xilinx_lab1_bd_clk, FREQ_HZ 100000000, PHASE 0.000" *) input clk;
      (* X_INTERFACE_INFO = "xilinx.com:signal:data:1.0 DATA.GATEWAY_IN DATA" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME DATA.GATEWAY_IN, LAYERED_METADATA undef" *) input [15:0]gateway_in;
      (* X_INTERFACE_INFO = "xilinx.com:signal:data:1.0 DATA.GATEWAY_OUT DATA" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME DATA.GATEWAY_OUT, LAYERED_METADATA xilinx.com:interface:datatypes:1.0 {DATA {datatype {name {attribs {resolve_type immediate dependency {} format string minimum {} maximum {}} value {}} bitwidth {attribs {resolve_type immediate dependency {} format long minimum {} maximum {}} value 37} bitoffset {attribs {resolve_type immediate dependency {} format long minimum {} maximum {}} value 0} real {fixed {fractwidth {attribs {resolve_type immediate dependency {} format long minimum {} maximum {}} value 33} signed {attribs {resolve_type immediate dependency {} format bool minimum {} maximum {}} value true}}}}}}" *) output [36:0]gateway_out;
    
      wire clk_1;
      wire [15:0]gateway_in_1;
      wire [36:0]xilinx_lab1_1_gateway_out;
    
      assign clk_1 = clk;
      assign gateway_in_1 = gateway_in[15:0];
      assign gateway_out[36:0] = xilinx_lab1_1_gateway_out;
      xilinx_lab1_bd_xilinx_lab1_1_0 xilinx_lab1_1
           (.clk(clk_1),
            .gateway_in(gateway_in_1),
            .gateway_out(xilinx_lab1_1_gateway_out));
    endmodule
    
    

      sysgen_filter_bd是调用System Generator导出的IP核的子模块。16Bits输入数据经过滤波后得到36Bits的输出结果。运行RTL ANALYSIS,打开RTL视图,找到最底层:
    在这里插入图片描述
      可以看到其本质上仍然是调用了FIR Compiler IP核来实现数字滤波,只不过我们是在Simulink中完成的设计。在其它工程中可以像示例工程一样调用这个System Generator导出的IP核,来完成特定的DSP系统功能。

      理论上经过Simulink中的仿真,已经可以确定设计的正确性。但这是使用System Generator完成的第一个实验,本文仍然在Vivado中进行一次仿真,增强使用者对System Generator设计的信心。使用MATLAB产生一个1MHz+9Mhz的正弦叠加信号,导入到TXT文件中。编写testbench读取txt文件,对信号进行滤波。Vivado中的仿真结果如下图所示:
    在这里插入图片描述
      可以看到经过滤波后,只剩下1Mhz的单频信号,与Simulink中的仿真结果完全一致。
      总而言之,从这个实验出发,博主认为在System Generator中完成DSP系统设计与直接在Vivado环境下进行DSP系统设计相比,有两个优点:

    • 更强大、更方便的仿真环境;
    • 系统级设计角度,无需关心RTL设计细节以及一些IP核的具体使用方法。

    4、FDATool block的使用

      前文中我们在Digital FIR Filter block的配置界面直接调用FDATool工具完成FIR滤波器的设计。但是有一些滤波器block,如2n-tap MAC FIR Filter,并没有提供这样一个接口。Xilinx Blockset中单独提供了一个FDATool block,可以提供更广泛的使用。

      添加FDATool block到model中,配置完成后点击“Design Filter”。其它模块调用这个FDATool设计的滤波器可以借助两个函数:

    • xlfda_numerator(‘FDATool’):提取滤波器系数的分子
    • xlfda_denominator(‘FDATool’):提取滤波器系数的分母

      对于FIR滤波器而言,分母为1,只提取分子即可。如下图所示:

    在这里插入图片描述
    在这里插入图片描述

      所有滤波器block的系数都可以用这种方式设置。

    5、生成说明文档与testbench

    5.1 生成说明文档

      本文在上一篇设计的数字滤波器模型基础上进行修改。打开System Generator这个block,在Compilation标签下:
    在这里插入图片描述

      选中“Create interface document”,在点击Generate导出设计后,在netlist/sysgen文件夹下会生成一个HTM文件。用浏览器打开如下:
    在这里插入图片描述

    5.2 生成testbench

      在System Generator block的Compilation标签下选中“Create testbench”,如第一幅图所示。在点击Generate导出设计时,软件会根据选择的硬件描述语言生成对应的testbench(在netlist/sysgen文件夹下):

    ●“Verilog“对应”name_tb.v“文件
    ●“VHDL“对应”name_tb.vhd“文件
      name为simulink模型的名字,我这里为“sxilinx_lab1_tb“。在生成的Vivado示例工程中会自动添加这个testbench文件:
    在这里插入图片描述
      在这个testbench中包含4个子模块:时钟生成模块xlclk、测试数据输入模块xltbsource、模块数据输出模块xltbsink和IP核设计文件sysgen_filter_0。最后在顶层模块中调用4个子模块,组成一个完整的测试平台(在“Testbench编写指南系列”中会解析这种testbench编写方式)。

      直接运行仿真,Vivado中仿真结果如下所示:
    在这里插入图片描述

      仿真结果与上一部分完全一致。这是因为System Generator工具在生成testbench文件时将simulink环境中接入到Gateway In block的数据存储到dat文件中,在testbench中调用。而我们自己编写testbench时需要设计M文件产生信号,再用HDL语言设计仿真过程。可见System Generator的便利与强大。

    6、资源分析与时序分析

    6.1 查看分析结果

      这部分继续在上面设计的数字滤波器模型基础上运行分析。System Generator集成了时序分析和资源分析功能,以确保在simulink中设计的DSP系统导出到FPGA环境中能够正确运行。其本质上仍然是在后台调用Vivado进行分析,System Generator只是读取了分析结果并显示出来。

      设计完成并且Simulink运行完毕后,打开System Generator这个block,切换到Clock标签下:
    在这里插入图片描述

    Perform analysis中可以设置

    • None:不进行分析;
    • Post Synthesis:综合后进行分析;
    • Post Implementation:实现后进行分析。

    Analyzer type中可以设置

    • “Resource”(进行资源分析)
    • “Timing”(进行时序分析)

      注意在Perform analysis设置好,并且导出设计到FPGA后,可以切换Analyzer type,并且点击右边的“Launch”查看两种报告。但修改设计和修改Perform analysis参数后必须重新运行才能生成最新的报告。

      综合后和实现后的资源分析和时序分析分别如下。时序报告中可以看到每一条时钟路径的情况(本设计中只有一条);资源报告中可以看到每一个模块的资源消耗(本设计只有一个模块)。可以看到综合后与实现后的资源消耗情况、时序情况有些差异:
    在这里插入图片描述
    在这里插入图片描述

    6.2 时序分析

      System Generator集成的静态时序分析功能提供了如下特性:

    • 点击每一列的指标名称,可以选择升序/降序排列;
    • 时序不满足时,相应的路径Slack值为负数,且显示为红色;
    • 交叉定位功能:时序报告中选中某一路径,Simulink模型中对应的部分会高亮显示(时序满足为绿色;不满足为红色),这可以帮助设计者更快的找到和修改时序错误。

      如下图:

    在这里插入图片描述

    • 时序不满足时,可以考虑修改设计(如增加一些单元的Latency,以资源换速度),或者更换综合策略/实现策略。

      在System Generator block的Compilation标签下可以设置“Synthesis strategy”和“Implementation strategy”。列表中有几种Vivado提供的策略,也可以在Vivado中添加好用户自定义的策略,在System Generator中调用。

    6.3 资源分析

      System Generator集成的资源分析功能提供了如下特性:

    • 点击每一列的指标名称,可以选择升序/降序排列;
    • BRAMs(包括RAMB36E、FIFO36E、RAMB18E、FIFO18E0资源);DSPs(包括DSP48E、DSP48E1、DSP48E2资源);Registers(包括寄存器和触发器,以FD和LD开头的资源);LUTs(所有的查找表);
    • 交叉定位功能:资源报告中选中某一模块,Simulink模型中对应的部分会高亮显示(黄色),如下图:

    在这里插入图片描述

    • 资源消耗超过FPGA芯片总资源时,可以考虑修改设计,或者更换综合策略/实现策略。这里与时序分析部分相同。

    6.4 资时序/资源分析失败的说明

      绝大多数情况下,时序分析和资源分析都能得到正确的结果,但有时在Generate生成结束后,会提示一个Error,无法获取结果数据。

      失败的原因一般都是如下情况:在同一目录下有多个slx文件,但是所有的slx文件设置的输出目录都相同(比如都是默认的./netlist)。在导出第一个slx文件时是可以正确运行时序/资源分析的;但在导出第二个slx文件的设计时,就会报错。原因便是不同的模型向同一目录下导出设计。在设置路径时要注意。


    展开全文
  • 使用 Chebyshev(Type II) 近似的 IIR 数字滤波器
  • 使用 Chebyshev(I 型)近似的 IIR 数字滤波器
  • 本人毕业设计是Implementation of digital filter by using C language on FPGA。 求专家给我解释一下,这个要设计多少个FIR digital filter啊 求专家给我这个课题一些具体操作步骤指导啊
  • sigmal delta ADC 滤波器设计指南。音频和测量的应用的区别。滤波器原理,深入浅出的,容易理解。 对于ADC开发者来说是提升基础知识和理解的有很大帮助。 sigmal delta ADC 滤波器设计指南。音频和测量的应用的区别...
  • 数字滤波器设计的经典之作,主要是关于其基本概念,以及常用的FIR IIR滤波器的设计进行阐述。
  • MICROCHIP出品的数字滤波设计工具,此版本为lite。 安装不需要序列号。
  • digital filter基流分割

    2011-02-21 00:49:19
    基于滤波法的径流分割软件。在时间概念上把径流过程分割为基流和快速径流
  • Alexander Lazarevic的经典文章,专述数字滤波器。
  • In this paper a general theory of multistage decimators and interpolators for sampling rate reduction and sampling rate increase is ...comparable to those of recursive elliptic filter designs.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,546
精华内容 3,818
关键字:

digitalfilter