tag 标签: derive_clock

相关博文
  • 热度 19
    2012-12-21 16:20
    3019 次阅读|
    0 个评论
    刚开始接触 DSP_Builder 工具时可能会对 clock 模块有些疑惑。 Clock 模块如下图所示。 ,我来说一下我的疑惑,看大家是否有同感,把 clock 放在你要设计算法的 model 中,此外还有一个和 clock 差不多的东西,那就是 ,字面意思倒是好理解,“引出时钟”,这个翻译有些不专业,但意思差不多,那就是由原时钟引出的时钟,那这两个东西连管教都没有,到底怎么用呢? 首先要说明一点,这两个时钟对于我们综合后的代码来说只是提供了两个接口,而真正引出时钟的含义只是在我们仿真时才是有意义的。怎么理解呢? simulink 在仿真我们代码时需要一个统一的时间标准,这个时间标准就是我们的 Clock 模块,一个程序中标准只有一个,如果我们想设计多时钟程序怎么办,那就只能在原时钟基础上生成;而当我们生成可综合的代码时,这个引出时钟和原时钟就没有任何关系了,我们必须在外部通过逻辑代码或者 PLL 提供时钟信号,要保证和仿真时的频率关系和相位关系一致。 那这两个时钟连输出端口都没有,我们怎样使用呢?下面笔者给大家讲述一下 Altera 为什么要这么设计。 FPGA 设计时主张同步时序设计方法,先看一下同步时序的定义。 看到这个定义大家应该明白了吧,用一个 clock 模块是对应同一时钟,而是用 clock_derived 模块是对应多个时钟的情况。那还没有说端口的问题呢?其实这种设计是在帮我们省事,为什么那么说呢?当我们仔细观察各模块的参数就知道了,只有数据源模块才让我们填写参考时钟(如输入口( input )、计数器( counter )等),中间模块根本没有给我们设计参考时钟的机会,这种设计就使我们必须使用同步时序设计方法,且一条数据通道上仅使用一个时钟。 为了印证上述结论,笔者做了一个实验。 如上图所示, sysclk 周期为 20ns , clk 是 sysclk 的二分频, counter 的参考时钟是 sysclk , counter1 的参考时钟 clk 。下面是仿真结果。     由这两个图可知,笔者的结论是正确的, delay 模块的延时是延时的各部分时钟周期。 下面说说笔者为什么要进行这个实验,笔者之前设计了一个小波分解算法。当数据流按照奇偶性分离后,奇数据流和偶数据流的频率都为原频率的 1/2 ,并且需要执行一步计算,那就是当前奇数流数据和前一个奇数流数据求和。在没得到上述结论之前,笔者采用的办法是,把前一个奇数流数据延时 2 个时钟在和当前数据求和,这中方法可以得到正确的结果,但多用了一组逻辑单元,造成逻辑单元的浪费相当严重。