目次
1. परिचय
Verilog डिजिटल सर्किट डिज़ाइन के लिए व्यापक रूप से उपयोग की जाने वाली हार्डवेयर विवरण भाषाओं (HDL) में से एक है। इसकी विशेषताओं में,case स्टेटमेंट शर्तीय शाखा को प्रभावी ढंग से वर्णित करने के लिए एक आवश्यक निर्माण है। यह विशेष रूप से स्टेट मशीन (FSMs) और मल्टीप्लेक्सर के डिज़ाइन में सामान्य है।
इस लेख में हम Verilog के case स्टेटमेंट की बुनियादी बातें, उन्नत उपयोग मामलों, और सर्वोत्तम प्रथाओं को कवर करेंगे। व्यावहार कोड उदाहरणों के साथ चरण-दर-चरण समझाया गया, यहाँ तक कि शुरुआती भी आसानी से अनुसरण कर सकते हैं, इसलिए अंत तक पढ़ना न भूलें।2. Verilog case स्टेटमेंट की बुनियादी सिंटैक्स
case स्टेटमेंट क्या है?
Verilog case स्टेटमेंट एक ऐसा निर्माण है जो दिए गए शर्त (सेलेक्टर) के आधार पर विभिन्न ऑपरेशनों को निष्पादित करता है। यह C में switch-case स्टेटमेंट के समान कार्य करता है, लेकिन कुछ मुख्य अंतर के साथ।
बुनियादी सिंटैक्स इस प्रकार है:case (expression)
condition1: statement1;
condition2: statement2;
condition3: statement3;
default: statement4; // Executes if no condition matches
endcase
case का बुनियादी उपयोग
निम्नलिखित उदाहरण एक सरल case स्टेटमेंट दिखाता है जो 2-बिट इनपुट sel के आधार पर विभिन्न सिग्नल out को असाइन करता है:module case_example(input [1:0] sel, output reg [3:0] out);
always @(*) begin
case (sel)
2'b00: out = 4'b0001;
2'b01: out = 4'b0010;
2'b10: out = 4'b0100;
2'b11: out = 4'b1000;
default: out = 4'b0000; // Default value for safety
endcase
end
endmodule
यहाँ, out sel के अनुसार विभिन्न मान लेता है।default` केस को शामिल करके, अप्रत्याशित इनपुट को सुरक्षित रूप से संभाला जाता है।case, casex, और casez के बीच अंतर
Verilog case के विस्तारित रूप प्रदान करता है: casex और casez। ये वाइल्डकार्ड की तरह काम करते हैं, जिससे कुछ बिट्स को अनदेखा किया जा सकता है।| सिंटैक्स | विशेषताएँ |
|---|---|
case | सटीक मिलान की आवश्यकता (डिफ़ॉल्ट व्यवहार) |
casex | X (अज्ञात) और Z (हाई इम्पीडेंस) मानों को अनदेखा करता है |
casez | केवल Z मानों को अनदेखा करता है |
casez का उपयोग करते हुए उदाहरण:casez (sel)
2'b1?: out = 4'b1111; // Matches if the MSB is 1
2'b01: out = 4'b0001;
default: out = 4'b0000;
endcase
यहाँ, 1? का अर्थ है कि जब तक सबसे महत्वपूर्ण बिट 1 है, यह नीचे के बिट की परवाह किए बिना मेल खाता है। 
3. case के व्यावहारिक उदाहरण
बुनियादी शर्तीय शाखा
निम्नलिखित उदाहरण एक सरल CPU डिकोडर दिखाता है जो 8-बिटopcode के मान के आधार पर विभिन्न ऑपरेशनों को निष्पादित करता है:module decoder(input [7:0] opcode, output reg [3:0] control_signal);
always @(*) begin
case (opcode)
8'h00: control_signal = 4'b0001; // NOP
8'h01: control_signal = 4'b0010; // ADD
8'h02: control_signal = 4'b0100; // SUB
default: control_signal = 4'b0000; // Undefined instruction
endcase
end
endmodule
स्टेट मशीन में case का उपयोग
case स्टेटमेंट FSMs (Finite State Machines) में रूप से उपयोग किया जाता है:typedef enum reg [1:0] {IDLE, RUN, STOP} state_t;
state_t current_state, next_state;
always @(posedge clk) begin
if (reset)
current_state <= IDLE;
else
current_state <= next_state;
end
always @(*) begin
case (current_state)
IDLE: next_state = RUN;
RUN: next_state = STOP;
STOP: next_state = IDLE;
default: next_state = IDLE;
endcase
end
यह 3-स्टेट FSM को लागू करता है। ऐसे सर्किट जिनमें स्टेट प्रबंधन की आवश्यकता होती है, उनके लिए case लॉजिक को बहुत स्पष्ट बनाता है।4. सर्वोत्तम प्रथाएँ और सावधानियाँ
Verilog मेंcase स्टेटमेंट का उपयोग करते समय निम्न बिंदुओं को ध्यान में रखें:1. हमेशा एक default केस शामिल करें
सभी संभावित इनपुट को कवरेज करना महत्वपूर्ण है। FPGA या ASIC सिंथेसिस में, default को छोड़ने से अनपेक्षित लैच जनरेशन हो सकता है।2. casex और casez का सावधानीपूर्वक उपयोग करें
These constructs can match unintended signals. Always simulate thoroughly when using them.casez (sel)
2'b1?: out = 4'b1111; // Matches if MSB = 1
2'b01: out = 4'b0001;
default: out = 4'b0000;
endcase
3. case का अधिक उपयोग न करें
For small conditional branches, if-else can be more intuitive and readable. Use case mainly when there are multiple options to handle.5. निष्कर्ष
In this article, we covered the following about the Verilogcase statement:
✅ Basic syntax and behavior
✅ Differences between case, casex, and casez ✅ Practical usage (conditional branching, FSMs)
✅ Key caveats and best practices
By using the case statement properly in Verilog, you can improve readability and prevent design errors. Apply these concepts in your future designs!Verilog में अगला क्या सीखें
Once you understand thecase statement, the next step is to study the always block and the difference between combinational and sequential circuits for deeper insights into Verilog design.


