yunsdrpluto工程-04hls部分无线通信实验讲义_第1页
yunsdrpluto工程-04hls部分无线通信实验讲义_第2页
yunsdrpluto工程-04hls部分无线通信实验讲义_第3页
yunsdrpluto工程-04hls部分无线通信实验讲义_第4页
yunsdrpluto工程-04hls部分无线通信实验讲义_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

修订记20176262017831关于威视锐科技是专注于软件定义无线通信(SDR)系统仿真、验证和测威视锐与微软联合开发的Sora软件无线电经成为世界上知名大学和100%x8620300最大的可编程器件(FPGA)XILINXXILINXFPGA/SoCZYNQ7000SoCXILINXZYNQSoCSoCSNOWLeo,性价比远高于国外同类产SoC2004多年以来,威视锐科技坚持“InnovationforResearch”的发展理念,与国内众修订记 第四篇HLS HLS概 HLS应 FIR低通滤波器设 HLS使用进 HLS设计流 C/C++代码转化原 HLS设计优 流水线设 扩频系统的HLS实 基本原 发送端设 前导产生模 数据帧产生模 加扰模 调制与扩频模 发端整体设 接收端设 帧同步与解 载波同 频偏估计与补偿算法原 粗频率同步模 精频率同 相位校 解译 RTL仿 硬件验 HLS概

第四篇HLS阵列(FPGA)的寄存器传输级(RTL)C,C,SystemC或作为开放式计算语言(OpenCL)APICC语言规范,并且FPGA提供了大量并行架构,VivadohlsFPGA上加速其算在C在C通过优化指令控制C使用优化指令从C源代码创建多个实现探索设计空间,从而增加找到最佳实现的可创建可读和可移植的CCC源并入到新项目HLS应在vivadohls工具入门实例,可以选择低通滤波器demo,它是是在由威视锐科技研发的eaglego的硬件平台上搭建的。以下是带领对vivadohls的入门者学习hls开发设计。5M5M以正弦5M以正弦波天天5M低通滤波后结5M正弦1FIRFIR低通滤波器设Vivadohls硬件平台:由威视锐研发的Y320套件Windows操作系统的电脑终端。打开vivadohls创建工程名,工程所 添加写好的c,c++添加testbench硬件平台选择这里我们选择由威视锐开发的y320,是zynq7020的进入到hlsc代码语言处理方式这里不做详述,fir原理就是一个累乘加算法,值得说明的是fir系数生成方法。打开工具。获得截止频率为5Mhz的2FIR导出系数到的工作空间。然后量化成整数返回到主界面量化成整数量化后拷贝到c代码就ok对fir函数interface做directive,可约束成fifo,ack,vld…….按照此种方法将directivedemo接下来就是将c仿真,c综合,v仿真,导出生成ip3FIR将该solutionv文件拷贝到vivado打开vivadodemo生成bit,到硬件。查看ila波形图4FIRilaHLS使用进20年,占主导地位的电子设计流程中,硬件设计人员需要手工完成从系统功能指标到RTL级代码的所有工作。如今,这样的设计流程开始变得,因为越来越多的功能可以被集成在一个上,按照传统的设计流程,开发人员独自一人完成所有的功能变得越发,但因为设计功能的增多而增加设计团队的人员数量,从经济角度上看是不可行的这意味着设计生产率必须有所提高次综合能够通过从算法层到RTL层的自动化来提高设计生产率,从下图(b)中可以看到,应用次综合,系统设计在设计流程中,应用次综合工具能够给设计工作带来以下便利:首先,需要设产品开发过程中,验证所需的时间往往超过设计的时间,使用次综合工具能够缩短验证时间,在次综合工具生成设计代码的同时,还能够同时生成测试平台代码,可HLS设计流

