EDA实验-正弦信号发生器的设计

合集下载

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正弦信号发生器

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课程设计报告

华东交通大学理工学院课程设计报告书所属课程: 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的正弦信号发生器设计(模版)第一篇: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技术》设计报告设计题目正弦信号发生器的设计院系:信息工程学院专业:通信工程学姓号:名: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课程报告_正弦波信号发生器的设计

EDA课程报告_正弦波信号发生器的设计

《EDA》课程设计报告——正弦波信号发生器的设计一、设计目的通过本次课程设计,进一步了解QUARTUS Ⅱ与LPM_ROM与FPGA硬件功能的使用方法。

培养自己查阅资料及解决问题的能力。

二、设计要求1、通过按键,可以控制输出的是正弦波或三角波。

2、通过ADC0832输出正弦波与三角波,电压V范围在0至-10V之间3、通过示波器观察波形。

三、设计内容:在QUARTUSII上完成信号发生器的设计。

最后在实验板上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。

信号输出的D/A使用实验板上的ADC0832。

四、设计原理:图1所示的波信号发生器的结构由五部分组成:1、计数器或地址发生器(这里选择8位)。

正弦信号数据ROM(8位地址线,8位数据线),含有256个8位数据(一个周期)。

2、VHDL顶层设计。

3、8位D/A图1所示的信号发生器结构图中,顶层文件adc.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由8位计数器担任;一个正弦数据ROM(或者一个三角波数据ROM),由LPM_ROM模块构成。

地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择256点),以及D/A输出的频率f的关系是:f=fo/256图1 正弦信号发生器结构框图图一 信号发生器结构图FPGA DAC08328clk 运放Vo按键图2 信号发生器的设计图五、 设计步骤:1、 建立.mif 格式文件 mif 文件可用C 语言程序生成, 产生正弦波数值的C 程序如下: #include<stdio.h> #include<math.h>VHDL 顶层 设计adc.vhd 8位计数器 (地址发正弦波数据存储ROM18位D/A三角波数据存储ROM2按键3 20分频main(){int i;float s;for(i=0;i<256;i++){s=sin(atan(1)*8*i/256);printf("%d :%d;\n",i,(int)((s+1)*255/2)) }}以zx.c保存。

实验十-正弦信号发生器实验

实验十-正弦信号发生器实验

实验10正弦信号发生器实验
1、实验目的:
1)学习分频器,计数器和LPM_ROM的使用方法
2)学习DDS的基本原理。

2、实验原理:
图1 正弦信号发生器的原理图
图2 DDS信号源的原理图
3、实验内容
选择模式NO.5,打开试验箱左上侧的+/-12V开关(D/A输出需要),将示波器探头接于主系统左下角的两个挂钩处,最右侧的时钟选择,用短路帽接插clock0为65536Hz 或750KHz处,这时可以从示波器上看到波形输出
1)用VHDL语言描述一个16进制计数器,然后再描述一个正弦表译码器,使用
元件例化语句描述图1所示原理图(FPGA内部),在QuartusⅡ上进行编译、综
合、适配。

引脚锁定以及硬件下载测试。

时钟输入锁clcok0(750KHZ),正弦
表输出锁DAC0832输入,复位和时钟使能锁按键,进行编译、下载和硬件测
试。

2)用VHDL语言描述一个1024进制计数器,然后使用lpm_ROM再描述一个10
位地址的正弦表译码器,使用元件例化语句描述图1所示原理图(FPGA内部),
在QuartusⅡ上进行编译、综合、适配。

引脚锁定以及硬件下载测试。

3)如图2所示,把上述计数器改为+M计数器,M为3位,采用按键输入。

记录
4、思考
怎样提高输出频率的范围
参考程序见文件。

EDA实训函数信号发生器

EDA实训函数信号发生器

《EDA技术与应用》实训报告学号姓名指导教师:实训题目:1.系统设计1.1 设计要求1.1.1 设计任务设计一个多功能信号发生器1.1.2 技术要求①能够产生两种或以上种输出波形(正弦波、三角波、锯齿波等)。

②输出的波形的频率允许有多种选择。

③输出波形的幅度在1V~5V范围内。

④输出的波形能够用示波器测量。

1.2 方案比较运用了我们所学的Vverilog VHDL 语言及Quartus II 7.0软件,来完成并实现这一次实训。

1.3 方案论证1.3.1 总体思路多功能信号发生器的原理框图如图所示。

