EDA课程设计-正弦信号发生器的设计
EDA实验-正弦波信号发生器设计
实验八正弦信号发生器的设计一、实验目的1、学习用VHDL设计波形发生器和扫频信号发生器。
2、掌握FPGA对D/A的接口和控制技术,学会LPM_ROM在波形发生器设计中的实用方法。
二、实验仪器PC机、EDA实验箱一台Quartus II 6.0软件三、实验原理如实验图所示,完整的波形发生器由4部分组成:• FPGA中的波形发生器控制电路,它通过外来控制信号和高速时钟信号,向波形数据ROM 发出地址信号,输出波形的频率由发出的地址信号的速度决定;当以固定频率扫描输出地址时,模拟输出波形是固定频率,而当以周期性时变方式扫描输出地址时,则模拟输出波形为扫频信号。
•波形数据ROM中存有发生器的波形数据,如正弦波或三角波数据。
当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使D/A输出的模拟信号的变化速度越快。
波形数据ROM可以由多种方式实现,如在FPGA外面外接普通ROM;由逻辑方式在FPGA中实现(如例6);或由FPGA中的EAB模块担当,如利用LPM_ROM实现。
相比之下,第1种方式的容量最大,但速度最慢;,第2种方式容量最小,但速度最最快;第3种方式则兼顾了两方面的因素;• D/A转换器负责将ROM输出的数据转换成模拟信号,经滤波电路后输出。
输出波形的频率上限与D/A器件的转换速度有重要关系,本例采用DAC0832器件。
DAC0832是8位D/A转换器,转换周期为1µs,其引脚信号以及与FPGA目标器件典型的接口方式如附图2—7所示。
其参考电压与+5V工作电压相接(实用电路应接精密基准电压).DAC0832的引脚功能简述如下:•ILE(PIN 19):数据锁存允许信号,高电平有效,系统板上已直接连在+5V上。
•WR1、WR2(PIN 2、18):写信号1、2,低电平有效。
•XFER(PIN 17):数据传送控制信号,低电平有效。
•VREF(PIN 8):基准电压,可正可负,-10V~+10V.•RFB(PIN 9):反馈电阻端。
EDA课程设计(信号发生器)
课程设计报告2010 ~ 2011 学年第一学期设计题目:基于FPGA可调信号发生器学院:专业:课程名称: EDA原理与应用学生姓名:时间: 2011年1月指导教师:目录一、系统总体设计---------------------------------------------------------------------2二、系统功能模块设计---------------------------------------------------------------21、矩阵键盘模块------------------------------------------------------------32、频率显示模块-----------------------------------------------------------113、波形数据ROM初始化数据文件设计--------------------------------134、频率、幅度改变模块--------------------------------------------------145、DA转化模块-----------------------------------------------------------186、示波器检测-------------------------------------------------------------18三、结束语---------------------------------------------------------------------------191、矩阵键盘模块:矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键,这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高系统中I/O口的利用率。
正弦信号发生器的设计
实验四正弦信号发生器的设计1. 实验的目的和要求熟悉QuartusII 及其LPM_ROM 与FPGA 硬件资源的使用方法。
2.实践内容或原理正弦信号发生器的结构由3部分组成,数据计数器或地址发生器、数据ROM 和D/A 。
性能良好的正弦信号发生器的设计,要求此3部分具有高速性能,且数据ROM 在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。
图1所示是此信号发生器结构图,顶层文件SINGT.VHD 在FPGA 中实现,包含2个部分:ROM 的地址信号发生器由5位计数器担任,和正弦数据ROM ,其原理图如图2所示。
据此,ROM 由LPM_ROM 模块构成能达到最优设计,LPM_ROM 底层是FPGA 中的EAB 或ESB 等。
地址发生器的时钟CLK 的输入频率f 0与每周期的波形数据点数(在此选择64点)以及D/A 输出的频率f 的关系是:640f f图1 正弦信号发生器结构图图2 正弦信号发生器原理图图3 正弦波的64个点的输入在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。
最后在实验系统上实测,包括SignalTap II测试、FPGA中ROM的在系统数据读写测试和利用示波器测试。
最后完成EPCS1配置器件的编程。
3. 实验仪器(1)GW48系列SOPC/EDA实验开发系统(2)配套计算机及Quartus II 软件4.实践步骤或环节(1) 建立工程文件夹。
(2) 生成6位二进制计数器原理图。
(3)定制LPM_ROM元件。
(4)仿真。
(5)选择实验电路模式5,进行引脚下载配置。
(6)嵌入式逻辑分析仪的设置。
5. VHDL仿真实验(1)6位二进制计数器的仿真程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6b ISPORT (CLK,RST,EN: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR (5 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT6b;ARCHITECTURE behav OF CNT6b ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQI:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGINIF RST='1'THEN CQI:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENCQI:=CQI+1;END IF;END IF;IF CQI=63 THEN COUT<='1';ELSE COUT<='0';END IF;CQ<=CQI;END PROCESS;END behav;(2)RTL电路(3)时序仿真波形:(4)硬件验证选择试验箱的模式为模式5,时钟CLK选择为CLOCK0(PIN_28脚),频率f=65536Hz,EN对应的引脚编号PIN-233,RST对应的引脚编号PIN-234,COUT对应的引脚编号PIN-1,Q[7..0]对应的引脚编号PIN-20,19,18,17,16,15,14,13.(5)逻辑分析仪的测试波形6.实践教学报告要求(1)详细分析各模块的逻辑功能,及其他们工作原理,详细记录并分析实验内容和实验内容的过程和结果,完成实验报告。
基于EDA技术的正弦信号发生器设计
基于EDA技术的正弦信号发生器设计作者:高锐来源:《科技传播》2012年第23期摘要现代EDA技术是当今电子设计技术的最新发展方向,具有极大的灵活性和通用性、测试硬件方便快捷、系统开发快速、降低产品成本、技术维护简单、工作稳定性好等特点。
本文着重介绍了基于EDA技术的正弦信号发生器电路的设计方案、程序设计输入、编译和仿真等操作,比较完整的说明了正弦信号发生器的设计过程、功能和正弦信号发生器电路的设计过程。
关键词电子EDA技术;正弦信号发生器设计;文件编译中图分类号TN702 文献标识码A 文章编号 1674-6708(2012)80-0206-01电子EDA技术的主要特点是使用硬件描述语言进行电子电路系统设计操作,具有较高的系统级仿真能力及综合能力。
使电子EDA技术得以实现的硬件基础是超大规模可编程逻辑器件,它的设计操作过程具有很大的灵活性和可移植性。
进行EDA技术开发的QuartusII软件是用于开发可编程逻辑器件的常用工具软件,此软件功能强大、操作方便,主要用于实现电路系统的设计输入、电路综合、电路布局布线、时序分析和仿真操作、系统配置操作、时序逼近、系统调试和项目管理等功能。
本文中的正弦信号发生器电路就是基于QuartusII软件平台设计的。
1 设计方案信号发生器是数字设备运行过程中不可缺少的一部分,以前的信号发生器,几乎都使用的是分立元件,产品体积庞大且不方便携带。
而现在专用的数字电路信号发生器,硬件成本高、操作复杂。
由于上述原因,小型、成本低且易用的信号发生器比较实用。
基于以上原因,选择使用Quartus II软件创建项目工程xhfs,使用自底向上的混合编辑方法并结合ROM宏功能模块设计一个简易正弦信号发生器。
选择Cyclone II系列的EP2C8Q208C8器件并进行引脚分配、项目编译、仿真、生成目标文件,使用EDA实验箱对目标器件进行编程与配置。
正弦信号发生器设计共由四部分组成,其系统设计框图如图1所示,包括ROM地址发生器(六位计数器)、正弦数据只读存储器ROM和一个八位数模转换电路。
eda课程信号发生器课程设计
eda课程信号发生器课程设计一、课程目标知识目标:1. 学生能理解EDA课程中信号发生器的原理与功能,掌握相关电子元件的工作特性。
2. 学生能够掌握信号发生器的分类、特点及应用场景,了解各类信号发生器的优缺点。
3. 学生能够运用所学知识,分析并设计简单的信号发生器电路。
技能目标:1. 学生能够熟练运用EDA软件进行信号发生器电路的设计、仿真与调试。
2. 学生能够独立完成信号发生器的硬件搭建,并进行基本的性能测试。
3. 学生能够通过实际操作,提高动手实践能力,培养解决实际问题的能力。
情感态度价值观目标:1. 学生能够培养对电子工程的兴趣,激发创新意识,形成主动学习的习惯。
2. 学生能够培养团队协作精神,学会与他人沟通交流,共同解决问题。
3. 学生能够认识到信号发生器在现代社会中的重要作用,增强社会责任感和使命感。
本课程针对高年级学生,在分析课程性质、学生特点和教学要求的基础上,明确以上课程目标。
通过分解目标为具体的学习成果,使学生在掌握专业知识的同时,提高实践操作能力和团队协作能力,培养良好的情感态度价值观。
为后续的教学设计和评估提供明确的方向。
二、教学内容本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。
主要内容包括:1. 信号发生器原理与分类:讲解信号发生器的基本原理、功能及分类,重点介绍函数发生器、脉冲发生器等常见类型的工作原理及应用。
2. 电子元件特性分析:分析常用电子元件(如运放、晶体管、二极管等)在信号发生器中的作用,掌握其工作特性。
3. 信号发生器电路设计:根据实际需求,设计不同类型的信号发生器电路,分析电路性能,优化设计方案。
4. EDA软件应用:教授学生如何使用EDA软件进行信号发生器电路的设计、仿真与调试,提高实际操作能力。
5. 硬件搭建与性能测试:指导学生搭建信号发生器硬件电路,进行基本性能测试,分析测试结果,找出问题并解决。
教学内容安排如下:1. 第1周:信号发生器原理与分类,电子元件特性分析。
EDA课程报告-正弦波信号发生器的设计
《EDA》课程设计报告——正弦波信号发生器的设计一、设计目的:进一步熟悉QuartusII及其LPM_ROM与FPGA 硬件资源的使用方法。
培养动手能力以及合作能力。
二、设计要求:1、clk为12MHz。
2、通过DAC0832输出正弦波电压信号,电压范围0~-5V。
3、通过示波器观察波形。
三、设计内容:在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。
最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。
信号输出的D/A使用实验系统上的ADC0832。
四、设计原理:图1所示的正弦波信号发生器的结构由四部分组成:1、计数器或地址发生器(这里选择10位)。
2、正弦信号数据ROM(10位地址线,8位数据线),含有1024个8位数据(一个周期)。
3、VHDL顶层设计。
4、8位D/A(实验中可用ADC0832代替)。
图1所示的信号发生器结构图中,顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由10位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。
LPM_ROM底层是FPGA 中的EAB、ESB或M4K等模块。
地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择1024点),以及D/A输出的频率f的关系是:f=fo/1024图1 正弦信号发生器结构框图图2 正弦波信号发生器的设计图五、设计步骤:1、建立.mif格式文件首先,mif文件可用C语言程序生成,产生正弦波数值的C程序如下:#include<stdio.h>#include<math.h>main(){int i;float s;for(i=0;i<1024;i++){s=sin(atan(1)*8*i/256);printf("%d :%d;\n",i,(int)((s+1)*255/2)) }}其次,把上述程序编译后,在DOS命令行下执行命令:romgen > sdata.mif;将生成的sdata.mif 文件,再加上.mif文件的头部说明即可。
EDA技术-VHDL-5.12正弦信号发生器
2095.12. 正弦信号发生器程序设计与仿真实验1实验目的熟悉QuartusII 及其LPM_ROM 与FPGA 硬件资源的使用方法。
2实验原理正弦信号发生器的结构由3部分组成,数据计数器或地址发生器、数据ROM 和D/A 。
性能良好的正弦信号发生器的设计,要求此3部分具有高速性能,且数据ROM 在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。
图5.12.1所示是此信号发生器结构图,顶层文件SINGT.VHD 在FPGA 中实现,包含2个部分:ROM 的地址信号发生器由5位计数器担任,和正弦数据ROM ,其原理图如图5.12.2所示。
拒此,ROM 由LPM_ROM 模块构成能达到最优设计,LPM_ROM 底层是FPGA 中的EAB 或ESB 等。
地址发生器的时钟CLK 的输入频率f 0与每周期的波形数据点数(在此选择64点)以及D/A 输出的频率f 的关系是:640f f图5.12.1 正弦信号发生器结构图图5.12.2 正弦信号发生器原理图3 实验内容在Quartus II 上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone 器件)。
最后在实验系统上实测,包括SignalTap II 测试、FPGA 中ROM 的在系统数据读写测试和利用示波器测试。
最后完成EPCS1配置器件的编程。
4 实验预习与思考如果CLK 的输入频率是50MHz ,ROM 中一个周期的正弦波数据是128个,要求输出的正弦波频率不低于150KHz,DAC0832是否能适应此项工作?为什么?5 原理图的建立与仿真(1) 为此工程建立文件夹,文件夹名为zxb(2) 建立原理图文件, 单击New→Device Dising→Block Diagram/Schematic file→OK,弹出原理图窗口如图5.12.3所示,图5.12.3 原理图建立窗口(3) 双击原理图窗口的任意处弹出如图5.12.4窗口,在窗口的Name处输入input(输入节点),点击ok,然后保存,文件名为cnt.210图5.12.4 原理图输入窗口(4) 创建工程与第2章2.1节的方法相同。
正弦函数信号发生器的设计EDA课程设计报告
华东交通大学理工学院课程设计报告书所属课程: EDA技术及应用设计题目:正弦函数信号发生器的设计分院:电信分院班级:通信工程 2008级 2班姓名:骆玉春学号: 20080210420224 指导教师:王涛实验地点:实验楼五楼(EDA实验室506)2010 年 6 月 19 日华东交通大学理工学院课程设计任务书专业:08通信工程班级: 2班姓名:骆玉春一、课程设计题目正弦函数信号发生器的设计二、课程设计工作:自 2011 年 6月 16 日起至 2011 年 6 月20 日止。
三、课程设计的内容要求:1、识别各种Quartus II软件中各元件及其图形表示和文字符号。
2、学会如何使用Quartus II。
3、掌握VHDL语言的编程思想和VHDL语言的基本使用规则。
4、熟练掌握正弦函数信号发生器的工作原理,并读懂源程序。
5、按照编译、调试、仿真的正确步骤,并正确进行调试和仿真。
6、学会分析仿真图。
学生签名:2011年 6月 19日课程设计评阅意见评阅人职称2011 年月日目录课程设计评阅意见 (1)目录 (2)第一章设计目的 (3)第二章设计要求 (3)第三章设计内容 (3)第四章设计原理 (3)第五章设计步骤 (4)5.1建立.mif格式文件 (4)5.2建立.hex格式文件 (5)5.3定制LPM_ROM (5)5.4完成顶层设计 (11)第六章课程设计总结 (13)参考文献 (14)第一章设计目的进一步熟悉QuartusII 6.0及其LPM_ROM与FPGA硬件资源的使用方法。
培养动手能力以及谐作能力。
第二章设计要求1、CLK为12MHz。
2、通过DAC0832输出正弦波电压信号,电压范围0~-5V。
3、通过仿真观察波形。
第三章设计内容在Quartus II上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。
最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和仿真测试。
EDA课程设计——基于DDS的正弦信号发生器设计(模版)
EDA课程设计——基于DDS的正弦信号发生器设计(模版)第一篇:EDA课程设计——基于DDS的正弦信号发生器设计(模版)顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDS ISPORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);EN:IN STD_LOGIC;RESET:IN STD_LOGIC;CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY DDS;ARCHITECTURE BEHAVE OF DDS ISCOMPONENT SUM99 ISPORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);EN:IN STD_LOGIC;RESET:IN STD_LOGIC;CLK:IN STD_LOGIC;OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END COMPONENT SUM99;COMPONENT REG1 ISPORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END COMPONENT REG1;COMPONENT ROM ISPORT(CLK:IN STD_LOGIC;ADDR:IN STD_LOGIC_VECTOR(9 DOWNTO 0);OUTP:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END COMPONENT ROM;COMPONENT REG2 ISPORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END COMPONENT REG2;SIGNAL S1:STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL S2:STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL S3:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINU0:SUM99PORTMAP(K=>K,EN=>EN,RESET=>RESET,CLK=>CLK,OUT1=>S1);U1:REG1 PORT MAP(D=>S1,CLK=>CLK,Q=>S1);U2:ROM PORT MAP(ADDR=>S2,CLK=>CLK,OUTP=>S3);U3:REG2 PORT MAP(D=>S3,CLK=>CLK,Q=>Q);END ARCHITECTURE BEHAVE;正弦查找表 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM IS PORT(ADDR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);CLK:IN STD_LOGIC;OUTP:OUT SIGNED(7 DOWNTO 0));END ENTITY ROM;ARCHITECTURE ART OF ROM IS BEGIN PROCESS(CLK)IS BEGIN IF(CLK'EVENT AND CLK='1')THEN CASE ADDR IS WHEN “0000000”=>OUTP<=“00000000”;WHEN“0000001”=>OUTP<=“00000010”;WHEN“0000010”=>OUTP<=“00000011”;WHEN“0000011”=>OUTP<=“00000101”;WHEN“0000100”=>OUTP<=“00000110”;WHEN “0000101”=>OUTP<=“00001000”;WHEN “0000110”=>OUTP<=“00001001”;WHEN“0000111”=>OUTP<=“00001011”;WHEN“0001000”=>OUTP<=”00001101“;WHEN ”0001001“=>O UTP<=”00001110“;WHEN ”0001010“=>OUTP<=”0001000 0“;WHEN ”0001011“=>OUTP<=”00010001“;WHEN ”000 1100“=>OUTP<=”00010011“;WHEN ”0001101“=>OUTP< =”00010100“;WHEN ”0001110“=>OUTP<=”00010110“; WHEN ”0001111“=>OUTP<=”00010111“;WHEN ”0010000“=>OUTP<=”00011001“;WHEN ”0010001“=>OUTP<=”0 0011011“;WHEN ”0010010“=>OUTP<=”00011100“;WHEN ”001 0011“=>OUTP<=”00011110“;WHEN ”0010100“=>OUTP< =”00011111“;WHEN ”0010101“=>OUTP<=”00100001“; WHEN ”0010110“=>OUTP<=”00100010“;WHEN ”0010111“=>OUTP<=”00100100“;WHEN ”0011000“=>OUTP<=”0 0100101“;WHEN ”0011001“=>OUTP<=”00100111“;WHEN ”0011010“=>OUTP<=”00101001“;WHEN ”001 1011“=>OUTP<=”00101010“;WHEN ”0011100“=>OUTP< =”00101100“;WHEN ”0011101“=>OUTP<=”00101101“; WHEN ”0011110“=>OUTP<=”00101111“;WHEN ”0011111“=>OUTP<=”00110000“;WHEN ”0100000“=>OUTP<=”0 0110010“;WHEN ”0100001“=>OUTP<=”00110011“;WHEN ”0100010“=>OUTP<=”00110101“;WHEN ”0100011“=>O UTP<=”00110110“;WHEN ”0100100“=>OUTP<=”0011100 0“;WHEN ”0100101“=>OUTP<=”00111001“;WHEN ”010 0110“=>OUTP<=”00111011“;WHEN ”0100111“=>OUTP< =”00111100“;WHEN ”0101000“=>OUTP<=”00111110“; WHEN ”0101001“=>OUTP<=”00111111“;WHEN ”0101010“=>OUTP<=”01000001“;WHEN ”0101011“=>OUTP<=”0 1000011“;WHEN ”0101100“=>OUTP<=”01000100“;WHEN ”0101101“=>OUTP<=”01000110“;WHEN ”0101110“=>O UTP<=”01000111“;WHEN ”0101111“=>OUTP<=”01001001“;WHEN ”0110000“=>OUTP<=”01001010“;WHEN ”011 0001“=>OUTP<=”01001100“;WHEN ”0110010“=>OUTP< =”01001101“;WHEN ”0110011“=>OUTP<=”01001111“; WHEN ”0110100“=>OUTP<=”01010000“;WHEN ”0110101“=>OUTP<=”01010001“;WHEN ”0110110“=>OUTP<=”0 1010011“;WHEN ”0110111“=>OUTP<=”01010100“;WHEN ”0111000“=>OUTP<=”01010110“;WHEN ”0111001“=>O UTP<=”01010111“;WHEN ”0111010“=>OUTP<=”0101100 1“;WHEN ”0111011“=>OUTP<=”01011010“;WHEN ”011 1100“=>OUTP<=”01011100“;WHEN ”0111101“=>OUTP< =”01011101“;WHEN ”0111110“=>OUTP<=”01011111“; WHEN ”0111111“=>OUTP<=”01100000“;WHEN ”1000000“=>OUTP<=”01100010“;WHEN ”1000001“=>OUTP<=”0 1100011“;WHEN ”1000010“=>OUTP<=”01100100“;WHEN ”1000011“=>OUTP<=”01100110“;WHEN ”1000100“=>O UTP<=”01100111“;WHEN ”1000101“=>OUTP<=”0110100 1“;WHEN ”1000110“=>OUTP<=”01101010“;WHEN ”100 0111“=>OUTP<=”01101100“;WHEN ”1001000“=>OUTP< =”01101101“;WHEN ”1001001“=>OUTP<=”01101110“; WHEN ”1001010“=>OUTP<=”01110000“;WHEN ”1001011“=>OUTP<=”01110001“;WHEN ”1001100“=>OUTP<=”0 1110011“;WHEN ”1001101“=>OUTP<=”01110100“;WHEN ”1001110“=>OUTP<=”01110101“;WHEN ”1001111“=>O UTP<=”01110111“;WHEN ”1010000“=>OUTP<=”0111100 0“;WHEN ”1010001“=>OUTP<=”01111010“;WHEN ”101 0010“=>OUTP<=”01111011“;WHEN ”1010011“=>OUTP< =”01111100“;WHEN ”1010100“=>OUTP<=”01111110“; WHEN ”1010101“=>OUTP<=”01111111“;WHEN ”1010110“=>OUTP<=”10000000”;WHEN“1010111”=>OUTP<=“10000010”;WHEN“1011000”=>OUTP<=“10000011”;WHEN“1011001”=>OUTP<=“10000100”;WHEN“1011010”=>OUTP<=“10000110”;WHEN“1011011”=>OUTP<=“10000111”;WHEN “1011100”=>OUTP<=“10001000”;WHEN “1011101”=>OUTP<=“10001010”;WHEN“1011110”=>OUTP<=“10001011”;WHEN“1011111”=>OUTP<=“10001100”;WHEN“1100000”=>OUTP<=“10001110”;WHEN“1100001”=>OUTP<=“10001111”;WHEN“1100010”=>OUTP<=“10010000”;WHEN“1100011”=>OUTP<=“10010010”;WHEN“1100100”=>OUTP<=“10010011”;WHEN“1100101”=>OUTP<=“10010100”;WHEN “00001100110”=>OUTP<=“10010101”;WHEN “1100111”=>OUTP<=“10010111”;WHEN“1101000”=>OUTP<=“10011000”;WHEN“1101001”=>OUTP<=“10011001”;WHEN“1101010”=>OUTP<=“10011010”;WHEN“1101011”=>OUTP<=“10011100”;WHEN“1101100”=>OUTP<=“10011101”;WHEN“1101101”=>OUTP<=“10011110”;WHEN“1101110”=>OUTP<=“10011111”;WHEN“1101111”=>OUTP<=“10100001”;WHEN“1110000”=>OUTP<=“10100010” WHEN “1110001”=>OUTP<=“10100011”;WHEN “1110010”=>OUTP<=“10100100”;WHEN “1110011”=>OUTP<=“10100101”;WHEN“1110100”=>OUTP<=“10100111”;WHEN“1110101”=>OUTP<=“10101000”;WHEN“1110110”=>OUTP<=“10101001”;WHEN“1110111”=>OUTP<=“10101010”;WHEN“1111000”=>OUTP<=“10101011”;WHEN“1111001”=>OUTP<=“10101100”;WHEN“1111010”=>OUTP<=“10101110”;WHEN“1111011”=>OUTP<=“10101111”;WHEN“1111100”=>OUTP<=“10110000”;WHEN“1111101”=>OUTP<=“10110001”;WHEN“1111110”=>OUTP<=“10110010”;WHEN“1111111”=>OUTP<=“10110011”;WHENOTHERS=>OUTP<=“ 00000000”;END CASE;END IF;END PROCESS;END ARCHITECTURE ART;DAC 0832的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITY DAC0832 IS PORT(CLK:IN STD_LOGIC;RST:IN STD_LOGIC;ILE:OUT STD_LOGIC;CONT:OUT STD_LOGIC;DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY;ARCHITECTURE BEHAVE OF DAC0832 IS SIGNAL Q:INTEGER RANGE 0 TO 63;SIGNAL DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(CLK)BEGINIF RST='1'THEN Q<=0;ELSIF CLK'EVENT AND CLK='1'THEN IF DATA=“11111111”THEN DATA<=“00000000”;ELSE DATA<=DATA+1;END IF;ELSE Q<=Q+1;END IF;END PROCESS;ILE<='1';CONT<='0';DATA_OUT<=DATA;END ARCHITECTURE BEHAVE;频率控制字 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY REG0 ISPORT(CLK:IN STD_LOGIC;LOCK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG0;ARCHITECTURE ART OF REG0 IS BEGINPROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF LOCK='1'THENQ<=“0000011111”;END IF;END IF;END PROCESS;END ARCHITECTURE ART;相位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG1 ISPORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG1;ARCHITECTURE BEHAVE OF REG1 IS BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENT AND CLK='1')THENQ<=D;END IF;END PROCESS;END ARCHITECTURE BEHAVE;输出数据寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG2 IS PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY REG2;ARCHITECTURE BEHAVE OF REG2 IS BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENT AND CLK='1')THENQ<=D;END IF;END PROCESS;END ARCHITECTURE BEHAVE;相位累加器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SUM99 ISPORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);CLK:IN STD_LOGIC;EN:IN STD_LOGIC;RESET:IN STD_LOGIC:OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY SUM99;ARCHITECTURE BEHAVE OF SUM99 ISSIGNAL TEMP:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGINPROCESS(CLK,EN,RESET)ISBEGINIF RESET='1'THENTEMP<=“0000000000”;ELSEIF CLK'EVENT AND CLK='1'THENIF EN='1'THENTEMP<=TEMP+K;END IF;END IF;END IF;OUT1<=TEMP;END PROCESS;END ARCHITECTURE BEHAVE;图1.顶层电路原理图图2.dds波形仿真图图3.rom波形仿真图图4.相位寄存器reg1仿真波形图图5.寄存器reg2的波形仿真图6.相位累加器仿真波形图图7.优化过程及对比波形(A——H)图A图B图C图D图E 23图F图G图H第二篇:DDS函数信号发生器的设计DDS函数信号发生器的设计、仿真及下载一、实验设计① 利用DDS(Direct DIgital Frequency Synthesis,即直接数字频率合成)技术产生稳定的正弦波,三角波和方波输出,输出频率为10~1000kHz且频率可调,步进为10Hz,1kHz,10kHz,100kHz。
EDA课程设计的信号发生器
重庆大学城市科技学院电气信息学院EDA课程设计报告课程题目函数信号发生器指导教师专业组员学号日期一摘要EDA技术作为现代电子设计的核心,它依赖于功能强大的计算机,在EDA 工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动的完成设计文件,自动的完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直到完成既定的电子线路系统功能。
随着基于FPGA的EDA技术的发展和应用领域不断的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。
随着技术市场与人才市场对EDA技术的需求不断提高,产品的市场效率和技术要求也将会影响到教学与科研。
本设计是一个基于VHDL的采用自顶向下设计方法实现的多功能函数信号发生器,该设计方法具有外围电路简单,程序修改灵活和调试容易等特点,并通过计算机仿真和实验证明了设计的正确性。
关键词:FPGA 信号发生器 VHDL 自顶向下二题目分析1、设计目的设计一个信号发生器,用于产生正弦波、方波、三角波、锯齿波信号2、设计要求设计一个信号发生器(1).能产生正弦波、方波、三角波、锯齿波。
(2).能够选择输出不同的波形。
(3).能够调节输出波形的频率。
三硬件电路设计由题目分析可知,要完成整体设计,可通过QuartusⅡ设计出以下各个模块的原理图:1)分频器的原理图2)地址发生器的原理图3)正弦波发生器的原理图4)方波信号发生器的原理图5)锯齿波信号发生器的原理图6)三角波信号发生器的原理图7)四选一选择器原理图其中各波形数据存储ROM的HEX数据文件分别如下各图所示:图3.9 正弦波数据图3.10 方波数据图3.11 锯齿波数据图3.12 三角波数据经过对设计要求的仔细分析与思考,把以上各模块根据其功能和设计思路设计出总的系统原理图如图3.13所示:图3.13 系统综合原理图对整个系统进行硬件测试的引脚设定锁定如图3.14所示,测试时采用的是GW48-EDA系统的电路模式6.图3.14 引脚锁定图四程序设计(1)数控分频器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT( DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK: IN STD_LOGIC;FOUT:OUT STD_LOGIC);END DVF;ARCHITECTURE behav of DVF ISSIGNAL FULL: STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8="11111111" THENCNT8:=DIN;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1'; ELSE FOUT<='0'; END IF;END IF;END PROCESS P_DIV;END behav;(2)地址发生器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6B ISPORT (CLK,RST,EN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END CNT6B;ARCHITECTURE behav OF CNT6B ISSIGNAL CQI : STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINPROCESS(CLK, RST, EN)BEGINIF RST = '1' THEN CQI <= (OTHERS =>'0') ; --计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN = '1' THEN CQI <= CQI + 1;END IF;END IF;END PROCESS;DOUT<=CQI;END behav;(3)四选一选择器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUL41 ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);S1,S0:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY MUL41;ARCHITECTURE ONE OF MUL41 ISSIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINS<= S1 & S0;WITH S SELECTY<= A WHEN "00" ,B WHEN "01" ,C WHEN "10" ,D WHEN "11" ,"ZZZZZZZZ" WHEN OTHERS;END;(4)其余各波形数据存储ROM的设计可以利用MegaWizard Plug-In Manager定制信号数据ROM宏功能块,并将其相应的波形数据加载与定制的ROM中。
EDA课程设计——函数信号发生器
EDA课程设计——函数信号发生器实验报告学院(系)专业、班级学生姓名学号小组其他队员:指导教师(1)实验要求(2)总体设计思路(3)程序仿真(4)实验结果(5)心得体会一.实验要求(1)利用VHDL语言设计一个多功能信号发生器,可以产生正弦波,三角波,锯齿波和方波的数字信号。
(2)焊接一个D/A转换器,对输出的数字信号转换成模拟信号并在示波器上产生波形。
(3)在电路板上可以对波形进行选择输出。
(4)在电路板上可以对波形的频率与幅度进行调节。
二.总体设计思路信号发生器主要由分频,波形数据的产生,四选一多路选择,调幅和D/A转换五个部分组成。
总体框架图如下:(1)分频分频器是数字电路中最常用的电路之一,在FPGA的设计中也是使用效率非常高的基本设计。
实现的分频电路一般有两种方法:一是使用FPGA芯片内部提供的锁相环电路,如ALTERA提供的PLL(Phase Locked Loop),Xilinx提供的DLL(Delay Locked Loop);二是使用硬件描述语言,如VHDL、Verilog HDL等。
本次我们使用VHDL进行分频器设计,将奇数分频,和偶数分频结合起来,可以实现50%占空比任意正整数的分频。
分频器原理图:在我们本次试验中的实现即为当按下按键时,频率自动减半。
如当输入为100MHZ,输出为50MHZ。
(2)信号的产生。
根据查找资料,我们最终确定了在QUARTUS中波形数据产生的方法,即利用地址信号发生器和LPM_ROM模块。
ROM 的地址信号发生器,有七位计数器担任。
LPM_ROM底层是FPGA 中的M4K等模块。
然后在VHDL顶层程序设计中将两部分调用从而实现信号的发生。
ROM中存放不同的初始化MIF文件(存放不同波形的数据)从而产生不同的波形。
信号产生模块:信号产生RTL图:此环节最重要的还有MIF文件的建立,经过查找资料,下载了MIFMAKER 2010软件,从而较为简单的产生了MIF文件。
EDA课程设计正弦信号发生器的设计
《EDA技术》设计报告设计题目正弦信号发生器的设计院系:信息工程学院专业:通信工程学姓号:名:RST7 根地址线CLK计 数器8 位R O M并转串输出TLV5620 D/A 转换一.设计任务及要求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、新建一个文件夹。
eda课程设计 信号发生器
目录1. 引言 (1)2. VHDL语言及Quartus II软件介绍 (2)2.1 VHDL语言 (2)2.2 Quartus II软件 (2)3.总体设计思想及流程 (3)4. 具体程序实现模块 (4)4.1倍频器模块 (4)4.2主程序模块 (4)4.3 波形显示模块 (5)4.4频率显示模块 (5)5. 软件仿真 (6)6. 硬件显示 (7)7. 总结与体会 (8)参考文献 (9)附录 (10)附录1. 整体系统原理图 (10)附录2. 主程序 (11)1. 引言信号发生器是一种能够产生多种波形,如三角波、方波、锯齿波、正弦波的仪器。
信号发生器在电路实验和设备检测以及通信、雷达、导航、宇航等领域有广泛的应用。
正因为其在生活中应用的重要性,人们它做了大量的研究,总结出了许多实现方式。
可以基于FPGA 、VHDL、单片机、DOS技能、数字电路等多种方法实现。
简易信号发生器是信号发生器的一种。
可以实现信号发生器的一些基本功能。
本次课程设计要求设计的是一种简易信号发生器。
在本设计中要求设计的简易信号发生器是采用VHDL来实现的简易多功能信号发生器。
它能产生正弦波,三角波和方波。
且对各种波形的要求如下:(1)设计任意信号发生器,使之能够生成正弦波、三角波和方波;(2)电路的外部频率为40MHz,要求信号发生器可产生0-1KHz、1KHz~10KHz、10KHz~1MHz三档频率的信号;(3)要求具有波形选择和频率选择的功能;(4)在同一频率档内,可实现频率的加减;(5)要求显示波形的同时能够进行频率的调节;(6)要求能够显示波形:A——正弦波;B——三角波;C——方波;(7)要求能够显示频率值;(8)可用示波器进行波形的观测。
2. VHDL语言及Quartus II软件介绍2.1 VHDL语言本次设计使用的是VHDL语言。
VHDL 的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982 年。
EDA课设报告--信号发生器的设计
《集成电路VHDL设计》课程设计报告设计题目专业班级:电信0901设计者:___03 庄威___________06 邓智超_______42 郭乐安______指导教师:蔡剑华设计时间: 2012-06-23目录摘要 (2)Abstract (3)绪论 (4)1.V H D L简介 (5)1.1 VHDL的特点 (5)1.2 VHDL发展史 (5)2.设计的方案确定 (6)2.1.AD558工作原理 (6)2.2设计方案 (7)3.设计流程 (8)4.结束语 (14)5.参考文献 (15)附录 (16)摘要本说明书首先介绍了VHDL语言的特点及发展史;接着简要说明了D/A接口(函数发生器)的工作原理及设计思想和设计方案的确定;然后着重解释了使用VHDL语言设计D/A接口(函数发生器)的具体操作步骤及主要流程。
为了更加详细的解释清楚主要流程在本课程设计说明书中还附加了相应的图片。
最后还附加了实现设计的VHDL源程序。
关键词:VHDL D/A接口设计AbstractThis manual introduces the VHDL language features and development history; followed by a brief description of the D/A interface and the working principle and design ideas and the way that the design program was confirmed; and then I explain the emphasis on the use of VHDL language to design D/A interface and the specific steps and the main process. In order to explain in more details of the main process I also attached the corresponding pictures. Finally I added the VHDL design source codes in the addendum.Keywords: VHDL D/A Interface Design绪论EDA是电子设计自动化(Electronic Design Automation)的缩写。
EDA课程设计-DDS
EDA课程设计-----正弦波信号发生器的设计正弦信号源在实验室和电子工程设计中有着十分重要的作用,而传统的正弦信号源根据实际需要一般价格昂贵,低频输出时性能不好且不便于自动调节,工程实用性较差。
本文的设计以较低的成本制作正弦信号发生器,可用作核磁共振中引发磁场测量仪的激励一般的正弦信号,也可作为调制用的教学演示信号源。
正弦波信号发生器采用直接数字频率合成DDS技术,在CPLD上实现正弦信号查找表和地址扫描,经D/A输出可得到正弦信号。
一.设计目的1、了解宏功能模块。
2、学习用fpga实现正弦波信号的发生。
二.正弦波信号发生器的设计思路2.1 dds技术原理DDS(direct digital synthesizer)是从相位概念出发直接合成所需的波形的一种频率合成技术。
一个dds 信号发生器是由:相位累加器、波形数ROM表、D/A 转换器以及模拟低通滤波器LPF 组成, 原理框图如图1 所示。
DDS 技术的核心是相位累加器, 相位累加器在稳定时钟信号的控制下产生读取数据的地址值,随后通过查表变换, 地址值被转化为信号波形的数字幅度序列, 再由数/模变换器(D/A)将代表波形幅度的数字序列转化为模拟电压, 最后经由低通滤波器将D/A 输出的阶梯状波形平滑为所需的连续波形。
其中F 为频率控制字、P 为相位控制字、W 为波形控制字、Fc 为参考时钟频率。
相位累加器在时钟Fc 的控制下以步长F作累加, 输出的值与相位控制字P 和波形控制字W相加后形成查表的地址值, 对波形ROM进行寻址。
波形ROM的输出值即是幅度值, 经过D/A 变换后形成阶梯状的波形, 最后通过低通滤波平滑成所需的波形。
合成信号的波形取决于ROM表中的幅度序列, 通过修改数据可以产生任意波形, 如果要产生多种波形, 只需把所需的多种波形数据存放到波形ROM表中。
本设计希望可以输出正弦波和锯齿波, 输出的波形由波形控制字W控制。
输出波形的频率为:Fout=(Fc*F)/2^N(其中的N 表示相位相位累加器的位数, 本设计采用256 点的相位, 有N=8)整体设计采用VHDL 语言实现, 使用Altera 公司的QuartusII进行设计, 顶层的原理图如图图1 dds的原理图图2 顶层文件的设计2.2 ROM 表的设计与实现ROM表中包含了产生波形需要的幅值序列, 是产生波形的核心模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《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的学习对数字电路有个很高的要求,通过这次编程学习,使我明白了专业基础知识的重要性和有用性。
同时,软件的使用技巧作为一行基本功需要熟练的掌握,只有既有专业知识,又会动手实践才能把知识学好用好。
第二在综合能力上:在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次设计也启发了我在以后的学习中一定要耐心、细心、认真,不可粗枝大叶。