verilog里可不可以同时对上升沿和下降沿计数

always@(posedgeeocornegedgeI/O_CLK)i<=i+1;这个可以实现吗... always@(posedge eoc or negedge I/O_CLK)
i<=i+1;
这个可以实现吗
展开
 我来答
宋桓公
推荐于2017-11-26 · TA获得超过912个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:113万
展开全部
你这种写法可以实现,不过变量I/O_CLK,这种写法不合法,建议写成IO_CLK,还有verilog中一般不建议直接使用negedge去检测除复位信号以外的信号的下降沿,因为FPGA中的寄存器基本上都是上升沿敏感的,如果直接使用negedge去检测下降沿会多产生额外的一个非门,建议使用如下方法:
//电平检测模块
1 reg F1,F2; // F2 Previous State, F1 Current State
2 always@(posedge CLK or negedge RSTn)
3 if(!RSTn)
4 begin
5 F1<=1'b0;
6 F2<=1'b0;
7 end
8 else
9 begin
10 F1<= A;
11 F2<= F1;
12 end
13
14 wire Aup = F1 & !F2; //当Aup为1时,表明产生了一个上升沿
15 wire Adown = F2 & !F1//当Adown为1,时表明产生了一个下升沿

注意Aup,Adown变高后,只会持续一个时钟周期,就会归零,所以你可以
再做一个计数器,专门检测Aup,Adown,从而到达计数的目的。
对了,如果你想检测eoc 的上升沿,同时检测I/O_CLK的下降沿,可以这么写,

充分利用FPGA的并行特性嘛。
//------------------------------------------------------------------------------
1 reg F1,F2; // F2 Previous State, F1 Current State
2 always@(posedge CLK or negedge RSTn)
3 if(!RSTn)
4 begin
5 F1<=1'b0;
6 F2<=1'b0;
7 end
8 else
9 begin
10 F1<= eoc;
11 F2<= F1;
12 end
13
14 wire eocUp = F1 & !F2; //检测eoc的上升沿
//-------------------------------------------------------------------------------------
1 reg F3,F4; // F4 Previous State, F3 Current State
2 always@(posedge CLK or negedge RSTn)
3 if(!RSTn)
4 begin
5 F3<=1'b0;
6 F4<=1'b0;
7 end
8 else
9 begin
10 F3<= IO_CLKDown;
11 F4<= F3;
12 end
13
14 wire IO_CLKDown = F4 & !F3; //检测IO_CLK的下降沿
纯手打,望采纳,欢迎追问~~
百度网友9963063
2013-11-01
知道答主
回答量:1
采纳率:0%
帮助的人:1443
展开全部
不可综合,但是可以行为仿真。
如果要实现综合的话,需要2组寄存器分别作用于一个clock, 然后输出用加法器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式