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):反馈电阻端。
正弦信号发生器的设计

实验四正弦信号发生器的设计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技术-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节的方法相同。
简易正弦信号发生器设计

简易正弦信号发生器设计
一、实验目的
1.进一步熟悉QuartusII及LPM-RAM宏模块与FPGA硬件资源的使用方法。
二、实验设备
计算机、和软件QuartusII和EDA/SOPC试验箱
三、试验内容
简易正弦信号发生器设计,要求ROM是8位数据线,8位地址线。
四、试验原理
打开QuartusII软件,在连接试验电路之前调入LPM-RAM-DQ宏模块,PLM-COUNER模块和74244芯片,再连接电路图,试验原理设计图如下:
图1-1键入64个正弦信号数据
图1-2简易正弦信号发生器顶层电路设计
五、实验结果
试验结果如下图:
图1-3综合后的RLT图
图1-4仿真波形图3.引脚锁定方案图
图1-5引脚锁定方案图
图1-6编程下载模式图
六、试验小节
一学期匆匆而过,通过大半学期的学习,我们学到了很多处理问题的技巧。
不过我们还要熟记很多单词,大多数的单词我们还不认识,相信通过进一步的学习,我们一定能学好这个软件。
我们也将以浓厚的兴趣和积极的态度去学习。
相信我们一定会有更加长足的进步。
正弦函数信号发生器的设计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的在系统数据读写测试和仿真测试。
正弦信号发生器实验报告

