ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:82.89KB ,
资源ID:6471771      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6471771.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机设计的简易信号发生器Word文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机设计的简易信号发生器Word文档格式.docx

1、FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。3 VHDL & Verilog简介VHDL(Very High Speed Integrated Circuit Hardware Descript

2、ion Language,超高速集成电路硬件描述语言)是一种用来描述数字系统行为和结构的硬件描述语言,被广泛的运用于描述和仿真各种数字系统,小到几个门,大到许多复杂集成电路相连的系统。VHDL诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(Library Based)的设计的特点,因此设计者可以不必了解硬件

3、结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程的专用集成电路(ASIC)的设计。Verilog也是一种流行的硬件描述语言,他是由工业界开发的,1984年,Verilog作为一种私用的硬件描述语言,由Gateway Design Automation公司给出,1988年,Synopsis公司为Verilog开发了综合工具。1995年,Verilog成为IEEE的一个标准。Verilog 适合算法级,寄

4、存器级,逻辑级,门级和版图级等各个层次的设计和描述。VHDL的语法是基于ADA语言的,而Verilog的语法是基于C语言的。由于是基于C语言,所以它更容易掌握,但是VHDL语言在设计和描述大型系统时具有突出优势。目前两种语言各占一半市场份额,两种语言都可以满足数字系统设计者的需求。本设计中采用VHDL语言进行设计。4 设计工具简介本次设计是基于Altera公司的QuartusII软件。Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式

5、,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII支持Altera的IP核,包含了LPM/MegaFuction宏功能模块库,使用它,可以简化设计的复杂性,加快设计速度。QuartusII平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。此外,QuartusII通过和DSP Builder工具与Matlab/SIMULINK相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统开发,集系统级设计、嵌入式软件设计、可编程逻辑设计于一体,是一种综性的开发平台。5 系统设计基于VHDL语言设计一个多功能

6、信号发生器,通过选择输入信号,可以输出递增锯齿波、递减锯齿波、三角波、方波等四种信号。信号发生器的控制模块可以选用数据选择器实现,4种信号的数据选择可以使用4选1数据选择器实现。5.1 VHDL程序语言基本设计 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路,或者是一个计数器,也可以是一个CPU,一般情况下,一个完整的VHDL语言程序至少包括实体、结构体和程序包三个部分。实体给出电路单元的外部输入输出接口信号和引用信息,结构体给出了电路单元的内部结构和信号的行为特点,程序包定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等。 第一部分是程序

