EDA课程设计-正弦信号发生器的设计 .doc
EDA技术设计报告 设计题目正弦信号发生器的设计 院 系: 信息工程学院 专 业:通信工程_ 学 号: 姓 名: _一设计任务及要求 1.设计任务:利用实验箱上的D/A转换器和示波器设计正弦波发生器,可以在示波器上观察到正弦波 2.设计要求: (1) 用VHDL编写正弦波扫描驱动电路 (2)设计可以产生正弦波信号的电路 (3)连接实验箱上的D/A转换器和示波器,观察正弦波波形二设计方案(1)设计能存储数据的ROM模块,将正弦波的正弦信号数据存储在在ROM中,通过地址发生器读取,将正弦波信号输入八位D/A转化器,在示波器上观察波形 (2)用VHDL编写正弦波信号数据,将正弦波信号输入八位D/A转化器,在示波器上观察波形 并转串输出7根地址线8位ROM计数器RSTCLKTLV5620D/A转换三设计框图图 1 设计框图信号发生器主要由以下几个部分构成:计数器用于对数据进行采样,ROM用于存储待采样的波形幅度数值,TLV5620用于将采集的到正弦波数字量变为模拟量,最后通过示波器进行测量获得的波形。其中,ROM设置为7根地址线,8个数据位,8位并行输出。TLV5260为串行输入的D/A转换芯片,因此要把ROM中并行输出的数据进行并转串。四实现步骤1.定制ROMROM的数据位选择为8位,数据数选择128个。利用megawizard plug-in manager定制正弦信号数据ROM宏功能块,并将上面的波形数据加载于此ROM中。如图3所示。图2 ROM存储的数据图3 调入ROM初始化数据文件并选择在系统读写功能2.设计顶层顶层设计主要是通过编写VHDL语言或设计原理图用于产生计数信号和调用room存储的数据并输出。在此步骤里要建立EDA工程文件,工程文件结构如图4所示,SIN_CNT中的VHDL代码如下:LIBRARY IEEE;USE _LOGIC_;USE _LOGIC_;ENTITY SIN_GNT ISPORT ( RST, CLK, EN : IN STD_LOGIC;ADDR : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END SIN_GNT;ARCHITECTURE BEHAVIOR OF SIN_GNT ISCOMPONENT ROM ISPORT ( address : IN STD_LOGIC_VECTOR(6 DOWNTO 0);inclock : IN STD_LOGIC;q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT;SIGNAL Q : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU : ROM PORT MAP ( address => Q,inclock => CLK,q => DOUT);PROCESS(CLK, RST, EN)BEGINIF RST = '0' THENQ <= ""ELSIF CLK'EVENT AND CLK = '1' THENIF EN = '1' THENQ <= Q + 1;END IF;END IF;END PROCESS;ADDR <= Q;END BEHAVIOR;工程文件的建立步骤简述如下:1、新建一个文件夹。利用资源管理器,新建一个文件夹,如:E: SIN_GNT 。注意,文件夹名不能用中文。 2、输入源程序。打开QuartusII,选择菜单“File”“New”,在New窗中的“Device Design Files”中选择编译文件的语言类型,这里选“VHDL Files”。然后在VHDL文本编译窗中键入如图4所示的VHDL程序。图4 Quartusii 编辑代码窗口3、文件存盘。选择“File”“Save As”,找到已设立的文件夹e : SIN_GNT ,存盘文件名应该与实体名一致,即。当出现问句“Do you want to create”时,若选“否”,可按以下的方法进入创建工程流程;若选“是”,则直接进入创建工程流程,创建工程流程如下:3.1、建立新工程管理窗。选择菜单“File”“New Preject Wizard”,即弹出工程设置对话框。点击此框最上一栏右侧的按钮“”,找到文件夹E: SIN_GNT ,选中已存盘的文件(一般应该设定顶层设计文件为工程),再点击“打开”,即出现如图5所示设置情况。其中第一行表示工程所在的工作库文件夹;第二行表示此项工程的工程名,此工程名可以取任何其它的名,通常直接用顶层文件的实体名作为工程名,第三行是顶层文件的实体名。 3.2、将设计文件加入工程中。然后点击下方的“Next” 按钮,在弹出的对话框中点击“File”栏的按钮,将此工程相关的所有VHDL文件加入进此工程(如果有的话),即得到如图6所示的情况。工程的文件加入的方法有两种:第1种是点击右边的“Add All”按钮,将设定的工程目录中的所有VHD文件加入到工程文件栏中;第2种方法是点击“”按钮,从工程目录中选出相关的VHDL文件。图5 为工程文件命名3.3、选择仿真器和综合器类型。点击图6的“Next”按钮,这时弹出的窗是选择仿真器和综合器类型的,如果都是选默认的“NONE”,表示都选QuartusII中自带的仿真器和综合器,因此,在此都选默认项“NONE”。 3.4、选择目标芯片。再次点击“Next”,选择目标芯片。首先在“Family”栏选芯片系列,在此选“Cyclone”系列,并在此栏下选“Yes”,即选择一确定目标器件。再按键“Next”,选择此系列的具体芯片:EP1T3C144C8(图7),按键“Next”后,弹出工程设置统计窗口,以上列出了此项工程的相关设置情况。 图6 添加工程文件图7 选择器件芯片类型3.5、结束设置。最后按键“Finish”,即已设定好此工程(图8),此工程管理窗主要显示工程项目的层次结构。图8 Quartusii中EDA工程文件结构对程序进行编译,以测程序是否有错误,最终生成的原理图图9。图9 编译仿真后生成的原理图4.仿真仿真就是对设计项目进行一项全面彻底的测试,以确保设计项目的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。仿真操作前必须利用QuartusII的波形编辑器建立一个矢量波形文件以作仿真激励。VWF文件将仿真输入矢量和仿真输出描述成为一波形的图形来实现仿真。QuartusII允许对整个设计项目进行仿真测试,也可以对该设计中的任何子模块进行仿真测试。方法是设定为“Simulation focus”。仿真设定单元(Simulation Settings)允许设计者指定该模块的仿真类型,仿真覆盖的时序和矢量激励源等。Time/Vectors仿真参数设定窗允许设定仿真时间区域,以及矢量激励源。对工程的编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。步骤如下:4.1、打开波形编辑器。选择菜单File中的New项,在New窗中选“Other Files”中的“Vector Waveform File”,点击OK,即出现空白的波形编辑器。4.2、设置仿真时间区域。为了使仿真时间轴设置在一个合理的时间区域上,在Edit菜单中选择“End Time”项,在弹出的窗中的“Time”窗中键入50,单位选“us”,即整个仿真域的时间即设定为50微秒,点击OK,结束设置。4.3、存盘波形文件。选择File中的“Save as”,将以名为(默认名)的波形文件存入文件夹E:sin_gnt中。 图10 工程仿真图形4.4、输入信号节点。将计数器计的端口信号节点选入此波形编辑器中。方法是首先选View 菜单中的“Utility Windows”项的“Node Finder”选项。其对话框如图3-21所示,在Filter框中选Pins : all,然后点击“List”钮。于是在下方的“Nodes Found”窗中出现了设计中的singt工程的所有端口引脚名(如果此对话框中的“List”不显示,需要重新编译一次,即选Processing Start Compilation,然后再重复以上操作过程)。用鼠标将重要的端口节点CLK和输出总线信号DOUT都拖到波形编辑窗,点击波形窗左侧的全屏显示钮,使全屏显示,并点击放大缩小钮后,用鼠标在波形编辑区域右键点击,使仿真坐标处于适当位置。4.5、编辑输入波形(输入激励信号)。点击时钟名CLK,使之变兰色,再点击左列的时钟设置键,在Clock窗中设置CLK的周期为3us;所示的Clock窗中的“Duty cycle”是占空比,可选50,即50%占空比,再对文件存盘。4.6、总线数据格式设置。如果点击如图3-22所示的输出信号“DOUT”左旁的“+”,则将展开此总线中的所有信号;如果双击此“+”号左旁的信号标记,将弹出对该信号数据格式设置的对话框。在该对话框的“Radix”栏有4。4.7、启动仿真器。所有设置完毕,在菜单Processing项选“Start Simulation”,直到出现“Simulation was successful”。在进行完工程仿真后便可以进行硬件仿真,将程序下载到锁定了引脚的芯片上,芯片锁定图如下:图11 引脚锁定图图12 硬件仿真波形5.链接DA和波形测试将FPGA产生的波形数据介入到DA转换芯片上,并设置同步脉冲。然后通过示波器观察,便可看到如图12和图13的波形图。图12 波形测量1图13 波形测量2五总结这次EDA实验设计历时两个星期,学到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。主要可以从以下两个方面进行总结。第一在专业知识上:EDA的学习对数字电路有个很高的要求,通过这次编程学习,使我明白了专业基础知识的重要性和有用性。同时,软件的使用技巧作为一行基本功需要熟练的掌握,只有既有专业知识,又会动手实践才能把知识学好用好。第二在综合能力上:在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次设计也启发了我在以后的学习中一定要耐心、细心、认真,不可粗枝大叶。