打印

cpld 测量相位差,谢谢!

[复制链接]
1528|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armwork|  楼主 | 2008-12-16 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是XILINX CPLD,VERILOG 编程. 

有三个信号: 
 2个周期信号A和B,占空比不一样,要测量他们的沿差; 
 1个时钟clk. 

思路如下: 
 当第1个信号A上升沿到来的时候,记数器清0,并且允许计数; 
 当第2个信号B上升沿到来的时候,记数器停止计数,读出计数结果. 

困难的地方: 
 1.在时钟信号clk下,如何判断A和B的上升沿呢? 
 如果不置于clk框架内,又会造成在不同always模块内,对同一变量赋值的错误. 
 2. 当A和B的上升沿很靠近时,会产生毛刺吗? 

我的代码如下: 
 always @ (posedge clk) 
    begin 
       if (!A)                                    
        EdgeA=1; 
       if (!B) 
        EdgeB=1; 
                 
       if (A && EdgeA) 
        begin 
           start=1;  //start 计数开关 
           cnt=0;   
              EdgeA=0;                                           
        end                                                                  
                                                   
       if (B && EdgeB) 
           begin 
              start=0; 
              result=cnt; //保存结果 
              EdgeB=0; 
           end                                           

       if (start) 
           cnt=cnt+1; 
    end 

相关帖子

沙发
zhaoshifen| | 2008-12-19 17:54 | 只看该作者

检测上升沿代码



    always @(posedge clk or posedge reset)
    begin
        if(reset==0)
        begin    
            n1 <= 1;
            n2 <= 1;
        end
        
        else        
        begin
               n1 <= 被检测信号;
               n2 <= n1;
        end
    end

在检测上升沿沿模块中
if(n1 && !n2)

同步设计不会产生毛刺

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