एचडीएल (हार्डवेयर विवरण भाषा) भाषा का प्रकार है, जिसका इस्तेमाल वेरिलोग / वीएचडीएल बनाम गैर-एचडीएल जावास्क्रिप्ट के रूप में किया जाता है।
RTL (रजिस्टर-ट्रांसफर लेवल) एब्सट्रैक्शन का एक स्तर है जिसे आप लिख रहे हैं। मैं जिन तीन स्तरों का उल्लेख करता हूं, वे हैं, आरटीएल, गेट-लेवल।
व्यवहार में अमूर्तता की उच्चतम परत होती है जो समग्र व्यवहार का वर्णन करती है और अक्सर संश्लेषित नहीं होती है, लेकिन सत्यापन के लिए उपयोगी होती है।
RTL उस हार्डवेयर का वर्णन करता है जो आप तर्क को लागू करके चाहते हैं। फ्लिप-फ्लॉप, लैचिस को परिभाषित करना और उनके बीच डेटा कैसे स्थानांतरित किया जाता है। यह संश्लिष्ट है, संश्लेषण प्रयोग किए गए तर्क को बदल सकता है / अनुकूलित कर सकता है लेकिन व्यवहार को नहीं। गेट्स के लिए muxes स्विचिंग आदि कुछ बार inverting संकेतों को बेहतर डिजाइन को अनुकूलित करने के लिए।
वेरिलॉग आरटीएल एक फ्लिप फ्लॉप का अर्थ लगा रहा है:
logic a; //logic is SystemVerilog, could be a 'reg'
logic k; // Driven by RTL not shown
always @(posedge clk or negede rst_n) begin
if (~rst_n) begin
a <= 'b0 ;
end
else begin
a <= k ;
end
end
कंबाइनटोरियल बिटवाइज़ ऑपरेटर:
logic [1:0] n;
logic [1:0] m;
logic [1:0] result;
assign result = n & m ;
गेट लेवल बेस लॉजिक गेट (NAND, NOR, AND, OR, MUX, FLIP-FLOP) का उपयोग कर एक डिजाइन है। इसे संश्लेषित करने की आवश्यकता नहीं है या संश्लेषण से आउटपुट है। यह अमूर्तता का निम्नतम स्तर है। यह तर्क द्वार है जिसे आप चिप पर उपयोग करेंगे, लेकिन इसमें स्थिति संबंधी जानकारी का अभाव है।
गेट स्तर वेरिलोग (ऊपर जैसा कार्य):
wire a;
wire k;
DFFRX1 dffrx1_i0 (
.Q (a), //Output
.QN( ), //Inverted output not used
.D (k), //Input
.CK(clk), //Clk
.RN(rst_n)// Active Low Async Reset
);
मिश्रित
wire [1:0] n;
wire [1:0] m;
wire [1:0] result;
AND2X1 and2x1_i0 (
.Y( result[0]),
.A( n[0] ),
.B( m[0] )
);
AND2X1 and2x1_i1 (
.Y( result[1]),
.A( n[1] ),
.B( m[1] )
);