यह '10101' गैर अतिव्यापी अनुक्रम संसूचक के लिए वेरिलोग कोड है। जब मैं इस कोड को संकलित करता हूं, तो यह कोई त्रुटि नहीं दिखाता है। लेकिन, जब मैं कोड का अनुकरण करता हूं, मॉडलसिम काम करना बंद कर देता है और अनिश्चित काल के लिए जमा देता है। मुझे त्रुटि नहीं मिल रही है या समस्या कहां है।
module seq_det(y,x,clk,rst);
output reg y;
input x,clk,rst;
reg[2:0] pr_st,nx_st;
parameter s0=3'b000;
parameter s1=3'b001;
parameter s2=3'b010;
parameter s3=3'b011;
parameter s4=3'b100;
always {y,nx_st}= fsm(x,pr_st);
always @(posedge clk)
begin if(rst)begin
y=0;
nx_st=s0;
end
else nx_st=pr_st;
end
//function defined here
function [3:0] fsm;
input sm_x;
input sm_ps;
reg sm_y;
reg[2:0] sm_ns;
begin
case(sm_ps)
s0:begin
if(sm_x==0) begin
sm_y=0;
sm_ns=s0;
end
else begin
sm_y=0;
sm_ns=s1;
end
end
s1:begin
if(sm_x==1) begin
sm_y=0;
sm_ns=s1;
end
else begin
sm_y=0;
sm_ns=s2;
end
end
s2:begin
if(sm_x==0) begin
sm_y=0;
sm_ns=s0;
end
else begin
sm_y=0;
sm_ns=s3;
end
end
s3:begin
if(sm_x==1) begin
sm_y=0;
sm_ns=s1;
end
else begin
sm_y=0;
sm_ns=s4;
end
end
s4:begin
sm_y=sm_x;
sm_ns=s0;
end
endcase
fsm={sm_y,sm_ns};
end
endfunction
endmodule
1 उत्तर
जब मैं वीसीएस के साथ आपका कोड चलाता हूं, तो मुझे यह संदेश मिलता है:
चेतावनी- [PALF] संभावित हमेशा लूप मिला इस हमेशा ब्लॉक का कोई ईवेंट नियंत्रण या विलंब कथन नहीं होता है, यह सिमुलेशन में एक अनंत लूप का कारण बन सकता है।
यह आपके कोड में इस लाइन को इंगित करता है:
always {y,nx_st}= fsm(x,pr_st);
जब मैं इसे इसमें बदलता हूं तो संदेश गायब हो जाता है:
always @* {y,nx_st}= fsm(x,pr_st);
@*
एक अंतर्निहित संवेदनशीलता सूची है। always
ब्लॉक अब केवल तभी चालू होगा जब x
या pr_st
का मान बदलेगा।
नोट: आप edaplayground पर अन्य सिमुलेटर पर भी अपना कोड आज़मा सकते हैं।
संबंधित सवाल
नए सवाल
verilog
वेरिलोग एक हार्डवेयर विवरण भाषा (एचडीएल) है जिसका उपयोग इलेक्ट्रॉनिक सिस्टम को मॉडल करने के लिए किया जाता है। इसका उपयोग आमतौर पर डिजिटल लॉजिक चिप्स के डिजाइन, सत्यापन और कार्यान्वयन में किया जाता है।