正弦函数EDA设计报告

合集下载

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实验-正弦波信号发生器设计

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正弦波信号发生器实验报告

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)第十六步,别忘了这个过程,你懂得。

基于VHDL语言正弦波信号发生器--EDA实训报告-

基于VHDL语言正弦波信号发生器--EDA实训报告-

EDA实训报告学生姓名: XXX 学号: XXXXXXXXXXXX学院:理工学院专业:电子科学与技术题目:基于FPGA的正弦波发生器指导教师:安国臣2013年1月课程设计成绩评定表基于FPGA的正弦波发生器摘要:本设计结合了EDA技术和直接数字频率合成(DDS)技术。

EDA技术是现代电子设计技术的核心,是以电子系统设计为应用方向的电子产品自动化的设计技术。

DDS技术则是最为先进的频率合成技术,具有频率分辨率高、频率切换速度快、相位连续、输出相位噪声低等诸多优点。

本文在对现有DDS技术的大量文献调研的基础上,提出了符合FPGA结构的正弦信号发生器设计方案并利用MAXPLUSⅡ软件进行了设计实现。

文中介绍了EDA技术相关知识,同时阐述了DDS技术的工作原理、电路结构,及设计的思路和实现方法。

经过仿真测试,设计达到了技术要求。

关键词:现场可编程门阵列(FPGA);直接数字频率合成(DDS);正弦波信号发生器一、DDS的基本原理正弦波信号发生器是由地址发生器和正弦波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。

1.地址发生器的原理地址发生器实质上就是计数器,ROM的地址是6位数据,相当于64位循环计数器。

2.只读存储器ROM的设计(1)、VHDL编程的实现①基本原理:为每一个存储单元编写一个地址,只有地址指定的存储单元才能与公共的I/O相连,然后进行存储数据的读写操作。

②逻辑功能:地址信号的选择下,从指定存储单元中读取相应数据。

直接数字频率合成器(DDFS)的基本原理:DDS是利用采样定理,根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表,通过查表法产生波形。

它是由参考时钟、相位累加器、正弦查询表和D/A转换器组成,如图1所示。

图1 直接数字频率合成器原理框图相位累加器由N位加法器与N位累加寄存器级联构成,其原理框图如图2所示。

每来一个时钟脉冲Fc,N位加法器将频率控制数据K与累加寄存器输出的累加相位数据相加,把相加后的结果Y送至累加寄存器的输入端。

基于EDA技术的正弦信号发生器设计

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

EDA课程设计报告•相关推荐EDA课程设计报告在我们平凡的日常里,报告的使用成为日常生活的常态,报告中涉及到专业性术语要解释清楚。

那么报告应该怎么写才合适呢?以下是小编为大家整理的EDA课程设计报告,希望对大家有所帮助。

EDA课程设计报告1实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台的使用。

