最近学校进行项目设计,我们的设计中有一部分是利用小型的光电传感器(样式如下图),
利用学校所发的
开发板上外接端口的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.图上的红外传感器需要进行灵敏度调节,即那个旋钮,用示波器看下out引脚电平是否有高低电平的输出,还有看下输出电压是否为3.3V;
2.对于FPGA来说在out引脚进行分配时,看下电平等级是否为3.3V。
3.LED灯,自己给个高低电平测试一下能不能亮。
软件问题:
仿真一下就知道了,时序是不是你要求的
另外我个人是不推荐去判断 wire 型数据的。
还有就是楼上所说的,你只给了一个周期的使能信号,感觉应该是看不到。
你可以将输入信号的上升沿作为使能的开始,下降沿作为使能的结束。
祝成功
一周热门 更多>