《EDA技术》设计报告设计题目正弦信号发生器的设计院系:信息工程学院专业:通信工程____学号:姓名:__________一.设计任务及要求1.设计任务:利用实验箱上的D/A 转换器和示波器设计正弦波发生器,可以在示波器上观察到正弦波2.设计要求:(1) 用VHDL 编写正弦波扫描驱动电路(2)设计可以产生正弦波信号的电路(3)连接实验箱上的D/A 转换器和示波器,观察正弦波波形二.设计方案(1)设计能存储数据的ROM 模块,将正弦波的正弦信号数据存储在在ROM 中,通过地址发生器读取,将正弦波信号输入八位D/A 转化器,在示波器上观察波形(2)用VHDL 编写正弦波信号数据,将正弦波信号输入八位D/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 IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;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 BEHA VIOR 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 <= "0000000";ELSIF CLK'EVENT AND CLK = '1' THENIF EN = '1' THENQ <= Q + 1;END IF;END IF;END PROCESS;ADDR <= Q;END BEHA VIOR;工程文件的建立步骤简述如下: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,存盘文件名应该与实体名一致,即singt.vhd。
当出现问句“Do you want to create…”时,若选“否”,可按以下的方法进入创建工程流程;若选“是”,则直接进入创建工程流程,创建工程流程如下:3.1、建立新工程管理窗。
选择菜单“File”→“New Preject Wizard”,即弹出工程设置对话框。
点击此框最上一栏右侧的按钮“…”,找到文件夹E: \SIN_GNT ,选中已存盘的文件singt.vhd(一般应该设定顶层设计文件为工程),再点击“打开”,即出现如图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”,将以名为cnt4b.vwf(默认名)的波形文件存入文件夹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的学习对数字电路有个很高的要求,通过这次编程学习,使我明白了专业基础知识的重要性和有用性。
同时,软件的使用技巧作为一行基本功需要熟练的掌握,只有既有专业知识,又会动手实践才能把知识学好用好。
第二在综合能力上:在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次设计也启发了我在以后的学习中一定要耐心、细心、认真,不可粗枝大叶。