(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。

(4)了解掌握单片机芯片的烧写方法与步骤。

(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。

(6)掌握利用protel 99 se绘制电路原理图及pcb图。

(7)了解pcb板的制作腐蚀过程。

二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。

(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。

(6)制板。

首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净。

(7)焊接。

将所给元器件根据原理图一一焊至pcb板相应位置。

(8)调试。

先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。

正弦函数信号发生器的设计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的在系统数据读写测试和仿真测试。

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课程设计报告正文一、设计思路1.基于QUASTUS II平台,利用DDS(直接数字信号合成)技术,采用VHDL语言,设计一波形信号发生器。

首先根据对各波形的幅度进行采样,获得各波形的波形数据表,然后FPGA根据输入的时钟(频率可根据要求可变)作为地址信号,从FPGA数据线上输出相应的波形数据,再送入实验板上的D/A转换芯片进行转换为模拟信号,最后送入滤波电路滤波后输出。

2.实验整体框图如下:由斜降锯齿波模块(dj)、斜升锯齿波模块(dz)、方波模块(fb)、三角波模块(jcb)、阶梯波模块(jtb)、6选1选择器(xz)正弦波模块(zx)以及、译码显示模块(ym)组成。

二、设计输入文件与调试1.分频器用4个100分频器串接实现。

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity fenpin isport (clk: in std_logic;clkfen: out std_logic);end fenpin;architecture fenpin of fenpin is signal clk_mid: std_logic;beginprocess(clk)variable data:integer range 0 to 99; beginif clk'event and clk='1' thenif data=99 thendata:=0; clk_mid<=not clk_mid; elsedata:=data+1;end if;nd if;clkfen<=clk_mid;end process;end fenpin;2.递减(锯齿波)波形数据产生模块设计采用255~0循环加法计数器实现。

设计思路是: reset 是复位信号, 要首先考虑。

EDA课设报告

EDA课设报告

1.1试用频率分别为f1= 200 Hz、f2= 2000 Hz的两个正弦信号源,合成一调制信号y(t)=5sin(2πf1t)*cos(2πf2t),观察其频谱与输出信号波形。

注意根据信号的频率选择适当的系统采样速率。

仿真电路图结果分析:(上图为时域图,下图为频谱图)。

可以在频谱图上很容易就看出此电路的电路图经由乘法器变换后出现了两个频率,经过计算可以肯定是f0与f1的和频与差频分别为2200HZ与1800HZ。

1.2将一正弦信号与高斯噪声相加后观察输出波形及其频谱。

从小到大改变高斯噪声的功率,重新观察输出波形及其频谱。

仿真电路图0:振幅1V ,频率10Hz ,相位为0°的正弦波 1:高斯噪声,标准方差设为0.1,均值为02:加法器,将图符0和图符1的信号进行相加得到所要的调制信号,加法器相当于传输信道,信号在信道中传输,加入的高斯噪声相当于噪声源采样频率为50000HZ 高斯方差0.1高斯方差1第一张图是输出信号的波形,可看出输出信号是周期为0.1s,振幅为1V的正弦波,但由于加入了噪声源,所以输出的信号不再平滑,出现了波折,并随着高斯噪声功率的增加输出信号曲线出现的波折越大,如第三张图中信号已经很难分辨。

1.3已知DTMF双音频编码器的低组频率为697 Hz,,770 Hz,852 Hz,941Hz,高组频率为1209 Hz,1336 Hz,1477 Hz,1633 Hz,试合成0~9、*、#的双音频,并使用接收器图符中的单声道音频文件(8bit wav)输出,通过计算机的声卡输出声音,与实际电话输出的声音比较。

注意,在输出端应加入一定的增益来放大波形。

仿真电路图1~7全部都是题目中出现的高低频率的组合,每两个为一组通过加法器连接,而后早通过增益将这些加和平率放大,然后通过单声道的输出,为了方便的观察每组的频谱变化故在每个音频输出的后面加上了波形输出,其时域和频域图谱如图所示,虽然选择了其中的一组但还是可以反映出其他组的情况,从频谱上虽然有很多频率分量但还是可以清楚的看出有几个主要的频率,他们就是这段音频的主要组成部分。

EDA课程设计实验报告

EDA课程设计实验报告

《EDA课程设计》报告学号:姓名:班级:指导教师:2013年6 月24日- 2013年7 月5日目录1.引言 ............................................................................................................... 错误!未定义书签。

2.原理图的设计................................................................................................ 错误!未定义书签。

文件的新建............................................................................................... 错误!未定义书签。

原理图文件XX .Sch的建立 ..................................................................... 错误!未定义书签。

元件库的导入........................................................................................... 错误!未定义书签。

原理图中各元件的布局和连线 (3)3.原理图新元件的设计 (4)元件库XX .Lib文件的建立 (4)原理图元件的画法................................................................................... 错误!未定义书签。

注意事项................................................................................................... 错误!未定义书签。

eda实验报告

eda实验报告

重庆三峡学院实验报告课程名称实验名称简易的正弦波发生器实验类型验证(验证、综合、设计、创新)学院名称电子与信息工程学院专业电子信息工程年级班级开出学期2012--2013上期学生姓名学号实验教师成绩2012年11月16日实验题目: 简易的正弦波发生器实验目的在Quartus II 上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解。

最后在实验系统上实测,包括ROM 的在系统数据读写测试和仿真测试。

信号输出的D/A 转换器波形测试。

实验原理正弦波信号发生器的结构由四部分组成:1、计数器或地址发生器(这里选择7位)。

2、正弦信号数据ROM (7位地址线,8位数据线),含有128个8位数据。

3、VHDL 顶层设计。

4、8位D/A 。

图所示的信号发生器结构框图中,顶层文件SIN_GNT 在FPGA 中实现,包含两个部分:ROM 的地址信号发生器,由7位计数器担任;一个正弦数据ROM ,由ROM78模块构成。

地址发生器的时钟CLK 的输入频率与每周期的波形数据点数(在此选择128点),以及D/A 输出的频率f 的关系是:f=fo/128首先确定如图中所示的波形数据文件。

.mif 文件。

1建立.mif 格式文件首先在Quartus II 中选择ROM 数据文件编辑窗口,即在File 菜单中选择New 并在New 窗口选择Other file 页,再选择Memory Initialization File 项,单击OK 按钮后产生ROM 数据文件大小选择窗口。

根据128点8位正弦数据的情况,可选ROM 的数据数Number 为128位,数据宽Word size 取8位。

单击OK 按钮,将出现的空的mif 数据表格,表格中的数据格式可通过鼠标右键单击窗口边缘的地址数据弹出窗口选择。

然后将波形数据填入此表中。

最后在File 菜单单击Save as 按钮,保存此数据文件,取名DATA7X8.mif 。

2.定制LPM_ROM正弦波数据 存储ROM 7位计数器 (地址发生器) 8位D/A 波形数据输出在设计正弦波信号发生器前,必须首先完成存放波形数据ROM的设计。

eda课程设计实验报告

eda课程设计实验报告

eda课程设计实验报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。

2. 学生能运用所学知识,设计并实现基本的数字电路。

3. 学生了解数字电路的设计流程,掌握设计规范,具备初步的电路分析能力。

技能目标:1. 学生能独立操作EDA软件,完成电路的原理图绘制、仿真和布局布线。

2. 学生通过实验报告的撰写,提高实验数据分析、总结归纳的能力。

3. 学生在小组合作中,提高沟通协调能力和团队协作能力。

情感态度价值观目标:1. 学生培养对电子科学的兴趣,激发创新意识,增强实践能力。

2. 学生在实验过程中,形成严谨的科学态度,提高问题解决能力。

3. 学生通过课程学习,认识到科技发展对国家和社会的重要性,增强社会责任感。

课程性质:本课程为实践性较强的电子设计课程,旨在培养学生的实际操作能力、创新意识和团队合作精神。

学生特点:六年级学生具有一定的电子知识基础,好奇心强,喜欢动手实践,但需加强对理论知识的理解和应用。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的积极性,提高学生的实践能力和创新能力。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. EDA基本概念与工具介绍- 电子设计自动化原理简介- 常用EDA软件功能与操作方法2. 数字电路设计基础- 数字电路基本元件及功能- 原理图绘制与仿真分析3. 布局布线与PCB设计- PCB设计流程与方法- 布局布线技巧与规范4. 实验报告撰写- 实验数据整理与分析- 实验总结与反思教学大纲安排如下:第一周:- EDA基本概念与工具介绍- 数字电路基本元件及功能第二周:- 原理图绘制与仿真分析第三周:- 布局布线与PCB设计第四周:- 实验报告撰写教学内容与教材关联性:本教学内容与教材《电子技术基础与实践》第六章“电子设计自动化”相关章节紧密相连,确保了教学内容的科学性和系统性。

实验2简单正弦电路研究报告EDA-

实验2简单正弦电路研究报告EDA-

实验二 简单正弦电路研究一、实验目的1. 研究单一元件的阻抗频率特性;2. 研究RC 、RL 串联电路中电压、电流的基本关系;3. 熟悉Multisim 仿真软件的使用方法。

二、预习要求1. 阅读附录中有关Multisim 仿真软件的使用说明;2. 阅读各项实验容,理解有关原理,明确实验目的;3. 设图2-1所示电路中,1,20,100,3,5,R k C nF L mH f kHz U V =Ω====试计算,,C R U U I 及电路的阻抗角ϕ的数值,并画出相量图。

三、原理与说明元件的阻抗频率特性是指元件阻抗随频率变化的规律。

在正弦电路中,感抗与频率成正比,容抗与频率成反比。

为了减少接线和调节次数,本实验依次将L 、C 、R 3个元件串联起来,保持电阻R 两端的电压不变,调节函数发生器输出正弦信号频率,同时完成电感电压、电容电压的测量及感抗、容抗的计算。

ucR 频频频频频图2-1实验测量电路四、实验仪器设备1.计算机;1台2.仿真软件;1套五、实验任务1.测定X L、Xc~f关系曲线测量电路如图2-1所示,其中R=1kΩ,L=100mH,C= 20nF。

按表2.1要求调节信号源的频率,始终保持U R=1V(改变频率时应保持U R不变,即I不变),测出相应的U L、Uc,计算得出X L、Xc值。

注意:每改变1次频率,首先测出U R=1V后,再分别测U L和U C的值。

表2-1 X L、Xc~f关系曲线测定2.RC串联电路研究(1)按图2-2接线,其中R=1kΩ,C=0.5 F,示波器Y1显示u的波形,Y2显示u R的波形。

示波器图2-2RC串联电路(2)调节函数发生器输出的正弦信号频率和幅度,使f=600Hz,U=2V,分别测量和记录U U (用示波器测量),并与预习容比较。

,,R ui改变函数发生器输出频率,定性观察的相位差及波形幅度的变化情况。

3.RL串联电路研究将图2-2中的电容C换成100mH的电感,调节函数发生器,使f=10KHz,U=2V,重复实验2的过程。

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

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文件的头部说明即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计目的1. 掌握QuartusII等EDA工具软件的基本使用;2. 熟悉Verilog硬件描述语言编程及其调试方法;3. 学习“自顶向下”的设计思路;4.提高FPGA开发能力,进而工程设计能力。

二、设计任务及要求用Verilog HDL设计如下系统:1、系统可以根据输入的角度(或弧度)x,显示相应的sin(x)数值,保证角度精度≤0.1度。

2、编辑测试激励文件,进行相关测试,注意测试的完备性。

3、根据DE2板资源,设计下载测试方案,并且完成硬件下载测试。

三、设计步骤1.顶层模块顶层模块包括ROM表查找模块、led显示模块的调用以及其他的一些简单处理。

ROM查找表中只有第一象限角度的正弦值,而其他三个象限的函数值还要通过一些简单的转化和计算。

根据自变量的值,进行rom表的查找,取出函数值之后,通过简单处理后调用led显示模块,把函数值显示在DE2板的数码管上。

2.Rom查找表模块Rom表是先使用matlab工具生成关于正弦函数的mif文件,然后在quartus 中调用mif文件生成一个rom查找表,用于函数调用。

3.Led显示模块Led显示模块使用了DE2板上的HEX0~HEX5这6个数码管,HEX5用于显示函数值的正负号,负值有“-”显示,正值直接不显示。

HEX4显示一个整数位,HEX0~HEX3显示四个小数位。

4.引脚配置及下载调试引脚配置表如下:四、设计过程1.顶层模块module sinx(clk,rst_n,a,b,hex0,hex1,hex2,hex3,hex4,hex5);input clk,rst_n;input [8:0] a;input [3:0] b;output [6:0] hex0,hex1,hex2,hex3,hex4,hex5;reg [3:0] data0,data1,data2,data3,data4,data5;wire [13:0] q;reg [9:0] addr;reg [12:0] c;reg [13:0] qr;always @(posedge clk or negedge rst_n)beginif (!rst_n)beginc <=13'd0;addr <=10'd0;endelsebeginc <= a*4'd10+b;if (2700< c <=3600)beginaddr <= 3600-c;data0 <=4'ha;endelse if(1800< c <=2700)beginaddr <= c-1800;data0 <=4'ha;endelse if (900< c <=1800)beginaddr <=1800-c;data0 <=4'hb;endelsebeginaddr <=c;data0 <=4'hb;endendendsin_rom sin_rom_inst (.address ( addr ),.clock ( clk ),.q ( q ));reg [2:0] num;always @(posedge clk or negedge rst_n)beginif (!rst_n)beginnum <=3'd0;qr <=14'd0;endelsebeginqr <= q;num <= num+1'b1;case(num)3'd1 : data1 <=qr%4'd10;3'd2 : data2 <=(qr/4'd10)%4'd10;3'd3 : data3 <=(qr/8'd100)%4'd10;3'd4 : data4 <=(qr/10'd1000)%4'd10;3'd5 : data5 <=(qr/10'd10000);default : ;endcaseif(num ==3'd6) num <=3'd0;endendled led0(rst_n,data0,hex5); //符号位led led1(rst_n,data1,hex0); //最低位led led2(rst_n,data2,hex1);led led3(rst_n,data3,hex2);led led4(rst_n,data4,hex3);led led5(rst_n,data5,hex4);endmodule说明:1)clk:时钟;2)rst_n: 复位信号;3)a: 函数自变量的整数部分,对应DE2板的sw4~sw12。

4)b: 函数自变量的小数部分,对应DE2板的sw0~sw3。

5)hex0~hex5:显示对应的函数值,对应DE2板的led0~led5。

