精华内容
下载资源
问答
  • FPGA数字信号处理

    2015-08-07 12:25:15
    该书详细的讲解了FPGA数字信号处理的一般流程和实现方面,对了初学者来说肯定有很大的指导帮助的!
  • FPGA数字信号处理实现原理及方法 FPGA数字信号处理实现原理及方法
  • FPGA数字信号处理的FFT FIR IIR各种代码 VHDL Verilog
  • 基于FPGA数字信号处理.doc
  • FPGA数字信号处理与工程应用实践 [张春生,苏开友 编著] 2013年版
  • xiliix_FPGA数字信号处理设计教程,systerm generator入门与提高
  • FPGA数字信号处理随书光盘 第3版,里面有实例源码
  • FPGA数字信号处理设计教程:System Generator入门与提高FPGA数字信号处理设计教程:System Generator入门与提高
  • XILINX FPGA数字信号处理权威指南.pdf,何宾写的,非常的好!
  • FPGA数字信号处理板(CXD301)程序说明手册,需要的下载
  • XILINX FPGA数字信号处理权威指南 从HDL到模型和C的描述pdf高清版本
  • FPGA数字信号处理实现原理以及方法~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • FPGA数字信号处理(九)Vivado FFT IP核实现

    万次阅读 多人点赞 2018-06-14 16:27:45
    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算。上篇介绍了Quartus环境下FFT IP核的使用“FPGA数字信号处理(八)Quartus FFT IP核实现...

    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算。上篇介绍了Quartus环境下FFT IP核的使用“FPGA数字信号处理(八)Quartus FFT IP核实现https://blog.csdn.net/fpgadesigner/article/details/80690345 ”。本文将介绍在Vivado开发环境下使用Xilinx提供的FFT IP核进行FFT运算的设计。


    IP核概述

    这里写图片描述
    Xilinx的FFT IP核属于收费IP,但是不需要像 Quartus那样通过修改license文件来破解。如果是个人学习,现在网络上流传的license破解文件在破解Vivado的同时也破解了绝大多数可以破解的IP核。只要在IP Catalog界面中Fast Fourier Transform的License状态为“Included”即可正常使用。


    IP核参数设置

    与Quartus中FFT IP核相比,Vivado的FFT IP核配置起来更复杂,功能也更强大。 打开主界面,左边是IP核的接口图(IP Symbol)、实现消耗的资源等信息(Implementation Details)和计算FFT所需的时间(Latency),右边是Configuration、Implementation和Detailed Implementation三个标签卡。

    这里写图片描述
    Vivado的FFT IP核支持多通道输入(Number of Channels)和实时更改FFT的点数(Run Time Configurable Transform Length)。Configuration标签下设置FFT的点数(Transform Length)和工作时钟(Target Clock Frequency),选择一种FFT结构,包括流水线Streaming、基4 Burst、基2 Burst和轻量级基2 Burst,计算速度和消耗的资源依次减少。
    这里写图片描述
    Implementation标签卡下设置FFT的数据格式为定点Fixed Point或浮点Float Point;设置输入数据的位宽和相位因子位宽(相当于旋转因子)。还有一些可选的附加信号。“Output Ordering”设置FFT计算结果以自然顺序(Nature Order)或位/数值反序(Bit/Digit Reversed Order)输出。
    这里写图片描述
    Detailed Implementation这个Tab中设置优化方式、存储的类型、是否使用DSP单元等与综合、实现有关的信息,比如可以选择复数乘法器和蝶形运算单元的实现结构。

    设置完成后,系统会在Latency中显示出计算FFT所需的时间,如下图所示:
    这里写图片描述
    可以据此衡量计算速度是否满足设计需求,如不满足可以使用更好性能的FFT结构或选择可以提高计算速度的优化选项,消耗更多的资源来缩短计算周期。


    FPGA设计

    IP核的接口在Verilog HDL中进行设计时,一定要参考官方文档中给出的时序图。在IP核的配置界面点击“documentation”,可以找到IP核的user guide。 也可以在Xilinx官网或DocNav工具中搜索pg109,查阅FFT IP核的说明。Burst模式、自然顺序输出的时序图如下:
    这里写图片描述
    驱动接口时序的Verilog HDL示例代码如下所示:

    `timescale 1ns / 1ps
    //--------------------------------------------------------
    //  使用Xilinx FFT IP核完成FFT运算
    //--------------------------------------------------------
    module Xilinx_FFT_Guide_liuqi(      
    
            input aclk,
            input aresetn,
    
            input [11:0]    input_data_ch1,
            output [23:0]   fft_real,
            output [23:0]   fft_imag,
            output reg [46:0]   amp,
            output fft_out_valid
    );
        reg [11:0] input_data_ch1_reg;    
        wire [7:0] s_axis_config_tdata;
        reg s_axis_config_tvalid;
    
        wire s_axis_data_tready;
        reg [31:0] s_axis_data_tdata;
        reg s_axis_data_tvalid;
        reg s_axis_data_tlast;
    
        wire [47:0] m_axis_data_tdata;
        wire [15:0] m_axis_data_tuser;
        wire m_axis_data_tvalid;
        wire m_axis_data_tlast;
        reg [7:0]   cfg_cnt;
        reg [13:0]  sink_ctl_cnt;   
        reg [23:0]  fft_real,fft_imag; 
        reg fft_out_valid;
        wire    event_frame_started;
        wire    event_tlast_unexpected;
        wire    event_tlast_missing;
        wire    event_status_channel_halt;
        wire    event_data_in_channel_halt;
        wire    event_data_out_channel_halt;
    
        xfft_0 usr_FFT(
    
                .aclk(aclk),
                .aresetn(aresetn),
    
                .s_axis_config_tdata(s_axis_config_tdata),
                .s_axis_config_tvalid(s_axis_config_tvalid),
                .s_axis_config_tready(),
    
                .s_axis_data_tdata(s_axis_data_tdata),
                .s_axis_data_tvalid(s_axis_data_tvalid),
                .s_axis_data_tready(),
                .s_axis_data_tlast(s_axis_data_tlast),
    
                .m_axis_data_tdata(m_axis_data_tdata),
                .m_axis_data_tuser(m_axis_data_tuser),
                .m_axis_data_tvalid(m_axis_data_tvalid),
                .m_axis_data_tready(1'b1),
                .m_axis_data_tlast(m_axis_data_tlast),
    
                .event_frame_started(event_frame_started),
                .event_tlast_unexpected(event_tlast_unexpected),
                .event_tlast_missing(event_tlast_missing),
                .event_status_channel_halt(event_status_channel_halt),
                .event_data_in_channel_halt(event_data_in_channel_halt),
                .event_data_out_channel_halt(event_data_out_channel_halt)
        );   
    
    //fft core config
        always@(posedge aclk or negedge aresetn)
        begin
            if(!aresetn)
                cfg_cnt <= 8'd0;
            else
            begin
                if(cfg_cnt < 8'd200)
                    cfg_cnt <= cfg_cnt + 1'b1;
                else
                    cfg_cnt <= cfg_cnt;
            end
        end
    
        always@(posedge aclk or negedge aresetn)
        begin
            if(!aresetn)
                s_axis_config_tvalid <= 1'b0;
            else
            begin
                if(cfg_cnt < 8'd200)
                    s_axis_config_tvalid <= 1'b1;
                else
                    s_axis_config_tvalid <= 1'b0;
            end
        end
    assign s_axis_config_tdata = 8'd1;
    
    /fft sink_in ctl/
        always@(posedge aclk or negedge aresetn)
        begin
            if(!aresetn)
                s_axis_data_tdata <= 32'b0;
            else
                s_axis_data_tdata <= {20'd0,input_data_ch1};
        end
    
        always@(posedge aclk or negedge aresetn)
        begin
            if(!aresetn)
                sink_ctl_cnt <= 14'd8194;
            else if(s_axis_config_tvalid)
                sink_ctl_cnt <= 14'd0;
            else if(sink_ctl_cnt == 14'd8192)
                sink_ctl_cnt <= 14'd1;
            else
                sink_ctl_cnt <= sink_ctl_cnt + 1'b1;
        end 
    
        //s_axis_data_tvalid
        always@(posedge aclk or negedge aresetn)
        begin
            if(!aresetn)
                s_axis_data_tvalid <= 1'b0;
            else if(sink_ctl_cnt < 14'd1)
                s_axis_data_tvalid <= 1'b0;
            else if(sink_ctl_cnt < 14'd2049)
                s_axis_data_tvalid <= 1'b1;
            else
                s_axis_data_tvalid <= 1'b0;
        end
    
        //s_axis_data_tlast
        always@(posedge aclk or negedge aresetn)
            begin
            if(!aresetn)
                s_axis_data_tlast <= 1'b0;
            else
            begin
                if(sink_ctl_cnt == 14'd2048)
                    s_axis_data_tlast <= 1'b1;
                else
                    s_axis_data_tlast <= 1'b0;
            end
        end
    /fft sink_in ctl/    
        always@(posedge aclk)
        begin
            fft_real <= m_axis_data_tdata[23:0];
        end
    
        always@(posedge aclk)
        begin
            fft_imag <= m_axis_data_tdata[47:24];
        end
    
        always@(posedge aclk)
        begin
            fft_out_valid <= m_axis_data_tvalid;
        end
    
        /********** 计算频谱的幅值信号 **********/
    
        wire signed [45:0] xkre_square, xkim_square;
        assign xkre_square = fft_real * fft_real;
        assign xkim_square = fft_imag * fft_imag;
    
        always @(posedge aclk)
          amp <= xkre_square + xkim_square;
    
    endmodule

    注意FFT计算结果输出的实部和虚部供用m_axis_data_tdata数据总线,因此在代码中需要截位分别得到实部和虚部。FFT计算结果的分析可以参考“FPGA数字信号处理(八)Quartus FFT IP核实现https://blog.csdn.net/fpgadesigner/article/details/80690345 ”中的内容。


    仿真与工程下载

    系统时钟(即FFT计算时钟)为50MHz,因此频谱范围为0~25MHz。使用MATLAB生成2MHz与15MHz的正弦波信号,分别写入txt文件。编写Testbench分别读取两个txt文件对两个单频信号做FFT分析,文件操作方法参考“Testbench编写指南(一)文件的读写操作”https://blog.csdn.net/fpgadesigner/article/details/80470972

    首先仿真对2MHz信号的FFT分析。根据上文Latency中的估计,计算时间需要145μs,因此仿真需要运行到大约150μs以上。结果如下:
    这里写图片描述
    整个频谱的持续时间恰好是out_valid信号保持高电平的时间,很明显可以看到2MHz信号在频谱中对应的一个频率点。将txt文件替换为15MHz的信号,结果如下:
    这里写图片描述
    观察到15Mhz信号的频谱峰值位置明显比2MHz频率靠中,符合事实。

    完整的Vivado工程(含testbench仿真)可以在这里下载:https://download.csdn.net/download/fpgadesigner/10478838

    展开全文
  • 今天给大侠带来“FPGA数字信号处理设计教程-system generator入门与提高电子版”,获取电子版资料,请在“FPGA技术江湖”公众号内回复“FPGA数字信号处理设计教程-system generator入门与提高”,即可获取。...

    今天给大侠带来“FPGA数字信号处理设计教程-system generator入门与提高电子版”,获取电子版资料,请在“FPGA技术江湖”公众号内回复“FPGA数字信号处理设计教程-system generator入门与提高”,即可获取。

    下面给各位大侠列一下目录,电子版方便携带,可也省去一笔开销,不过学习起来没有实体书籍得劲,学习要认真哦。

    FPGA数字信号处理设计教程-system generator入门与提高电子版目录如下:

     

     

     

     

     

    - End -

     

     

    后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

    大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

     

     

    往期精选 

    荐读解惑 | FPGA是有门槛的,零基础并不是你想的那样,不要再被忽悠了!

    深度分析 | 5G时代下的FPGA

    笔记连载 | Day9【xilinx ZYNQ7000系列之《PS端 》串口打印】

    MicroBlaze串口设计(附源工程)

    基于 FPGA Vivado 信号发生器设计(附源工程)

    时序分析理论和timequest使用_中文电子版

    回馈福利 | FPGA寒假班最大羊毛,FPGA精品课程等你来薅!

    展开全文
  • 本书主要介绍基于FPGA数字信号处理的设计流程,探讨数字信号处理算法在FPGA中的硬件设计与现实,重点讲述基于System Generator的FPGA开发及其构成模块、图形化工程设计流程及实现。本书立足于实践,结合作者多年从事...
  • XILINX FPGA数字信号处理权威指南-从HDL到模型和C的描述,高清pdf,配有详细的目录
  • FPGA数字信号处理:通信类I/Q信号及产生 大侠好,“宁夏李治廷”再一次和各位见面了,今天给各位大侠分享在FPGA数字信号处理中通信类I/Q信号及产生。 欢迎各位大侠一起切磋交流,共同进步。话不多说,上货。 I/...

    FPGA数字信号处理:通信类I/Q信号及产生

    大侠好,“宁夏李治廷”再一次和各位见面了,今天给各位大侠分享在FPGA数字信号处理中通信类I/Q信号及产生。

    欢迎各位大侠一起切磋交流,共同进步。话不多说,上货。

     

    I/Q原理及优势

    对于有些通信类,光通信类以及射频方向的同学都知道在通信的信号处理中,输入的信号需要分成两路(I路和Q路),也被称作为正交调制信号。通常射频信号需要将低频的基带信号搬移到高频的载波信号上进行传输,传统方式是通过一个乘法器,将信号和载波进行相乘,实现频谱搬移。

    cos(a)*cos(b)=1/2[cos(a+b)-cos(a-b)]

    但是这样会增加两个多余的信号频率。信号通常来说越纯净越好,也对后续的插值,滤波,检波起决定性的作用。而且在滤波的过程中很难滤除另外一个频率,也徒然增加频带,消耗宝贵的资源。所以I/Q正交调制技术才得以在通信领域大展拳脚。

    Cos(a-b)=cos(a)*cos(b)+sin(a)*sin(b)

    并且I/Q两路信号可以降低采样率,方便将信号采用复数信号的形式(z=a+bi),降低每个支路的采样率,降低对ADC的要求,节省开发和成品的成本,很好的保留原始信号的相位信息。

     

    FPGA中利用IP核实现I/Q信号的产生

    Quartus中提供了一个IP核为DDIO IP,可供采集高速ADC传入的数据后分成I/Q两路信号。并且通常比数据处理时采用数据截位生成I/Q两路数据方便高效。

     

    DDIO IP核(双倍数据速率IO)

    DDIO(Double Data Rate IO),IP核在逻辑单元(LE)中实现DDR寄存器,本程序中使用DDIO_IN实现一个DDR输入接口,IP将在参考时钟的上升沿和下降沿接收数据,实现2倍的时钟速率将数据锁存。

    如果ADC选用的为14位,数据总线位宽选择14bits,以及异步清零,未选择数据使能端口,则数据的第一个bit将在输入时钟的下降沿被采集,反之将在上升沿被采集。

    使用DDIO IP时需要注意OE信号在芯片中为低有效,但QuartusII软件自动在输出前添加一个反相器实现OE高电平有效,有需要可将OE转换回低电平有效。

    所以使用DDIO IP是通信中比较常见的一种做法,高速且精准。产生的I/Q两路信号可以直接传输数字下变频(DDC)模块中进行处理,方便快捷。

    大侠天赋异禀,本次交流到此结束,点到为止,有缘再见,告辞。

     

    【QQ交流群】

    群号:173560979,进群暗语:FPGA技术江湖粉丝。

    多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。

     

    【微信交流群】

    现微信交流群已建立08群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。

    后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

    江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

    展开全文
  • FPGA数字信号处理(四)Quartus FIR IP核实现

    万次阅读 多人点赞 2018-06-07 10:47:08
    该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器。本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FIR滤波器的设计。 1.“FPGA数字信号...

    该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器。本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FIR滤波器的设计。

    1.“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80594627
    2.“FPGA数字信号处理(三)串行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80598992

    IP核概述

    由于版本的关系,Quartus提供的IP核有两种,一种是集成在“MegaWizard Plug-In Manager”中:
    这里写图片描述
    一种是集成在“IP Catalog”和qsys中:
    这里写图片描述

    两种Quartus版本下的IP核,从使用者的角度来看仅仅是配置界面不同,在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的FIR Compiler IP核使用为例。
    Quartus的FIR IP核属于收费IP,如果是个人学习使用需要对IP核单独破解。在Quartus的破解licence文件中找到下段代码,在licence最后复制粘贴一份,将“FEATURE 6AF7_XXXX”中的XXXX改成FIR IP核对应的编号“0012”。保存后重新打开Quartus,在License Setup页面看到FIR Compiler的破解信息,则可以正常使用。

    FEATURE 6AF7_XXXX alterad 2035.12 permanent uncounted E75BE809707E \
        VENDOR_STRING="iiiiiiiihdLkhIIIIIIIIUPDuiaaaaaaaa11X38DDDDDDDDpjz5cddddddddtmGzGJJJJJJJJbqIh0uuuuuuuugYYWiVVVVVVVVbp0FVHHHHHHHHBUEakffffffffD2FFRkkkkkkkkWL$84" \
        HOSTID=b025aa21c82f TS_OK SIGN="1E27 C980 33CD 38BC 5532 368B \
        116D C1F8 34E0 5436 99A0 5A2E 1C8C 8DD0 C9C6 011B A5A9 932B \
        08DE C5ED 9E62 2868 5A32 6397 D9B8 5C3A B8E8 4E4F CEC7 C836"

    这里写图片描述

    IP核参数设置

    像MATLAB一样,FIR Compiler也提供了设计FIR滤波器和生成滤波器系数的功能,点击“New Coffcient Set”,界面如下:
    这里写图片描述
    不过这个滤波器设计功能没有MATLAB的FDATOOL那么强大,也可以用MATLAB生成滤波器系数,存入txt文件中,在上面界面的“Imported Coefficient Set”中导入txt文件。
    这里写图片描述
    FIR Compiler IP核可以在主界面的structure中选择滤波器的四种结构,包括三种分布式算法结构:全并行、全串行和多比特串行,另外一种固定/可变系数的多时钟周期结构。如果设计时不需要改变滤波器系数,则选择四种结构的一种;如果需要在设计中重载滤波器系数,则必须选择最后一种结构。

    “coefficients scaling”中可以选择滤波器系数的量化方式,“Bit width”中选择量化位宽,上面的图中可以看到滤波器的频率响应。

    “Output Sepecification”中可以设置滤波器的输出方式和位宽,IP核会根据输入的数据位宽和其它参数设置自动计算输出数据的位宽。

    IP核支持多通道数据输入,可以在“Number of Inpu Channels”中设置输入数据的通道数。另外设置FPGA型号、数据存储方式、系数存储方式、流水线级数、输入数据位宽等常规参数。
    这里写图片描述
    设置完成后可以生成IP核。老版本的IP核会自动加入到工程中;新版本的IP核集成在qsys中,需要手动在file中将IP核对应的qip文件加入工程。

    IP核接口说明

    Quartus的很多IP核采用的是Avalon-ST接口,主要有数据(data)、准备好(ready)、有效(valid)和错误(error)几种信号。Avalon-ST接口本身也支持时分复用来完成多通道同步(channel),因此FIR Compiler支持多通道数据处理。

    FIR Compiler支持重载滤波器系数,但系数重载的相关端口(coed_set、coed_in_clk、coed_set_in、coed_in、coed_we、coed_ld)不被Avalon-ST接口支持,不属于该类型接口。

    接下来介绍几个主要的接口:

    这里写图片描述

    在设置为多通道、可变系数模式时,还会用到其它的接口。上表中的接口已经足够完成一次单通道、固定系数的FIR滤波器设计。其它接口在后文的设计中使用到FIR滤波器的其它模式时,再做介绍。

    FPGA设计

    IP核的接口在Verilog HDL中进行设计时,一定要参考官方文档中给出的时序图。在IP核的配置界面点击“documentation”,可以找到IP核的data sheet、user guide和release notes。

    这里写图片描述

    FIR IP核的相关文档如上图所示。注意,在altera卖身给intel后,官网进行了大改,目前老版本的quartus中的IP核点击“documentation”时已经成了error,即官网已经没有了相关文档。
    单通道、固定系数的FIR Compiler接口时序非常简单,Verilog HDL示例代码如下所示:

    module FirIPDa 
    (
        input reset_n,              //复位信号,低电平有效
        input clk,                  //FPGA系统时钟/数据速率:2kHz
        input signed [11:0] Xin,    //数据输入频率为2kHZ
        output signed [24:0] Yout   //滤波后的输出数据
    );
    
    wire source_valid, sink_ready;
    wire [1:0] source_error;
    wire sink_valid = 1'b1;
    
    fir_par fir_inst
    (
        .clk                (clk),             //输入,时钟信号
        .reset_n            (reset_n),         //输入,低电平有效复位
        .ast_sink_data      (Xin),             //输入,采样输入数据
        .ast_sink_valid     (sink_valid),      //输入,置1时向FIR滤波器输入数据
        .ast_source_ready   (1'b1),            //输入,源准备好
        .ast_sink_error     (2'd0),            //输入,标识信宿端出现的错误
        .ast_source_data    (Yout),            //输出,滤波器输出,位宽与设计的滤波器参数有关
        .ast_sink_ready     (sink_ready),      //输出,
        .ast_source_valid   (source_valid),    //输出,FIR输出数据有效时该信号置位
        .ast_source_error   (source_error)     //输出,标识信源端出现的错误
    );
    
    endmodule

    程序中认为输入的采样数据始终有效,因此将sink_valid永远置1。另外将source_ready永远置1,且忽视sink_ready信号,可以获得最高的FIR计算时钟速率。

    仿真与工程下载

    使用MATLAB生成一个200khz+800kHz的混合频率信号,写入txt文件,。编写Testbench读取txt文件对信号滤波,文件操作方法参考“Testbench编写指南(一)文件的读写操作”https://blog.csdn.net/fpgadesigner/article/details/80470972

    使用Quartus调用ModelSim进行仿真,对正弦信号的滤波如下图所示:
    这里写图片描述
    明显看到经过500Hz低通滤波器滤波后,输入的200+800Hz信号只剩下200Hz的单频信号。
    完整的Quartus工程(含testbench仿真)可以在这里下载:https://download.csdn.net/download/fpgadesigner/10464189

    展开全文
  • XILINX FPGA数字信号处理权威指南 从HDL到模型和C的描述
  • 本书从硬件描述语言(VHDL和Verilog HDL)、Simulink环境下的模型构建以及Xilinx高级综合工具下的C/C++程序设计3个角度,对采用Xilinx FPGA平台构建数字信号处理系统的方法进行详细的介绍与说明。全书内容涵盖了数字...
  • FPGA数字信号处理(三)串行FIR滤波器Verilog设计

    万次阅读 多人点赞 2018-06-06 18:07:16
    该篇是FPGA数字信号处理的第三篇,选题为DSP系统中极其常用的FIR滤波器。本文将在上一篇“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80594627的基础上...
  • FPGA数字信号处理设计教程-System Generator入门与提高

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,478
精华内容 4,591
关键字:

fpga数字信号处理