第一篇:基于FPGA的交织器,深圳大学,通信系统中串行数据交织器的设计(精选)
深 圳 大 学 实 验 报 告
课程名称:硬件描述语言与逻辑综合
实验项目名称:通信系统中串行数据交织器的设计
学院: 电子科学与技术学院
专业: 电子科学与技术
指导教师: 刘春平
报告人学号: 班级:电子(2)班
实验时间:
实验报告提交时间:
一、实验原理
交织器是通信编码中抗突发干扰的一种重要手段,将突发干扰产生的分布集中的误码分散到信息数据中,以便采用纠错编码的方法进行纠错。本项目要求设计一个行列交织器,如图所示,PN码发生器模拟数据源产生串行数据,按行写入一m行n列的RAM中,写满后按列读出。为避免数据丢失,需使用两个这样的RAM交替读写。即一个读时,另一个写。一个写时,另一个读,这样交替循环。因此,会产生一个周期的延时。这里统一要求m和n都选4.二、源程序
module jiaozhiqi(out,waveout,clk);
//输出未交织的out和交织后的waveout,输入50Mclk时钟
output out,waveout;input clk;reg [0:0]out;reg [0:0]waveout;reg A0,A1,A2,A3;reg mem_A[3:0][3:0];//4*4的二维寄存器型数组mem_A reg mem_B[3:0][3:0];//4*4的二维寄存器型数组mem_B integer i,j;reg clock,flag;reg[31:0] count;
initial//初始化各变量 begin i<=0;j<=0;A0<=1;A1<=0;A2<=0;A3<=1;flag<=0;count<=0;clock<=0;end
//将clk分频,产生交织器所需的频率clock always @(posedge clk)
begin
end
//伪随机码发生器 if(count==1)
begin count<=0;clock<=~clock;end else count<=count+1;always @(posedge clock)begin
j=j+1;A0<=A0^A3;A1<=A0;A2<=A1;A3<=A2;end always @(posedge clock)//对mem_A或mem_B中的数据进行交织 begin
if(j>3)//利用i和j控制mem_A和mem_B按行输入,按列输出
begin
end begin
i=0;flag=~flag;//每输入完16个数据,标志位发生一次变化。标志位用于控制
mem_A写mem_B读,还是mem_B写mem_A读 j=0;i=i+1;if(i>3)end begin
if(flag==0)//这个周期实现mem_A按行写,mem_B按列读
mem_A[i][j]<=A3;//mem_A按行写 out<=mem_B[i][j];
//mem_B按行读,即mem_B交织前的数据
waveout<=mem_B[j][i];//mem_B按列读,即mem_B交织后的数据
end else //这个周期实现mem_B按行写,mem_A按列读
begin
mem_B[i][j]<=A3;//mem_B按行写 out<=mem_A[i][j];
//mem_A按行读,即mem_A交织前的数据
waveout<=mem_A[j][i];//mem_A按列读,即mem_A交织后的数据
end end endmodule
三、实验结果与分析
刚刚开始仿真时的第一个周期,由于flag=0,所以mem_A按行写,mem_B按列读,由于mem_B之前还未写入过数据,所以out(交织前)和waveout(交织后)输出均为0.第二个周期,flag=1,输出的为前一周期写入mem_A的数据,输出的out(未交织)为0000 1111 0101 1001,即
0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 而输出的waveout(交织后)为0101 0110 0100 0111,即
0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 可见,交织成功。
第三个周期,flag=0,输出的为前一周期写入mem_B的数据,输出的out(未交织)为0001 1110 1011 0010,即
0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0
而输出的waveout(交织后)为0110 0100 0111 1010,即
0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 可见,交织成功。
一直这样循环下去,可见,源程序仿真通过。
四、实验演示
clk分配50MHz,out分配到GPIO 0,waveout分配到GPIO 1,然后用示波器双踪观察out与waveout,观察是否交织成功。
实验结果:
要在示波器中找到某一周期的起点不容易,但由于用的是伪随机码,有一定的规律。如上图,利用仿真器输出的波形,成功在示波器找出了某一周期起点的位置。由图可见仿真和示波器的out输出均为0101 1001 0001 1110 1011 0010 0011 1101 ······即
0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 交织后的waveout为0101 1001 0001 1110 1001 0001 1110 1011,即
0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 交织成功。可见,本次试验是成功的。
五、心得体会
通过本次实验,我掌握了串行数据交织器的原理,学会了串行数据交织器的设计。由于刚开始时不太懂,参考了一下网上的程序,结果老师说大家的版本都差不多,怀疑我是抄的。其实也算不上是抄,只是参考。本来我想自己写的,但见别人写得那么好了,我已经无法超越了,就把别人的改了改就拿来用了,其实网上那个版本也是有点问题的,我发现了四句是多余的,原来那个人也是未完全弄懂的啊!因此,我写了这个用二维数组来控制的,发现其实用二维数组来控制其实更加简单,程序更加简洁,可移植性也大大增强。只要肯努力,相信自己可以做得更加好!其实,velilog这东西基础真的很重要,基础不好真的很容易出错,出了错自己本人一般是很难看出来的。
第二篇:FPGA数据采集与回放系统设计论文
FPGA数据采集与回放系统设计论文
在个人成长的多个环节中,大家或多或少都会接触过论文吧,论文是我们对某个问题进行深入研究的文章。怎么写论文才能避免踩雷呢?下面是小编为大家整理的FPGA数据采集与回放系统设计论文,欢迎阅读,希望大家能够喜欢。
1系统及其原理
基于通用信号处理开发板,利用FPGA技术控制AD9233芯片对目标模拟信号采样,再将采样量化后的数据写入USB接口芯片CY7C68013的FIFO中,FIFO写满后采用自动触发工作方式将数据传输到PC机。利用VC++6.0软件编写上位机实现友好的人机交互界面,将传输到PC机上的数据进行储存和实时回放。本系统主要实现以下两大功能:1)ADC模块对目标模拟信号进行采样,利用FPGA技术将采样后的数据传输到USB接口芯片CY7C68013的FIFO中存储。2)运用USB2.0总线数据传输技术,将雷达回波信号数据传输到PC机实时回放。分为应用层、内核层和物理层3部分。应用层和内核层主要由软件实现。应用层采用VC++6.0开发用户界面程序,为用户提供可视化操作界面。内核层基于DriverWorks和DDK开发系统驱动程序,主要起应用软件与硬件之间的桥梁作用,把客户端的控制命令或数据流传到硬件中,同时把硬件传输过来的数据进行缓存。物理层主要以FPGA为核心,对USB接口芯片CY7C68013进行控制,通过USB2.0总线实现对中频信号采集。系统设计采用自底向上的方法,从硬件设计开始逐步到最终的应用软件的设计。
2硬件设计
FPGA在触发信号下,控制ADC采样输入信号,并存入FIFO中。当存满时,将数据写入USB接口芯片CY7C68013,同时切换另一块FIFO接收ADC转换的数据,实现乒乓存储,以提高效率。FPGA模块的一个重要作用是控制USB接口芯片CY7C68013。当ADC采样后,数据进入FPGA模块,FPGA控制数据流将其写入CY7C68013的FIFO中,以便于USB向PC机传输。CY7C68013的数据传输模式采用异步slaveFIFO和同步slaveFIFO切换模式。通过实测,前者传输速度约为5~10Mbit/s,后者传输速度最高可达20Mbit/s,传输速度的提高可通过更改驱动程序的读取方式实现。
3软件设计
3.1USB驱动程序设计
USB2.0总线传输技术最高速率可达480Mbit/s。本系统采用批量传输的slaveFIFO模式。CY7C68013芯片内部提供了多个FIFO缓冲区,外部逻辑可对这些端点FIFO缓冲区直接进行读写操作。在该种传输模式下,USB数据在USB主机与外部逻辑通信时无需CPU的干预,可大大提高数据传输速度。Cypress公司为CY7C68013芯片提供了通用的驱动程序,用户可根据需求开发相应的固件程序。
3.2FPGA模块程序设计
系统中FPGA模块的'核心作用是控制AD9233芯片进行采样。AD9233作为高速采样芯片,其最高采样速率达125Mbit/s,最大模拟带宽为650MHz。通过改变采样速率可使该系统采集不同速率需求的信号,扩展了该系统的应用范围。描述FPGA控制USB数据写入接口芯片FIFO的状态机如图6所示。状态1表示指向INFIFO,触发FIFOADR[1:0],转向状态2;状态2表示若FIFO未满则转向状态3,否则停留在状态2;状态3表示驱动数据到总线上,通过触发SLWR写数据到FIFO并增加FIFO的指针,然后转向状态4;状态4表示若还有数据写则转向状态2,否则转向完成。
3.3上位机设计
为实现人机交互,利用VC++MFC在PC机上编写了可视化操作界面,即上位机。上位机既用于数据采集的控制,同时也用于采集数据的实时回放。上位机界面如图7所示。上位机主要功能:
1)按下“检测USB”按钮,可检测USB是否连接正常,并显示USB基本信息。
2)按下“开始采集”按钮,可将采集的数据传输到PC机并实时回放数据波形;再次按下“开始采集”按钮,可暂停数据波形回放。
3)按下“保存数据”按钮,可将采集的数据以*.dat文件的形式存储到PC机硬盘。
4)按下“结束采集”按钮,可关闭采集系统并退出界面;或按下“确定”和“取消”按钮,也可直接退出界面。
4系统实测
为了测试数据采集与回放系统,利用通用信号处理开发板设计了DDS模块。该DDS模块产生一个正弦波作为测试信号,通过AD9744芯片转换后变为模拟信号输出,并将此输出信号接至示波器以便验证系统。数据采集与回放系统的实物图及系统实测波形与回放波形。
5结束语
通过实际测试,基于FPGA的数据采集与回放系统达到了预期设计的要求。此系统能够对目标模拟数据进行采集,并能对采集的数据实时回放,且可将数据以*.dat文件的形式存入PC机硬盘;系统具有高速的采集传输功能,上位机能够实时、动态地回放数据;信号采集板和处理板共用一套硬件,避免了重复制板,在实际调试时可方便地在信号采集与信号处理的工作模式间来回切换,提高了工作效率。原驱动程序官方版本为了满足通用性和稳定性的要求,限制了传输速率,本设计开发了相应的USB驱动程序,提高了传输速率。
第三篇:基于51单片机的盲文助读器系统设计研究论文(共)
引言
中国是全世界盲人最多的国家之一,据统计约有900万盲人。盲人接受文字信息的途径主要有利用语音合成发声软件阅读和触摸盲文凸字两种形式。语音合成发声感情生硬,缺乏阅读快感,较晦涩的文字和公式更是难以理解记忆。同时,供盲人阅读的新版图书只有104种,盲文期刊仅8种,品种数量可谓奇缺叫。另一方面,现有的盲文助读器由于采用压电陶瓷,其价格也颇为昂贵。本文基于51单片机设计了一种新型的盲文助读器。
1新型盲文助读器的总体架构设计
目前广泛应用的盲文有现行盲文和双拼盲文两种,现行盲文以三行两列的6个凸点为一个基本单位,6个凸点之间通过不同的排列组合形成不同的文字,本文基于流行最广的现行盲文设计了一种8方的盲文助读器。因微型步进电机具有体积小、利于控制、价格低廉等优点,机械部分采用步进电机来实现凸点的起落,控制部分则采用STC89C51单片机,通过6个1,B1848M步进电机驱动芯片来控制6个步进电机,每个步进电机控制1个凸点的起降,每6个步进电机控制的凸点表示1个盲文单元(即盲文的1方),每个盲文单元可以显示1个阿拉伯数字或英文字母,2个或3个单元可以显示1个汉字。电路连接部分采用自行设计的PC'B板,将电机驱动芯片、步进电机、单片机有序地连接。单片机通过内部程序控制来实现盲文单元内6个步进电机间以及每个盲文单元间的协调组合,从而实现盲文的表达输出。
2机械整体架构
采用微型步进电机作为原动机(即控制终端),通过单片机发送的信号控制电机的旋转,带动螺旋机构控制螺母和凸点的升降运动。将微型步进电机镶嵌在底盘内,焊接在PCB板上,利用导轨板壁和与之配合的电机限制螺母沿二,二轴平动和绕二,y轴转动,使之只能绕二轴转动从而实现沿导轨板壁的上下移动,每6个凸点为1个单元,通过不同凸点的起降变化,显示不同的文字。
步进电机是四线二项混合式微型步进电机,此款电机属于二相四拍式步进电机。通过1,B1848M芯片产生的驱动信号驱动步进电机,带动丝轴上的螺母上下运动,距离控制在2 mm的统一高度。步进电机结构示意图如图3所示。
3控制部分设计
3.1多机通讯的硬件设计
PC机作为上位机,主机和从机都为51单片机。PC'机与主机通过串口通讯。由于通讯距离较短,所以本项目采用RS232进行串口通讯,波特率为9 600,数据位为8位。
主机利用缓冲寄存器SBUF接收PC'机发来的字符数据后经过内部转码处理,将字符数据翻译为对应的电机控制码,通过串行通讯发送给从机。从机接收完主机发来的数据后,实时控制相应步进电机的转动状态。其中从机部分只显示出了一个单片机和1个电机。
PCB板的设计是本项目硬件系统的重要部分,使用Propel DXP2004,实现了SCH(原理图)设计、SCH仿真、PCB(印制电路板)设计、Auto Router(自动布线器)和FPUA设计。
在PC'B的制作过程中,芯片IB1848M的封装根据技术手册完成。为了减小盲人助读器的整体尺寸并且配合微型步进电机的焊接,实际制作时,采用两层PCB板作为信号层,其主要的工艺指标如下:PCB板宽为24 mil;最小线宽为6 mil;走线与焊盘的最小距离为12 mil;过孔最小内径为16 mil。
3.2多机通讯的软件设计
通过对51单片机内部的多机通讯控制位SM2SM1的控制实现多机通讯。利用串行通讯来实现主机与从机间的通讯,主机先利用串口向所有从机发送地址,在从机接收到地址时进行判断。若地址不符则不作为,地址相符则继续接收主机发来的电机控制信息,进而对电机进行控制以实现盲文的显示。
在进行多机通讯时,主机依次对从机进行控制,实现8组步进电机的依次控制,先控制第1个从机,令电机显示第1个盲文,再控制第2个从机,令电机显示第2个盲文。
在8组从机依次控制完毕后将所有从机的控制位SM2-SM1恢复为初始状态,准备进行下一次通讯命令的接收。
4结论
本文从我国盲文使用现状入手,指出了现有语音合成发声软件和纸质书籍的弊端,并详细介绍了新型盲文助读器的具体设计原理。利用微型步进电机控制凸点,用单片机控制电机,通过PCB进行电路搭建,实现了新型盲文助读器的设计。它能很方便地将电子版文字转化为盲文凸起形式,价格低廉,对盲人的学习、生活有很大的帮助。