




免费预览已结束,剩余49页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
邵阳学院毕业设计(论文)前 言波形发生器是一种常用的信号源,广泛用于科学研究、生产实践和教学实践等领域。如设计和测试、汽车制造、生物医药、传感器仿真、制造模型等。传统的信号发生器采用模拟电子技术,由分立元件构成振荡电路和整形电路,产生各种波形。它在电子信息、通信、工业等领域曾发挥了很大的作用。但是采用这种技术的波形发生器电路结构复杂、体积庞大、稳定度和准确度较差,而且仅能产生正弦波、方波、三角波等几种简单波形,难以产生较为复杂的波形信号。随着微处理器性能的提高,出现了由微处理器、d/a以及相关硬件、软件构成的波形发生器。它扩展了波形发生器的功能,产生的波形也比以往复杂。实质上它采用了软件控制,利用微处理器控制d/a,就可以得到各种简单波形。但由于微处理器的速度限制,这种方式的波形发生器分辨率较低,频率切换速度较慢。从2007年2月到2007年4月,在系统研究国内外波形发生器的基础上提出了基于matlab和fpga技术的波形发生器,在fpga内开辟高速存储器rom做查询表,通过matlab获得波形数据存入rom中,波形数据不断地,有序地从rom中送到高速d/a转换器对存储器的波形数据进行转换。因此只要改变fpga中查找表数据就可以产生任意波形,因此该研究方法可以产生任意波形。随着我国四个现代化和经济发展,我国在科技和生产各领域都取得了飞速的发展和进步,同时这也对相应的测试仪器和测试手段提出了更高的要求,而波形发生器已成为测试仪器中至关重要的一类,因此在国内发展波形发生器具有重大意义和实际价值。例如,它能模拟编码雷达信号、潜水艇特征信号、磁盘数据信号、机械振动瞬变过程、电视信号以及神经脉冲之类的波形,也能重演由数字示波器捕获的波形等。在本次设计中,我通过matlab获取了波形数据,在fpga中开辟了rom区域,在maxplus开发平台上,实现了电路的vhdl硬件描述和仿真,电路功能在eda平台上得到了验证,但由于我的能力和水平有限,论文中肯定会有不妥之处和错误,恳请老师和同学提出批评和改进意见,在此表示由衷的感谢。1 波形发生器1.1 基于模拟电路的波形发生器设计方案正弦波振荡电路是用来产生一定频率和幅度的正弦波信号。如图1.1所示为利用集成运放构成的rc桥式正弦波振荡器的电路原理图。图1.1 rc桥式正弦波振荡器适当调整反馈电阻值,使电路产生振荡,输出波形为稳定的不失真的正弦波。(1)电路的正振荡频率和起振条件在图1.1中,令,则该电路的振荡频率由式(1.1)决定。 (1.1)起振条件由式(1.2)决定: (1.2)在电路图1.1中, ,表示限幅二极管导通时的动态电阻。(2)选择rc参数的主要依据和条件因为rc桥式振荡器的振荡频率是由rc网络决定的,所以选择rc的值时应该把已知振荡频率作为主要依据。为了使选频网络的特性不受集成运算放大器输入和输出的电阻的影响,选择r时还应该考虑下列条件:式中,是集成运算放大器同相端输入电阻;是集成运算放大器的输出电阻。(3)计算r和c的值 由式(1.1)可计算出电容值,初选r的值由式(1.3)算出c的值再复算r值。 (1.3)实际应用中,要注意选用稳定性好的电阻和电容。(4)选择电阻和 电阻和可根据式(1.2)来确定,通常取=2.1,这样既能保证起振,又不致引起严重的波形失真。为了减小运算放大器输入失调电流及其漂移的影响,应尽量满足的条件。注意,和的最佳数值还是要通过实验调整来确定。(5)稳幅电路的作用及参数选择 由于元件误差,温度等外界因数的影响,振荡器往往达不到理论设计的效果。因此,一般在振荡器的负反馈支路中加入自动稳幅电路,根据振荡幅度的变化自动改变负反馈的强弱,达到稳幅效果。图1.1中的二极管和在振荡过程中总有一个二极管处于正向导通状态,正向导通电阻与并联。当振幅大时,减小,负反馈增强,限制振幅继续增长;反之振幅减小时加大,负反馈减弱,防止振幅继续减小,从而达到稳幅的目的。稳幅二极管的选择应注意以下两点:为了提高电路的温度稳定性,应尽量选用硅管。为了保证上下振幅对称,两个稳幅二极管特性参数必须匹配。(6)电阻、值的确定二极管的正向电阻与并联电阻值差不多时,稳幅特性和改善波形失真都有较好的效果。通常选几千欧,选定后的阻值便可以初步确定,的调节范围应保证达到所需的值。因为: (1.4)取=所以: (1.5)但是,与的最佳数值仍要通过实验调整来确定。(7)集成运算放大器的选择集成运算放大器作为振荡电路的放大器,起放大作用,它是整个振荡电路的基础。选择集成运算放大器时,除希望输入电阻较高和输出电阻较低,最主要的是要选择其增益带宽积满足下列关系: (1.6)1.2 基于mcu的波形发生器设计方案波形的生成及对频率和相位的控制均由单片机编程实现。波形生成程序生成正弦波信号在一个周期内的波形数据,这些数据循环输出至d/a转换器,通过在输出数据指令之间插入nop指令实现对频率的控制,原理框图如图1.2所示。图1.2 以mcu为核心的设计方案原理框图此方法产生的信号频率范围、步进值取决于所采用的每个周期的输出点数及单片机执行指令的时间(与单片机的结构及选用的晶体振荡器等有关)。此方案的优点是硬件电路简单,所用器件少,可相对容易地产生各种波形,在低频区基本上能实现所要求的功能;缺点是控制较复杂,精度不易满足,生成波形的频率范围小,特别是难以生成高频波形。例如,对输出信号频率而言,因为移相分辨率为,则一个周期至少要采样360个点,即mcu发送波形幅度数据的速度,即则前后发送2个波形幅度数据的时间间隔,但是mcu的指令执行周期一般有几个s,从而mcu发送信号一个周期的波形数据一般要几十个s。故以mcu为核心的实现方案难以产生高频波形。1.3 基于mcu与fpga相结合的波形发生器设计方案该方案采用dds(direct digital synthesis,直接数字频率合成)技术产生数字式移相正弦波信号。信号生成主要由fpga部分实现,fpga部分主要包括相位累加器和波形查找表(波形查找表由fpga外部的存储器实现)。dds技术将输出波形的一个完整周期的幅度值都顺序地存放在波形存储器中,通过控制相位增量产生频率、相位可控的波形。一个数字频率合成器由相位累加器、加法器、波形存储rom、d/a转换器和低通滤波器(lpf)构成。如图1.3所示。其中k为频率控制字、p为相位控制字、w为波形控制字、参考时钟频率,n为相位累加器的字长,d为rom数据位及d/a转换器的字长。相位累加器在时钟的控制下以步长k作累加,输出的n位二进制码与相位控制字p、波形控制字w相加后作为波形rom的地址,对波形rom进行寻址,波形rom输出d位的幅度s(n)经d/a转换器变成阶梯波s(t),再经过低通滤波器平滑后就可以得到合成的信号波形,合成的信号波形形状取决于波形rom存放的幅度码,因此用dds可以生成任意波形。dds电路的基本组成:图1.3 基于dds技术设计方案原理框图(1)频率预置与调节电路k被称为频率控制字,也叫相位增量。dds方程: ,为输出频率,为频率时钟。当k=1时,dds输出最低频率(也即频率分辨率)为,而dds的最大输出频率由nyquist采样定理决定,即,也就是说k的最大值为。因此,只要n足够大dds可以得到很细的频率间隔。要改变dds的输出频率,只要改变频率控制字k即可。(2)累加器相位累加器由n位加法器与n位寄存器级联构成。累加器框图如图1.4所示。图1.4 累加器框图每来一个时钟脉冲,加法器将频率控制字k与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端;以加法器在下一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟的作用下进行相位累加。当相位累加器加满量时就会产生一次溢出,完成一个周期的动作。(3)控制相位的加法器通过改变相位控制字p可以控制输出信号的相位参数。令相位加法器的字长为n,当相位控制字由0跃变到p(p0)时,波形存储器的输入为相位累加器的输出与相位控制字p之和,因而其输出的幅度编码相位会增加,从而使最后输出的信号产生相移。(4)控制波形的加法器通过改变波形控制字w可以控制输出信号的波形。由于波形存储器中的不同波形是分块存储的,所以当波形控制字改变时,波形存储器的输入为改变相位后的地址与波形控制字w(波形地址)之和,从而使最后输出的信号产生相移。(5)波形存储器有相位累加器输出的数据作为波形存储器的详细地址,进行波形的相位幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。n位寻址rom相当于把的正弦信号离散成具有个样值的幅度以d位二进制数值固化rom中,按照地址的不同可以输出相应相位的正弦信号的幅值。相位幅度变换原理图如下图1.5所示:图1.5 相位幅度变换原理图(6)d/a转换器d/a转换器的作用是把合成的正弦波数字量转换成模拟量。正弦幅度量化序列s(n)经d/a转换后变成了包络为正弦波的阶梯波s(t)。需要注意的是,频率合成器对d/a转换器的分辨率有一定的要求,d/a转换器的分辨率越高,合成的正弦波s(t)台阶数就越多,输出的波形的精度也就越高。(7)低通滤波器对d/a输出的阶梯波s(t)进行频谱分析,可知s(t)中除主频外,还存在分布在,2.两边处的非谐波分量,幅值包络为辛格函数。因此,为了取出主频,必须在d/a转换器的输出端接入截止频率为的低通滤波器。1.4 基于matlab与fpga的波形发生器设计方案(1)基于matlab软件生成波形查找表。生成正弦波波形查找表matlab是一套功能十分强大的工程计算及数值计算分析软件。目前,它已经成为世界上应用量最广泛的工程计算软件之一。matlab最大的特点是简单和直接,它主要有如下特点:编写简单,编程效率高,简单易懂;能在同一界面上进行灵活操作,用户使用方便;matlab语言有丰富的库函数,进行数学运算时可以在直接调用,扩充能力强,交互性好;高效方便的矩阵个数组运算;matlab绘图十分方便;本设计正是基于matlab软件生成波形函数,再对波形进行数据采集,生成查找表文件,然后作为头文件包含进工程。 图1.6 波形数据采集流程图输出缓存的初始化 同样根据所需要计算的波形频率大小定义一个数组用于存放输出的波形数据。数组的大小可以根据实际情况确定,如果需要波形持续时间教长则数组长一些。初始化使其所有元素值等于0,如这个数组大小为1024,用一个for循环语句即可实现初始化。每次生成新波形时必须把次缓存清零。总体流程如图1.6所示。 (2)基于fpga实现波形输出波形发生电路主要由时钟电路、fpga控制电路、d/a转换电路、集成运放、低通滤波电路五部分组成。波形发生器可以被看成是数字波形合成器。波形数用数字形式存储在rom当中,通过d/a将一个数字量转换成模拟量。波形转换速度是由控制地址发生器的时钟控制的。通过改变rom中的数字量来实现模拟信号改变。地址发生器是指波形发生器的波形输出机制。地址发生器是靠向rom输送一定顺序的地址来实现的,每一个新的时钟到来时提供一个新的地址(这里指采样时钟)。最简单的地址发生器就是计数器。每来一个时钟计数器就加一直到加到计数器的最大值,然后在从起始地址开始。如果把计数器的输出作为rom的地址输入,那么波形就会连续的输出了。波形输出的频率直接由采样时钟频率来控制。这种以计数器为基础的地址发生器结构简单,缺点就是整个波形rom的内容都必须连续输出。地址发生器如图1.7所示。它允许计数器在任何地址处开始或终止,输出频率可用式(1.7)表示:=(结束地址-起始地址) (1.7)公式中为时钟频率,这里假定计数器是逐个递增的,因此rom的每一个点都可以访问到。由送入地址依次读取数据,所以通过dac转换是离散的信号,这就是从集成运放输出的波形是由很多点组成的原因。经d/a转换的电流信号通过集成运放电路转换成电压信号,再通过低通滤波电路滤除高频分量,最后可在示波器上观察到连续、平滑的波形。图1.7 波形发生器电路系统结构图综合上述方案,基于模拟电路的波形设计方法此方案的优点是电路结构简单,原理简单易懂,成本低廉,能基本生成正弦波。缺点是生成的波形单一,幅度和频率固定,这种电路生成的正弦波信号越来越不能满足生产实践的需要,已经逐渐被淘汰。基于单片机编程的波形发生器设计方案的优点是硬件电路简单,所用器件少,可相对容易地产生各种波形,在低频区基本上能实现所要求的功能;缺点是控制较复杂,精度不易满足,生成波形的频率范围小,特别是难以生成高频波形。基于mcu与fpga结合的波形发生器设计方案利用单片机作为控制芯片,由mcu产生频率控制字和相位控制字并送给fpga。这样,需要高速运行的电路均由fpga实现,大大减轻了对mcu速度的要求。且输出信号频率切换时间短,输出信号频率稳定度高,输出信号的频率和相位可以快速程控切换,输出相位可连续改变,可编程以及灵活性大。此方案的不足就是控制较为复杂,对系统硬件要求高,成本比较高等。基于matlab与fpga结合的波形发生器设计方案综合了采用mcu与fpga结合的技术的方案的所有优点,而且此方案用软件来实现采用mcu与fpga结合的技术方案中用硬件实现的功能,具有简单易操作的优点也大大的降低了成本。由次可见,该方案更具有可行性,而且能很好地体现技术的先进性。2 电路设计2.1 电路原理波形发生电路主要由时钟电路、fpga控制电路、d/a转换电路、集成运放、低通滤波电路五部分组成。电路原理图2.1所示。图2.1 波形发生电路原理图利用fpga实现波形发生器的工作原理如下:时钟脉冲产生一个50mhz的固有频率,送往fpga目标芯片,波形数据存储于fpga内部的rom中,这个rom是由fpga中的eab利用lpm-rom定制来实现的,它所占的存储容量小,转换速度快,fpga中的波形发生控制电路向波形数据rom发出地址信号,当接受来自fpga的地址信号后,将从数据线输出相应波形数据,地址变化的越快,输出数据的速度越快,然后通过d/a转换器对数据进行处理。d/a转换器主要采用8位一体的dac0832,由于输出波形的频率上限与da转换器件的转换速度有很重要的关系,转换的速度由d/a转换周期为1s所决定,输入电压为+5v。负责将rom输出数据转换成模拟信号,d/a转换的电流信号通过集成运放电路转换成电压信号,集成运放必须接12v电压作为驱动低通滤波电路电压,模拟信号通过低通滤波后,可在示波器观察到光滑的正弦波。2.2 单元电路设计2.2.1 d/a转换电路设计(1)d/a转换电路dac0832可编程数模转换器是一种常用的电流输出型的8位数模转换电路,本次设计采用这种d/a转换器。下图2.2是dac0832在波形发生器里应用的电路:图2.2 dac0832及外围电路在图2.2中,、均接地,ile接高电平。为了保证稳幅输出,选用了tl0821构成稳幅电路,tl0821是一款低功耗、高速、宽带运算放大器,具有很强的大电流驱动能力。(实际电路测试表明,当负载为100,输出电压峰值为10v时,带宽大于500khz,幅度变化小于)稳幅输出电路主要是将dac0832的输出电流转变为输出电压,为滤波电路提供电压信号。(2)d/a转换原理设计采用dac0832可编程转换器,与dac0809模数转换器的100s模数转换速度相比,dac0832数模转换器的输出电流建立时间只需1s。因此,在可编程dac0832数模转换器上没有设计转换完成查询标志或转换完成中断请求输出信号,不能够采用查询等待方式或者中断响应方式启动dac0832数模转换器的数模转换过程,只能够使用直接控制方式启动dac0832数模转换器的数模转换操作。dac0832的内部结构图如图2.3所示;dac0832的内部由三部分组成:8位输入寄存器用于存放cpu送来的数字量,使输出数字量得到缓冲和锁存,由加以控制。8位dac寄存器用于存放待转换数字量,由控制。8位d/a转换电路由8位t形电阻网和电子开关组成,电子开关受“8位dac寄存器”输出控制,t形电阻网能输出和数字量成正比的模拟电流。所以说,dac0832需要外接集成运算放大器才能将电流转变成输出电压。“8位输出寄存器”和“8位dac寄存器”用以实现两次缓冲,这样可以提高转换速度。图2.3 dac转换内部结构图引脚功能dac是由双缓冲寄存器和r-2r梯形d/a转换器组成的cmos 8位dac芯片。采用dac0832采用20脚双列直插式封装,与ttl电平兼容。对应的引脚功能如图2.4所示: 图2.4 dac0832引脚排列图数字量输入线常和cpu数据总路线相连,用于输入cpu送来的待转换数字量。dac引脚功能说明如表2-1所示。控制线(5条):为片选线,ile为允许数字量输入线,为传送控制输入线,、为两条写命令输入线,用于控制数字量输入到输入寄存器,当ile、均有效时,可将数据写入8位输入寄存器。用于控制转换时间,当有效时,在为传送控制信号作用下,可将锁存在输入寄存器的8位数据送到dac寄存器。和的脉冲宽度要求不小于500ns。表2-1 dac引脚功能说明引 脚功 能 说 明为8位数据输入端,是最高位,是最低位为dac电流输出1,在构成电压输出dac时此线应接运算放大器的反相输入端为dac电流输出2,在构成电压输出dac时此线应和运算放大器的同相输入端同接模拟地为反馈电阻引出端,在构成电压输出dac时此端应接运算放大器的输出端为基准电压输入端,通过该引脚将外部的高精度电压源与片内的r2r电阻网络相连,其电压范围为1010v为电源输入端,电源电压范围515v为模拟地,整个电路的模拟地必须与数字地相连为数字地为片选输入端,低电平有效,与ile共同作用,对信号进行控制。ile输入寄存器允许信号,高电平有效为写信号1,低电平有效,当0,0,且ile=1时,将输入数据琐存到输入寄存器为写信号2,低电平有效,当0,0时,将输入寄存器中的数据缓冲到8位dac寄存器内为传输控制信号,低电平有效输出线(3条):为集成运放的反馈线,常常接到集成运放的输出端。和为两条模拟电流输出线。+为一常数,若输入数值量全为“1”时,则取最大值,取最小值;若输入全为“0”时,取最小值,取最大值。电源线(4条):为电源输入线,可在+5+15v范围内选择。为参考电压,一般在-0+10v范围,由稳压电源提供。dgnd为数字量地线,agnd为模拟量地线。工作方式 由于dac0832内部有两级缓冲寄存器,所以有三种工作方式可供选择:直通工作方式 、及接低电平,ile接高电平。即不用写信号控制,外部输入数据直通内部8位d/a转换器的数据输入端。单缓冲工作方式 、接低电平,使8位dac寄存器处于直通状态,输入数据经过8位输入寄存器缓冲控制后直接进入d/a转换器。双缓冲工作方式 两个寄存器均处于受控状态,输入数据要经过两个寄存器缓冲控制后才进入d/a转换器。这种工作方式可以用来实现多片d/a转换器的同步输出。转换公式为了将模拟电流转换成模拟电压,需把dac0832的两个输出端和分别接到运算放大器的两个输入端上,经过一级运放得到单级性输出电压。d/a转换单级性输出电路图如图2.2所示,该电路为8位数字量经d/a转换器转换为单级性电压输出。转换公式如下:一级运放的输出电压: (2.1) d为数字量的十进制数,即当=5v时,dac0832的转换表如表2.2所示。表2.2 dac0832转换表参考电压输入数据输出电压二进制十进制数十六进制单级性输出dh+5v000000000000v1000000012880-2.5v11111111255ff-4.98v2.2.2 滤波电路设计(1)滤波电路原理滤波器是一种能使有用信号频率通过,同时抑制无用频率成分的电路,广泛应用于电子、电气、通信、计算机等领域的信号处理电路中。滤波器的种类很多,在本次设计中用到集成有源滤波器。集成有源滤波器是由集成运放和电阻电容等器件组成的。随着电子技术、集成电路技术的迅速发展,集成有源滤波器在许多领域得到广泛应用。在本次设计中,我们要滤除的频率分量主要是d/a转换器所产生的高频分量,与我们所要保留的信号频率相差很远,因此相对来说,滤波器在通带内的平坦程度对我们来说比其衰减陡度更为重要,本次设计选择一阶低通滤波器电路。一阶低通滤波包含一个rc电路。图2.5是一阶低通滤波电路。 (2)滤波电路参数计算 图2.5 低通滤波电路 该滤波电路是反相放大器,其传递函数为: (2.2)上式(2-2)中,为零频增益,=为截止角频率。其频率特性为: (2.3) 幅频特性为: (2.4) 相频特性为: (2.5)已知截止频率,先确定r的值,然后根据=,得出电容的值,再由电容值去求电阻值。滤波信号是从运算放大器的同相端输入的,所以应该选用共模输入范围较大的运算放大器。运算放大器的增益带宽积应满足,取。一阶低通滤波器的缺点是:阻带特性衰减太慢,一般为-20db/10out,所以这种电路只适用于对滤波特性要求不高的场合。只适合于低频信号。2.2.3 时钟电路时钟输入是波形发生器必不可少的一部分,它能为fpga提供时钟脉冲信号,考虑到eda开发系统时钟输入的重要性,一个是50mhz的有源晶振作为时钟信号源输入,主要用于输入大的时钟信号,为波形发生器提供基准的时钟脉冲输入。有源晶振电路如图2.6所示:图2.6 有源晶振电路有源晶振的驱动能力强,晶振频率比较大,能达到几百兆hz,采用有源晶振作为时钟源可以使电路的时钟扩大。ho-12系列的有源晶振采用ttl/hcmos技术,频率范围是1000hz-1000mhz,这里我们采用的是50mhz的有源晶振。2.2.4 下载电路fpga配置可以使用专用的编程设备,也可以使用下载电缆。电可擦除编程工艺的优点是编程后信息不会因掉电而丢失,但编程的次数有限,编程的速度不快。对于sram型fpga来说,可反复进行配置,在加电时可随时更改逻辑,但掉电后芯片中的信息丢失,每次上电时,必须重新载入信息,下载信息的保密性也不如前者。使用altera的byteblaster(mv)并行下载电缆,连接pc机的并行打印口和需要编程或配置的器件,并与max+plusii配合可以对altera公司的多种cpld、fpga进行配置或编程。byteblaster(mv)下载电缆与altera器件的接口一般是10芯的接口,其中byteblaster(mv)与计算机并口连接。mv即混合电压的意思。引脚对应关系如图2.7所示,10芯连接信号如表2.3所示。图2.7 10芯片下载口表2.3 芯接口各引脚信号名称模式12345678910psdckgndconf_donevccnconfig_nstatus_data0gnd用altera的byteblaster(mv)并行下载电缆,连接pc机的并行打印机口和需要编程的器件,在线配置fpga,调试非常的方便。基于sram lut的fpga器件,由于是易失性器件,以icr(in-circuit reconfigurability)即在线可重配置方式代替在线系统可编程(isp)。电路可重配置是指允许在器件已经配置好的情况下进行重新配置,以改变电路逻辑结构和功能。在利用fpga进行设计时可以利用fpga的icr特性,通过连接pc机的下载电缆快速地下载设计文件至fpga进行硬件验证。ps被动串行模式(msel1=0、msel0=0),pps被动并行同步模式(msel1=1、msel0=0),psa被动串行异步模式(msel1=1、msel0=0),ppa被动并行异步模式(msel1=1、msel0=1),jtag模式(msel1=0、msel0=0)。图2.8为fpga芯片ps模式配置电路。图2.8 byteblaster(mv)配置fpga2.2.5 芯片介绍(1)fpga的配置方式在利用fpga进行设计时可以利用fpga的icr特性,通过连接pc机的下载电缆快速地下载设计文件至fpga进行硬件验证。altera的基于sram lut的fpga提供了五种配置模式,这些模式通过fpga上的两个模式选择引脚msel1和msel0和设定的电平来决定的。fpga的配置引脚功能如下:msel0、msel1:输入,(0,0)为串行配置或使用配置器件模式;(1,0)为并行同步模式;(1,1)为并行异步模式。nstatus:双向集电极开路,上电后被器件拉低,在5us之内,被器件释放,(当使用一个专用配置器件时,专用加载器件将控制这个脚为低长达200ms。)这个管脚必须通过一个1k电阻上拉到vccio; 如果在配置过程中,如有错误发生,本管脚被器件拉;如果在配置或初始化过程中,有一个外部的信号源驱动本管脚为低,则器件进入一个错误的状态;在配置或初始化之后,驱动本管脚为低,不会影响器件。但是,如果使用专用配置器件,驱动本管脚低将引起配置器件试图去配置flex 器件。nconfig:输入,配置控制引脚,由0-1的跳变开始配置,由1-0跳变则复位器件;当设定本管脚为0时,所有i/o为三态。conf_done:双向集电极开路,状态输出:在配置之前和配置过程中,器件驱动本管脚为0,一旦所有配置数据都被接收并没有错误发生,则初始化时钟周期开始时器件释放本管脚;状态输入:在所有数据被接收后,本管脚为高电平,器件初始化,然后进入用户模式;本管脚必须通过一个1k的电阻上拉到vccio外部的信号源可以驱动本管脚为低,来延迟初始化的过程,当使用一个配置器件进行配置除外,在配置以及初始化之后,驱动本管脚为低,不影响配置器件。dclk:输入,时钟输入,用于从一个外部信号源输入时钟数据进入器件,在串行异步模式或并行异步模式配置中,dclk应当被拉高,不能悬空。nce:输入,低有效芯片使能,本管脚使用低电平使能器件来允许配置,对于单芯片配置应当被固定为低电平,在配置以及初始化过程和用户模式,本管脚必须固定为低电平;在级联时,第一片的nce接地,前一片的nceo接后一片的nce。nceo:输出,当设备配置完成后被驱动为低电平。在多器件配置过程中,这个管脚用来连接后面器件的nce引脚,最后一片的nceo悬空。nrs:输入,读选通输入:对于apex ii、 mercury、acex 1k、 apex 20k 和 flex10k器件低电平表示在data7引脚输出的是rdynbsy信号;对于 flex 6000 器件,低电平表示在data引脚输出的是rdynbsy信号,如果 nrs 管脚没有使用,应该被固定连接到高电平。rdynbsy:输出,忙闲信号:高电平表示器件准备好来存取另外字节的数据;高电平表示器件没有准备好接收另外字节的数据。ncs、cs:输入,片选择信号:ncs为低电平且cs为高电平器件被使能可以进行配置,如果只有一个芯片选择输入被使用,那么另外一个必须被激活,在配置和初始化的过程中,ncs和cs管脚必须被处于有效状态。clkusr:输入,可选的用户时钟输入信号:用在初始化过程中;(注:在初始化过程中可以继续使用配置数据用的dclk,或者切换到用clkusr)。data7.1:数据输入:并行的字节流数据通过data7.1与data0输入器件。data0:输入,数据输入:在串行配置模式下比特流数据通过data0写入器件。data7:输出,在fpga配置方式,data的数据是被rdynbsy信号通过电平触发方式在nrs信号已经被锁存之后写入。init_done:输出集电极开路,状态管脚:可以被用来指示器件已经被初始化或者已经进入用户模式;在配置过程中init_done 引脚保持低电平,在初始化之前和之后,init_done引脚被释放,被上拉到vccio通过一个外部上拉电阻,因为init_done在配置之前是三态,所以被外部的上拉电阻拉到高电平。因此监控电路必须能够检测一个0-1的跳变信号。dev_oe:输入,此管脚需要在编译设置中设定才能实现第一功能,缺损是第二功能;当本引脚被拉低,所有i/o都是三态。当本引脚被拉高,所有i/o在正常的程序控制状态。(2)flex1ok配置引脚flex1ok主要由嵌入式阵列块、逻辑阵列块、快速通道(fasttrack)和i/o单元四部分组成。如图2.9为 flex 10k10主要引脚功能,该装置采用的flex epf10k10有84个引脚,各主要引脚功能如下(图2.9):图2.9 flex10k10芯片引脚图flex10k系列采用重复可构造的cmos sram工艺,把连续的快速通道互连与独特的嵌入式阵列结构相组合,同时也结合了众多可编程器件的有点来完成普通门阵列的宏功能。每个flex 10k器件包括一个嵌入式阵列和一个逻辑阵列,它能让设计人员轻松地开发出存储器、数字信号处理器以及特殊逻辑等强大功能于一身的芯片。同时,改芯片具有的多电压功能可以全面支持以不同电压工作的产品。epf10k10有84i/o口,其丰富的io资源,大大满足了用户的需求,其具体的io引脚与对应的引脚序号如表2.4所示:表2.4 i/o引脚对应的引脚序号引 脚编 号引 脚编 号引 脚编 号引 脚引 脚i/o716i/o1728i/o2749i/o3762i/o817i/o1829i/o2850i/o3864i/o918i/o1930i/o2951i/o3965i/o1019i/o2035i/o3052i/o4066i/o1121i/o2136i/o3153i/o4167i/o1222i/o2237i/o3254i/o4371i/o1323i/o2338i/o3358i/o4472i/o1424i/o2439i/o3459i/o1525i/o2547i/o3560i/o1627i/o2648i/o3661flex10k10主要特点如下: 它是工业世界的第一种嵌入式可编程逻辑器件,提供了在单个器件中的系统集成,具有实现宏函数的嵌入式阵列和实现普通功能的逻辑阵列; 高密度,它具有10000150000个可用门,高达40960位内部ram; 系统支持多电压i/o接口; 低功耗,系统维持状态小于0.5ma; 灵活的内部连接,快速、可预测连线延时的快速通道连续式分布结构。3 波形发生器的vhdl描述完整的波形发生器由三部分组成:由计数器构成的地址信号发生器、波形数据rom和d/a。在fpga的顶层文件中,计数器通过外来的控制信号和高速时钟信号向波形数据rom发出地址信号,输出波形的频率由发出的地址信号速度决定;当固定波频率扫描出地址时,输出波形是固定频率,而当以周期性变方式扫描输出地址时,则输出波形为扫描信号。波形数据rom中存有发生器的波形数据。基于fpga波形发生器的vhdl的实现经过以下几个过程,首先利用matlab软件编写波形查找表程序生成波形查找表(请参看第4章)获得波形数据,利用max+plus软件依次建立波形数据文件、在fpga生成rom空间存储波形数据再经过编译、仿真、下载和测试即可以得到波形了。3.1 波形发生器的vhdl描述3.1.1 正弦信号波形数据文件的建立 正弦波数据存储器rom地址线宽度为6,数据线宽度为8,在fpga中用vhdl硬件描述语言实现存储空间的扩展,正弦波波形数据由64点构成,在matlab环境下,通过采样获取,关于采样数据的获取方法,在本文的第四章有详细说明。波形数据在fpga的时序控制下,经dac0832进行d/a转换,实现将数字信号转化成模拟信号,模拟信号通过放大,滤波后,可实现波形的还原。波形数据文件:width=8;depth=64;addressradix=hex;dataradix=dec;content begin00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:255;08:217;09:207;0a:197;0b:186;0c:174;0d:162;0e:150;0f:137;10:124;11:112;12:99;13:87;14:75;15:64;16:53;17:43;18:34;19:26;1a:19;1b:13;1c:8;1d:4;1e:1;1f:0;20:0;21:1;22:4;23:8;24:13;25:19;26:26;27:34;28:43;29:53;2a:64;2b:75;2c:87;2d:99;2e:112;2f:124;30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217;38:225;39:233;3a:239;3b:245;3c:249;3d:252;3e:254;3f:255;end;其中width=8,表示数据输出位宽是8;depth=64,表示共有64个8位数据点;addressradix=hex,表示地址信号用十六进制数表示;dataradix=dec,表示输出数据是十进制数设文件名为ipm.mif,存盘的路径为d:lihuidata。以上所示的数据格式只是为了节省篇幅,实用中每一数据组占一行。3.1.2 lpmrom定制(1)进入max+plus,选菜单filemegawizardplug-inmanager,选择“creat a new”,然后按“next”键,进入图3.1所示的界面。选择lpmrom;最后在browse下的栏中键入路径与输出文件名:d:lihuiipm.vhd。图3.1 定制lpmrom文件(2)单击“next”键,选择rom数据位宽度为8,地址线宽度为6,即设置此rom能储存8位二进制数据共64个,然后进入图3.2所示的窗口。通过在图3.2所示窗口的“browse”钮,找到rom中的加载文件路径和文件名:d:lihuilpm.vhd.其中rom元件的inclock是地址琐存时钟。它的作用是每来一个电平就从定制好的rom里取一个数送往q输出。图3.2 加入初始化文件(3)在max+plus中打开已制定的rom文件,观察文件中的实体表达。library ieee;use ieee.std_logic_1164.all;entity lpm isport(address: in std_logic_vector (5 downto 0);inclock: in std_logic ;q: out std_logic_vector (7 downto 0);end lpm;architecture syn of lpm issignal sub_wire0: std_logic_vector (7 downto 0);component lpm_romgeneric (lpm_width: natural;lpm_widthad: natural;lpm_address_control: string;lpm_outdata: string;lpm_file: string);port (address: in std_logic_vector (5 downto 0);inclock: in std_logic ;q: out std_logic_vector (7 downto 0);end component;beginq 8,lpm_widthad = 6,lpm_address_control = registered,lpm_outdata = unregistered,lpm_file = d:/lihui/lpm.mif)port map (address = address,inclock = inclock,q = sub_wire0);end syn;(4)对文件进行编译仿真打开max+plus,选菜单filenew,弹出如图3.3所示的对话框。在此对话框中选择“text editor file”,单击“ok”按钮,即选中了文本编辑方式。在出现的untitled text editor文本编辑窗口中键入vhdl程序,输入完毕后,选择菜单filesave,弹出“save as”对话框。首先在“directories”目录框中选择已经建立好的存放本文件名“lpm.vhd”,单击“ok”按钮,即把输入的文件存放在目录d:lihui中了。图3.3建立文本编辑器对话框将当前设计设定为工程和选定目标器件。首先选择菜单fileprojectset projecttocurrentfile,当前的设计工程即被指定为ipm。设定后可以看到max+plus主窗口左上方的工程路径指向为:d:lihuilpm。在设定工程文件后,应该选择用于编程的目标器件芯片,以便能在编译后得到有针对性的时序仿真文件。选择菜单assigndevice,在弹出的对话框中的“device family”下拉列表中选择需要器件flex10k。为了选择epf10k10lc84-4器件,不要选中次栏下方的“show only fastest speed grades”选项,以便显示出所有速度级别的器件。完成器件选择后,按“ok”按钮。选择vhdl文本编辑版本号。选择max+plus菜单compiler命令项,出现编译窗口(如图3.4所示)后,根据自己输入的vhdl文本格式选择vhdl文本编辑版本号。选择如图3.4所示界面上方的interfacesvhdl netlist reader settings,在弹出的窗口中选择“vhdl1993”,由于在10.0以后的版本的max+plus中嵌入了用于优化flex10k和acex1k系列适配的算法,编辑前关闭这一算法。方法是在进入编辑窗口后,选择processingfitter setting,消去最上面的“use quartus fitter”项。图3.4 选定当前工程的目标器件按“start”按钮,运行编译器。单击“locate”错误定位按钮,就可以在出现的文本编译窗口中闪动的光标附近或上方找到错误所在。纠正后再次编辑,直至排除所用错误。再进行时序仿真。首先,选择菜单filenew,在选择图3.3中“new”对话框中的“waveform editer file”项,打开波形编辑窗口。之后弹出仿真波形编辑窗口。其次,在波形编辑窗口的上方选择菜单“node”,在下拉菜单中选择输入信号节点项“enter nodes form snf”。在弹出的对话框如图3.5所示,在弹出的对话框中首先单击“list”按钮,这时左列表框将列出该设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人事聘请合同样本
- 保险赔偿车转让合同样本
- 业主电梯安装合同样本
- 代甲方招聘合同样本
- 上海黄浦汽车租赁合同标准文本
- 供货食品合同样本
- 保洁施工合同样本
- 个人出租农机合同样本
- 兑店转让合同样本
- 兴业银行抵押合同标准文本
- 施工队长培训课件
- 生产加工型小微企业安全管理考试(含答案)
- 房屋居住权合同
- 2024年晋中职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 小学数学作业评价分析报告
- 物业服务方案-物业增值服务方案
- 深入理解Zabbix监控系统
- 医院感染暴发的应急预案与应急处置演练
- Word操作练习题(解析和答案)
- 驾驶服务外包投标方案(技术标)
- 中国甲状腺相关眼病诊断和治疗指南(2022年)解读
评论
0/150
提交评论