《基于IP核rom波形发生器设计验证》

一, 设计要求

通过ip核rom,设计一个能够进行调节频率,相位,振幅的正弦波,频率,相位,振幅都能够进行任意调节。

二, 设计分析

第一个问题:调节相位;

forum.jpg

调节相位

假设我们已经提取了正弦波的数据并存放在ip核rom里,我们提取的正弦波数据是从0相位开始提取,360度相位提取结束。相位每变化一度我们提取一个数据,我们就可以提取360个波形数据,在调节相位时需要改变Ip核rom的初始地址。在进行调节时每调节一次相位的变化幅度称为相位控制字,一般我们用pword来表示。调节相位就是调节rom的初始地址。

如何将波形数据提取出来?

假设我们要提取的数据宽度为8位,深度为256个,那么提取的正弦波数据变化范围为:0到255。通过第三方软件提取正弦波数据;

通过系统时钟读取的波形数据产生的正弦波频率为:195.31khz。

第二个问题:调节振幅;

调节振幅就是调节波形数据的变化范围,在调节振幅时只能调节整数倍的振幅。

如果我们要将波形的振幅跨度两倍,那么对应的波形数据范围也就扩大为0到511;

第三个问题:调节频率;

第一个我们可以修改驱动rom地址变化的频率,我们要进行频率调节时需要修改驱动时钟频率。可以利用两个调节频率方式:第一种为调用锁相环产生五个频率,可以将正弦波频率调整为大于195.31khz;第二种通过计数器分频产生驱动时钟频率,这样设计产生的正弦波频率小于195.31khz。地址变化的速率进行调节,地址变化范围与个数相同,波形数据数据不会丢失。

第二个我们考虑不改变驱动时钟,如何调节波形频率?

(1): 如果我们需要将波形的频率增大,对应的就需要地址变换速率增大,由于驱动时钟频率修改不了,我们就需要让地址变化的幅度增大,这样就会导致波形数据丢失。

(2): 如果我们需要将波形的频率减小,对应的就需要地址变换速率减小,可以多个驱动时钟周期地址变化一次;假设我们让地址每经过4个驱动时钟周期地址变化一次,那么地址变化一次的时间为:80ns,那么对应的波形频率为:

(1)1/4*20*256 = 48,828.125hz;我们可以定义一个10位的计数器,高八位表示地址,这样就能够实现地址每经过4个驱动时钟周期变化一次。我们继续将波形频率往小的调节,目的为了能够得到一个基准频率,我们在调节频率时已基准频率为基础进行调节。形成一个24位的计数器,高8位表示地址,那么地址变化一次需要经过2^16个驱动时钟周期,那么对应的波形频率为:1/1024*64 * 20 *256=2.98hz;

形成一个32位的计数器,高8位表示地址,那么地址变化一次需要经过2^24个驱动时钟周期,那么对应的波形频率为:1/1024*1024*16 * 20 *256=0.0116hz;将0.0116hz作为基准频率,在这个基准频率的基础上我们可以实现在不丢失数据的前期下生成的波形频率范围为:0.0116hz到195.31khz。

假设现在我们想得到频率为50khz的正弦波信号,我们如何来计算32位计数器的变化幅度?变化幅度我们也可以称为频率控制字fword,fword = 目标频率/基准频率 = 50khz/(10^9/1024*1024*16 * 20 *256)= 1024*1024*16 * 20 *256 * 50000/10^9=4294967;

当我们得到200Khz的波形频率时,丢失六个波形数据,也就是说在基准频率为0.0116hz时,我们可以实现在不丢失数据的前期下生成的波形频率范围为:0.0116hz到195.31khz。

下午练习:

设计一个能够调节频率,调节相位的波形发生器,通过独立按键进行调节。正弦波初始频率为10khz,每进行一次调节,频率增大10khz,初始相位为0度,每调节一下变化10度。也可以考虑通过独立按键控制切换波形。

第一种设计方式:

利用第三方软件提取波形的数据,两个波形数据分别为256个,我们通过调用两个单端口ip核rom,来实现波形的切换以及频率,相位的调节。

forum.jpg

架构设计视图

波形数据选择模块wave_selc,当选择使能信号selc_en为高电平时选择输出三角波数据,反之输出正弦波数据。

波形控制模块ctrl_wave设计分析

选择使能信号selc_en的控制逻辑由切换按键的标志信号来确定,标志信号来一次取反一次,默认标志信号为低电平。

forum.jpg

波形控制模块ctrl_wave设计分析

第二种法设计方式:

调用一个深度为512,宽度为8的单端口rom,我们将正弦波数据和三角波数据存储到该rom中。

forum.jpg

波形控制模块设计

第三种方式:调用一个深度为512,宽度为8的双端口rom:

forum.jpg

调用一个深度为512,宽度为8的双端口rom