图5RTL设计与HLSHLS是从次描述,之后综合成可用的网表文件的技术。这里的“高指采用C/C++HDL语言。VivadoHLSC/C++程序综合VerilogHDLVHDL代码,之后进行下一步工作。HLS采用约束对代码的综合过程进行控制,以实现不同架构,使设计具有不同HLS进行信号处理的FPGA设计可以分为以下几个步骤:编写功能模块的C/C++程序,并编写测试激励,对程序进试仿真在通过C/C++仿真的前提下,根据用户需求修改代码和添加优化指令,获取用户进行C/C++综合,并根据综合报告进一步通过代码风格和优化指令进行优化设计,LevelRTL)进行C/RTLHLSC/C++RTL转化,并完成RTL仿真;HLS封装IPC/C++代码转化原HLS工具会将C语言代码转换成伪机器代码,都可以用FPGA逻辑(乘、加、递瓶颈。如果一个复杂的乘法运算要花费30个周期,并且你要执行256次的话,那么延迟25630*256代码会将伪机器代码为HDL逻辑代码(Verilog或VHDL),使用简单AXI协议最后将转换后的代码或者IPHDLbug(n以帮助我们精简逻辑代码,提升系统设计性能。HLS设计优HLS的SDRFPGA设计,相对于传统的开发方式在功能设计、功能设计:采用C/CCC代码转换为RTL80%以上,提升信号处理系统开发效率。C/C++的仿真进行算法的功能验证,通过C/C++Modelsim的协仿真可快速实现RTL代码的功能验证,而无需重新编写测试激励,相对于传统的验证方法,测更新与:由于采用C/C++语言设计,更新和更加容易,通过修改C/C++代码,的RTL代码。流水线流水线是影响FPGA处理通过率的重要因素,其通过将一个复杂的操作步骤分解为理时间,而不是所有步骤的总时间,因此提高了设计通过率。HLS采用Pipeline算的通过率和计算效率,对所有模块全部进行Pipeline设置。由于HLS是采用C/C++等语言进行编程,C/C++语言是针对于CPUDataflow指扩频系统的HLS实HLS的实现,我们给出一个扩频通信的实际实现案例,旨在通过实时无线电通信系统的设计,更好理解HLS的优势和效率。并通过各种软件优化和HLS约束,全部实现pipeline的结构,在兼顾实现效率和硬件消耗与延迟的情况下,使用软件代码,尽最大。作为单载波扩频通信的一个典型,我们实现IEEE802.11b1M2MYunSDRy320(zynq7020)。软件代码采用C++基本原以下给出标准IEEE802.11b

6IEEE802.11b。128位全1序列经扰码后得到利用该部分进行数据接收前的一些必要的同。来说,该部分长为16位,数据为[1111001110100000],发送顺序为从低位到;此部分长度为8位,指示当前帧PSDU部分的调制方式,数值等于发送速率乘以10,数据的发送方式为从低位到。对于高速DSSS帧来说,共有4种调制方式可供选择,其对应的SIGNAL数据为: 1Mbps 2Mbps 5.5Mbps 11MSERVICE08DQPSK来说,LENGTH82。16位的冗余列,并对所有数据进行CRC32校验,生成32bit附在数据最后,因此总的有效数据传输长度为PSDU-32。发送端RTL仿真结果,实际的C++源代码可在工程中自行查看。需要说明的是,发端最终的输出数据是直接序前导产生模

7192bit的PLCP128bit的sync序列、16bit(IEEE802.11b有长帧和短帧两种,本案例只涉及长帧)、48bit的header(16bitcrc16校验值,signal和length字段根据用户自定义参数分别计算,service8bit0)8图9RTL上图是plcp产生模块的RTL1Mclk的时钟驱动下,根据输入参数和rate,计算相应字段的bit192bit数据帧产生模该模块读入实时写入的数据bt在此读入测试数据为prbs15序列crc32321Mclk之后,校验值才能输出,所以数据会有一段时间的无效状态,经过最后面的fifo模块之后,数据重新变得连续。10加扰模

图11数据帧模块RTL802.11b规定,在对数据进行调制之前要对所有的bit进行加扰处理,其目的是017级移位寄存器的方式,长帧类型的初始值为[1,1,0,1,1,0,0]1Mclk,采用串行输入方式,每个时钟1bit数据,同时更新移位寄存器的状态,如此往复,直到所有数据输入完毕。12图13加扰模块RTL调制与扩频模DBPSKDQPSK1Mbps2Mbps。DBPSK首先对输入bit010、1逻辑电平转换为+1、-111位barker码,码型为-111-1111-1-1-1],扩频后码片速率为11Mchip/s。在二相调制下,I、Q的输出相位变化(j00114DBPSK15DBPSKRTL2MbpsDQPSK。DQPSKDBPSK调制的实现结构相同,只是差分编码的方式不同:每输入2bit,编在I、Q同时输出一个符号然后进行扩频调制扩频方式与DBPSK一致同样采用11位barkerDQPSK的编码规律如下表所示。在四相调制下,I、Q的输出信号是不同的。输入(d0d1)(d0先输入相位变化(j03/2(-16DQPSK17DQPSKRTL发端整体设由于发端相对比较简单,所有的模块封装在一起,最后综合为一个top函数。该函数有两个可变参数rate和length,length指定一帧的数据长度(bytes-32),rate指定信息的传输速率,11Mbps的DBPSK传输方式,22Mbps的DQPSK传输方式。程序还有一个计数器count,每一个clk的上升沿,该计数器加一,用来进行硬件时序的仿真与约束。输出为I、Q的扩频序列。前导序列工作在1M的时钟,数据部分根据1M2M11M扩频之后的数据。18图19发端整体RTL接收端

图20发端整体RTL传递到下一个处理单元,而且整个处理过程中不存在反馈行为,从而保证整个电路帧同步与解采样信号每个时钟送入寄存器一次,本地barker码寄存器与采样信号分别相乘,然后送入加法器求和。这个和的绝对值反映了输入信号与本地barker码的同步情况。当它chip,可以认为完成捕获。DelayBuffer的信号已经是基带信号,对于同步捕获,输入信号的极性1bit量化,即只考虑输入信号的极性,设输1,反之输入为-1,然后与本地barker相乘再Stimulus:21图221bit量化(即只考虑数据相位)之阈值TH14,也可根据实际信道调整。实际C算法实现:在程序中开辟一个staticDelayBuffer1111个数之后,和本地barkerI2Q244个点的相关值DelayBufferFrameSyncFlag1clockDelayBufferDelayBuffer中的数据移出,送入下一个阶段,如此往复,直到数据捕获失锁,置FrameSyncFlag为0,重新进入搜索状态。当FrameSyncFlag0时,将一直搜索捕获,直到满足条件为止。DelayBuffer11barker据解扩出来一个,也就是1111Mclock输出一次数据,此时数据速率变为1M的码流。同时,DelayBuffer11个clock全部更新一次。23帧同步与解扩模块RTLRTL运行图,可以看出,模块能够准确找到数据帧的起11clock使能一次,正好采到了数据相关峰值的位图24FrameSyncFlag0由于数据帧全部为barkker码,因此我们可以根据相关值的下降点来判断帧结束时因此,当当前时刻信号的平均功率低于前一个时刻的一半时,表明当前时刻为噪声,数据帧传输完毕,此时置FrameSyncFlag0图2526载波同

图27RTL11b突发帧的传输模式,我们使用开环128BPSK调制的同步序列,进行载波同步。频偏估计与补偿算法原使用SYNBPSK调制(长帧和短帧都是),并且由星座点的位置可知,该BPSK1,即,假设存在频偏的BPSK信号为:s(n)eja(n).eja(n0、1fT是符号周期。s(n)2e2js(n)2可以估计出fDA(DataAided,辅助数据)的频偏盲估计算法,z(n)s(n)2z(n的相关函数r(mr(m)E[z(n)z*(nm)],mr(m)ej22fmT,m

f1

r(m))/(M

其中,MM

fmaxM值不能太小以外,用来计算相关函数r(m的序列也不能太短。粗频率同步模延迟数据进行平方运算,以消除BPSK的相位影响,然后计算第2个数据乘以第1个数32个数据的共轭,···,988314乘以第2个数据的共轭,···,第10个数据乘以第8个数据的共轭,第二次自相关序810。28及前前时刻的数据,然后分别计算zr1和zr2的值,因此,我们需要对数据进行延迟,分块计算zr1和zr2,提取公因式,可减少一次复数乘法运算。29需要的是,当计算出自相关函数之后,在下一个周期,进行频偏值的估算,然311atanC语言的mathHLS的cordic中的atan函数,VivadoHLS为我们实现了此函数,在保证数据精度的情况下,大大减少了资atan只与QI的比值有关。因此在实际算法中,首先计算IQ的比值,这个值一定在1和-1之间(如果大于一,则取倒数),然后将atan输入中的I路写为1.0,Q路为Q/I的值(Q1.0,II/Q的值),1和-1之间,和信号绝下图展示了实际粗同步算法的仿真结果,BPSK调制数据,SNR=10dB,手动设置频50KHz。3031精频率同

32粗频率同步模块RTL用全部前导序列的128位BPSK调制信号进行精频偏估计,最终获得比较好的频率同步2131据的共轭相关、第4个数据和第1个数据的共轭相关,然后对这三个相关值求平均,331.12KHz,48.87+1.1134相位校

35精频率同步模块RTL(BPSK的信号能量集中分布在两个点之间)。但是,数据的相位还没有正确,实时信号4个象限之间来回旋转跳跃,表现为星座图的整体旋转,直接造成数据相相位表现为瞬时频率的积分,因此,不仅初始相位会造成错误,瞬时频率误差发送前导序列为BPSK信号(分布在一三象限的角平分线上),以信号的初始相位-1+1i-1-1i4种组合)进行平方开方计算可得,信号相位全部位于一三象限角平128位数据全部是初始相位,根据接收信号的前导,求该接36我们注意到,本地序列是原始的1数据,并且注意到相位误差和信号大小无关,仅仅取决于相位差值,所以可以简化以上算法,避免乘法运算,仅仅将输入数据的IQ进行加减就可以得到相关值。计算128个相关值的意义不大,不仅会加大计算量,消耗的资源,而且并不会带来多少的精度提高,因此,我们根据实际硬件和,选取前导数据的第、、 个数据进行平均,得到初始相位误差信号,数据间隔为32。图37相位校正RTL38经过前面的各个同步模块之后信号被恢复的比较好可以进行bit逆解调译码是发端的完全逆过程。首先对前导序列进行,前192个数据,进行DPSK的解调解扰之后恢复出原始的plcphdr字段相应的rte和length接收端要对32bit的hedr域进行r16校验。这是为了防止帧头解调失败,到错误的rte和length,特别是lengt,如果出错,将会对下一帧数据的正常接收产生影响,从而增大误码率。当r16校验通过时,说明解出了正确的rte和length,否则,说明解调失败,函数立即返回,重新开始下一帧的数据接收。当解出的rate11MbpsDBPSK解调,同时根据length计算数据长度,从PSDU的第一个数据开始计数,进行计数器递减,计数器初始值为length0为止,说明当前帧接收完毕,同时完成解扰和crc32的bitcrc321时说明数据PSDU1时说明PSDU解调错误。当解出的rate22MbpsDQPSK解调,同时根据length计算数据长度,从PSDU的第一个数据开始计数,进行计数器递减,计数器初始值为length*20为止,说明当前帧接收完毕,同时完成解扰和crc32的校验,输出原始bit流,同时在当前帧结束时输出crc321时说明数据PSDU1时说明PSDU解调错误。39图40解译码模块RTL图41解译码模块RTL图42解译码模块RTL上图为解译码模块的RTL仿真运行结果的解调数据为4模块工作在1Mclk下,模块输出解调出来的rate和len,rate=101MDBPSK,len=256表明当前帧的长度(bit),crc32bitRTL仿简介:仿真工具是ModelVerilog、VHDL以及他们的混合仿VHDLVerilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编为用户加快调错提供强有力的,是FPGA/ASIC设计的首选仿真软件。RTL仿真前,需要搭建仿真ip库,在扩频收发系统中,发射端会用到一fir和一个fifo的ip,所以在中编译xilinxip仿真库是非常重要的。在扩频系的试验中,开发工具版本是vivado16.4和10.4版本。在vivadohls仿真、只是仿真单个模块,由于解决扩频的高效性,系统级仿真放在了中,将hlsRTL文件和xilinxip搭建成的扩频系统完整的收发系统。xilinx接收HLS接收HLS4 数(hls设计部分HLS

图43FIFO添加原因是因为一帧中发出的数不连续,从图上可以看出一帧中间后边一段空挡时间是crc32校验时间,校验结束后才发送cr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论