完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`以下是我的原代码,功能仿真结果和触发信号截图,要实现cpld检测特定时序触发led开闭的功能,功能仿真没有问题,但是编译后逻辑单元为0,且利用STM32发clk和sda信号,led没有反应。但是单独使用clk信号,做一个简单的分频器触发led翻转没有问题。 提示输出引脚被设置为电源或者地,输入引脚没有驱动逻辑。但是单独使用clk分频驱动led没有问题,逻辑单元数也不为0 求大神指点!!! `timescale 1us/ 1us module fp_verilog( clk,rst_n, sda, led ); input clk; //时钟信号 SCL input rst_n; //复位信号 低电平有效 input sda; //数据信号 SDA output led; //指示灯 1-亮 0-灭 reg s1; always @(negedge sda or negedge rst_n) if(!rst_n) s1 <= 1'b0; else if(!sda) begin if(clk) begin s1 <= 1'b1; #3000; s1 <= 1'b0; end end reg s2; always @(posedge sda or negedge rst_n) if(!rst_n) s2 <= 1'b0; else if(sda) begin if(clk) begin s2 <= 1'b1; #3000; s2 <= 1'b0; end end reg state; always @(posedge s1 or posedge s2 or negedge rst_n) if(!rst_n) state <= 1'b0; else if(s1) state <= 1'b1; else if(s2) state <= 1'b0; reg[1:0] data; always @(posedge clk or negedge rst_n) if(!rst_n) data[1:0] <= 2'd0; else if(sda&&state) data <= data + 2'd1; else if(!state) data[1:0] <= 2'd0; reg led_r; always @(negedge state or negedge rst_n) if(!rst_n) led_r <= 1'b0; else if(data==2'd1) led_r <= 1'b1; else if(data==2'd0) led_r <= 1'b0; assign led = led_r; endmodule` |
|
相关推荐
1个回答
|
|
这是运行代码么?
如果是,那代码有问题,问题出在#3000。它只在仿真模式有效,编译时这些直接就优化掉了,相当于你的s1/s2在每段代码内被赋值两次(通常取最后一次赋值结果)。 //------验证 你把#3000去掉,看仿真结果与你现在的运行结果是不是一致。 //------其他 可以尝试“插入代码”或者“添加附件”,错误信息也可以一起发出来。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1193 浏览 1 评论
1108 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1312 浏览 0 评论
902 浏览 0 评论
2136 浏览 0 评论
1395 浏览 32 评论
5595 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 11:33 , Processed in 0.585120 second(s), Total 72, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号