2.3 程序仿真
在QuartusⅡ软件中,用原理图的方式把上面两个程序例化成工程。图2为例化后的结果。
ROM中的数据采用.mif格式进行存储。ROM中存储的数据如图3所示。
对工程进行全编译,用启动仿真器对工程进行功能仿真。仿真结果如图4所示。从仿真结果可以看出,din_dac输出的数据与ROM内写入的数据完全一致。clk_dac和cs_dac:也完全满足数/模转换器所需的控制信号。
3 数/模转换器和运算放大器的设计
采用TI公司的TLC5615和OPA551分别作为数/模转换器和运算放大器。TLC5615是10位电压输出型数/模转换器,其转换输出如式(1)所示。
从式(1)可看出,数/模转换输出由参考电压VREFIN和输入数据Code决定,输出精度达到1/1 024,因此可以达到很高的调压精度。
两款元器件均采用DIP封装形式,可以即插即用,加上价格不高,特别适合用来实验。数/模转换器和运算放大器的硬件连接原理图如图5所示。OPA采用同相输入,放大后的输出电压值为:
通过改变R3和R2的值,在输入不变的条件下便可改变输出电压。
4 实验结果
取Vref=2.16 V,R1=2.5 kΩ,R2=3 kΩ,R3=15 kΩ,V+=30 V。V_=-30 V,ROM中的数据如图6所示。
实验只用到ROM的30个单元数据,即只产生30路可编程电压。把.sof文件加载到FPGA中。实验结果在示波器显示如图7所示。
图7中上边曲线为放大后的电压,下面曲线为数/模转换输出的电压。根据式(1)算出数/模转换器的输出电压最大值Vmax=4.315 V.测得值为4.32 V。根据式(2)算出Vmax=25.89 V,测得值为26.0 V。图7中各阶输出电压均与图6中数据相对应。实际测试结果与理论计算相吻合。实验表明,系统的精度高,稳定性强。
5 结 语
利用FPGA可以方便定制IP核,可重复编程,可在线调试的诸多优点,在改变ROM的地址单元数及各单元数据以及改变分频模块的参数,极其方便地产生所需的可编程多路电压。通过实验表明,系统产生的电压稳定,精度高,可调范围大(0-26V),适合为电子元件或者对多像素的元件提电源。此外,本文给出了完整的程序代码、原理图参数,具有一定的工程参考价值。