波形发生器(VHDL)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华南理工大学广州学院数字系统设计(VHDL)课程报告题目:波形发生器姓名:学号:序号:学院:班级:指导老师:完成时间:2014-1-1__题目:波形发生器一、功能及原理介绍1、功能介绍此波形发生器,通过选择“00”、“01”、“10”、“11”,这四种模式来选择相应的波形输出,除此之外,它还可以产生一些其它的波形,利用MIF文件生成器产生波形的MIF文件,由此产生各种波形。这个波形发生器可以用作信号发生器,产生一些自己所需要的信号。2、原理介绍正弦信号发生器的结构由3部分组成:数据计数器或地址发生器、数据ROM和D/A。性能良好的正弦信号发生器的设计要求此3部分具有高速性能,且数据ROM在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。顶层文件any_bo.VHD在FPGA中实现,包含2个部分:ROM的地址信号发生器由7位计数器担任,和正弦数据ROM,拒此,ROM由LPM_ROM模块构成能达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。地址发生器的时钟CLK的输入频率f0与每周期的波形数据点数(在此选择128点)。2.1.MIF文件生成器的使用方法mif文件就是存储器初始化文件,即memoryinitializationfile,用来配置RAM或ROM中的数据。而产生MIF文件的在这里有三种方法:(1)利用Quartus自带的mif编辑器、(2)利用mif软件来生成、(3)用C语言或者matlab语言等来生成,而我就利用MIF文件生成器MIF_Maker2010来产生MIF文件。①双击打开MIF_Maker2010,如图首先我们对所需要的MIF文件对应的波形参数进行设置,如上图,在“查看”,并于此下拉菜单中选择“全局参数设置”,如选择波形参数:数据长度128,输出数据位宽8,选择模式000110117位计数器(地址发生器)7位计数器(地址发生器)7位计数器(地址发生器)7位计数器(地址发生器)正弦波数据存储ROM三角波数据存储ROM方波数据存储ROM锯齿波数据存储ROM正弦波输出三角波输出方波输出锯齿波输出数据格式十六进制(有的情况下需要选择符号类型),初始相位0度,按“确定”后,将会出现一波形编辑窗。②然后选择波形类型。选择“设定波形”,再选择“正弦波”,如下图③若要选择其它的波形也可以,如果要编辑任意波形,可以选择“手绘波形”项,在下拉菜单中选择“线条”,如图,表示可以手工绘制线条。④最后选择“文件”中的“保存”,将此编辑好的波形文件以MIF格式保存即可。⑤产生的MIF文件像如下图一样,每对应一个地址就有一个采样数据2.2.利用LPM_ROM的定制和使用FPGA中的ROM除了作为数据和程序存储单元外,ROM还有其它的用处,如数字信号发生器的波形数据存储器、查表式计算器的核心工作单元等等。(1)单击Tools下的MegaWizardPlug-inMannager管理器按钮,进入如图的LPM模块(2)选择MemoryCompliler中的ROM:1-PORT项,FPGA是CycloneII系列,文本表达选择VHDL,文件名为fang_bo等等,如下图(3)定制调用此ROM模块的参数设置和初始化条件的配置如下两图2.3.利用嵌入式逻辑分析仪SignalTapII对输出波形进行显示利用FPGA片上资源实现逻辑分析仪的功能。signaltap和你自己的逻辑设计一起被quartus编译,生成的sof文件中会包含signaltap。使用时在quartus中打开当前工程,打开stp文件(signaltap的定义文件),把sof下载到器件中就可以开始抓取波形了。①SignalTapII嵌入逻辑分析仪集成到QuartusII设计软件中,能够捕获和显示可编程单芯片系统(SOPC)设计中实时信号的状态,这样开发者就可以在整个设计过程中以系统级的速度观察硬件和软件的交互作用。它支持多达1024个通道,采样深度高达128Kb,每个分析仪均有10级触发输入/输出,从而增加了采样的精度。SignalTapII为设计者提供了业界领先的SOPC设计的实时可视性,能够大大减少验证过程中所花费的时间。目前SignalTapII逻辑分析仪支持的器件系列包括:APEXTII,APEX20KE,APEX20KC,APEX20K,Cyclone,Excalibur,Mercury,StratixGX,Stratix。②SignalTapII将逻辑分析模块嵌入到FPGA中,逻辑分析模块对待测节点的数据进行捕获,数据通过JTAG接口从FPGA传送到QuartusII软件中显示。使用SignalTapII无需额外的逻辑分析设备,只需将一根JTAG接口的下载电缆连接到要调试的FPGA器件。SignalTapII对FPGA的引脚和内部的连线信号进行捕获后,将数据存储在一定的RAM块中。因此,需要用于捕获的采样时钟信号和保存被测信号的一定点数的RAM块。③使用SignalTapII的一般流程是:设计人员在完成设计并编译工程后,建立SignalTapII(.stp)文件并加入工程、配置STP文件、编译并下载设计到FPGA、在QuartusII软件中显示被测信号的波形、在测试完毕后将该逻辑分析仪从项目中删除。以下描述设置SignalTapII文件的基本流程:A.设置采样时钟。采样时钟决定了显示信号波形的分辨率,它的频率要大于被测信号的最高频率,否则无法正确反映被测信号波形的变化。SignalTapII在时钟上升沿将被测信号存储到缓存。B.设置被测信号。可以使用NodeFinder中的SignalTapII滤波器查找所有预综合和布局布线后的SignalTapII节点,添加要观察的信号。逻辑分析器不可测试的信号包括:逻辑单元的进位信号、PLL的时钟输出、JTAG引脚信号、LVDS(低压差分)信号。C.配置采样深度、确定RAM的大小。SignalTapII所能显示的被测信号波形的时间长度为Tx,计算公式如下:---Tx=N×Ts---N为缓存中存储的采样点数,Ts为采样时钟的周期。D.设置bufferacquisitionmode。bufferacquisitionmode包括循环采样存储、连续存储两种模式。循环采样存储也就是分段存储,将整个缓存分成多个片段(segment),每当触发条件满足时就捕获一段数据。该功能可以去掉无关的数据,使采样缓存的使用更加灵活。E.触发级别。SignalTapII支持多触发级的触发方式,最多可支持10级触发。F.触发条件。可以设定复杂的触发条件用来捕获相应的数据,以协助调试设计。当触发条件满足时,在signalTap时钟的上升沿采样被测信号。G.完成STP设置螅玈TP文件同原有的设计下载到FPGA中,在QuartusII中SignalTapII窗口下查看逻辑分析仪捕获结果。SignalTapII可将数据通过多余的I/O引脚输出,以供外设的逻辑分析器使用;或输出为csv、tbl、vcd、vwf文件格式以供第三方仿真工具使用。二、VHDL编程实现LIBRARYIEEE;--信号发生器源文件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--运算符的重载USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYany_boISgeneric(divide_to_100k:integer:=100000;--类属cnt1_value:integer:=5);PORT(RST,EN,CLK:INSTD_LOGIC;--复位信号,时钟信号,计数使能rw,rs,e:outstd_logic;lcd_data:outstd_logic_vector(7downto0);AR1:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--正弦波地址测试输出AR2:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--三角波地址测试输出AR3:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--方波地址测试输出AR4:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--锯齿波地址测试输出cnt:INSTD_LOGIC_VECTOR(0TO1);--正弦波、三角波、方波、锯齿波的选择模式,00--正弦波,01--三角波,10--方波,11--锯齿波result:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位波形数据输出ENDany_bo;ARCHITECTUREONEOFany_boISCOMPONENTzheng_xian--调用正弦波形数据存储器LPM_ROM文件:zheng_xian.vhd声明PORT(address1:INSTD_LOGIC_VECTOR(6DOWNTO0);--7位地址信号inclock1:INSTD_LOGIC;--地址锁存时钟q1:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTsan_jiao--调用三角波形数据存储器LPM_ROM文件:san_jiao.vhd声明PORT(address2:INSTD_LOGIC_VECTOR(6DOWNTO0);--7位地址信号inclock2:INSTD_LOGIC;--地址锁存时钟q2:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTfang_bo--调用方波形数据存储器LPM_ROM文件:fang_bo.vhd声明PORT(address3:INSTD_LOGIC_VECTOR(6DOWNTO0);--7位地址信号inclock3:INSTD_LOGIC;--地址锁存时钟q3:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTju_chi--调用锯齿波形数据存储器LPM_ROM文件:ju_chi.vhd声明PORT(address4:INSTD_LOGIC_VECTOR(6DOWNTO0);--7位地址信号inclock4:INSTD_LOGIC;--地址锁存时钟q4:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;SIGNALQ1:STD_LOGIC_VECTOR(6DOWNTO0);--设定内部节点作为地址计数器SIGNALQ2:STD_LOGIC_VECTOR(6DOWNTO0);--设定内部节点作为地址计数器SIGNALQ3:STD_LOGIC_VECTOR(6DOWNTO0);--设定内部节点作为地址计数器SIGNALQ4:STD_LOGIC_VECTOR(6DOWNTO0);--设定内部节点作为地址计数器SIGNALout11:STD_LOGIC_VECTOR(7DOWNTO0);--寄存8位正弦波的数据SIGNALout22:STD_LOGIC_VECTOR(7DOWNTO0);--寄存8位三角波的数据SIGNALout33:STD_LOGIC_VECTOR(7DOWNTO0);--寄存8位方波的数据SIGNALout44:STD_LOGIC_VECTOR(7DOWNTO0);--寄存8位锯齿波的数据signalclk_100k:std_logic;typestateis(s0,s1,s2,s3,s4,s5,s6,S7,S8,S9,s10,s11,s12,s13);signalcurrent_s:state;--状态机,用来驱动12864显示typedata_buffer_1isarray(0to11)ofstd_logic_vector(7downto0);--8位LCD12864数据typedata_buffer_2isarray(0to11)ofstd_logic_vector(7downto0);--8位LCD12864数据typedata_buffer_3isarray(0to9)o

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功