打印

用PLL做分频有必要吗?

[复制链接]
4364|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
andyany|  楼主 | 2010-9-24 12:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PLL, AD, TPU, TE, rio
学习板上的晶振是50M,AD是TLC549。我想把549采到的数通过led输出显示。程序如下:
module amyad(clk,din,clk_ad,cs,dout);
    input         clk;  //50MHz
    input         din;
    output  clk_ad;
    output reg cs;
    output reg [7:0]dout;
   
    reg [4:0]cnt_fre;
    reg clk1M = 1'b0;
    reg attach;
    reg [4:0]cnt_ad;
    reg [7:0]temp;
   
    parameter period_fre = 5'd24;
    parameter period_ad = 5'd27;
   
    always@(negedge clk)
    if(cnt_fre != period_fre)  
                cnt_fre <= cnt_fre + 5'd1;
    else begin  cnt_fre <= 5'd0;
                clk1M   <= !clk1M; end
   
    always@(negedge clk1M)
    if(cnt_ad != period_ad)  
             cnt_ad <= cnt_ad + 5'd1;
    else     cnt_ad <= 5'd0;
   
    always@(negedge clk1M)
    if(cnt_ad >= 5'd20 && cnt_ad <= 5'd27)
          attach <= 1'b1;
    else  attach <= 1'b0;
   
    assign clk_ad = (attach && clk1M);
      
    always@(negedge clk1M)
    case(cnt_ad)
        5'd0:   cs <= 1'b1;
        5'd1:   dout <= temp;
        5'd18:   cs <= 1'b0;
        5'd20:   temp[7] <= din;
        5'd21:   temp[6] <= din;
        5'd22:   temp[5] <= din;
        5'd23:   temp[4] <= din;
        5'd24:   temp[3] <= din;
        5'd25:   temp[2] <= din;
        5'd26:   temp[1] <= din;
        5'd27:   temp[0] <= din;
   endcase
   
endmodule
功能仿真正常。
编译时,时序分析好像说从cnt_fre[4]到clk1M的时钟延迟大于数据延迟,可能不工作。
要是用PLL而不是程序中的计数分频,是不是好些。我的片子可是cyclone2 的EP2C8,对于这样的小工程,应该默认就能轻松搞定的呀。
高手指点一下吧!先谢过!

相关帖子

沙发
andyany|  楼主 | 2010-9-25 15:08 | 只看该作者
已解决。同步不足。如果感兴趣,请看新帖——
写了一个TLC549的采集显示程序,可是显示很怪异。
欢迎指教,谢谢!

使用特权

评论回复
板凳
crazyforu| | 2010-10-11 22:42 | 只看该作者
分频时钟很烂的,而且不上全局bufg,绝对不用

使用特权

评论回复
地板
swx2010| | 2010-10-26 13:56 | 只看该作者
2# andyany
请教最终成功的分频方案

使用特权

评论回复
5
andyany|  楼主 | 2010-10-28 14:46 | 只看该作者
回复楼上:
将所有的
always@(negedge clk1M)
改成
always@(negedge clk)
if(clk1M)
即可。

使用特权

评论回复
6
swx2010| | 2010-11-2 15:16 | 只看该作者
5# andyany
特别感谢,目前也有这样的问题

使用特权

评论回复
7
钻研的鱼| | 2010-11-2 15:56 | 只看该作者
知其然,也要知其所以然。
后一种,用的是同步时钟,不存在不稳定的因素

使用特权

评论回复
8
andyany|  楼主 | 2010-11-5 10:16 | 只看该作者
问题尚不止此。稍后我会整理上传,和感兴趣的朋友分享。
十分感谢大家!谢谢!

使用特权

评论回复
9
半个苹果| | 2010-11-5 18:09 | 只看该作者
如果把分频器单独写成一个模块,可能就没有问题了吧
建议看看综合后的RTL图

使用特权

评论回复
10
andyany|  楼主 | 2010-11-8 13:02 | 只看该作者
程序已经正常工作了。
这么一个小程序,如果不是一个大工程的一部分或特殊目的,个人觉得没有必要把分频器单独写成一个模块。
无论如何,谢谢楼上关注!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

664

帖子

3

粉丝