基于FPGA的三相函数信号发生器设计

[09-12 18:35:34]   来源:http://www.88dzw.com  EDA/PLD   阅读:8325

文章摘要:2.2 波形产生模块设计2.2.1 正弦波正弦波的数据需要转换为*.mif文件后存放到ROM中,mif文件有固定格式规定了每个字的位宽WIDTH、总字数DEPTH、地址进制基数ADDR-ESS_RADIX和数据进制基数DATA_RADIX。在Matlab环境中编程计算出正弦波数据,然后生成mif文件。EP2C8T144C8拥有较充裕的存储空间。因此,设计中为了提高精度在ROM中存放4 096个正弦数据,频率控制字、相位控制字由单片机控制产生,经过相位累加器组成地址发生器,产生的地址连到ROM的地址线上进行查表得到波形数据。2.2.2 方波方波算法比较容易实现。由于其只有高低电平两种状态。因此,

基于FPGA的三相函数信号发生器设计,标签:eda技术,eda技术实用教程,http://www.88dzw.com




  2.2 波形产生模块设计

  2.2.1 正弦波

  正弦波的数据需要转换为*.mif文件后存放到ROM中,mif文件有固定格式规定了每个字的位宽WIDTH、总字数DEPTH、地址进制基数ADDR-ESS_RADIX和数据进制基数DATA_RADIX。在Matlab环境中编程计算出正弦波数据,然后生成mif文件。

  EP2C8T144C8拥有较充裕的存储空间。因此,设计中为了提高精度在ROM中存放4 096个正弦数据,频率控制字、相位控制字由单片机控制产生,经过相位累加器组成地址发生器,产生的地址连到ROM的地址线上进行查表得到波形数据。

  2.2.2 方波

  方波算法比较容易实现。由于其只有高低电平两种状态。因此,只需要在一个周期的时间中间位置翻转电平即可。由于相位累加器的值是线形累加的,地址address的值也是线形累加的,对所给地址值address进行判断,当地址值的最高位为O时,便将波形幅值各字位赋值1,否则赋值0。就可以实现最简单的占空比50%的方波。

  为了实现占空比可调,设计中增加一个变量PWM_zkb[11..0],让地址值与WM_zkb[11..O]比较,Adress[11..0]

  2.2.3 三角波

  三角波的生成原理与方波生成原理相似,也是对地址Address的值进行判断,当其最高位为0时,取其O~ll位为三角波的波形幅值,即令Data_out[11..0]=Address[11..0]。当其最高位为l时,对其0~1l位的值取反后再作为三角波的波形幅值,即令Data_out[11..0]=not(Address[11..0])。

  2.2.4 锯齿波

  锯齿波的产生也是基于上述原理,是对地址Address的值进行判断,当其最高位为O时,取其0~ll位为三角波的波形幅值,即令。Data_ out[11..0]=Address[11..0]。当其最高位为1时,对其最高位的值取反后作为锯齿波的波形幅值,即令Data_out,[11..0]=Address[11..0]and“011111111111”。

  2.3 相移的实现

  在A相地址的基础上,增加一个累加器,输入段分别是A相地址和偏移值,经过累加之后得到B相波形地址,然后根据此地址对ROM寻址或者在地址的基础上生成方波、三角波和锯齿波。如图5所示,A相、B相及B相、C相之间的偏移量有单片机控制,数据经过锁存后送入累加器。


  2.4 波形选择的实现

  根据设计要求,每一相都可以实现正弦波、方波、三角波和锯齿波任意一种波形的输出,设计了一个4选1数据选择器,控制端Sel[1.-.0]与单片机IO口相连,如图6所示,以A相为例。


  2.5 幅度控制的实现

  参考电压可通过INT/EXT端选择内部和外部。当该端口为高电平时选择外部参考电压,只要改变参考电压,就可以改变输出波形的幅值。DAC902外部参考电压范围0.10~1.25 V,因此只需采用8位D/A既可实现0.01 V的步进。如图7所示,DAC0832输出接到DAC902参考电压输入端REFin,通过单片机控制DAC0832输出,进而控制DAC902参考电压。

上一页  [1] [2] [3]  下一页


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行