我用的是XILINX CPLD,VERILOG 编程. <br /><br />有三个信号: <br /> 2个周期信号A和B,占空比不一样,要测量他们的沿差; <br /> 1个时钟clk. <br /><br />思路如下: <br /> 当第1个信号A上升沿到来的时候,记数器清0,并且允许计数; <br /> 当第2个信号B上升沿到来的时候,记数器停止计数,读出计数结果. <br /><br />困难的地方: <br /> 1.在时钟信号clk下,如何判断A和B的上升沿呢? <br /> 如果不置于clk框架内,又会造成在不同always模块内,对同一变量赋值的错误. <br /> 2. 当A和B的上升沿很靠近时,会产生毛刺吗? <br /><br />我的代码如下: <br /> always @ (posedge clk) <br /> begin <br /> if (!A) <br /> EdgeA=1; <br /> if (!B) <br /> EdgeB=1; <br /> <br /> if (A && EdgeA) <br /> begin <br /> start=1; //start 计数开关 <br /> cnt=0; <br /> EdgeA=0; <br /> end <br /> <br /> if (B && EdgeB) <br /> begin <br /> start=0; <br /> result=cnt; //保存结果 <br /> EdgeB=0; <br /> end <br /><br /> if (start) <br /> cnt=cnt+1; <br /> end <br /> |
|