`以下是我的原代码,功能
仿真结果和触发信号截图,要实现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`