请问各路大神 这两句话该怎么理解啊?
图中的这两句话该怎么理解啊,搞了好久也没懂
wire key_neg = ~keyr[2] & keyr[3]; //有按键被按下
wire key_pos = keyr[2] & ~keyr[3]; //有按键被释放
特权的代码吧? 写的挺好
就是一个边沿检测,一个检测上升沿,一个检测下降沿
楼上说得对 边沿检测
二楼正解,keyr是信号key的几T延迟,上面两句话是边沿检测。
喜欢这个风格,以前都是一个一个写,又学了一招
边沿检测
论坛消息提醒这个还不太会用,感谢你们的解答
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
按下是0,松开是1,key{3]<=key[2]
key_neg = 1时,有按键被按下,那么此时keyr[2] = 0,keyr[3] = 1, 而keyr[3:0],是key依次从低位输入的,那么key的第一次输入应该是0,经过两个周期,keyr[2] = 0,keyr[3]=1.此时key由于是相乘的结果,按键按下为0,不按下为1,所以,只要有按键按下,key就是0,然后就会产生一个下降沿,如果有上升沿,必须所有按键都释放,才能出现高电平
原代码 keyr 在时钟的驱动下,做了一个移位寄存器 ,就得到了4个时刻的值,便于理解, 如果你把keyr[2]的值当做现在的值,keyr[3]的值当做刚才的值。那么如果检测到下降沿就是:刚才是1 现在是0 ;同理上升沿:刚才是0 现在是1
那这种写法不就是没办法确定被按下的是哪个键了么
你的代码不全,按照常理来说这个是抓边沿的。第一个是抓下降沿,第二个是抓上升沿。我估计下面的代码还有 keyr[2]<=某值;keyr[3]<=keyr[2].这样keyr[3]的值会比keyr[2]延迟一个clk,上述某值一旦变化,你说的式子就能抓取到,你可以自己定义一个初始值,画一下就明白了。
mark