2. Rom查找表模块使用matlab工具生成正弦函数的mif文件。

在0~pi上取1800个点,数据宽度为14,文件深度为1024。

width=14; %数据宽度为14位;depth=1024;fidc=fopen('E:\sin_matlab.mif','wt'); %以"wt"的形式打开,\n为换行% 写入sin_matlab.mif %fprintf(fidc,'width=%d;\n',width);fprintf(fidc,'depth=%d;\n',depth);fprintf(fidc,'address_radix=uns;\n');fprintf(fidc,'data_radix = uns;\n');fprintf(fidc,'content begin\n');for(x=1:901)fprintf(fidc,'%d:%d;\n',x-1, round(10000*sin(pi*(x-1)/1800)) ) ;endfor(x=901:1023)fprintf(fidc,'%d:%d;\n',x, 0 ) ;endfprintf(fidc,'end;');fclose(fidc);说明:为了便于导入quartus软件中进行分析、计算和显示,我们将函数值扩大10000倍。

3. Led显示模块module led( rst_n,data_in,sm_db);input rst_n;input[3:0] data_in;output[6:0] sm_db;reg[6:0] sm_db;always @ (data_in or rst_n)beginif(!rst_n)sm_db <= 7'b1000000;elsebegincase (data_in)4'h0: sm_db <= 7'b1000000;4'h1: sm_db <= 7'b1111001;4'h2: sm_db <= 7'b0100100;4'h3: sm_db <= 7'b0110000;4'h4: sm_db <= 7'b0011001;4'h5: sm_db <= 7'b0010010;4'h6: sm_db <= 7'b0000010;4'h7: sm_db <= 7'b1111000;4'h8: sm_db <= 7'b0000000;4'h9: sm_db <= 7'b0011000;4'ha: sm_db <= 7'b0111111; //显示负号4'hb: sm_db <= 7'b1111111; //正号,不显示任何值default: ;endcaseendendendmodule说明:1)data_in:输入的要显示的数值或字符;2)sm_db:将要在对应的数码管上显示数值或字符的段码;3)rst_n:复位信号。

4. 系统仿真我们选取15.0的角度值进行仿真验证,即a[9:0]=10’b0000001111,b[3:0]=4’b0000,得到函数值0.2588的结果,仿真结果如图4.1和图4.2。

图4.1 输入的角度值为15.0图4.2 得到的函数值0.2588五、硬件下载及调试把程序下载到FPGA上进行程序硬件调试。

六、总结体会设计中,mif文件给我们提供了很大的便利,通过matlab工具,直接生成mif文件,然后在quartus中生成rom查找表,这大大提高了我们建立查找表的效率。

通过这次的课程设计,让我对EDA相关知识有了更进一步认识,加深了对课堂上学习的知识的理解,了解和掌握如何去设计一个数字系统,如何去编写代码以及进行仿真,在编程和仿真中出现的问题如何去解决。

这都需要自己去一步一步的完成。

把课程实践与理论相结合起来,能够使学生理解得更深刻,能够活以致用,这样才能更好地掌握这门技术。

相关文档
最新文档