最近学校进行项目设计,我们的设计中有一部分是利用小型的光电传感器(样式如下图),
利用学校所发的
开发板上外接端口的3.3v和gnd端口作为传感器的
电源,信号引脚接到另一个外接端口上,用来读取传感器发出的信号。当有障碍物接近时,信号输出为低,反之则高。当信号为高时,板子上的一个led小灯点亮。
问题是,无论信号如何变化,小灯始终没有反应,我的代码如下:
使用的软件是vivado(学校硬性要求),百度了很多帖子,没有找到类似的代码,
请各位大神指教,是我的代码本身就有问题还是其他的原因,谢谢!
- module gm(
- input clk,
- input cgq,
- output reg led
- );
- reg cgq_dly;
- wire cgq_vld;
-
- always @(posedge clk)
- cgq_dly <= cgq;
- assign cgq_vld = cgq & ~cgq_dly; //捕捉尖端脉冲信号
-
- always @(posedge clk)
- if(cgq_vld) //信号为高时,小灯点亮,反之则灭
- led <= 1'b1;
- else led <= 1'b0;
- endmodule
复制代码
-
1.当你检测到上升沿,也就是由0变为1,这个时刻,灯是亮的,然后还没等你看到灯亮呢,灯就灭了,也就是不管怎样压根看不到。
2.因为你让灯亮的条件是上升沿,而你的电平此后一直保持高,肯定不亮啊。
3.建议:把输入量cqg电平的高低直接作为灯亮判定条件,高电平----亮;低电平-----灭,很简单,不需要边沿检测。
4.拿个万用表,看一看你的输入量cqg是不是你加了障碍物和不加,会有高低电平的变化,并且高电平为3.3V,低电平0V.这很关键哈!
一周热门 更多>