以下是我的原代碼,功能仿真結果和觸發信號截圖,要實作cpld檢測特定時序觸發led開閉的功能,功能仿真沒有問題,但是編譯后邏輯單元為0,且利用stm32發clk和sda信號,led沒有反應。但是單獨使用clk信號,做一個簡單的分頻器觸發led翻轉沒有問題。求大神指點!!!
`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=https://bbs.csdn.net/topics/=2'd1) led_r <= 1'b1;
else if(data=https://bbs.csdn.net/topics/=2'd0) led_r <= 1'b0;
assign led = led_r;
endmodule

uj5u.com熱心網友回復:
提示的幾個警告,輸出引腳被置為電源或者地,3個輸入引腳沒有驅動邏輯,但是這里我已經配置好引腳了uj5u.com熱心網友回復:
#3000;是不可綜合的,只能用在仿真上。
這樣的結果,s1,s2 復位后永遠是0
別的代碼沒仔細看
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/251141.html
標籤:硬件設計
上一篇:cpu 配置fpga done信號有的時候不被拉高,有的時候被拉高
下一篇:如何讀取電腦的列印輸出資料?
