当前位置: 首页 > news >正文

棠下手机网站建设报价wordpress腾讯云cos

棠下手机网站建设报价,wordpress腾讯云cos,中国建设银行投诉网站,广东网站建设微信网站定制本文介绍了Vidado中FFT IP核的使用#xff0c;具体内容为#xff1a;调用IP核配置界面介绍IP核端口介绍MATLAB生成测试数据测试verilogHDLTestBench仿真结果验证FFT运算。 1、调用IP核 该IP核对应手册pg109_xfft.pd… 本文介绍了Vidado中FFT IP核的使用具体内容为调用IP核配置界面介绍IP核端口介绍MATLAB生成测试数据测试verilogHDLTestBench仿真结果验证FFT运算。 1、调用IP核 该IP核对应手册pg109_xfft.pdf首先按照图片找到IP核 2、配置界面介绍 本小节主要介绍Fast Fourier Transform9.1这个IP核配置界面的一些选项 第1页Configuration 图1 表1 Configuration界面介绍 ConfigurationNumber of Channels变换通道可以选择多通道实现多帧数据同时进行FFT运算Transform LengthFFT变换长度如果选择了最下面的‘run time configurable transform length’,则该参数是FFT变化的最大长度一般不选ArchitectureConfigurationTarget ClockFrequency(MHz)配置系统时钟Target DataThroughput(MSPS)数据吞吐量ArchitectureChoiceAutomatically Select自动选择所需要的FFT变化架构Pipelined,Streaming I/O流水线结构处理速度最快但消耗资源多(只要将数据组成长序列输入核就会按照FFT点数连续输出变换结果)Radix-4, Burst I/O基4 I/O突发结构Radix-2, Burst I/O 基2 I/O突发结构Radix-2 lite, Burst I/O基2 lite I/O突发结构Run Time Configuration Transform Length该选项可以在FFT变换中通过设置s_axis_config_tdata中NFFT字段的长度来改变FFT变化的长度 第2页Implementation 图2 表2 Implementation界面介绍 ImplementationData FormatFixed Point定点全精度Floating Point定点缩减位宽Scaling OptionsBlock Floating Point不管输入的格式如何FFT变化内部都采用浮点会根据每一级的数据情况自动缩放。 这个模式的输入输出位宽一致便于调用Scaled在s_axis_config_data中会有相应的字段配置缩放因子.每一级别包含2个stage 2个bit 表示一级缩放一般0-3可选如果log(NFFT)不是2的倍数则最高一级的缩放只能在0-1之间选取Unscaled不用担心变化过程中会出现溢出但是输入是32bit的话输出是64bitRounding ModesConvergent Rounding采用四舍五入输出数据(会使用更多的位宽来实现增加转换速度和使用资源)Trancation采用截位输出数据Precision OptionsInput Data Width输入数据的位宽Phase Factor Width输入数据相位因子宽度Control SignalsACLKEN时钟使能ARESETn(active low)复位信号Output Ordering Options输出位序选项Output OrderingBit/Digit ReversedOrder逆序输出Natural Order顺序输出Optional Output FieldsXK_INDEX勾选表示给出输出索引OVFLO变换中溢出的指示信号Throttle ShemeNon Real Time输出不遵循真实时间Real Time输出遵循真实时间 第3页Detailed Implementation 图3 表3 Detailed Implementation Detailed ImplementationMemory Options存储器选项DataBlock RAM突发I/O架构:块RAM或分布式RAM均可用于数据和相位因子存储;流水线流I/O:数据部分存储在块RAM部分存储在分布式RAM上因此这两项都无法配置Distributed RAMPhase FactorsBlock RAMDistributed RAMNumber of stages using Block RAM for Data and Phase Factors选择块RAM的级数一般用不到默认即可Reorder BufferBlock RAM流水线模式可选则配置一般默认即可Distributed RAMOptimize Block RAM Count Using HybridMemories一种优化存储的方式一般不用Optimize Options优化选项Complex Multipliers Use 3-multiplier structure使用更多的DSP切片优化运算Use 4-multiplier structure比“3-multiplier”运算更快使用资源更多Use CLB Logic一般用在性能要求较低的设计中Butterfly ArithmeticUse CLB Logic切片逻辑构造蝶形运算Use XtremeDsp Slices使用DSP切片的蝶形运算强制使用DSP切片内部的加/减法器 3、IP核端口配置 根据上述配置界面的介绍下面以64点IFFT为例子总结了使用IP核时所需的端口配置如表4所示需要注意的是表4中没有涉及的部分按照IP核的默认配置即可 表4 64点IFFT运算IP核的设置表汇总 ConfigurationNumber of Channels1Transform Length64ArchitectureConfigurationTarget Clock Frequency(MHz)50Target Data Throughput(MSPS)50TargetPipelined, Streaming I/OImplementationData FormatFixed PointScaling OptionsScaledRounding ModesTruncationPrecision OptionsInput Data Width16Phase Factor Width16Control SignalsACLKEN勾选Output Ordering OptionsOutput OrderingNatural OrderOptional Output FieldsXK_INDEXThrottle ShemeNon Real TimeDetailed Implementation该界面配置全部默认 配置完成之后IP核的端口图如下 图4 64点IFFT核端口图 按照下面图找到例化原语 图5 打开.veo后缀的文件找到例化原语 图6 对例化语句的介绍见表5其中L表示IFFT/FFT的点数。 表5 例化原语介绍 端口名称IN/OUT勾选aclkIN系统时钟aclkenIN时钟使能s_axis_config_tdataIN控制输入模式进行fft/ifft以及衰减因子的设置FWD_INV 1做 fftFWD_INV 0做iffts_axis_config_tvalidIN拉高两个时钟周期之后将端口s_axis_data_tvalid和s_axis_data_tready拉高s_axis_config_treadyOUTs_axis_config_tvalid拉高两个时钟周期后该口给1输出若干个时钟周期后自动归零s_axis_data_tdataIN将数据输入进行FFT运算结果s_axis_data_tvalidIN当s_axis_data_tready高电平后将s_axis_data_tvalid拉高L个周期输入L个数据进行fftL是FFT的点数s_axis_data_treadyOUTaresetn拉高两个时钟周期后该口给1输出此时ip核初始化完成可进行数据输入s_axis_data_tlastIN数据输入完毕后拉高停止数据输入m_axis_data_tdataOUT高位为虚部低位为实部m_axis_data_tuserOUT输出fft的地址值输出值*fs/L为对应频点m_axis_data_tvalidOUT当ifft结果输出时拉高输出L个点的数据后拉低m_axis_data_treadyIN需保持高电平保证FFT单元处在计算模式并且能够输出结算结果m_axis_data_tlastOUT当fft结果输出到最后一个结果时拉高紧接着下一个时钟就拉低event_frame_startedOUT当出现新的计算时给出event_tlast_unexpectedOUT当数据输入完毕而s_axis_data_tlast没有拉高时给出event_tlast_missingOUT但数据输入完毕之前s_axis_data_tlast就拉高时给出event_status_channel_haltOUT当核不能将数据正常输出给状态通道时给出event_data_in_channel_haltOUT但核当前请求数据而数据没输入时给出event_data_out_channel_haltOUT 当核不能将数据正常输出给数据通道时给出 需要说明的是需要配置的端口有1aclk2aclken3s_axis_config_tdata 4s_axis_config_tvalid 5s_axis_config_tready6s_axis_data_tdata7s_axis_data_tvalid8s_axis_data_tready9m_axis_data_tdata10m_axis_data_tuser11m_axis_data_tready12m_axis_data_tlast 4、MATLAB生成测试数据 本次测试只需要使用TestBench验证即可需要生成.txt后缀的文件产生IFFT核的输入数据主要程序为 %% 该.m文件用来生成介绍IFFT核的数据具体为64点的IFFT 16QAM clear close all clc rng default %产生固定数值的随机数据 %% 基于符号算法的目标距离和速度探测 %% 定义基本参数 Ns1; %符号数 Nc64; %子载波数 M16; %调制方式 bit_numlog2(M); %一个码组中的码元个数 bitrandi([0 1],Nc*Ns*bit_num,1); %产生比特 norm1/sqrt(10); %16qam 归一化因子 %% 16qam bit_convert(reshape(bit,bit_num,length(bit)/bit_num));%二进制数据流按照调制的方式分成不同码元 data_2_to_10bi2de(bit_convert,left-msb); %将每四位数据转换为十进制数 maxtixreshape(data_2_to_10,Nc,Ns); bit_monorm*qammod(data_2_to_10,M); a_nmreshape(bit_mo,Nc,Ns); %% 发送端IFFT调制 IFFT_OUTifft(a_nm,64); %% 数据保存为.txt文件echo_realreal(a_nm);echo_imagimag(a_nm);echo1_realquantizer([16 11]);echo1_imagquantizer([16 11]);fid_echofopen(C:\Users\15865\Desktop\FFT_IP_core_64point\IFFT_IP_core_64point_exam.txt,wt);for j1:Nsecho2_realnum2bin(echo1_real,echo_real(:,j));echo2_imagnum2bin(echo1_imag,echo_imag(:,j));for i1:Ncimag_real_echo[echo2_imag(i,:),echo2_real(i,:)];fwrite(fid_echo,imag_real_echo);fprintf(fid_echo,\n);endend fclose(fid_echo); 图中程序功能是生成了一段包含64个复数数据的数组并将每个复数数据用16表示实部16位表示虚部共生成32位二进制数最后将这组数据保存为.txt后缀文件。 5、测试verilog HDL 根据前文的配置编写一个简单的测试.v文件测试64点数据的IFFT运行结果主要程序如下 timescale 1ns / 1ps module IFFT_introduction(input clk,input rst_n,input ifft_valid,input [31:0] data_in, // input last,output s_config_tready,output [31:0] m_data_tdata,output s_data_tready,output [7:0] m_data_tuser,output m_data_tvalid,output m_data_tlast);FFT_IP_core_64point ifft_u0(.aclk(clk), // input wire aclk.aclken(rst_n), // input wire aclken.s_axis_config_tdata(8d0), // input wire [7 : 0] s_axis_config_tdata.s_axis_config_tvalid(1b1), // input wire s_axis_config_tvalid.s_axis_config_tready(s_config_tready), // output wire s_axis_config_tready.s_axis_data_tdata(data_in), // input wire [31 : 0] s_axis_data_tdata.s_axis_data_tvalid(ifft_valid), // input wire s_axis_data_tvalid.s_axis_data_tready(s_data_tready), // output wire s_axis_data_tready // .s_axis_data_tlast(s_axis_data_tlast), // input wire s_axis_data_tlast.m_axis_data_tdata(m_data_tdata), // output wire [31 : 0] m_axis_data_tdata.m_axis_data_tuser(m_data_tuser), // output wire [7 : 0] m_axis_data_tuser.m_axis_data_tvalid(m_data_tvalid), // output wire m_axis_data_tvalid.m_axis_data_tready(1b1), // input wire m_axis_data_tready.m_axis_data_tlast(m_data_tlast) // output wire m_axis_data_tlast );wire [15:0] ifft_64point_out_RE,ifft_64point_out_IM; // assign RE{{4{m_data_tdata[15]}},m_data_tdata[15:4]};//IFFT归一化处理除Nfft // assign IM{{4{m_data_tdata[39]}},m_data_tdata[39:28]};assign ifft_64point_out_IMm_data_tdata[31:16]; //虚部assign ifft_64point_out_REm_data_tdata[15:0]; //实部 endmodule这段程序调用了FFT IP核的例化原语并将部分接口作为函数的输入和输出方便TestBench调用。 6、TestBench仿真 主要程序如下 timescale 1ns / 1ps module ifft_tb(); reg clk; //系统时钟 reg rst_n; //复位信号低有效 reg ifft_valid; //数据有效位指示输入数据有效 reg [31:0] data_in; //输入数据wire s_config_tready; wire [31:0] m_data_tdata; wire s_data_tready; wire [7:0] m_data_tuser; wire m_data_tvalid; wire m_data_tlast;IFFT_introduction u0( //例化.v文件.clk(clk),.rst_n(rst_n),.ifft_valid(ifft_valid),.data_in(data_in),.s_config_tready(s_config_tready),.m_data_tdata(m_data_tdata),.s_data_tready(s_data_tready), .m_data_tuser(m_data_tuser),.m_data_tvalid(m_data_tvalid),.m_data_tlast(m_data_tlast) ); reg [31:0] mem [63:0]; initial begin //$readmemb Vivado内置函数调用.txt文件$readmemb(C:/Users/15865/Desktop/FFT_IP_core_64point/IFFT_IP_core_64point_exam.txt,mem);clk0;rst_n0;#1000;rst_n1;#10_000;$stop; end always #10 clk~clk; //50MHz reg [6:0] count; //计数 always(posedge clk or negedge rst_n) beginif(!rst_n) countd0;else if(countd63)countcount1b1;elsecountdz; end // 产生信号和数据 always(posedge clk or negedge rst_n) beginif(!rst_n) beginifft_validd0;data_ind0;endelse if(countd0 countd63) beginifft_valid1;data_inmem[count];endelse beginifft_valid1b0;data_ind0;end end endmodule7、Modelsim结果与MATLAB输出结果验证 本节将验证Modelsim和MATLAB输出结果的一致性并简单介绍Modelsim输出结果向MATLAB数据的转换。 Modelsim 输出结果如下图 图10 由于数据有64个而这里验证前三个中间三个和后三个的方式验证Modelsim数据和MATLAB数据正确性 表6数据验证 MATLAB序号Modelsim序号0.07910.791i10.07880.0788i10.1504-0.1122i20.1503-0.1122i2-0.03360.2315i3-0.03370.2314i3-0.1444-0.0422i31-0.1444-0.0422i31-0.15330.1128i32-0.15530.1128i32-0.03950.0791i33-0.03950.0790i330.0992-0.1690i620.0992-0.1689i62-0.10360.0314i63-0.10360.0314i63-0.1168-0.1773i64-0.1167-0.1773i64 需要注意的是Modelsim输出的结果并不是小数而是忽略了小数点的整数要想获得和MATLAB类似的浮点数需要我们将输出结果变换这里以Modelsim输出的最后一个数为例即表6中序号64可见图11。 图11 对于该结果需要我们将输出结果除以2^a ba为用以表示小数的位宽数本文中为11b为FFT点数的2次幂幂值本文为6因此对于每一个Modelsim的输出结果都需要除以2^17这里实部-15302/2^17-0.1167虚部-23234/2^17-0.1773。 从表6中数据可以看出IFFT 核执行的运算和MATLAB的运算结果十分接近验证成功。 8、FFT运算 与IFFT运算类似配置不用更改只需将第5小节程序中s_axis_config_tdata端口配置改为8’d1即可其他无需变动。 参考 https://blog.csdn.net/duanchangrenhit/article/details/109639454
http://www.dnsts.com.cn/news/74536.html

