广告

原创 DSP_Builder中时钟信号的处理方式

2012-12-21 16:20 1191 0 分类: FPGA/CPLD 文集: DSP_Builder开发工具

刚开始接触DSP_Builder工具时可能会对clock模块有些疑惑。Clock模块如下图所示。

20121221161858780001.png,我来说一下我的疑惑,看大家是否有同感,把clock放在你要设计算法的model中,此外还有一个和clock差不多的东西,那就是20121221161905517002.png,字面意思倒是好理解,“引出时钟”,这个翻译有些不专业,但意思差不多,那就是由原时钟引出的时钟,那这两个东西连管教都没有,到底怎么用呢?

首先要说明一点,这两个时钟对于我们综合后的代码来说只是提供了两个接口,而真正引出时钟的含义只是在我们仿真时才是有意义的。怎么理解呢?simulink在仿真我们代码时需要一个统一的时间标准,这个时间标准就是我们的Clock模块,一个程序中标准只有一个,如果我们想设计多时钟程序怎么办,那就只能在原时钟基础上生成;而当我们生成可综合的代码时,这个引出时钟和原时钟就没有任何关系了,我们必须在外部通过逻辑代码或者PLL提供时钟信号,要保证和仿真时的频率关系和相位关系一致。

那这两个时钟连输出端口都没有,我们怎样使用呢?下面笔者给大家讲述一下Altera为什么要这么设计。FPGA设计时主张同步时序设计方法,先看一下同步时序的定义。

20121221161912658003.png

看到这个定义大家应该明白了吧,用一个clock模块是对应同一时钟,而是用clock_derived模块是对应多个时钟的情况。那还没有说端口的问题呢?其实这种设计是在帮我们省事,为什么那么说呢?当我们仔细观察各模块的参数就知道了,只有数据源模块才让我们填写参考时钟(如输入口(input)、计数器(counter)等),中间模块根本没有给我们设计参考时钟的机会,这种设计就使我们必须使用同步时序设计方法,且一条数据通道上仅使用一个时钟。

为了印证上述结论,笔者做了一个实验。

20121221161918309004.png

如上图所示,sysclk周期为20nsclksysclk的二分频,counter的参考时钟是sysclkcounter1的参考时钟clk。下面是仿真结果。

20121221161923940005.png

 

20121221161929206006.png

 

由这两个图可知,笔者的结论是正确的,delay模块的延时是延时的各部分时钟周期。

下面说说笔者为什么要进行这个实验,笔者之前设计了一个小波分解算法。当数据流按照奇偶性分离后,奇数据流和偶数据流的频率都为原频率的1/2,并且需要执行一步计算,那就是当前奇数流数据和前一个奇数流数据求和。在没得到上述结论之前,笔者采用的办法是,把前一个奇数流数据延时2个时钟在和当前数据求和,这中方法可以得到正确的结果,但多用了一组逻辑单元,造成逻辑单元的浪费相当严重。

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
liu880923_896597217 2012-12-21 15:01
Delay模块和Memory Delay模块深入剖析之三
一个好的算法并不只是讲求功能的实现,功能的实现只是前提,而消耗更少的资源(更省钱)提供相同的功能才是王道。本文就给大家说一下笔者整理的一些省钱的方法。 1、    器件的选型。对于Altera公司的...
liu880923_896597217 2012-12-21 10:45
Delay模块与Memory Delay模块深入剖析之二
上一篇博文我们认识到了Delay模块和Memory Delay模块的区别,但是,貌似我们还有个问题没有明确,认识到它们的区别到底有什么作用呢?笔者先来将一个自己在DSP_Builder算法设计过程中...
liu880923_896597217 2012-12-21 10:05
Delay模块和MemoryDelay模块深入剖析之一
    用过DSP_Builder工具的朋友一定用过Delay模块,这个可是算法设计中必须用到的东西,它能让你的数据延时几个时钟再出现,那么在这个模块同一个Library中你是否注意到还有一个Mem...
我要评论
0
0
广告