其中,fpq是分频器,用于对EDA实训仪主板上提供的20MHz的主频率进行分频,以得到满足多功能信号发生器设计需要的时钟频率,clk 是20MHz的主频率输入端,step是步长控制端,当step为0或1时,分别控制分频器的分频比,并由clk_out端输出到Lpm_counter0中,Lpm_counter0是参数可设置的计数器,用于产生lpm_rom4 ,lpm_rom2和lpm_rom3的8位位置,并从q[7..0]端输出到数据选择器abcd 中,并通过s1和s2的组合进行选择。

lpm_rom4, lpm_rom2和lpm_rom3是参数可设置的只读存储器,用于存放多功能信号发生器的波形数据信号,其中lpm_rom3存放的是正弦波,lpm_rom2中存放的是锯齿波,lpm_rom4中存放的是方波。

而波形的产生还需要一份Mif文件。

Mif是将波形分成N个点并将各点输入只读存储器中,这样只读存储器就可以输出相应的波形数据。

只读存储器的位置输出端接于s数据选择器的输入端abcd,而数据选择器便可通过改变从存储器中接受的数据进行区分选择,逐步地取出波形数据,经D/A转换后产生模拟波形输出。

1.3.2 设计方案2.各个模块程序的设计1分频器:module fpq(clk, newclk,step);input clk,step;output newclk;reg newclk;reg[24:0] cnter,sc;reg[1:0] stepcnt;always @(posedge step)beginstepcnt=stepcnt+1;beginif (stepcnt == 0) sc = 2000;else if (stepcnt == 1) sc = 200;else if (stepcnt == 2) sc = 20;else if (stepcnt == 3) sc = 2;else sc = 2000;endendalways @(posedge clk)beginif (cnter < sc) cnter = cnter+1;else cnter = 0;if (cnter < sc/2) newclk = 'b1;else newclk = 'b0;endendmodule2 数据选择器:module jsq(q,a,b,c,d,k1,k2);input k1,k2;input [7:0]a,b,c,d;output reg [7:0]q;always @(k1 or k2)begincase ({k1,k2})'b00: q=a;'b01: q=b;'b10: q=c;'b11: q=d;endcaseendendmodule3.整理与调试过程将示波器的探头与试验箱上DAOUT及GND进行连接,将试验箱接通电源,此时便产生了20MHz的时钟信号,由拨码开关s14和s15分别控制正弦波,方波,锯齿波与三角波的输出,可以在示波器上看到波形成,但是还需要在示波器上调整波的幅度等参数使之形成清晰稳定的波形。

正弦信号发生器的设计

正弦信号发生器的设计

正弦信号发生器的设计正弦信号是电子工程中非常常见的一种波形信号。

在很多应用场合中,为了满足一些特殊的输出要求,设计一个合适的正弦信号发生器是非常必要的。

本文将介绍如何设计一个简单的正弦信号发生器。

一、介绍正弦信号正弦信号是一种基本的周期信号,在数学和工程领域都有广泛的应用。

正弦信号的数学表达式为:y(t) = A*sin(ωt+φ),其中A为振幅,ω为角频率,φ为相位差。

正弦信号具有周期性和连续性,可以描述很多物理和电子现象,如机械振动、电磁波等。

在电子工程领域中,正弦信号可以用于通讯系统、音频系统、数码系统等各个方面。

如果需要设计一个正弦波信号发生器,一些基本要素必须要考虑。

这些要素包括输出幅度、输出频率、工作电源和电路稳定性。

以下是正弦信号发生器的设计方案:1.输出幅度要设计一个正弦信号发生器,首先要确定所需要的输出幅度范围。

对于数字信号处理器(DSP)的输出,其输出幅度通常在±1.0之间。

如果需要更大的输出幅度,可以通过放大引脚信号或者使用外部放大器实现。

2.输出频率输出频率可以由外部时钟或者基准晶振决定。

如果想要实现可调节的输出频率,可以在电路中使用像50-100MHz这样的精准低噪声晶振。

可以根据应用需求选择不同的晶振和滤波器电路。

3.工作电源正弦波信号发生器的工作电源应该保证稳定性和可靠性。

在低频和中频应用中,标准稳压器可以提供足够的电源稳定性;在高频应用中,需要使用低噪声电源或者瞬态响应较好的电源来保证信号质量。

4.电路稳定性正弦波信号发生器的电路必须要保证稳定性。

这可以通过使用负反馈电路、保持简单电路结构和使用稳定的输出功率等方法来实现。

