LWLA1034 和LWLA2034 支持外部同步时钟,并且支持时钟采集边缘的选择.
用下面的文字和图片记录我检测此功能的过程.
这是硬件连接,我用另外一台逻辑分析仪,充当检测信号发生器.
我们这次检测的目的是看在设置外部时钟上升(下降)边缘采集的时候,是否正确采集到数据,
并且确定是在上升(或者下降)边沿进行了触发.因此在构造检测波形的时候我们将考虑到这两个边缘,在一个检测程序里面实现,之后由逻辑分析仪进行边缘的分离.
我编写程序如下 :
`define ACT_BIT 2
module top(
input clk_1,
output reg ext_clk,
output reg [34:1] dch
);
assign clk = clk_1 ;
reg [31:0] free_cntr ;
always @(posedge clk) free_cntr <= free_cntr+1 ;
reg [33:0] inc_cntr;
reg [33:0] dec_cntr;
initial begin
{free_cntr,inc_cntr,dec_cntr} = 0;
end
always @ (posedge clk) if ((free_cntr[`ACT_BIT:`ACT_BIT-1] == 0)&&(free_cntr[`ACT_BIT-2:0]==0)) inc_cntr<=inc_cntr+1;
always @ (posedge clk) if ((free_cntr[`ACT_BIT:`ACT_BIT-1] == 2)&&(free_cntr[`ACT_BIT-2:0]==0)) dec_cntr<=dec_cntr-1;
always @ (posedge clk)
if ((free_cntr[`ACT_BIT:`ACT_BIT-1] ==3)&&(free_cntr[`ACT_BIT-2:0]==0)) dch[34:1]<=inc_cntr[33:0] ;else
if ((free_cntr[`ACT_BIT:`ACT_BIT-1] ==1)&&(free_cntr[`ACT_BIT-2:0]==0)) dch[34:1]<=dec_cntr[33:0] ;
always @ (posedge clk)
if ((free_cntr[`ACT_BIT:`ACT_BIT-1] == 0)&&(free_cntr[`ACT_BIT-2:0]==0) )ext_clk<=1'b1;
else
if ((free_cntr[`ACT_BIT:`ACT_BIT-1] == 2)&&(free_cntr[`ACT_BIT-2:0]==0) )ext_clk<=1'b0;
endmodule
`timescale 10ns/10ns
module tb;
reg clk ;
wire [33:0] dch;
wire ext_clk;
chk_ext_clk chk_ext_clk(
.clk(clk),
.ext_clk(ext_clk),
.dch(dch)
);
always #10 clk=~clk;
initial begin
clk=0;
end
endmodule
仿真后得到波形图如下 :
这个图不是很清晰 但是也能看出来 DCH上的数据是依次增加的,而在下降边缘,数据是依次减小的.达到检测代码的设计目的
我们用这个波形接在逻辑分析仪上进行实验:
连接好硬件将检测程序下载,之后开启逻辑分析仪,设置外部CLK 上升边缘采集.如下,
另外为了方便查看,我们也将CH1-CH8 设置为一个组,组名为CNTR,进行16进制显示:
采集一次看到结果如下:
放大一下 看看细节 :
我们看到了确实达到了上升边缘采集的效果.
同样设置一下下降边沿采集,之后看到采集到如下图:
看到依次递减,结果正确.
http://item.taobao.com/item.htm?spm=a1z10.1.w4004-2467580809.6.RuJJ2B&id=19834430293 购买链接!