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

2012-12-21 16:20 2989 18 18 分类: 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条评论)

登录后参与讨论
我要评论
0
18
关闭 站长推荐上一条 /2 下一条