此外,振荡器的端部是一个有驱动能力的阻抗,因此需要使用与振荡器相匹配的驱动设计。

下面是一个简单的正弦波信号发生器电路图:在图中,U1是一个晶体管振荡器,C4和L2是功率扩大电路,R1和R2是反馈电路,C1和C2是用于稳定电路的滤波电容,C3则被用来过滤高频噪声。

EDA课程设计-简易信号发生器[23页].doc

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.熟悉利用QuartusII及其LPM_ROM与FPGA硬件资源的使用方法;2.掌握LPM模块的重要功能;3.熟悉MegaWizard Plug-In Manager的使用方法。

二、实验设备计算机,QuartusII 6.0 版软件,JTAG下载线,EDA实验挂箱(EP1C6Q240C8)。

三、实验原理设计一8位宽、1024点的正弦信号发生器。

正弦信号发生器的结构由四个部分组成:1.计数器或地址发生器(10位地址线);2.正弦信号数据ROM(存放正弦波的采样数据,采样频率20MHz:8位数据线、10位地址线);3.VHDL顶层设计;4.D/A转换器(8位)。

四、实验步骤和内容1.在QuartusII上利用MegaWizard Plug-In Manager功能,调用LPM_ROM函数定制8位宽、1024点ROM,并进行初始化。

然后对设计实体进行编辑、编译、综合、适配、仿真。

2. 利用QuartusII文本编辑器设计10位二进制计数器,做为地址发生器,对设计实体进行编辑、编译、综合、适配、仿真。

3. 利用层次化设计方法设计一8位宽、1024点的正弦信号发生器。

4. D/A转换器采用试验箱配备的DAC0832。

5. 引脚锁定和硬件下载测试。

引脚锁定后进行编译、下载和硬件测试实验。

将实验过程和实验结果写进实验报告。

6. 使用SignalTap II对设计的正弦信号发生器进行实测。

采样时钟使用系统时钟20MHz。

7. 使用在系统存储器数据读写编辑器对设计的正弦信号发生器进行实测,观测结果;8.实验报告。

将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。

五、思考题如何实现对输出正弦信号的频率和相位可调?。

EDA正弦波信号发生器实验报告

EDA正弦波信号发生器实验报告

湖北文理学院 EDA课程实验报告题目:正弦信号发生器的设计院部物理与电子信息工程学院专业名称电子信息科学与技术班级 1111姓名杨庆月学号 **********指导教师王培元2013年12月25日湖北文理学院一、设计目的1、掌握 LPM_ROM与FPGA资源的使用方法2、.进一步掌握用硬件描述语言的设计思想;5.了解有关数字系统的设计。

二、设计项目的指标和内容:设计一个可以产生正弦波信号系统。

信号频率可调,相位可调。

根据情况自己确定频率范围。

在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。

最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。

三、实验步骤:(全为本人整理,如有雷同,纯属抄袭)第一步,新建任务第二步,输入程序,完全照着书中输入,程序在书P200-201。

第三步,保存(Save As)并建立工程,注意芯片不要选错。

(输完了不要仿真,仿真也是错的)第四步,选择Tools里面的Mega...(见图)。

第五步,出现下图对话框,直接点Next。

第六步,这一步很重要,照着图片搞成一样就行了,画圈圈的地方一定要注意。

记得要一样。

搞好后点Next。

第七步,第六步完事儿后出现下图,看画圈圈的地方,bits 设置为8,words设置为128(也可以设置其他数字,只要与mif文件相符合就OK了)第八步,第七步完Next后出现下面的图片,画圈圈的地方是只沟中间那个。

第九步,选mif文件。

选完后后面的全部点Next。

Mif文件在shiyan8那个文件夹里面。

第十步,把能沟的全勾上。

然后Finish第十一步,编译,我做的有11个警告,不管它,没错误就行。

第十二步,看搞好的电路图。

(Tools-NetlistViewers-RTL Viewer)图是这样的,跟书P201那个一样。

第十三步,建立波形文件第十四步,添加波形第十五步,添加完后,记得把EN和RST挪到最上面并加高电平(高电平有效),然后CLK 添加时钟信号(尽量小点,我搞得是1.0)第十六步,别忘了这个过程,你懂得。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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硬件资源的使用方法,了解了其用途。

将课堂所学到的知识在实验中实践,加深了同学们对知识的理解,让我们对它有了更加浓厚的兴趣。

相关文档
最新文档