APP下载

基于FPGA的一种虚拟多波形智能函数发生器的有效方法

2018-05-02

许昌学院学报 2018年4期
关键词:正弦波原理图阶梯

姚 宁

(许昌学院 电气机电工程学院,河南 许昌 461000)

在分立元件时期,传统的电子电路的设计方法很大程度上依赖于设计者本身的经验,设计者必须非常了解器件的工艺、特性,然后才能对器件一个一个选型、组建,先完成原理图的设计,接着完成PCB板图的印制,然后完成电路板的组装调试.若组装完成的电路调试不能完成相应功能或出错,则必须从原理图开始一步步重新来过,这称为“自底而上”[1]的设计方法,效率可想而知,所以产品的更新换代较为缓慢.随着大规模集成电路的发展,电子电路的设计进入EDA(Electronic Design Automation——电子设计自动化)时代,设计者不需要了解器件的工艺,只要会画原理图或会用硬件描述语言,就可以在大规模可编辑逻辑器件的开发软件及实验开发系统上完成电路的设计和调试[2],这称为“自上而下”的设计方法.当今的EDA技术更多的是指SOC(System on a Chip)[1]——芯片内电子系统设计自动化.

函数发生器是一种在工程教育、科学研究及生产实践中经常用到的设备.目前使用最多的函数发生器,绝大多数都是由电子元器件组成的模拟电路构成的,其频率可达上百兆赫兹,但是体积较大,并且最不利的是损耗大[3-5].本文以多波形智能函数发生器为设计对象,描述了利用EDA技术完成此设计的方法,应用EDA工具对函数发生器按照设计流程完成设计并结合硬件描述语言——VHDL、FPGA的软件开发平台——Quartus II 9.0及EDA/SOPC型实验开发装置上配置的编程和仿真工具,完成智能函数发生器的各种波形验证,并完成实验的硬件仿真,显示仿真的结果.

本文以6种波形(正弦波、三角波、方波、阶梯波、递增斜波和递减斜波[6])的显示为例,采用文本和原理图的混合输入方式,以LPM_ROM实现波形的产生,同时加入频率可调模块,设计框图如图1所示,硬件系统通过输入信号来驱动,在不同输入信号前提下产生不同的输出结果[7].本设计的智能函数发生器易于使用,可以通过按钮选择波形,也可以通过频率的调节产生能够满足不同人不同场合需要的波形输出[8].

1 LPM模块

LPM(Library of Parameterized Modules),参数可设置模块库,此库中包含了丰富的模块单元,如存储器、DSP模块、PLL模块等[9].方便设计者可以根据自己的需要选择合适LPM模块设计相应的电子系统.

图1 多波形函数发生器设计框图

图2 正弦波部分数据

2 多波形智能函数发生器模块的建立

2.1 用MIF_Maker2010生成mif文件

存储器需要的初始化文件进行配置,这里采用mif格式文件.mif格式文件的生成方法有:直接编辑法、文件直接编辑法、高级语言生成法和专用mif文件生成器创建法[2].本文采用专用mif文件生成器——MIF_Maker2010自动生成6种波形.要求波形数据线宽8位,地址线宽8位,保存后备用,正弦波部分数据如图2所示.

2.2 ROM模块的创建——以正弦波为例

(1)波形模块的生成

LPM_ROM模块具有非常多的用处,本文调用并编辑此元件作为波形发生器的数据存储器,调入mif文件,分别生成对应的正弦波、三角波、方波、阶梯波、递增斜波和递减斜波6种波形模块.正弦波模块如图3(a)所示.

(2)频率控制模块的生成

entity FCT2 is

port(CLK,RST : in std_logic;

key: in std_logic_vector(3 downto 0);

add: out std_logic_vector(7 downto 0));

end FCT2;

architecture behave of FCT2 is

signal A : std_logic_vector(7 downto 0);

signal F : INTEGER RANGE 0 to 30;

BEGIN

P0: PROCESS(CLK,RST)

VARIABLE Q : STD_LOGIC_VECTOR(7 downto 0);

BEGIN

IF RST='0' THEN Q : = (OTHERS=>'0');

ELSIF CLK’EVENT AND CLK= '1' THEN A<=A+F;

END IF;

END PROCESS P0;

P1: PROCESS(KEY)

BEGIN

CASE KEY IS

WHEN "0001" =>F<=2; WHEN"0010"=>F<=4;

WHEN "0011" =>F<=6; WHEN "0100" =>F<=8;

