System Generator系列之多速率系统的使用(上)

前言

玩FPGA的都知道,跨时钟域进行处理设计是很常见的事,而常见的有使用FIFO或者双口RAM实现跨时钟域的数据传输,再进而处理,本次将讲一下在System Generator中使用多速率系统,分成以下三个步骤进行:

第一步:创建时钟域层次结构

第二步:创建异步通道

第三步:指定时钟域

 

在开始之前,需要运行一个.m的文件,用于之后对模块进行配置时所需要的变量赋值,该文件可在文末回复关键字获得,运行后三个主要窗口的结果如下:

创建时钟域层次结构

在新建的模型文件中放置两个信号源,分别为1MHz和20MHz,幅度也设置为不同,叠加后进行使用,配置分别如下:

使用Add将信号叠加,然后接入Gateway In,改个名字,模拟成ADC的输入:ADC In,结果如下:

Gateway In配置如下:

也许你已经猜到了,接着就是使用滤波器进行滤波了,不过这次是直接使用FIR的模块进行,不需要再分部件进行设计,FIR滤波器模块所在的位置如下:

把该模块添加三次,将使用一种半带滤波器进行滤波,半带滤波器是一种特殊的FIR滤波器,阶数只能为偶数,长度是奇数,滤波系数除了中间值为0.5外,其余的偶数系数都为0,系数集可以为:【coe,0,coe,...,0.5,....,coe,0】

FIR的模块添加好后,再添加一个FDATool进行该种滤波器的系数生成,FDATool的配置如下:

然后看下此时的滤波系数:

对前两个FIR进行同样的参数配置:

再加一个FDATool对第三个FIR进行设计

第三个FIR滤波器充当一个通道的作用

配置完成后,连接如下:

再将加上控制位数的模块,以及Gateway Out和观察的仪器,添加完成后,并连接如下

其中Mult是用于缩放信号幅度的,因此还需要添加一个幅度控制的常量与信号相乘,并且将连接Mult的Gateway In的配置做下更改

最终连接好的图:

其中System Generator的配置:

点击OK保存并关闭,将运行时间改为:30000/491.52e6,然后RUN,在频谱分析仪中观察结果:

如果观察这个你觉得有点看不懂频率的信息,可以点击右上方的Peak Finder,再将Value全部勾起,就可观察到以下的结果,也可以看出滤波器是想把20MHz滤除。

此时System Generator的环境通过该设计自动传播不同的数据速率,但是在硬件实现,也就是在FPGA中实现的时候,最优的实现是使用和数据频率相同的时钟,但是,在这个环境中,时钟是被抽象化了的,所以以下将演示如何以最有效的方式来创建一个理想的实现方式。

为使用System Generator高效的实现多数据率(或多时钟)的设计,应该捕获各自的层次结构中以相同的数据率(或时钟频率)运行的每个部分,单独的层次则使用FIFO进行链接。

先分析下刚刚的设计,会发现有两个明显的时钟域和一个不太明显的时钟域:

  • 增益控制的SCALE输入可以从CPU配置,因此运行的是和CPU相同的时钟频率;
  • 输出级的实际增益控制逻辑应该和FIR的输出数据以相同的频率运行,这样可以使得后端的模块更有效的连接到该系统中。
  • 不太明显的地方就是滤波器那一部分,在最开始数字滤波器设计的部分,使用了一个由System Generator提供的复杂IP,例如FIR Compiler会自动使用超频的方式提供更高效的硬件,简单再描述下,就是使用100MHz的时钟频率让FIR Compiler进行工作会消耗40个乘法器资源,若使用500MHz的时钟频率则仅消耗8个乘法器资源(8=40*100/500),整个滤波器的链路因此可以使用一个单独的时钟域,第一个FIR Compiler的实例在一个很大的时钟频率下执行,随后的实例将自动利用过采样的优势进行。

根据上述的三种时钟域开始划分不同的时钟层次

选中所有的滤波器部分,包括FDATool,如下所示:

鼠标移到右下角那个省略号,若没显示了,就重新圈一下滤波器部分,会再次出现,移到对应位置后会出现一排选项,点Create Subsystem创建子系统,然后改名为DDC:

将图进行美化了一下摆放的位置(纯属强迫症~)

然后依次将滤波器后端的增益控制部分以及幅度控制的SCALE也创建成子系统,分别命名:Gain Control和Ctrl,弄好后,如下:

完成以上的操作后,每个子系统的逻辑将以不同的时钟频率执行,时钟域因为彼此不同步,所以在子系统之间会采集到错误数据。所以下一步将在不同的时钟域之间创建异步通道,以确保在设计的时候,数据可以在不同的时钟域中准确的传输。



使用到的文件获取链接:

链接

提取码:vq4e



 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值