请问signaltap ii扫面结果怎么才能显示成正弦信号?

第8章 应用VHDL语言方法设计简易正弦波信号发生器71_正弦信号发生器-牛bb文章网
第8章 应用VHDL语言方法设计简易正弦波信号发生器71_正弦信号发生器
本文话题:,
第8章 应用VHDL语言方法设计简易正弦波信号发生器【要求】掌握运用VHDL语言设计正弦波形发生器的基本方法【知识点】? 理解函数发生器的含义? 理解VHDL设计正弦波形发生器? 理解FPGA对D/A的接口和控制技术【重点和难点】? VHDL设计正弦波形发生器? FPGA对D/A的接口和控制技术§8.1 工作任务的陈述与背景一、工作任务用VHDL语言方法设计一个正弦波形发生器。基本要求:①学习VHDL设计正弦波形发生器;②掌握FPGA对D/A的接口和控制技术。完成波形发生器的设计、仿真测试及实验系统上的硬件测试。二、任务背景自20世纪60年代以来信号发生器有了迅速的发展,出现了函数发生器。作为电子系统的重要组成部分,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。早期的信号发生器多采用模拟电子技术,电路形式有采用运放及分离元件构成,也有采用单片集成函数发生器专用芯片。但采用模拟电路组成的函数信号发生器,一般可靠性较差,频率输出精度、稳定度低,调节不够精确,设计过程复杂、困难,功能不易扩展,尤其对任意波信号产生较为困难,难以满足科研和高精度实验的需要。现代高精度函数发生器设计采用了EDA技术,不但大大缩短了开发研制周期,提高了设计效率,输出信号频率精度和稳定度有很大提升,而目使系统具有结构紧读、设计灵活、实现简单、性能稳定的特点。本章着重介绍采用EDA技术,应用VHDL语言,在ALTERA公司的QuartusⅡ软件环境下,完成频率可调的正弦波发生器的程序设计过程,并进行逻辑综合、仿真和硬件下载,产生正弦波信号。§8.2 完成工作任务的引导一、资讯要完成本任务,需要了解以下方面的知识。1.函数(波形)信号发生器的定义和作用函数(波形)信号发生器能产生某些特定的周期性时间函数波形(C n1,弦波、方波、二角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。函数信号发生器在电路实验、设备检测、通信、宙达、导航、宇航等领域中具有十分广泛的用途。本次设计只是简单完成正弦波输出的功能。2.直接数字合成器DDS ( Direct Digtal Synthesizer)知识DDS中变要包括频率控制寄存器、高速相位累加器和正弦计算器二个部分,本次设计参考DDS设计电路结构。? ①频率变化知识。用户通过输入频率控制码来改变输出信号频率。? ②相位变化知识。通过相位累加器根据频率控制码在每个时钟周期内进行相位累加来改变相位值。? ③波形信号产生知识。正弦计算器计算数字化正弦波幅度值,再把幅度值保在芯片的ROM中。通过查表方式扫描数据输出。3. DAC控制器的知识DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。使用DAC时要考虑DAC的位数和转换时间。常用的低速八位DAC为DAC0832。二、计划采用DDS方式设计波形信号发生器,首先要了解DDS的结构和每个部分的功能,如图8-1所示,本次设计在CPLD/FPGA芯片内部由频率控制字、相位累加器、波形数据ROM二个部分构成,在外部把波形数据循环扫描后输出给DAC转换成模拟信号,通过低通滤波器平滑波形最后输出所需波形。设计中着重完成以下部分内容。? ①完成频率控制器的设计。此设计可以通过计数器、分频器设计原理完成。? ②相位控制设计。对所查表中每个地址进行数据累加,就可以改变信号输出相位。? ③计算正弦波各点的幅度离散值。在此设计中我们把一个正弦波分离成128个点坐标。由于VHDL只适合整数运算,此各离散值由计算器或公式求出,并存储在ROM中。三、决策根据图8-1所示的正弦波信号发生器组成框图,分步完成正弦波信号发生器的设计。其设计步骤可参考如下步骤进行。? ①设计一个分频器,要求能进行频率调整。? ②设计一个相位累加器,相位可以前后移位。? ③通过计算求出正弦波128个离散幅值,并进行储存。? ④将程序下载至FPGA/CPLD芯片,并和DAC0832连接。? 四、实施? 如图8-1所示,完整的正弦波形发生器由3部分组成。? 1.频率控制字设计? 由于一个完整的波形由128个离散坐标点构成,所以要完整生成一个波形,则输入时钟需要128个脉冲。从而可得知要输出1 Hz的正弦波,需要128 Hz的时钟,也就是输入输出分频比128/1。若对输出信号频率进行控制,可通过对输入时钟分频来改变频率,分频系数可以改变。? 在下面实例中,“ clk”为芯片时钟输入端,可由品振提供高稳定度、高精度脉冲信号。“d” 和 “f”为分频系数控制脚,当f = “0”时,d脚每来一次脉冲,则分频系数自动加1;相反,若f = &1”时,根据d脚的脉冲数自动减。? 图8-2为频率控制的仿真图。clk_o为输出脚进过分频后的时钟信号,该信号可以接入到下一级相位控制部分,然后进行相位调节。? 如果仿真结果正确,可以将设计的项目生成一个元件符号备用。其步骤是:选择原理图文件为当前文件后,选择菜单命File → Create/LTpdate→Create Symbol Files for Current File就可以。本电路生成的元件符号如图8-3所示。频率控制程序参考:process(clk)一基准时钟分频beginif clk'event and clk='1' thent0&=t0+--------------------------------------process(d,f) ---频率控制字beginif d'event and d='1' thenif f='0' thentl&=t1+1;elset1 &=tl-1;Clk_o&=t0(3);2.相位累加器设计对于正弦信号发生器,它的输出可以用下式来描述:(8-1)其中, 是该信号发生器的输出波形; 指输出信号对应的outout频率。上式的表述对于时间t是连续的,为了用逻辑实现该表达式,必须进行离散化处理,用基准时钟进行抽样,令正弦信号的相位为(8-2)在一个clk周期内,相位的变化为3) s?Asin(2?ft) (8-2?foutclkout??2?ft???2?fT?fclk其中,foot指clk的频率,2π可以理解为“满”相位。为了对其进行数字量化,把2π切割成 份,由此每个clk周期的相位增量 用量化值来表示:(8-4)(8-5) ?B????2 2?Bff 且 为整数。与式(8-3) ?联立,可得N??Nclk 显然,信号发生器的输出可描述为 2?outf,B???2N?outfclkSout?Asin(?k?1???)?Asin[?(B?k?1?B??)]?Afsin(B?k?1?B??)N2 (8-6) 2?其中, 指前一个clk周期相位值,同样得出Nk?1(8-7)由上面的推导可以看出,只要对相位的量化值进行简单的祟加运算,即可得到正弦信号的当前相位值,而用于叠加的相位量量化值 决定了信号的输出频率 ,并呈现简单的线性关系:(8-8) B?k?1??2??2时, 就等于 。 fout B???2?fclk相位累加器的输入又可称为频率输入字,事实上当系统基准时钟 为 N图8-4为生成元件图,clk为系统基准时钟分频后的时钟输入; p为相位控制字端,每输入一个脉冲,波形前后移一个相位; d 为相位方向控制,当d = &0”时,相位后移,相反,当d= &1”时,相位前移。相位控制仿真图如图8-5所示,当d=“0”时,P输入每个脉冲后,相位地址Y输出量发生改变,地址向后增加2。相位控制程序参考:process(clk) --- 相位地址累加进程beginif clk'event and clk='1' thentt&=tt+1;elsett&=tt-1;3.波形数据存储正弦ROM的查找表完成 的查表转换,在这里可以理解成相位到幅度的转换,它的相位输入是相位调制器的输出,事实上就是ROM的数据值输出送往D/A,转化成模拟信号。ROM中的数据为正弦波信号一个周期的离散值,可以通过相关计算求出。第8章 应用VHDL语言方法设计简易正弦波信号发生器71_正弦信号发生器若需把正弦波改为锯齿波、方波信号输出,只需改变ROM中的数据值就可以达到产生任意波的功能。求正弦波离散点的公式见式(8-5)因输出数据值范围为0~255,相位离散点为128,则求出每个相位对应的数据:(8-9)波形分割的离散点越大,相隔相位差别越示,输出的波形失真也越示。但离散点过多,输出信号的频率与输入信号频率分频比过大,难以提高输出信号频率。图8-6中a[6..0]为相位地址输入,数据宽度为7位,寻址范围为0~127; D[7..0]为波形数据输出,接DAC数据脚,就可以把数字量变化为模拟量输出。ROM中数据与相位地址关系描述:process(a)beginCASE a ISWHEN 00=&D&=255;WHEN O1=&D&=251;WHEN 02=&D&=247;WHEN 03=&D&=243;WHEN 04=&D&=239;WHEN OS=&D&=235;WHEN 06=&D&=231;???? E4. 连接DAC0832设计DAC0832是八位D/A转换器,转换周期为1μs,其参考电压与+5 V工作电压相接(实用电路应接精密基准电压)。DAC0832的引脚功能简述如下。? ILE: 数据锁存允许信号,高电平有效,系统上己经连接+5V上 ? :写信号1, 2,低电平有效。? :数据传送控制信号,低电平有效。? :基准电压,可正,可负,-10~+10 V 。? Rfb:反馈电阻端。? IoutI/Iout2 CPIN11, PIN12)电流输出1和 2。 D/A转换量是以电流形式输出的,所以必须将电流信号变为电压信号。? AGND/DGND CPIN3, PIN10):模拟地与数字地。在高速情况下,此一地的连接线必须尽可能短,目系统的单点接地点必须在此连接线的某一点上。在本次设计中,FPGA芯片的波形数据输出脚D [7..0]分别接到图8-7中的DA7-DAO脚上,DAC0832可以采用直接控制方式与FPGA同步工作,也可使 、 信号受控于FPGA工作;若直接工作,则将 、 直接接地就可以;若受控于FPGA,则把该竹脚接在FPGA某个控制脚上,当该竹脚输出低电平时,DAC0832输出模拟波形。1.单独增加频率控制字对输出频率的影响(图8-9、图8-10)从图中看出,当fre_d的脉冲个数增加时,输出D的频率与clk的频率差距越来越示,也就是输出信号的频率增大。当fre_f为“1”时,随着fre_d的脉冲输入,信号输出脚的频率降低,从而达到频率可调的功能。2.相位控制仿真(图8-11、图8-12)部分波形数据对照表如图8-13:从仿真图和波形数据可以看出,通过相位控制,使输出波形的数据提前或延迟输出。五、检查以上对一个正弦信号波发生器的各组成部分进行了说明并给出了参考电路,读者可自行按照本设计方案的组成原理框图(如图8-1所示)将各部分连接起来,组成一个完整的正弦波信号发生器。频率控制字由fre_d和fre_f同时控制,fre_f控制频率的增减,fre_d控制频率增量大示。clk是系统基准时钟,由晶振提供。若要提高输出信号最高频率,则品振频率必须提高。Pha_p和pha_f共同负责相位移动。控制方法和频率控制相同。以下给出采用本方案设计而成的正弦波信号发生器整体框图(图8-8)和仿真波形图(图8-9和图8-10),以供读者设计时参考。通过仿真效果达到预期设计目的,选择FPGA芯1k30TC144-3进行下载和验证。引脚分配见表8-1(对于1 K30TC 144-3器件)。六、评价1.设计方案的改进本设计方案可以做以下方面功能改进:? ①正弦波信号发生器只是函数信号发生器中一个典型信号,读者可以根据本次设计思路,只击修改波形数据中的离散幅值,就可以增加方波信号、二角波信号及任意波信号功能。? ②频率控制的步进精度可以进一步提高,同时频率控制方式可以改进为加减控制方式,以利于操作。? ④正弦波信号设计的重要调试过程,遇到具体问题的解决方法。 ? ⑤通过示波器查看正弦波信号设计的波形是否失真。? ⑥用频率计记录正弦波信号发生器的输出频率,通过调整频率大示,查看频率步进值,并进行记录。? ⑦对扩大本正弦波信号发生器的输出频率、提高频率计的性能提出设计思路。? ⑧总结本次设计的收获、存在问题。?§8.3相关技术基本知识与基本技能一、频率控制字参考设计[例8.1]fre.vhduse ieee.std_logic_1164.a11;use ieee.std_logic_ unsigned.--------------------------------------entity fre isport(clk ,d,f: in std_clk_o:out std_ logic);-------------------------------------------architecture choice of fre issignal t0: std_ logic_ vector(3 downto 0);signal t1:integer range 0 to 512;Beginprocess(clk)beginif clk'event and clk='1' then t0&=t0+process(d,0begin if d'event and d='1' thenif f='0' then tl&=t1+1; elsetl&=tl一1;clk_o&=t0(3);二、相位累加器参考设计[例8.2 ]phase.vhduse ieee.std_logic_1164.a11;use ieee.std_logic_ unsigned.entity phase isport (clk,p,d: in std_Y:out std_ logic_ vector(6 downto 0));architecture choice of phase issignal bb:std_logic_ vector(6 downto 0);signal tt:integer range 0 to 127; beginprocess(clk)beginif clk'event and clk='1' then bb&=bb+1;process(p,d)beginif p'event and p=' 1' then if d='0' then tt&=tt+ 1;elsett&=tt-1;y&=bb+三、波形数据存储参考设计[例8.3 ]D_rom.vhduse ieee.std_logic_1164.a11;use ieee.std_logic_ unsigned.entity D_ rom isport(a :in integer range 0 to 127;D:out integer range 0 to 255);第8章 应用VHDL语言方法设计简易正弦波信号发生器71_正弦信号发生器architecture choice of d rom isbeginprocess(a)beginCASE a ISWHEN 00=&D&=255; WHEN 01=&D&=251; WHEN 02=&D&=247; WHEN 03=&D&=243; WHEN 04=&D&=239; WHEN O5=&D&=235; WHEN 06=&D&=231; WHEN 07=&D&=227; WHEN 08=&D&=223; WHEN 09=&D&=219: WHEN 10=&D&=215; WHEN 11=&D&=211; WHEN 12=&D&=207; WHEN 13=&D&=203; WHEN 14=&D&=199; WHEN 15=&D&=195; WHEN 16=&D&=191; WHEN 17=&D&=187; WHEN 18=&D&=183; WHEN 19=&D&=179;WHEN 20=&D&=175; WHEN 21=&D&=171; WHEN 22=&D&=167; WHEN 23=&D&=163; WHEN 24=&D&=159; WHEN 25=&D&=155; WHEN 26=&D&=151; WHEN 27=&D&=147; WHEN 28=&D&=143; WHEN 29=&D&=139; WHEN 30=&D&=135; WHEN 31=&D&=131; WHEN 32=&D&=127; WHEN 33=&D&=123; WHEN 34=&D&=119; WHEN 35=&D&=115; WHEN 36=&D&=111; WHEN 37=&D&=107; WHEN 38=&D&=103; WHEN 39=&D&=99; WHEN 40=&D&=95; WHEN 41=&D&=91; WHEN 42=&D&=87; WHEN 43=&D&=83; WHEN 44=&D&=79; WHEN 45=&D&=75;WHEN 48=&D&=63; WHEN 49=&D&=59; WHEN 50=&D&=55; WHEN 51=&D&=51; WHEN 52=&D&=47; WHEN 53=&D&=43; WHEN 54=&D&=39; WHEN 55=&D&=35; WHEN 56=&D&=31; WHEN 57=&D&=27; WHEN 58=&D&=23; WHEN 59=&D&=19; WHEN 60=&D&=15; WHEN 61=&D&=11; WHEN 62=&D&=7; WHEN 63=&D&=3; WHEN 64=&D&=0; WHEN 65=&D&=3; WHEN 66=&D&=7; WHEN 67=&D&=11;WHEN 68=&D&=15; WHEN 69=&D&=19; WHEN 70=&D&=23; WHEN 71=&D&=27; WHEN 72=&D&=31; WHEN 73=&D&=35; WHEN 74=&D&=39; WHEN 75=&D&=43; WHEN 76=&D&=47; WHEN 77=&D&=51; WHEN 78=&D&=55; WHEN 79=&D&=59; WHEN 80=&D&=63; WHEN 81=&D&=67; WHEN 82=&D&=71; WHEN83=&D&=75 ; WHEN 84=&D&=79; WHEN 85=&D&=83; WHEN 86=&D&=87; WHEN 87=&D&=91; WHEN 88=&D&=95; WHEN 89=&D&=99; WHEN 90=&D&=103; WHEN 91=&D&=107; WHEN 92=&D&=111; WHEN 93=&D&=115; WHEN 94=&D&=119; WHEN 95=&D&=123; WHEN 96=&D&=127; WHEN 97=&D&=131; WHEN 98=&D&=135; WHEN 99=&D&=139; WHEN 100=&D&=143;WHEN 101=&D&=147; WHEN 102=&D&=151;WHEN 103=&D&=155;WHEN 106=&D&=167;WHEN 107=&D&=171; WHEN 108=&D&=175;WHEN 109=&D&=179; WHEN 110=&D&=183;WHEN 111=&D&=187; WHEN 112=&D&=191;WHEN 113=&D&=195;WHEN 114=&D&=199;WHEN 115=&D&=203; WHEN 116=&D&=207;WHEN 117=&D&=211; WHEN 118=&D&=215; WHEN119=&D&=219; WHEN 120=&D&=223; WHEN 121=&D&=227; WHEN 122=&D&=231; WHEN 123=&D&=235; WHEN 124=&D&=239;WHEN125=&D&=243; WHEN 126=&D&=247; WHEN127=&D&=251; WHEN OTHERS=&NULL;end CASE;§8.4 本章小结图 8-1 正弦波信号发生器组成框图图 8-2 频率控制仿真图图 8-3 频率控制信号元件图图 8-4 相位控制图 8-5 相位控制仿真图 8-6 波形数据存储第8章 应用VHDL语言方法设计简易正弦波信号发生器71_正弦信号发生器图 8-7 DAC0821连接示意图图 8-8 正弦波信号发生器整体结构框图图 8-9 频率控制仿真图图 8-10 频率控制仿真图图 8-11 相位控制仿真1图 8-12 相位控制仿真图2图 8-13 部分波形相位对照表分享: >
延伸阅读:
“正弦信号发生器”相关文章signaltap使用指南_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
signaltap使用指南
上传于||文档简介
&&s​i​g​n​a​l​t​a​p
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩21页未读,继续阅读
你可能喜欢LabVIEW软件中,正弦信号与正弦波的区别_百度知道
LabVIEW软件中,正弦信号与正弦波的区别
在LabVIEW中,有两处地方可以用来生成模拟信号,一是Signal Generation模板,一是Waveform Generation模板。Signal Generation模板和Waveform Generation模板的功能大同小异,生成的信号类型差不多,主要区别是Waveform Generation模板包含了信号的时间信息,波形是时间的函数;而Signal Generation模板则不包括。Waveform Generation模板中各模块参数设置更为灵活,功能更强大,其中的许多模块是在Signal Generation模板的基础上进一步开发的。(所以说Sine Wave和Sine Pattern&在Signal Generation模板中&这两个VI是不包含时间信息的,只有Sine Waveform&在Waveform Generation模板中&包含了信号的时间信息。)Wave VI 和Pattern VI运行过程的根本不同在于这个特定的VI是否在内部记录了生成信号的相位轨迹。Wave VI在内部记录了相位轨迹,而Pattern VI则没有。可以通过识别VI名称中包含的单词是Wave 还是Pattern来区分这两类VI。
其他类似问题
为您推荐:
提问者采纳
Generation模板的基础上进一步开发的;在给定以Hz(周期数/每秒)为单位的频率的情况下,一是Waveform&Wave&out中的相位,有两处地方可以用来生成模拟信号;4)Triangle&nbsp,而phase&nbsp,需要大概25(128/5=25;Generation模板包含了信号的时间信息;&nbsp。可能是由于你没有考虑归一化频率的问题,输出不同.Wave波形显示中,归一化频率(周期数/采样数)为5/50=0;Waveform&lt,reset&nbsp://h,波形是时间的函数;in中指明的相位;in指明了首次采样生成波形时的初始相位(以度为单位);out值;Generation模板中&gt在LabVIEW中;Generation模板,因此允许用户控制初始相位的取值。reset&nbsp。举一个简单的例子,就能更清楚明白这个两个VI的区别.这两个VI是不包含时间信息的.1;Wave&nbsp。Signal&nbsp.hiphotos,因此在Sine&nbsp。在给定周期数(cycles)的情况下;Generation模板;Wave和Sine&Wave&1)Sine&VI使用的是归一化了的单位周期数/每采样.com/zhidao/wh%3D600%2C800/sign=08acf4cafa20bc8ecfd38/00ee0cf2eb9389427。由于Wave&Wave&nbsp,需要将给定问题中的频率单位转换为归一化频率单位;6)Chrip&nbsp。)关于你说的端子配置不同;Generation模板和Waveform&nbsp.8个周期;&nbsp,将初始相位设置为phase&Generation模板的功能大同小异。Sine&nbsp。(所以说/zhidao/pic/item/00ee0cf2eb9389427;Wave来说,如果用以Hz为单位的频率除以以Hz为单位的采样率;VI在内部记录了相位,生成的信号类型差不多,即周期数/每采样:&Generation模板则不包括,就可以得到归一化频率,主要区别是Waveform&nbsp.和Pattern&Pattern&lt。采样数为128://h;而Signal&Wave和Sine&nbsp。可以通过识别VI名称中包含的单词是Wave&nbsp。Waveform&nbsp,其中的许多模块是在Signal&phase用来说明调用该波形时所生成的首次采样相位是在phase&phase为TRUE时,每周期采样数为10。对于Sine&nbsp,有12;Generation模板中各模块参数设置更为灵活.6)个采样点生成一个周期的正弦波;VI使用归一化单位;VI中仅有Chrip&Generation模板中&gt,采样数为128。Pattern&nbsp。(补充说明一下,功能更强大.VI运行过程的根本不同在于这个特定的VI是否在内部记录了生成信号的相位轨迹;VI则没有;在Signal&nbsp。Wave&nbsp,只有Sine&Pattern&nbsp。之后你就可以根据自己的需要选用它们了,需要10个采样点来生成一个周期的正弦波。除此之外。)Wave&在Waveform&2)Square&nbsp。其他各参数设置如前面板中所示;包含了信号的时间信息;5)Arbitrary&nbsp,而Pattern&nbsp.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http。程序框图和程序运行后的前面板如下图所示;VI&Pattern来说;out则指明了下一次采样生成波形时的相位,周期数除以采样数就得到归一化频率;VI在内部记录了相位轨迹:下列VI使用由归一化单位指定的频率;还是Pattern来区分这两类VI。Wave&Wave&nbsp。对于Sine&nbsp。phase&&nbsp,还是当VI最后执行时出现在phase&nbsp。<a href="Pattern使用这些VI时,为FALSE时将其设置为VI最后执行时的phase&&nbsp,数字10由归一化频率的倒数计算得到;3)Sawtooth&&Pattern这两个VI的采样数(samples)的默认值都是128,周期为5,一是/zhidao/wh%3D450%2C600/sign=e8a3ff99d100baa1ba794fbfee0cf2eb9389427://h.hiphotos.jpg" esrc="http
其他1条回答
正弦信号对于采集声音的模拟、数据间隔dt而正弦波,只还有正弦数据、数据开始时间,包括正弦波的数据,应该用波
正弦信号的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 quartus ii signaltap 的文章

 

随机推荐