7、包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体中将要用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录名称为IEEE的程序包库中。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;第二部分是程序的实体,定义电路单元的输入/输出引脚名称。程序的实体名称可以任意取,但必须与VHDL程序的文件名称相同。实体的标示符是ENTITY,实体以ENTITY开头,以END结束。ENTITY fulladder IS PORT(a

8、,b,Ci:in std_logic; Co,s: out std_logic_vector(7 downto 0);END fulladder;其中,定义了a,b, Ci为输入信号引脚,定义Co,s为输出信号引脚。第三部分是程序的结构体,具体描述电路的内部结构和逻辑功能。结构体有三种描述方式,分别是行为(BEHAVIOR)描述方式、数据流(DATAFLOW)描述方式和结构描述方式。其中数据流描述方式又被称为寄存器(RTL)描述方式。结构体以表示ARCHITECHTURE开头,以END结尾。结构体的名称可以任取。architecture behav of fulladder isBEGIN s

9、=a xor b xor Ci; Co=(a and b)or(a and Ci)or(b and Ci);END fulladder上面程序段中结构体的描述方式属于程序流描述方式。 以上三段程序是一个完整的VHDL程序段,实现的功能是一位全加器。5.2 波形发生器设计采用DDS技术可以很方便地产生各种高质量的波形。DDS技术是从相位概念出发之结合成所需要波形的一种频率合成技术。以正弦波为例,首先要按照一定的采样点数将正弦波形一个周期的数据信息存于ROM表中,表中包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射

10、成正弦波幅度的数字量信号,通过设置的输出端口输出。在实物设计中,可以使用D/A接口来实现波形信号的输出。为简化设计过程,本设计并未采用DDS技术,而是采用描点输出的方式,实现波形发生器的设计。程序中设置一个波形的起始点,经过比较、计算得出波形的其他数值,将这些点依次连续输出,从而实现波形的仿真。以递增锯齿波为例,首先定义初始点为 tmp=“00000000”;在时钟上升沿到来时,执行tmpqnull; end case; end process; 图5-2四选一数据选择器封装图块end behav;以上为四选一数据选择器程序段,其中sel端口为外部输入选择信号,d1,d2,d3,d4分别连接四

11、个波形发生模块,以二进制形式给sel幅值,选择相应的通道。q为输出端口,将波形信息的数字代码输出。5.4 程序设计图5-3 系统流程图5.5 主要函数语句分析在程序设计中,主要使用的函数语句有两种:If-else语句和case-when语句。这两种语句也是VHDL程序设计中常用的语句。二者都属于流程控制语句。流程控制语句通过条件控制开关决定是否执行一条或几条语句或重复执行一条或几条语句或跳过一条或几条语句 。 IF语句是一种条件语句,它根据语句中所设置的一种或多种条件,有选择地执行指定的顺序语句。IF语句的语句结构有以下三种: IF 条件句 Then - 第一种IF语句结构 顺序语句 END

12、IF IF 条件句 Then - 第二种IF语句结构 顺序语句 ELSE IF 条件句 Then - 第三种IF语句结构 顺序语句 ELSIF 条件句 Then . 顺序语句CASE语句根据满足的条件直接选择多项顺序语句中的一项执行,CASE语句的结构如下:CASE 表达式 ISWhen 选择值 =.END CASE 当执行到CASE语句时,首先计算表达式的值,然后根据条件句中与之相同的选择值。执行对应的顺序语句,最后结束 CASE语句。表达式可以是一个整数类型或枚举类型的值,也可以是由这些数据类型的值构成的数组。5.6 系统顶层文件将上述5个模块(递增锯齿波sawtooth_adder、递减

13、锯齿波sawtooth_minus、三角波triangle、方波square、4选1数据选择器mux41)封装成为模块文件,供顶层电路调用。可以得到以下顶层文件电路:图5-4 系统顶层电路图6系统仿真通过选择不同的sel值,可以实现不同的波形输出。仿真中reset复位信号一直置高电平,即没有仿真复位情况。输入的选择信号为1时,信号发生器顶层电路的仿真输出波形为递增锯齿波。输出的波形线性递增。图6-1 递增锯齿波仿真波形输入的选择信号为2时,信号发生器顶层电路的仿真输出波形为递减锯齿波。输出的波形线性递减。图6-2 递减锯齿波仿真波形输入的选择信号为3时,信号发生器顶层电路的仿真输出波形为三角波

14、。输出的波形线性减小到最小值0后,再线性增加。图6-3 三角波仿真波形输入的选择信号为4时,信号发生器顶层电路的仿真输出波形为方波。输出的波形为周期性的全0或全1。(在仿真中,只有将CLK信号频率取得很高的时候,才可以清晰地看出仿真效果。)图6-4 方波仿真波形7 设计总结7.1 小结 FPGA是当前数字系统设计领域比较火热的一种工具,它可以大大缩短设计需要的时间,降低成本的同时也提高了系统的稳定性。使用VHDL语言描述硬件系统使得FPGA技术有了更广阔的应用领域。本设计使用了基于Altera公司的FPGA系列,采用Altera公司提供的系统开发工具Quartus II软件进行了系统的设计和仿

15、真。数字信号发生器在实验室以及工业场所都被大量使用着,本系统即实现了可以输出四种波形的简易多功能波形发生器,仿真结果证明,该设计正确有效,可以作为制作实物的理论依据。但由于设计者能力有限,本系统仍然有着很多可改进的地方,比如可以升级为输出频率、幅值可调的波形,或者输出任意波形以更贴近实际情况。7.2 心得体会 对FPGA一直都有着浓厚的兴趣,借做课设的机会,认真的研究了一下这门科学。发现FPGA技术比我想象中的要有很大的难度。里面有很多的思想来源于信息电子技术里面的基本知识,包括门电路的概念以及寄存器传送的基本知识。VHDL语言与C语言有很大的不同,但是C语言的编程思想也可以移植到VHDL语言

16、中,尤其是一些逻辑算法的设计,需要有很强的C语言编程功底。学习一门知识要从最基本的体系架构开始,倘若一开始就从顶层设计入手,就会造成很多基本原理、基本概念上的偏差,甚至会拖延学习设计的时间,事倍功半。虽然课设完成了,但是我意识到,我对FPGA技术仅仅只是停留在入门的阶段,想要有更大的发展,更深入的研究,还需要更多的努力与实践。参考文献1 蒋小燕,俞伟钧.EDA技术及VHDL.南京:东南大学出版社.2008年12月.2 李国丽,朱维勇.EDA与数字系统设计.北京:机械工业出版.2005年3月.3 江国强.EDA技术与实验.北京:电子工业出版社.2005年1月.4 欧伟明.基于MCU、FPGA、R

17、TOS的电子系统设计方法与实例.北京:北京航空航天大学出版社.2007年4月 .5 Charles H.Roth,Jr、Lizy Kurian John著,金明录译.数字系统设计与VHDL.北京:电子工业出版社.2008年8月附录附录一:递增锯齿波程序 -程序包entity sawtooth_adder is port(clk,reset: -定义clk、reset为输入信号 q:out std_logic_vector(7 downto 0); -定义q为输出信号end sawtooth_adder; -实体architecture behav of sawtooth_adder is pr

18、ocess(clk,reset) -定义进程 variable tmp:std_logic_vector(7 downto 0); -定义变量,8位 if reset=0then -如果复位信号为0,tmp为0 tmp:=00000000; elsif rising_edge(clk) then -捕捉时钟上升沿 if tmp=11111111then -如果tmp递增至最大,增归零 tmp: else -否则,tmp继续递增 end if; end if; q=tmp; -q等于变量tmp -进程结束 -结构体结束附录二:递减锯齿波程序entity sawtooth_minus isend

19、sawtooth_minus;architecture behav of sawtooth_minus is process(clk,reset)then elsif rising_edge(clk) then else =tmp-1;附录三:三角波程序 -程序包entity triangle is -定义三角波实体 end triangle;architecture behav of triangle is -定义三角波结构体 process(clk,reset) -进程开始 -定义中间变量tmp、a variable a:std_logic;then -复位信号设置 elsif risin

20、g_edge(clk) the n -捕捉时钟信号上升沿 if a=then -a=0时依次输出三角波上升沿 if tmp=11111110 a:=1 else tmp: end if; else -a=1时依次输出三角波下降沿00000001 -输出信号q=tmp -结构体结束附录四:方波程序entity square is in std_logic;end square;architecture behav of square issignal a: variable tmp: begin if reset= a elsif rising_edge(clk) then else tmp: if tmp10000000

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2