相关文章:

  • 淘宝网站优化实例软件外包是什么意思
  • 网上做网站网站花都网站建设公司怎么样
  • 网络营销策划过程搜索引擎优化的完整过程
  • 网站制作项目执行中山祥云网站建设
  • 微设计公司网站合肥广告牌制作公司
  • 建设网站运营成本wordpress search标签页
  • 电子商务网站建设与规划案例网站上面的内容里面放照片怎么做
  • 网站建设与优化标准苏州保洁公司多少钱一个平方
  • 静态网站开发常用语言网站开发系统搭建
  • 工业做网站wordpress采集免费版下载
  • 黄石网站设计西安有什么网站
  • 网站备案加链接代码游戏代理免费加盟
  • 生意宝做网站行吗wordpress 主题商店
  • 中国建设工程标准化协会网站免费域名怎么弄
  • 大庆门户网站福安网站建设
  • 河北网站seo外包网站建设越来越便宜
  • hao123网站模板平邑建设银行网站
  • 可植入代码网站开发wordpress大学 插件
  • 长图可以在哪些网站做标签云 wordpress
  • 有口碑的镇江网站优化怎么做分享网站
  • HTML网站页面建设头条网站怎么做的
  • 产品网站建设自建站是什么意思
  • 网站对于企业的好处抖音推广方案和推广方式
  • 深圳市点击未来科技网站建设江西省城乡住房建设部网站
  • 学网站建设好不好朋友圈软文
  • 杭州网站建设ttmwlwordpress 提供下载功能
  • 视频网站开发报告小米手机官方网站
  • 5站合一 网站建设宿州保洁公司有哪些
  • 房产公司网站建设重庆logo设计图片
  • 网站的建站公司找企业网站制作