eda课程设计 信号发生器
EDA课程设计-正弦信号发生器的设计
《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.定制ROM计 数 器 7根地址线 8 位 R O M 并转串输出 CLKTLV5620D/A 转换RSTROM的数据位选择为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课设序列信号发生器设计
绪论本次课程设计通过利用quartusII软件实现序列发生器。
从而对EDA进一步的熟悉,了解,和掌握。
通过本课程的学习,可以了解硬件描述语言编程方法 ,掌握VHDL编程方法,掌握序列发生器的形成。
EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD 相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。
HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
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口的利用率。
EDA课程设计_多功能波形信号发生器
目录摘要 (1)一、设计要求 (3)三、系统设计思路 (4)3.1 波形函数发生装置的选择 (4)3.2 波形输入输出控制方式的选择 (5)四、各模块设计及仿真 (6)4.1函数发生模块 (6)4.1.1 正弦波模块 (6)4.1.2 方波模块 (7)4.1.3 递增锯齿波模块 (9)4.1.4 递减锯齿波模块 (10)4.1.5 阶梯波模块 (12)4.1.6 三角波模块 (13)4.2调控模块 (15)4.2.1波形输出控制单元 (15)4.2.2波形输入控制单元 (16)4.2.3频率控制单元 (18)4.2.4幅度控制单元 (20)4.3 D/A转换器 (21)4.4 总电路 (24)五、硬件测试 (25)5.1编译 (25)5.2 引脚的锁定 (26)5.3编程下载 (27)5.4 硬件验证 (28)六、课程设计心得体会 (31)参考文献 (32)附录 (33)摘要本次设计课题为应用VHDL语言及MAX+PLUSII软件提供的原理图输入设计功能,组合电子线路的设计加以完成一个任意波形信号发生器。
它具有结构紧凑,性能稳定,设计结构灵活,方便进行多功能组成的特点,经济实用,成本低廉的特点。
可产生正弦波、方波、三角波、递增锯齿波、递减锯齿波以及阶梯波,并可使用示波器观察波形。
实现了系统信号实时快速测量,也为其广泛应用于实际领域创造了条件。
在实现过程中,将整体功能模块化,分为函数发生模块和调控模块。
在调控模块中实现了调频调幅以及对于波形的输入输出控制。
对于D/A转化器,本实验选择的是TLC7528,利用简单的8进制计数控制CS和WR端口的同步输出,实现数模转换的同时,保持相应位的同步实现。
在课程设计中遇到了诸多困难,在用示波器显示波形时,却总是得不到稳定的波形,后来发现在输入控制中,仅需要3位二进制数即能完成简单的8进制计数,自己却习惯性的用了8位,这使得分频现象严重,更改后即得到了了稳定的输出波形,经过反复修改调试,最终试验成功。
eda课程信号发生器课程设计
eda课程信号发生器课程设计一、课程目标知识目标:1. 学生能理解EDA课程中信号发生器的原理与功能,掌握相关电子元件的工作特性。
2. 学生能够掌握信号发生器的分类、特点及应用场景,了解各类信号发生器的优缺点。
3. 学生能够运用所学知识,分析并设计简单的信号发生器电路。
技能目标:1. 学生能够熟练运用EDA软件进行信号发生器电路的设计、仿真与调试。
2. 学生能够独立完成信号发生器的硬件搭建,并进行基本的性能测试。
3. 学生能够通过实际操作,提高动手实践能力,培养解决实际问题的能力。
情感态度价值观目标:1. 学生能够培养对电子工程的兴趣,激发创新意识,形成主动学习的习惯。
2. 学生能够培养团队协作精神,学会与他人沟通交流,共同解决问题。
3. 学生能够认识到信号发生器在现代社会中的重要作用,增强社会责任感和使命感。
本课程针对高年级学生,在分析课程性质、学生特点和教学要求的基础上,明确以上课程目标。
通过分解目标为具体的学习成果,使学生在掌握专业知识的同时,提高实践操作能力和团队协作能力,培养良好的情感态度价值观。
为后续的教学设计和评估提供明确的方向。
二、教学内容本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。
主要内容包括:1. 信号发生器原理与分类:讲解信号发生器的基本原理、功能及分类,重点介绍函数发生器、脉冲发生器等常见类型的工作原理及应用。
2. 电子元件特性分析:分析常用电子元件(如运放、晶体管、二极管等)在信号发生器中的作用,掌握其工作特性。
3. 信号发生器电路设计:根据实际需求,设计不同类型的信号发生器电路,分析电路性能,优化设计方案。
4. EDA软件应用:教授学生如何使用EDA软件进行信号发生器电路的设计、仿真与调试,提高实际操作能力。
5. 硬件搭建与性能测试:指导学生搭建信号发生器硬件电路,进行基本性能测试,分析测试结果,找出问题并解决。
教学内容安排如下:1. 第1周:信号发生器原理与分类,电子元件特性分析。
EDA课程设计---函数信号发生器的设计
摘要本说明书首先介绍了VHDL语言的特点及发展史;接着简要说明了D/A接口(函数发生器)的工作原理及设计思想和设计方案的确定;然后着重解释了使用VHDL语言设计D/A接口(函数发生器)的具体操作步骤及主要流程。
为了更加详细的解释清楚主要流程在本课程设计说明书中还附加了相应的图片。
最后还附加了实现设计的VHDL源程序。
关键词:VHDL D/A接口设计绪论EDA是电子设计自动化(Electronic Design Automation)的缩写。
EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。
EDA技术使设计者的工作仅局限于利用软件的方式来完成对系统硬件功能的实现,可以说EDA技术的产生与发展是电子设计技术的一个巨大进步。
EDA技术融合了众多电子设计技术和计算机辅助技术,使得它在现代电子学方面的应用越来越广泛,也成为电子、电气类大学生必须熟练掌握的一种设计工具。
硬件描述性语言HDL是EDA技术的重要组成部分,常见HDL的有VHDL、HDL、ABEL、Verilog、AHDL、SystemC等。
其中VHDL、Verilog在现在的EDA 设计中使用的最多,也拥有了几乎所有主流EDA工具的支持,而相对于其他语言VHDL更加完善。
VHDL是英文全名是VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,是硬件描述语言的业界标准之一。
它作为一个规范语言和建模语言,具有与具体硬件电路无关及设计平台无关的特性,而且还有很强的电路行为描述和建模能力,能从多个层次的数字系统进行建模和描述,从而大大简化了硬件设计的任务,提高了设计效率和可靠性。
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课程设计——基于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课程设计任务书-基于DDS的数字移相信号发生器
基于DDS的数字移相信号发生器一、课程设计目的1、进一步熟悉QuartusⅡ的软件使用方法;2、熟悉利用VHDL设计数字系统并学习LPM ROM的使用方法;3、学习FPGA硬件资源的使用和控制方法;4、掌握DDS基本原理,学习利用此原理进行信号发生器的设计。
二、设计任务1、完成8位输出数据宽度的频率可调的移相正弦信号发生器。
2、完成8位输出数据宽度的频率可调的移相三角波、方波信号发生器。
3、以上三种波形使用一个按键依次切换。
4、波形发生器实现幅度可调。
5、信号发生器的原始数据存储在外部存储器里,由FPGA进行读取,经过D/A转换输出,由示波器观察最终结果。
6、完成两路相位相差90度的频率幅度可调的移相信号发生器。
结果通过嵌入式分析仪观察两路正交信号。
(包括正弦波、方波、三角波)注意:以上前5点为基本要求,第6点为提高要求。
三、基本原理直接数字频率合成器(DDS)是通信系统中常用到的部件,利用DDS可以制成很有用的信号源。
与模拟式的频率锁相环PLL相比,它有许多优点,突出为(1)频率的切换迅速;(2)频率稳定度高。
一个直接数字频率合成器由相位累加器、波形ROM、D/A转换器和低通滤波器构成。
DDS的原理框图如下所示:图1 直接数字频率合成器原理图其中K为频率控制字,f c为时钟频率,N为相位累加器的字长,D为ROM 数据位及D/A转换器的字长。
相位累加器在时钟f c的控制下以步长K作为累加,输出N位二进制码作为波形ROM的地址,对波形ROM进行寻址,波形ROM 输出的幅码S(n)经D/A转换器变成梯形波S(t),再经低通滤波器平滑后就可以得到合成的信号波形了。
合成的信号波形形状取决于波形ROM中存放的幅码,因此用DDS可以产生任意波形。
本设计中直接利用D/A转换器得到输出波形,省略了低通滤波器这一环节。
1、频率预置与调节电路不变量K被称为相位增量,也叫频率控制字。
DDS方程为:f0= f c K/2n,f0为输出频率,f c为时钟频率。
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(FPGA)DDS信号发生器课程设计实验报告
《电子系统实验报告》课程设计总结报告题目:DDS信号发生器设计人员:学号:同组人员:班级:指导老师:日期:2010.06.12DDS信号发生器一主要功能要求:本课程系统DDS信号发生器设计我们组利用FPGA生成DDS函数信号发生器内核和利用89S52单片机最小系统实现频率字输出和波形选择。
DDS模块与单片机的通信采用SPI串口协议。
系统的16位频率字输出采用单片机的SPI串口协议输出,在DDS模块内部采用16位移位寄存器和16位锁存器进行串行数据到并行数据的转换。
从而实现单片机到DDS模块的通信。
DDS模块由频率累加器、相位累加器、波形查找表、D/A模块组成。
且系统时钟频率工作于75MHZ。
频率和相位累加器采用32位累加器。
波形查找表由三个ROM表组成,分别存储正弦波、方波、三角波的量化数据。
再用一个三选一选择器作为波形输出的控制器件,控制信号由单片机输出。
二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。
正弦波信号由正弦波表输出。
二者再进过一个乘法器,再到D/A模块。
由此完成2ASK模块的设计。
二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。
进过二选一模块选择移位全零或者全一,查ROM表,选择移位180度或者0度,再到D/A。
由此完成2PSK模块设计。
(注:正弦波进行1024次量化采用公式512+511*sin(6.18/1024*k)------k值为1到1024对方波进行1024次量化采用前512位量化数值全为1023 后512位量化数值全为0三角波进行1024次量化采用1.3.5.7…..1023.1021.1019………7.5.3.1的方式进行量化)二整体设计框图及整机概述三系统实现的功能(1)可显示信号发生器输出波形与频率。
(2)正弦波、方波、三角波输出频率范围为35HZ ~ 1.17MHZ。
(3)具有频率设置功能。
(4)输出信号频率稳定度优于0.1。
EDA课程设计-信号发生器与数字钟设计
实用文档EDA综合设计报告题目:信号发生器与数字钟设计学院:电气信息学院专业:通信工程姓名:学号:指导老师:汪敏第一部分:信号发生器一、设计任务要求设计一个多功能信号发生器,根据输入信号的选择可以输出递增锯齿波,递减锯齿波,三角波,阶梯波,方波和正弦波六种信号,并能实现频率选择和幅度调节,信号发生器的控制模块可以用数据选择器实现,六种信号的选择可以用6选1数据选择器实现。
二、方案设计(一)设计思路1.利用VHDL语言,设计分频器,实现2分频,4分频,8分频及16分频,实现频率选择功能,生成模块。
与利用数据选择器原理设计的频率选择器模块相连,实现频率选择输出。
2.利用VHDL语言,分别实现六种信号(递增/递减锯齿波,三角波,阶梯波,方波和正弦波)的输出,生成模块。
3.将设计的各功能模块按要求连接,分配引脚接口,连接实验箱,进行硬件测试,验证实现功能。
(二)程序流程(三)设计软件Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性。
三、硬件设计(一)分频器分频器的功能是:利用对时钟上升沿计数,从而实现可以输出二分频,四分频,八分频及十六分频模块,分频器模块是为了实现信号发生器的频率选择功能。
EDA课程设计-多功能波形信号发生器
目录摘要 (1)一、设计要求 (2)三、系统设计思路 (3)3.1 波形函数发生装置的选择 (3)3.2 波形输入输出控制方式的选择 (3)四、各模块设计及仿真 (4)4.1函数发生模块 (4)4.1.1 正弦波模块 (4)4.1.2 方波模块 (5)4.1.3 递增锯齿波模块 (7)4.1.4 递减锯齿波模块 (8)4.1.5 阶梯波模块 (9)4.1.6 三角波模块 (10)4.2调控模块 (12)4.2.1波形输出控制单元 (12)4.2.2波形输入控制单元 (13)4.2.3频率控制单元 (15)4.2.4幅度控制单元 (16)4.3 D/A转换器 (17)4.4 总电路 (19)五、硬件测试 (20)5.1编译 (20)5.2 引脚的锁定 (21)5.3编程下载 (22)5.4 硬件验证 (22)六、课程设计心得体会 (25)参考文献 (26)附录 (27)摘要本次设计课题为应用VHDL语言及MAX+PLUSII软件提供的原理图输入设计功能,组合电子线路的设计加以完成一个任意波形信号发生器。
它具有结构紧凑,性能稳定,设计结构灵活,方便进行多功能组成的特点,经济实用,成本低廉的特点。
可产生正弦波、方波、三角波、递增锯齿波、递减锯齿波以及阶梯波,并可使用示波器观察波形。
实现了系统信号实时快速测量,也为其广泛应用于实际领域创造了条件。
在实现过程中,将整体功能模块化,分为函数发生模块和调控模块。
在调控模块中实现了调频调幅以及对于波形的输入输出控制。
对于D/A转化器,本实验选择的是TLC7528,利用简单的8进制计数控制CS和WR端口的同步输出,实现数模转换的同时,保持相应位的同步实现。
在课程设计中遇到了诸多困难,在用示波器显示波形时,却总是得不到稳定的波形,后来发现在输入控制中,仅需要3位二进制数即能完成简单的8进制计数,自己却习惯性的用了8位,这使得分频现象严重,更改后即得到了了稳定的输出波形,经过反复修改调试,最终试验成功。
EDA课程设计_DDS信号发生器
电子课程设计------DDS信号发生器合成器学院:专业班级::学号:指导老师:2012年12月直接数字频率合成器(DDS)一、设计任务与要求直接数字频率综合技术,即DDS技术,是一种新型的频率合成技术和信号产生方法。
利用EDA技术和FPGA实现直接数字频率合成器DDS的设计。
设计要求:1、利用QuartusII软件实验箱实现DDS的设计;2、通过实验箱上的开关输入DDS的频率和相位控制字,并能用示波器观察加以验证;3、系统具有清零和使能的功能;4、DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA芯片中的ROM实现。
二、总体框图图1 DDS总体框图1、模块的功能(1)频率预置和调节电路不变量K称作相位增量,也叫频率控制字。
此模块实现频率控制量的输入。
(2)相位累加器相位累加器是一个带有累加功能的N位加法器,它以设定的N位频率控制字K作为步长进行线性累加,当其和满时,计数器清零,并进行重新运算,它使输出频率正比于时钟频率和相位增量之积。
(3)相位寄存器相位寄存器是一个N位的寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。
图2 相位累加器相位累加器的组成=N位加法器+N位寄存器相位累加器的作用:在时钟的作用下,进行相位累加注意:当相位累加器累加满量时就会产生一次溢出,完成一个周期的动作。
(4)正弦查找表正弦查找表ROM是DDS最关键的部分,也是最复杂的部分,设计时首先需对正弦函数进行离散采样,接着将采样的结果放到ROM模块的对应存储单元中,每一位地址对应一个数值,输出为8位。
ROM中必须包含完整的正弦采样值,此设计采样256点,而且还要注意避免在按地址读取ROM容时可能引起的不连续点,避免量化噪音集中于基频的谐波上。
作用:进行波形的相位----幅值转换原理:ROM的N位地址把0° 360°的正弦角度离散成具有2N个样值的序列ROM的D位数据位则2N个样值的幅值量化为D位二进制数据(5) D/A转换器D/A转换器的作用:把已经合成的正弦波的数字量转换成模拟量。
EDA课程设计-简易信号发生器[23页].doc
EDA课程设计简易信号发生器简易信号发生器1.课程设计要求1. 完成实验板上DAC的匹配电阻选择、焊接与调试,确保其可以正常工作。
2. 根据直接数字频率合成(DDFS)原理设计正弦信号发生器,频率步进1Hz,最高输出频率不限,在波形不产生失真(从输出1KHz正弦转换为输出最高频率正弦时,幅度衰减不得大于10%)的情况下越高越好。
频率字可以由串口设定,也可以由按键控制,数码管上显示频率值。
3. 可以控制改变输出波形类型,在正弦、三角波、锯齿波、方波之间切换。
4. 输出波形幅度可调,最小幅度步进100mV。
2.直接数字频率合成(DDS)原理直接数字频率合成技术是根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表。
频率合成时,相位累加器在参考时钟的作用下对时钟脉冲进行计数,同时将累加器输出的累加相位与频率控制字K 预置的相位增量相加,以相加后的吉果形成正弦查询表的地址;取出表中与该相位对应的单元中的幅度量化正弦函数值,经D/A转换器输出模拟信号,再经低通滤波器平滑得到符合要求的模拟信号。
相位累加器的最大计数长度与正弦查询表中所存储的相位分隔点数相同,由于相位累加器的相位增量不同,将导致一周期内的取样点数不同,在取样频率(由参考时钟频率决定)不变的情况下,输出信号的频率也相应变化。
fin=M(fclk/2^n)3. 系统设计 3.1 总体设计方案信号发生器从总体上可以分为系统控制模块,波形产生模块和D/A 转换模块。
系统控制模块负责处理按键的读入,按键处理,将频率和幅度在数码管上显示,调节频率和幅度以及波形的选择。
波形发生模块负责按照控制模块输入的信号,输出相应的波形(正弦波,方波锯,齿波,三角波),以及输出相应幅度和频率的信号。
D/A 转换模块负责将输入的数字信号转换为模拟信号。
系统控制模块数码管显示(幅度频率)按键读入LED 指示灯频率调节 波形选择幅度调节波形产生模块D/A 转换显示输出3.2 系统控制模块1、按键控制模块和数码显示模块键值读取和按键消抖模块when 1 => if counter>="1111111111111110" thenstate:=2;counter:="00000";else counter:=counter+1;state:=1;end if;when 2 => if abcd(0)='0' or abcd(1)='0' or abcd(2)='0'or abcd(3)='0' thencase abcd iswhen "0111"=>key_value_1<="00";state:=3;when "1011"=>key_value_1<="01";state:=3;when "1101"=>key_value_1<="10";state:=3;when "1110"=>key_value_1<="11";state:=3;when others=>state:=0;end case;else state:=0;end if;when 3 => if (abcd(0)='0' or abcd(1)='0' or abcd(2)='0'or abcd(3)='0')thenif counter>="00011"thencounter:="00000";out_clk<='1';else counter:=counter+1;end if;state:=3;elsestate:=4;out_clk<='1';end if;when 4 => if counter>="00111" thenstate:=0;c ounter:="00000";out_clk<='0';else counter:=counter+1;state:=4;end if;end case;end if;e nd process;2)、按键处理和显示模块设计思路外接的四个按键的分配:A:数码管频率显示和幅度显示切换;B:波形之间的切换(用四个LED对应显示);C:选择要调节的数码管(用四个LED对应显示);D:对选择的数码管进行调节(0~9循环显示);数码管显示:从左往右依次是频率(单位Hz)或幅度(mV)值的千、百、十、个位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录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 年。
1987 年底,VHDL被IEEE 和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言的特点是:VHDL 语言功能强大,设计方式多样;VHDL 语言具有强大的硬件描述能力;VHDL 语言具有很强的移植能力;VHDL 语言的设计描述与器件无关;VHDL 语言程序易于共享和复用。
2.2 Quartus II软件本设计中需要用到Quartus II 9.0软件。
Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
3.总体设计思想及流程本次课程设计按模块式实现,据任务书要求,设计总共分三大步骤完成:(1)产生波形(三种波形:方波、三角波、正弦波)信号;(2)频率控制;(3)显示频率值。
利用VHDL编程,依据基本数字电路模块原理进行整合。
系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。
频率控制模块可以实现频率的连续可调,最终送至脉冲发生模块输出脉冲信号,同时将信号的频率输出至数码管显示当前信号的频率值,达到设计课题所要求的输出波形频率可调功能。
如图2.1所示:图3.1总体程序流程图4. 具体程序实现模块4.1倍频器模块由于要求简易信号发生器输出频率达到1MHZ,所以实验箱上的20MHZ的输出过低,无法达到要求。
此时可以采用一个倍频器将20MHZ的频率输出加倍成为128MHZ的频率输出。
具体可以通过Quartus II 9.0软件的ALTPLL模块实现。
原理图如图4.1所示:图 4.1倍频器模块原理图4.2主程序模块主程序用来实现系统的主要功能,包括波形定义分频、频段选择、频率调节以及频率输出等。
主程序见附录1。
主程序原理图如图4.2所示:图 4.2主程序模块原理图其中clk信号为20MHZ的信号经过加倍后的128MHZ的频率。
Key1、key2为频率调节按钮,key1接按钮,当按动key1频率值加1或者减1;key2接拨码开关,用来加减选择,当key2=1时为加,当key2=0时为减。
sel_p[1..0]为频段选择信号,当sel_p[1..0]=00、01、10时,其频段分别为0HZ-1KHZ、1KHZ-10KHZ、10KHZ-1MHZ。
sel_b[1..0]为波形选择信号,当sel_b[1..0]=00、01、10时,波形分别为正弦波、三角波、方波。
4.3 波形显示模块波形显示部分使用的是D/A转换器,将主程序模块的dout[7..0]八位二进制输出转化为模拟信号,通过示波器显示。
4.4频率显示模块频率显示部分使用了一个二进制——十六进制转化显示译码器,将主程序中输出的xianshi[19..0]这20位二进制段码输出转化为十六进制数显示在数码管上。
5. 软件仿真由于程序中计数值test比较大,无法在Quartus II 9.0软件中显示完整,所以我们将程序中的test值改为1,这样可以得到完整的仿真图,而且不改变程序原理。
其中第一频段的初值设置为300HZ,第二频段的初值设置为3000HZ,第三频段的初值设置为30000HZ。
图 5.1第一频段下的正弦波仿真图图5.2 第二频段下的三角波仿真图图5.3第三频段下的方波仿真图6. 硬件显示本课程设计输出由DA0832将数字信号转化为模拟信号,再由示波器显示波形输出。
当引脚锁定完毕后,将程序下载到试验箱中,连好示波器,在输入端输入相应的值即可得到相应的输出波形。
具体的硬件仿真波形如下:正弦波: 频段sel_p[1,0] 频率为6KHZ三角波: 频段sel_p[0,1] 频率为5KHZ 方波: 频段sel_p[0,0] 频率为800HZ本次仿真采64个点所以有的波形不是很光滑,若需要更平滑的波形,可以增加采样点数;而且当频率较高时各种波形会出现失真,示波器上不显示稳定的波形;在硬件运行时产生的干扰,也会导致波形的混乱。
图6.1正弦波硬件仿真结果图6.2三角波硬件仿真结果图6.3方波硬件仿真结果7. 总结与体会近一周的EDA技术课程设计就要结束了,通过这次课程设计,我学到的最重要的东西就是对于这种任务量比较大的程序,一定要认真理解题目的要求。
开始的时候有的要求理解不够透彻,结果导致不能达到老师的要求。
想要修改程序却又根本无从下手,最后还是重新写。
另外还要学会对系统进行分块化处理。
分块思想应在以后其它类似的设计中着重注意应用。
这次EDA技术的课程设计,运用了许多EDA技术的知识,通过这次设计,不仅对以前学过的许多理论知识进行了很全面的检验,明白了许多知识的具体应用,而且还学会了许多新知识。
对EDA技术理解又有了一次提升。
从本次课设中我还学到了工作中要大胆尝试,小心求证。
一旦自己有了一种新的想法一定要非常小心的去检验,发现错误,改正错误,最终达到自己想要的结果。
还有就是在课设中我再一次体会到了团队合作的重要性,因为很多东西的工程量都是很大的,运用到知识很多,单靠个人力量要实现是很困难的,而且时间有限,这就要求我们必须学会具有团队精神,相互学习,因为很多困扰你的问题在讨论中便会迎刃而解。
总之,通过这次EDA技术的课程设计,我自己学会了很多东西,真的是受益匪浅。
我相信通过这次课程设计,我学到的东西绝对不是只在课本上能学到的,有很多东西,尤其是实践性质的,不能仅靠理论,实践是非常必要的,理论与实践相结合,才能得到真正的提高。
这次中遇到了前所未有的问题,但总是会“山重水复疑无路,柳暗花明又一村”。
在就要完成这次设计并通过设计答辩之后,心情万分激动,我深深体会到付出总会有回报。
参考文献[1] 潘松,黄继业.《EDA技术实用教程》.北京:科学出版社,2010.6[2] 刘江海.《EDA技术课程设计》.武汉:华中科技大学出版社,2009.5[3] 姜雪松.《VHDL设计实例与仿真》.北京:机械工业出版社,2007.1[4] 陈耀和.《VHDL语言设计技术》.北京:电子工业出版社,2004.3[5] 谭会生, 张昌凡.《EDA技术及应用》.西安:西安电子科技大学出版社2004.4[6] V olnei A. pedroni 著, 乔庐峰,王志功等译.《VHDL数字电路设计教程》.北京:电子工业出版社2005.9附录附录1. 整体系统原理图附录2. 主程序library ieee;use ieee.std_logic_1164.all;entity generator isport(clk:in std_logic;key1:in std_logic;key2:in std_logic;sel_p:in std_logic_vector(1 downto 0);--频段选择sel_b:in std_logic_vector(1 downto 0); --波形选择dout:out integer range 0 to 255; --波形数字量接dac0832示波器显示xianshi:out integer range 0 to 1000000);--频率值end;architecture bhv of generator issignal num: integer range 0 to 1000000 := 3000;signal test:integer range 0 to 1000000;signal b:std_logic;signal addr:integer range 0 to 63;--采样点选择type hui is array(0 to 63)of integer range 0 to 255;constant sina:hui:=( 255,254,252,249,245,239,233,225,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);constant sanjiao:hui:=(0,8,16,24,32,40,48,56, 64,72,80,88,96,104,112,120, 128,136,144,152,160,168,176,184, 192,200,208,216,224,232,240,248, 255,248,240,232,224,216,208,200, 192,184,176,168,160,152,144,136, 128,120,112,104,96,88,80,72, 64,56,48,40,32,24,16,8);constant fangbo:hui:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); beginprocess(clk)variable count:integer range 0 to 1000000;beginif (clk'event and clk='1') then count:=count + 1;if (count=test) then count:=0;b<= not b;end if;end if;--频率加减控制键--end process;process(key1,key2)beginif (key1'event and key1='1') thenif(key2='1')thennum <= num +1;elsif(key2='0') thennum <= num - 1;end if;end if;end process;--频段选择—process(num,sel_p)variable temp:integer range 0 to 1000000;begintemp:=num;case sel_p iswhen "00" =>if(temp>1000 and temp <=10000)thentemp := temp/10;elsif(temp>100000 and temp <= 1000000)then temp:= temp/1000;end if;if(temp>1000)then temp:=1000;elsif(temp<1)then temp := 1;end if;xianshi <= temp;test <= 128000000/64/2/temp;when "01"=>if(temp>0 and temp <99)thentemp := temp*1000;elsif(temp>=100 and temp<999)thentemp := temp*10;elsif(temp>10000 and temp <=99999)then temp := temp/10;elsif(temp=1000000)thentemp := temp/100;end if;if(temp>10000)then temp:=10000;elsif(temp<1000)then temp := 1000;end if;xianshi <= temp;test <= 128000000/64/2/temp;when "10" => --10000 1000000--if(temp>0 and temp<=99)thentemp := temp*10000;elsif(temp>=100 and temp<=10000)then temp := temp*100;end if;if(temp>1000000)then temp := 1000000;elsif(temp<10000)then temp := 10000;end if;xianshi <= temp;test <= 128000000/64/2/temp;when others=>null;end case;end process;process(b)variable count:integer range 0 to 63;beginif(b'event and b='1')thencount:=count+1;if count=64 thencount:=0;end if;end if;addr<=count;end process;--波形选择—process (b,sel_b,addr)begincase sel_b iswhen "00" =>dout<=sina(addr); when "01" =>dout<=sanjiao(addr); when "10" =>dout<=fangbo(addr); when others =>null;end case;end process;end bhv;。