《基于单片机设计的简易信号发生器综述》由会员分享,可在线阅读,更多相关《基于单片机设计的简易信号发生器综述(18页珍藏版)》请在金锄头文库上搜索。
1、1辽东学院信息技术学院可编程逻辑器件原理及应用教学实习报告简易信号发生器学生姓名: 杨刚 学 号: 0915110619 班 级: B1106 专 业: 电子信息工程 指导教师: 张俊芳 2014年07月5辽东学院EDA教学实习报告简易信号发生器1引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等
2、领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。本设计采用FPGA来设计制作多功能信号发生器。该信号发生器可以产生锯齿波、三角波、方波等波形。2 FPGA简介FPGA(FieldProgrammable Gate Array)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。与传统们阵列和掩模可编程门阵列(MPGA)相比,FPGA具有很多的优点,传统门阵列可以用来设计任
3、何电路,但是只能在工厂中一次性编程,而且还需要针对该电路的特定的掩模。FPGA是标准通用器件。使用其代替MPGA,可以将设计时间由几个月缩短至几小时,并且使设计更加简单,从而减少了错误修改和设计指标变更的花费。FPGA器件在结构上,由逻辑功能块排列为阵列,它的结构可以分为三个部分:可编程快CLB(Configurable Logic Blocks)、可编程I/O模块IOB(Input Block)和可编程内部连线PI(Programmable Interconnect)。CLB在器件中排列为阵列,周围有环形内部连线,IOB分布在四周的管脚上。FPGA也存在缺点,FPGA中,每个可编程的点都有电
4、阻和电容。电阻和电容的使用减慢了信号的传输速度,所以FPGA的速度比传统门阵列要低,而且,FPGA中互联延迟是不可预测的。FPGA的基本特点主要有: 一、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 二、FPGA可做其它全定制或半定制ASIC电路的中试样片。 三、FPGA内部有丰富的触发器和IO引脚。 四、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 五、FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。使用FPGA时,可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM
5、中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。3 VHDL & Verilog简介V
6、HDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)是一种用来描述数字系统行为和结构的硬件描述语言,被广泛的运用于描述和仿真各种数字系统,小到几个门,大到许多复杂集成电路相连的系统。VHDL诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持
7、自顶向下(Top to Down)和基于库(Library Based)的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程的专用集成电路(ASIC)的设计。Verilog也是一种流行的硬件描述语言,他是由工业界开发的,1984年,Verilog作为一种私用的硬件描述语言,由Gateway Design Automation公司给出,1988年,Synopsis公司
8、为Verilog开发了综合工具。1995年,Verilog成为IEEE的一个标准。Verilog 适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。VHDL的语法是基于ADA语言的,而Verilog的语法是基于C语言的。由于是基于C语言,所以它更容易掌握,但是VHDL语言在设计和描述大型系统时具有突出优势。目前两种语言各占一半市场份额,两种语言都可以满足数字系统设计者的需求。本设计中采用VHDL语言进行设计。4 设计工具简介本次设计是基于Altera公司的QuartusII软件。Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、Verilog
9、HDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII支持Altera的IP核,包含了LPM/MegaFuction宏功能模块库,使用它,可以简化设计的复杂性,加快设计速度。QuartusII平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。此外,QuartusII通过和DSP Builder工具与Matlab/SIMULINK相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统开发,集系
10、统级设计、嵌入式软件设计、可编程逻辑设计于一体,是一种综性的开发平台。5 系统设计基于VHDL语言设计一个多功能信号发生器,通过选择输入信号,可以输出递增锯齿波、递减锯齿波、三角波、方波等四种信号。信号发生器的控制模块可以选用数据选择器实现,4种信号的数据选择可以使用4选1数据选择器实现。5.1 VHDL程序语言基本设计一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路,或者是一个计数器,也可以是一个CPU,一般情况下,一个完整的VHDL语言程序至少包括实体、结构体和程序包三个部分。实体给出电路单元的外部输入输出接口信号和引用信息,结构体给出了电路单元的内部结构和信号
11、的行为特点,程序包定义在设计结构体和实体中将用到的常数、数据类型、子程序和设计好的电路单元等。第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体中将要用到的常数、数据类型、子程序和设计好的电路单元等,放在文件目录名称为IEEE的程序包库中。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;第二部分是程序的实体,定义电路单元的输入/输出引脚名称。程序的实体名称可以任意取,但必须与VHDL程序的文件名称相同。实体的标示
12、符是ENTITY,实体以ENTITY开头,以END结束。ENTITY fulladder ISPORT(a,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结尾。
13、结构体的名称可以任取。architecture behav of fulladder isBEGINs=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表中,表中包含着一个周期正弦波的数字幅度信息
14、,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,通过设置的输出端口输出。在实物设计中,可以使用D/A接口来实现波形信号的输出。为简化设计过程,本设计并未采用DDS技术,而是采用描点输出的方式,实现波形发生器的设计。程序中设置一个波形的起始点,经过比较、计算得出波形的其他数值,将这些点依次连续输出,从而实现波形的仿真。以递增锯齿波为例,首先定义初始点为 tmp=“00000000”;在时钟上升沿到来时,执行tmp=tmp+1;语句,同时将tmp输出,当tmp=“11111111”;时,将tmp值清零,执行下一个循环。在本
15、设计中,采用QuartusII软件仿真,所以可以通过波形文件直观的反映出输出的数字量的变化情况,以达到波形输出的仿真。设计中分别对四种波形进行编程,编译无误后,封装生成模块文件,以供在后面的顶层电路设计中使用。图5-1 四种波形封装图块本设计中设置了四种波形,分别是递增锯齿波、递减锯齿波、三角波、方波。四种波形通过一个4选1数据选择器来实现选择性输出。5.3 四选一数据选择器设计可以采用集成四选一数据选择器CT54153/CT74153,也可以使用软件编程生成模块的方式实现数据四选一的功能。在本设计中采用后者,程序中,为每一种波形分配一个通道,并为之赋予一唯一的代码,当在sel端输入不同的代码时,被选中的通道打开,响应的波形发生模块产生波形。entity mux41 isport(sel:in std_logic_vector(2 downto 0);-定义输入端口seld1,d2,d3,d4: in std_logic_vector(7 downto 0);-定义输入端口d1,d2,d3,d4q: out std_l