WHEN "0101" =>F<=10; WHEN "0110" =>F<=12;

WHEN "0111" =>F<=14; WHEN "1000" =>F<=16;

WHEN "1001" =>F<=18; WHEN "1010" =>F<=20;

WHEN "1011" =>F<=22; WHEN "1100" =>F<=24;

WHEN "1101" =>F<=26; WHEN OTHERs =>F<=1;

end case;

end process p1;

add<=a;

end behave;

(3)频率可调的波形模块的生成

将频率控制模块与ROM生成的正弦波模块相连组成频率可调的正弦波模块,如图3(c)所示.

2.3 LPM_MUX模块构建

波形选择模块仍然采用LPM_MUX实现,实现过程同LPM_ROM.sel是选择控制键,通过sel的值选择不同的波形输出.sel的值分别为“0”、“1”、“2”、“3”、“4”、“5”是对应选择的波形分别为正弦波、三角波、方波、阶梯波、递增斜波和递减斜波.

2.4 多波形函数发生器的构建

调用以上各个模块组合生成函数发生器,原理图如图4所示.clk是时钟信号,rst是复位信号,key为频率控制信号,sel为输出波形控制字.

图3 正弦波模块的生成

图4 多波形函数发生器的生成

3 实验结果调试

3.1 波形仿真验证

当sel=0时输出波形为正弦波,波形仿真图如图5所示,数据与图1中相比,证明是正弦波.

图5 正弦波仿真波形

以阶梯波为例显示频率变化时的仿真结果,如图6所示.

图6 频率变化时阶梯波的仿真波形

3.2 调用逻辑分析仪SignalTap II验证

波形仿真结果不能直观反应测试结果,所以,在此调入逻辑分析仪SignalTap II进行显示,如图7所示.图7中图(a)~(f)为频率为1 MHz时的6种波形,图7(a)为正弦波,图7(b)为三角波,图7(c)为方波,图7(d)为阶梯波,图7(e)为递增斜波,图7(f)为递增斜波.图7中图(g)~(k)为频率改变时的正弦波,图7(g)为频率为7.8 KHz时正弦波波形,图7(h)为频率为15.6 KHz时正弦波波形,图7(k)为频率为31.2 KHz时正弦波波形.

图7 逻辑分析仪结果显示

4 结语

本文中的多波形智能函数发生器主要采用LPM,生成了频率可变的方波、三角波、阶梯波、正弦波、递增斜波和递减斜波6种波形,用逻辑分析观察显示波形结果,简单、直观,缺点是不是任何频率的信号都能产生,这是后续要改进的地方.此实验说明,采用LPM模块实现函数发生器是可行的,此设计方法可以推广到相似的其它电子系统的设计中.

参考文献:

[1] 潘 松,黄继业.EDA技术实用教程——VHDL版[M].5版,北京: 科学出版社,2014.

[2] 谭会生,张昌凡.EDA技术及应用[M].2版,西安: 西安电子科技大学出版社,2006.

[3] 杨丽君.智能数字式低频信号发生器[J].沈阳航空航天大学学报,1999,16(1): 42-44.

[4] 任志平,党瑞荣.基于EDA技术的智能函数发生器的设计[J].科学技术与工程,2008,8(4): 1 076-1 078.

[5] 林金阳.基于EDA的智能函数发生器的设计[J].西安文理学院学报:自然科学版,2010,13(4): 54-56.

[6] 梁向红.智能函数发生器的VHDL设计与仿真[J].江苏工业学院学报,2008,20(3): 66-69.

[7] 侯伯亨,顾 新.VHDL硬件描述语言与数字逻辑电路设计[M].西安: 西安电子科技大学出版社, 2004.

[8] 郝小江,罗 彪.基于FPGA的函数发生器[J].电测与仪表,2008,45:49-51.

[9] 张爱文.EDA与FPGA应用设计[M].2版,北京: 电子工业出版社,2016.

[10] 杨 蕊.基于DDS技术的实用信号源设计[D].武汉:华中师范大学,2012.

[11] 王 丹,李 平,文玉梅.采用DDS频率合成的虚拟信号发生器研究[J].传感技术学报,2007,9(3): 586-591.

猜你喜欢

正弦波原理图阶梯
单相正弦波变频电源设计与实现
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
采用BC5016S的纯正弦波逆变器设计及制作
良师·阶梯·加油站
基于STM32的风力摆控制系统的设计
时光阶梯
艺术创意阶梯
维修电工线路板的接线技巧分析