FPGA LPM多功能信号发生器设计_第1页
FPGA LPM多功能信号发生器设计_第2页
FPGA LPM多功能信号发生器设计_第3页
FPGA LPM多功能信号发生器设计_第4页
FPGA LPM多功能信号发生器设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【Word版本下载可任意编辑】 FPGA LPM多功能信号发生器设计 信号发生器又称为波形发生器, 是一种常用的信号源,广泛应用于电子电路、通信、控制和教学实验等领域。它是科研及工程实践中重要的仪器之一, 以往多用硬件组成,系统构造比较复杂,可维护性和可操作性不佳。随着计算机技术的发展,信号发生器的设计制作越来越多的是用计算机技术,种类繁多,价格、性能差异很大。用FPGA 或CPLD 来实现,它的优点是可以开展功能仿真,而且FPGA 和CPLD 的片内资源丰富,设计的流程简单。用FPGA 所构成的系统来产生波形信号,这个系统既能和主机系统相连,用相应的上层软件展示波形信号, 又方便程序的编写,

2、 而且还有A/D0809接口可以产生模拟信号的输出和外面的示波器相连。 1 正弦信号发生器的LPM 定制 正弦信号发生器由计数器或地址发生器(6 位)、正弦信号数据ROM (6 位地址线,8 位数据线, 含有64 个8 位数据, 一个周期)、原理图顶层设计和8 位D/A ( 实验中用DAC0832 代替)。 其框图如图1 所示。其*号产生模块将产生所需的各种信号,这些信号的产生可以有多种方式,如用计数器直接产生信号输出,或者用计数器产生存储器的地址,在存储器中存放信号输出的数据。信号发生器的控制模块可以用数据选择器实现, 用8 选1 数据选择器实现对5 种信号的选择。 图1 信号发生器构造框图

3、 将波形数据送入D/A 转换器,将数字信号转换为模拟信号输出。用示波器测试D/A 转换器的输出,可以观测到5 种信号的输出。 1.1 定制初始化数据文件 QuartusII 能承受的LPM_ROM 模块中的初始化数据文件的格式有两种:。mif 格式文件和。hex 格式文件。实际应用中只要使用其中一种格式的文件即可。下面采用。mif 格式文件,调出产生ROM 数据文件大小的选择窗。根据64 点8 位正弦数据的情况,可选ROM 的数据数Number 为64,数据宽Word size 取8 位。单击OK 按钮,将出现图2 所示的空的。mif数据表格,表格中的数据格式可通过鼠标右键单击窗口边缘的地址数

4、据弹出的窗口选择。 图2 .mif 数据表格 将波形数据填入mif 文件表中也可以使用QuartusII 以外的编辑器设计MIF 文件,其格式如下: #include sin_ rom. mif; 1.2 定制LPM 元件 打开Mega Wizard Plug_In Manager 初始对话框, 选择Create a new custom 项。单击Next 按钮后,选择Storage 项下的LPM_ROM, 再选择ACEX1K 器件和VHDL 语言方式;输入ROM 文件存放的路径和文件名:F:sing_gntdata_rom (定制的ROM 元件文件名),单击Next 按钮,选择ROM 控制线

5、、地址线和数据线。这里选择地址线位宽和ROM 中数据数分别为6 和64; 选择地址锁存控制信号inclock。 对于地址信号发生器的设计。方法一:用VHDL 语言设计6 位计数器,产生其元件符号;方法二:仍采用LPM 定制的方法。 1.3 完成顶层设计 按图3 画出顶层原理图,然后开展编译,波形仿真如图4所示。 图3 简易正弦信号发生器顶层电路设计 图4 当前工程仿真波形输出 对当前设计通过执行Quartus II 的命令Create Update/ Create Symbol Files for Current File,可以为设计电路建立一个元件符号,以便被顶层设计多功能信号发生器所调用。

6、 2 其他信号部分原程序 其他各信号发生器可参照正弦信号发生器的设计方法设计或直接采用VHDL 硬件描述语言开展设计。 LIBRARY IEEE;-递增锯齿波的设计 USE IEEE.STD LOGIC 1164.ALL; USE IEEE.STD LOGIC UNSIGNED.ALL; ENTITY signal2 IS -递增锯齿波signal1 PORT(clk,reset:IN std_logic;-复位信号reset, 时钟信号clk q:OUT std_logic_vector (7 DOWNTO 0);-输出信号q END signal2; ARCHITECTURE b OF s

7、ignal2 IS BEGIN PROCESS(clk,reset) VARIABLE tmp:std_logic_vector(7 DOWNTO 0); BEGIN IF reset=0 THEN tmp:=00000000; ELSIT rising_ege(clk)THEN IF tmp=11111111THEN tmp:=00000000; ELSE tmp:=tmp+1; -递增信号的变化 END IF; END IF; q=tmp: END PROCESS; END b; LIBRARY IEEE;-方波的设计 USE IEEE.STD_LOGIC_1164.ALL; USE IE

8、EE.STD_LOGIC_UNSIGNED.ALL; entity signal5 is -方波signal5 PORT(clk,reset:in std_logic; -复位信号reset,时钟信号clk q:out std_logic_vector (7 DOWNTO 0); -输出信号q,8 位数字信号 END signal5; ARCHITEECTURE a OF signal5 IS SIGNAL; a:std_logic; BEGIN PROCESS(clk,reset) YARIABLE tmp:std_logic_vector(7 downto 0); BEQIN IF res

9、et=0 then a=0; elsif rising_edge(clk)THEN IF tmp=11111111 THEN tmp:=00000000; ELSE tmp:=tmp+1; END IF; if tmp=10000000 then a=1; else a=0; END IF; END IF; END PROCESS; PROCESS(clk,a) BEGIN IF rising_edge(clk)THEN IF a=1 THEN q=11111111; ELSE q=00000000; END IF; END IF; END PROCESS; END a; 3 顶层电路的设计

10、将上述6 个模块生成符号,供顶层电路调用。这些模块分别是:递减锯齿波信号产生模块signall、递增锯齿波信号产生模块signal2、三角波信号产生模块signal3、阶梯波信号产生模块signal4、方波信号产生模块signal5 和数据选择器mux51。顶层电路的连接如图5 所示。 图5 信号发生器顶层电路 4 D/A 转换器的连接 选择一个D/A 转换器,将数据选择器的输出与D/A 转换器的输入端连接。D/A 转换器的可选范围很宽,这里以常用的DAC0832 为例。DAC0832 的连接电路如图6 所示。 图6 DAC0832 的连接电路 5 实现与测试 信号发生器顶层电路的仿真波形如图7 所示,这里只就输入选择信号等于5 时的情况开展仿真,此时输出波形是方波,输出的数字信号为周期性的全0 或全1。 图7 信号发生器顶层电路的仿真波形 信号发生器的底层电路模块也可以分别开展仿真,例如对阶梯波信号产生模块signal4 开展仿真,仿真波形如图8 所示,输出的数字信号为阶梯状变化。 图8 阶梯波信号产生模块signal4 的仿真波形 6 结束语 硬件电路设计主要是设计相关模块的设计思想的可视化,是相关模块的电路图的汇总和其相关仿真波形的集锦,该部分条理清晰,思路明确,从中我们可以清晰地看到该设计方案的具体模块和整个设计的原理构造实图;程序设计这一部分主要阐述该设计的设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论