完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
求教
图中的这两句话该怎么理解啊,搞了好久也没懂 wire key_neg = ~keyr[2] & keyr[3]; //有按键被按下 wire key_pos = keyr[2] & ~keyr[3]; //有按键被释放
|
|
相关推荐
35个回答
|
|
按下是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
|
|
|
|
通过移位寄存器存储按键的电平,按键新电平存储在keyr[0]位,然后延时一个时钟,到达keyr[1],再延时一个时钟,到达keyr[2],再延时一个时钟,到达keyr[3]。通过keyr[2]、keyr[3]存储的新旧电平来确定按键边沿变化,0→1,上升沿,按你图中描述的是按键释放;1→0,下降沿,按键按下。
|
|
|
|
只有小组成员才能发言,加入小组>>
879个成员聚集在这个小组
加入小组4485 浏览 0 评论
特权同学 Verilog边码边学 Lesson01 Vivado下载与安装
2599 浏览 1 评论
玩转Zynq连载50——[ex69] FIR滤波器IP仿真实例
4275 浏览 2 评论
玩转Zynq连载49——[ex68] MT9V034摄像头的图像FFT滤波处理
5226 浏览 1 评论
玩转Zynq连载48——[ex67] Vivado FFT和IFFT IP核应用实例
5216 浏览 0 评论
1910浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 21:29 , Processed in 0.928255 second(s), Total 127, Slave 107 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号