atom100 发表于 2014-11-5 07:38:36

时序逻辑中,像下面这样写 没问题吧 ?

时序逻辑中,像下面这样写 没问题吧 ?只见过 有一个按键输入的 key1的情况 ,
加上key2 编译能通过,两个按键 都加上可以吧 ?
regflg;
always @(posedge ram_clk or negedge key1or negedge key2 )
                if(!key1 )
                       flg <= 1'b1;
                else if(!key2 )
                       flg <= 1'b0;

lusson 发表于 2014-11-5 08:25:46

楼主,还少了个else,一般建议补全。

bx2231 发表于 2014-11-5 09:00:37

放到开发工具里试一下嘛。看综合出来的电路有没有问题。

far_infrared 发表于 2014-11-5 09:21:34

这样的逻辑,只要key1或key2上有个小的毛刺都有可能误触发;综合成电路就是key1为寄存器的置位端,key2为清零端;如果key1和key2同时有效,key1优先级高。不知楼主想要的是不是这样的功能。

AutumnKing 发表于 2014-11-5 09:26:38

2楼说的有理,逻辑要完整好些。

tangkuan660 发表于 2014-11-5 10:16:44

对于外部的按键输入,最好搞成同步触发,同步释放,同时还要考虑1ms左右的防抖延时。

lianx325 发表于 2014-11-5 10:29:26

我感觉有问题

aammoo 发表于 2014-11-5 13:05:25

没问题,不过用三个沿来触发要小心,不一定都能综合。一个沿的是同步复位的触发器,两个沿的是异步复位的触发器,三个沿的是异步复位和置位的触发器。楼主的逻辑刚好符合这个条件。

7802848 发表于 2014-11-5 16:23:42

不行
always@(posedge clk or negedge rst_n)
if(!rst_n)
    xxxx
else if(key1)
xxxx
   else if(key2)
   xxxxx

mcupro 发表于 2014-11-9 13:43:07

7802848 发表于 2014-11-5 16:23
不行
always@(posedge clk or negedge rst_n)
if(!rst_n)


应该使用这种同步的写法
楼主的写法叫做“敏感边缘信号满天飞”
页: [1]
查看完整版本: 时序逻辑中,像下面这样写 没问题吧 ?