E
EEEngineer
Guest
नमस्कार सभी,
यह वास्तव में मैं पिछले 3 दिनों के लिए संकलन करने के लिए जो कोशिश कर रहा है Verilog कोड के बारे में एक आम सवाल है.मैं Icarus Verilog संकलक का उपयोग कर रहा हूँ.
यह एक FSM समस्या है, जहाँ:
थोड़ा अनुधारा अगर'01 'पाया जाता
है तो और भेजा है एक कमान प्रिंट
'00 'अगर फिर एक उत्तर प्रिंट भेजा है
पाया जाता है.
यहाँ नीचे Verilog कोड और टेस्ट बेंच है, और किसी को भी, जहां त्रुटि .... है कृपया मुझे बताओ सकता है
** ------------------------------------------------ ----------------------------- **
Verilog कोड:
~~~~~~~~~
मॉड्यूल द्विआधारी (Clock, Reset, CMD_RES, बाहर);
इनपुट CMD_RES, Reset;
इनपुट Clock;
निर्गम बाहर;
बाहर reg;
पैरामीटर [1:0]
S1 = 2'b00, / / इस ist राज्य / /
S2 = 2'b01, / / राज्य जब एक 0 / प्राप्त
है /
S3 = 2'b10, / / राज्य जब एक 1 प्राप्त होता है, तो यह एक मुख्य प्रबंध निदेशक / भेजा है इसका मतलब है /
S4 = 2'b11; / / राज्य जब एक 0 प्राप्त होता है, तो यह एक RES / सेन है इसका मतलब है /
] सीएस [1:0 reg;
] एन एस [1:0 reg;
(posedge क्लॉक या negedge Reset) हमेशा @
प्रारंभ करना
(Reset == 1'b1)
यदि
सीएस <= S1;
अन्यथा
सीएस <= एन एस;
अंत
(CMD_RES या सीएस) हमेशा @
प्रारंभ करना
मामले (CS)
S1:
अगर (CMD_RES == 1'b1)
एन एस = S1;
अन्यथा
एन एस = S2;
S2:
अगर (CMD_RES == 1'b0)
प्रारंभ करना
= 0 बाहर आवंटित;
एन एस = S4;
अंत
अन्यथा
प्रारंभ करना
= 1 बाहर;
एन एस = S3;
अंत
S3:
अगर (CMD_RES == 1'b0 | | CMD_RES == 1'b1)
एन एस = S1;
S4:
अगर (CMD_RES == 1'b0 | | CMD_RES == 1'b1)
एन एस = S1;
endcase
अंत
endmoduleटेस्ट खंडपीठ:
~~~~~~~~~~~
मॉड्यूल test_FSM;
reg Clock;
reg Reset;
reg CMD_RES;
तार बाहर;
द्विआधारी एक (Clock, Reset, CMD_RES, बाहर);
/////// Clock घोषणा ///////
प्रारंभिक शुरू
Clock = 0;
हमेशा के लिए # 5 Clock = ~ Clock;
अंत
////// टेस्ट Vectors घोषणा //////
प्रारंभिक शुरू
CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b0; / / 0 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 $ खत्म;
अंत
प्रारंभिक
# 0 $ स्ट्रोब ($ बार, "उत्पादन -> बाहर% ख", बाहर है);
हमेशा
# 5 $ स्ट्रोब ($ बार, "उत्पादन -> बाहर%
ख 'है, बाहर);
endmodule
** ------------------------------------------------ ------------------------------ **एक बार मैं, मैं '' बाहर
= एक्स (हमेशा) हो रही है उपरोक्त कोड संकलन
कृपया मुझे इस त्रुटि को सुधारने में मदद ...बेसब्री, इंतज़ार
Thanx,
यह वास्तव में मैं पिछले 3 दिनों के लिए संकलन करने के लिए जो कोशिश कर रहा है Verilog कोड के बारे में एक आम सवाल है.मैं Icarus Verilog संकलक का उपयोग कर रहा हूँ.
यह एक FSM समस्या है, जहाँ:
थोड़ा अनुधारा अगर'01 'पाया जाता
है तो और भेजा है एक कमान प्रिंट
'00 'अगर फिर एक उत्तर प्रिंट भेजा है
पाया जाता है.
यहाँ नीचे Verilog कोड और टेस्ट बेंच है, और किसी को भी, जहां त्रुटि .... है कृपया मुझे बताओ सकता है
** ------------------------------------------------ ----------------------------- **
Verilog कोड:
~~~~~~~~~
मॉड्यूल द्विआधारी (Clock, Reset, CMD_RES, बाहर);
इनपुट CMD_RES, Reset;
इनपुट Clock;
निर्गम बाहर;
बाहर reg;
पैरामीटर [1:0]
S1 = 2'b00, / / इस ist राज्य / /
S2 = 2'b01, / / राज्य जब एक 0 / प्राप्त
है /
S3 = 2'b10, / / राज्य जब एक 1 प्राप्त होता है, तो यह एक मुख्य प्रबंध निदेशक / भेजा है इसका मतलब है /
S4 = 2'b11; / / राज्य जब एक 0 प्राप्त होता है, तो यह एक RES / सेन है इसका मतलब है /
] सीएस [1:0 reg;
] एन एस [1:0 reg;
(posedge क्लॉक या negedge Reset) हमेशा @
प्रारंभ करना
(Reset == 1'b1)
यदि
सीएस <= S1;
अन्यथा
सीएस <= एन एस;
अंत
(CMD_RES या सीएस) हमेशा @
प्रारंभ करना
मामले (CS)
S1:
अगर (CMD_RES == 1'b1)
एन एस = S1;
अन्यथा
एन एस = S2;
S2:
अगर (CMD_RES == 1'b0)
प्रारंभ करना
= 0 बाहर आवंटित;
एन एस = S4;
अंत
अन्यथा
प्रारंभ करना
= 1 बाहर;
एन एस = S3;
अंत
S3:
अगर (CMD_RES == 1'b0 | | CMD_RES == 1'b1)
एन एस = S1;
S4:
अगर (CMD_RES == 1'b0 | | CMD_RES == 1'b1)
एन एस = S1;
endcase
अंत
endmoduleटेस्ट खंडपीठ:
~~~~~~~~~~~
मॉड्यूल test_FSM;
reg Clock;
reg Reset;
reg CMD_RES;
तार बाहर;
द्विआधारी एक (Clock, Reset, CMD_RES, बाहर);
/////// Clock घोषणा ///////
प्रारंभिक शुरू
Clock = 0;
हमेशा के लिए # 5 Clock = ~ Clock;
अंत
////// टेस्ट Vectors घोषणा //////
प्रारंभिक शुरू
CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 CMD_RES = 1'b0; / / 0 / /
# 10 CMD_RES = 1'b1; / / 1 / /
# 10 $ खत्म;
अंत
प्रारंभिक
# 0 $ स्ट्रोब ($ बार, "उत्पादन -> बाहर% ख", बाहर है);
हमेशा
# 5 $ स्ट्रोब ($ बार, "उत्पादन -> बाहर%
ख 'है, बाहर);
endmodule
** ------------------------------------------------ ------------------------------ **एक बार मैं, मैं '' बाहर
= एक्स (हमेशा) हो रही है उपरोक्त कोड संकलन
कृपया मुझे इस त्रुटि को सुधारने में मदद ...बेसब्री, इंतज़ार
Thanx,