正弦信号发生器实验报告引言本实验旨在设计并构建一个正弦信号发生器,用于产生具有特定频率和振幅的正弦波信号。
正弦信号在电子工程中具有广泛的应用,如通信系统、音频设备和信号处理等。
本实验将介绍设计思路、所需材料和步骤,以及实验结果和讨论。
设计思路为了设计一个正弦信号发生器,我们需要以下主要组件:1.振荡电路:产生正弦波信号的核心部分。
2.振幅调节电路:用于控制输出信号的振幅。
3.频率调节电路:用于控制输出信号的频率。
我们将使用基本的集成电路和电子元件来实现这些功能。
接下来,我们将逐步说明每个组件的设计和实现。
所需材料在开始实验之前,我们需要准备以下材料和工具:1.集成电路:例如操作放大器(Op-amp)。
2.电容器和电阻器:用于构建振荡电路和调节电路。
3.面包板:用于连接电子元件。
4.电源:为电路提供所需的电能。
5.示波器:用于测量信号的振幅和频率。
实验步骤1.第一步:振荡电路设计和构建–选择一个合适的振荡电路拓扑,如RC振荡电路。
–计算并选择所需的电容器和电阻器数值。
–使用面包板将电容器、电阻器和集成电路连接起来。
2.第二步:振幅调节电路设计和构建–选择一个合适的振幅调节电路拓扑,如非反相放大器。
–根据需要的振幅范围计算并选择所需的电阻器数值。
–使用面包板将电阻器和集成电路连接起来。
3.第三步:频率调节电路设计和构建–选择一个合适的频率调节电路拓扑,如电阻-电容调谐电路。
–根据需要的频率范围计算并选择所需的电容器和电阻器数值。
–使用面包板将电容器、电阻器和集成电路连接起来。
4.第四步:电源和示波器连接–将电源连接到电路以提供所需的电能。
–将示波器连接到电路以测量输出信号的振幅和频率。
5.第五步:实验验证和调试–打开电源,并使用示波器观察输出信号。
–调节振幅和频率调节电路,验证是否可以在所需范围内调节信号的振幅和频率。
实验结果和讨论经过实验验证和调试,我们成功设计和构建了一个正弦信号发生器。
该信号发生器能够在所需的频率范围内产生具有可调节振幅的正弦波信号。
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技术》设计报告设计题目正弦信号发生器的设计院系:信息工程学院专业:通信工程学姓号:名: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、新建一个文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
系别电子信息学院课程名称《EDA综合实验》
班级12通信实验名称正弦信号发生器的设计
姓名实验时间 2014年5 月日
学号2012 指导教师王红航
成绩批改时间2014年月日
报告内容
一、实验目的和任务
进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。
二、实验原理介绍
EDA是电子设计自动化,对象是数字电路设计,而证选择、新号发生器的设计却是一个模拟电路设计,因此需要用到D/A转换器。
根据正弦信号发生器的波形,得知该试验的输入为时间,而输出为振幅。
如果将正弦波的振幅放在存储单元为64的ROM中,根据ROM的功能得知,ROM中的数据与地址是一一对应的关系,因此设计由时间和振幅的对应关系转换为时间和地址的对应关系。
据此,要得到正弦信号,需要设计一个6位二进制计数器。
下图为总体设计框图:
在许多实用情况下,必须使用宏功能模块才能使用一些Altera特定期间的硬件功能,例如各类片上存储器、DSP模块等等。
这些可以以图形或硬件描述语言模块形式方便调用的宏功能块,使得基于EDA技术的电子设计的效率和可靠性有了很大的提
高。
LPM是参数可设置模块库(Library of Parameterized Modules)的英语缩写。
根据实际电路的设计需要,选择LPM库中的适当模块,并为其设定适当的参数,就能满足自己的设计需要,从而在自己的项目中十分方便的调用优秀的电子工程技术人员的硬件设计成果。
LPM功能模块内容丰富,每一模块的功能、参数含义、使用方法、硬件描述语言模块参数设置及调用方法都可以在QuartusII中的help中查阅到,方法是选择help→Megafunction/LPM命令。
定制LPM_ROM模块流程:
1、定制初始化数据文件,建立.hex格式文件
(1)打开QuartusII软件,选择“NEW”菜单,在“others”卡片下选择“Hexadecimail(Inter-Format)File”或者“Memory Initialization File”,
如下图所示。
(2)点击图中的OK后,弹出如图所示的图片,改写“Number of words”为64.
(3)点击图中OK后,弹出如图所示的图片,按照图的数据讲空白的表格填上
数字,这些数字即为ROM中存储的数字。
填完数字后,将该违建保存,
保存的名字遵循标识符的取名规律,在此取名字为rom.hex。
注意:该文件存储在工作库中。
2、定制LPM_ROM原件
(1)打开Tools菜单,选择“Mega WiZard Plug-In Manager”,如下图5所示。
(2)点击打开Mega WiZard Plug-In Manager初始对话框,选择创建新的宏功能模块,如图6所示
(3)点击“Next”,选择宏功能模块(Rom:1-PORT)、使用器件(ACEX1K)、输出文件信息(文件类型:VerilogHDL;文件地址:D:\\11student\syjy\;
文件名称:ROM1),如图7所示。
(4)点击“Next”,选择ROM模块存储数据位数和地址线宽(既存储容量),如图8所示。
(5)点击“Next”,选择地址锁存信号inclock,如图9所示。
(6)点击“Next”,导入定制的.hex文件
(7)默认仿真库,如图11所示,不做任何选择。
(8)选择产生文件类型,默认产生ROM1.v,可以自由选择让系统产生更多的文件。
3、对生成的文件建工程,编译,仿真,生成ROM1原件。
(1)首先在文件夹D:\\11student\syjy\中找到生成的文件ROM1.v;
(2)将ROM1.v设为当前工程,并对其编译;
(3)对ROM1.v进行仿真,仿真波形如图13所示。
(4)生成ROM1元件,如图14所示。
根据上面讲述的定制LPM_ROM模块流程,完成以下实验任务。
实验任务一:
根据上述QuartusII宏功能模块使用方法,设计6位计数器,对生成的counter6.v文件建工程、编译、仿真,并生成counter1元件。
注意:计数器宏功能模块选择:
实验任务二:
完成正弦信号发生器的完整设计,并给出其时序波形及其分析。
实验任务三:
硬件验证设计正弦信号发生器的功能。
1.可选实验电路5;
2.DAC0832的8位数据口D[7..0]分别和FPGA的PI031、30....24相连;时钟信号接系统的clock0。
四、实验结论与心得
更好的掌握了LPM_ROM与FPGA硬件资源的使用方法,了解了其用途。
将课堂所学到的知识在实验中实践,加深了同学们对知识的理解,让我们对它有了更加浓厚的兴趣。