检测边沿问题

[复制链接]
 楼主| 廊桥拾梦 发表于 2013-2-26 19:02 | 显示全部楼层 |阅读模式
大家帮忙比较下面两种边沿信号的检测程序那个好,优势何在
reg [1:0] SCKr;                          //内部寄存器
always @(posedge clk)
SCKr <= {SCKr[1], SCK}; //内部寄存器对SCK计数

wire SCK_risingedge = (SCKr[1:0]==2'b01);  //检测出SCK的上升沿
wire SCK_fallingedge = (SCKr[1:0]==2'b10);  //检测出SCK的下降沿
还有下面这种方法



reg [2:0] SCKr;                          //内部寄存器
always @(posedge clk)
SCKr <= {SCKr[2:1], SCK}; //内部寄存器对SCK计数

wire SCK_risingedge = (SCKr[2:1]==2'b01);  //检测出SCK的上升沿
//wire SCK_fallingedge = (SCKr[2:1]==2'b10);  //检测出SCK的下降沿
 楼主| 廊桥拾梦 发表于 2013-2-27 08:11 | 显示全部楼层
怎么都是过来看帖没人回帖的啊
wangqiyin 发表于 2013-2-28 15:36 | 显示全部楼层
老兄,呵呵,刚开始学FPGA吧。那种写的都不好。第一种:会引入很多毛刺,不提倡这么写。第二种:在你的技术上稍改会好些
reg [2:0] SCKr;                          //内部寄存器
always @(posedge clk)
SCKr <= {SCKr[1:0], SCK}; //内部寄存器对SCK计数

wire SCK_risingedge = (SCKr[2:0]==3'b011);  //检测出SCK的上升沿
//wire SCK_fallingedge = (SCKr[2:1]==2'b10);  //检测出SCK的下降沿
 楼主| 廊桥拾梦 发表于 2013-3-14 15:19 | 显示全部楼层
wangqiyin 发表于 2013-2-28 15:36
老兄,呵呵,刚开始学FPGA吧。那种写的都不好。第一种:会引入很多毛刺,不提倡这么写。第二种:在你的技术 ...

你的方法很好啊学习了!
GoldSunMonkey 发表于 2013-3-14 19:32 | 显示全部楼层
廊桥拾梦 发表于 2013-3-14 15:19
你的方法很好啊学习了!

嗯嗯,不错
wmsk 发表于 2013-3-14 19:56 | 显示全部楼层
方法不错啊
oucchina 发表于 2013-3-27 12:57 | 显示全部楼层
如果采样时钟比检测信号频率高很多的话,最好每三个以上的采样时钟检一次。
ifpga 发表于 2013-3-27 13:36 | 显示全部楼层
GoldSunMonkey 发表于 2013-3-27 23:27 | 显示全部楼层
ifpga 发表于 2013-3-27 13:36

怎么了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

104

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部