ব্রেন্ট-কুং অ্যাডার 1982 সালে Hsiang Te Kung এবং Richard Peirce Brent দ্বারা প্রস্তাবিত হয়েছিল। এটি একটি সমান্তরাল প্রিফিক্স অ্যাডার বা ট্রি অ্যাডার যা এর নমনীয়তার কারণে ডিজিটাল ডিজাইনে ব্যাপকভাবে ব্যবহৃত হয়। লজিক লেভেলের সংখ্যার উপর ভিত্তি করে সমান্তরাল প্রিফিক্স অ্যাডারগুলি বিভিন্ন উপায়ে তৈরি করা যেতে পারে, যুক্তির পথ জড়িত, প্রতিটি গেট থেকে ফ্যান-আউট এবং স্তরগুলির মধ্যে তারের সংযোগ। বিভিন্ন ধরনের ট্রি অ্যাডার পাওয়া যায়, মৌলিক ট্রি অ্যাডারগুলি হল স্কলানস্কিম কোগেস্টোন এবং ব্রেন্ট-কুং, কেএসএ (কোগে-স্টোন অ্যাডার) এর তুলনায়, এই অ্যাডারটি অ্যাডারের গঠনে উচ্চ নিয়মিততা প্রদান করে এবং এতে কম তারের ব্লকিং রয়েছে। যা ভাল কর্মক্ষমতা এবং কম প্রয়োজনীয় চিপ এলাকা বাড়ে. এই নিবন্ধটি একটি সম্পর্কে সংক্ষিপ্ত তথ্য প্রদান করে ব্রেন্ট কুং অ্যাডার .
ব্রেন্ট কুং অ্যাডার কি?
একটি সংযোজনকারী যা ফলাফল পেতে ন্যূনতম সার্কিট্রি ব্যবহার করে ব্রেন্ট কুং অ্যাডার নামে পরিচিত এবং এটি একটি কম-পাওয়ার অ্যাডার বা সমান্তরাল সংযোজন হিসাবেও পরিচিত। এই অ্যাডারটি চিপের আকার সংরক্ষণ করার উদ্দেশ্যে তৈরি করা হয়েছে যাতে এই অ্যাডারগুলি তৈরি করা সহজ হয়ে যায়। এই সংযোজনকারীর প্রতিসাম্য এবং স্বাভাবিক নির্মাণ কাঠামো উৎপাদন খরচ ব্যাপকভাবে হ্রাস করবে এবং পাইপলাইনযুক্ত টপোলজিতে ব্যবহারের জন্য অনুমোদিত। পরিপূরক পাস ট্রানজিস্টর লজিকের ব্যবহার ডিজাইনের কার্যক্ষমতা বাড়াতে সাহায্য করে মাল্টিপ্লেক্সার বিভিন্ন সেল ডিজাইনে পদ্ধতি।
ব্রেন্ট কুং অ্যাডার সার্কিট
ব্রেন্ট-কুং সমান্তরাল প্রিফিক্স অ্যাডার ডায়াগ্রামটি নীচে দেখানো হয়েছে যার মধ্যে স্টেজ 1 (প্রি-প্রসেসিং স্টেজ), স্টেজ 2 থেকে 7 ক্যারি জেনারেশন স্টেজ এবং স্টেজ 8 হল পোস্ট-প্রসেসিং। এটি একটি উন্নত স্থাপত্য এবং এটি নির্মাণ করা খুবই সহজ এবং কম তারের ভিড় প্রদান করে। সুতরাং, এর কম ওয়্যারিং আর্কিটেকচার চালানোর জন্য প্রয়োজনীয় স্থানের পরিমাণ হ্রাস করবে। উপরন্তু, কম তারের ক্রসিং (বা) ওভারল্যাপিংয়ের কারণে রাউটিং অনেক সহজ হয়ে যায়। যাইহোক, স্টেজের সংখ্যা বৃদ্ধির কারণে বিলম্বে জরিমানা বাড়বে, এই অ্যাডারের জন্য ফ্যান আউট বাড়ানো হয়, এবং তারপর বিলম্ব বাড়ানো হবে।

ব্রেন্ট কুং অ্যাডার কিভাবে কাজ করে?
ব্রেন্ট কুং অ্যাডার দুটি বিট গ্রুপের উপসর্গগুলি গণনা করে কাজ করে যা 4 বিট গ্রুপ উপসর্গগুলি খুঁজে পেতে কার্যকর। এই উপসর্গগুলি 8-বিট গ্রুপের প্রিফিক্স ইত্যাদি গণনার জন্য ব্যবহৃত হয়। এর পরে, এই উপসর্গগুলি নির্দিষ্ট বিট পর্যায়ের ক্যারি-আউট গণনার জন্য ব্যবহার করা হবে। এই ক্যারিগুলি পরবর্তী পর্যায়ের গ্রুপ প্রচারের সাথে সেই পর্যায়ের যোগ বিট গণনা করার জন্য ব্যবহার করা হয়। ব্রেন্ট কুং ট্রি 2log2N – 1 স্টেজ ব্যবহার করে।
32-বিট ব্রেন্ট কুং অ্যাডার
32-বিট ব্রেন্ট কুং অ্যাডার লেআউট নীচে দেখানো হয়েছে। এই লেআউটের শুরুতে, বেসিক লজিক গেটগুলি ডিজাইন করা হয়েছে যেমন NAND, ইনভার্টার, XOR, NOR ইত্যাদি। এর পরে, প্রয়োজনীয় কোষ যেমন ব্ল্যাক সেল, গ্রে সেল, বাফার, এবং পিজি লজিকগুলি লজিক গেট দিয়ে ডিজাইন করা হয়েছে।

নীচের 32-বিট ব্রেন্ট কুং অ্যাডারে, AOI এবং OAI এর মত ইনভার্টিং গেটগুলি প্রধানত ধূসর এবং কালো কোষগুলির জন্য বিকল্পভাবে ব্যবহৃত হয়। সুতরাং কালো এবং ধূসর কোষগুলিকে ধূসর এবং কালো ব্লক দিয়ে উপস্থাপন করা হয় যেখানে বাফারগুলিকে বৃত্ত দিয়ে উপস্থাপন করা হয়।


A & B এর মত ইনপুটগুলি PG লজিকে দেওয়া হয় যা ব্লক ডায়াগ্রামে দেখানো হয়েছে। একটি 32-বিট অ্যাডারের জন্য, 32টি PG লজিক ব্লক প্রয়োজন এবং প্রচার (P) এবং জেনারেট (G) সংকেতগুলি এই ব্লকের আউটপুট। এই সংকেতগুলি ব্রেন্ট কুং অ্যাডার গাছের কাঠামোতে সরবরাহ করা হয়। এই অ্যাডারের গঠন ধূসর কোষ এবং কালো কোষ অন্তর্ভুক্ত.
একটি ধূসর কক্ষে তিনটি ইনপুট এবং একক আউটপুট থাকে। বর্তমান পর্যায় থেকে প্রচার ও সংকেত তৈরি করা এবং পূর্ববর্তী পর্যায় থেকে সংকেত উৎপন্ন করা হল ইনপুট যেখানে গ্রুপ জেনারেট করা সংকেত হল o/p। যে কোনো গাছের কাঠামোতে, প্রতিটি পর্যায় একটি ধূসর কোষ দিয়ে শেষ হবে এবং এই কোষের o/p হল গ্রুপ জেনারেট সংকেত। এই সংকেতটিকে সেই পর্যায়ের বহন হিসাবে বিবেচনা করা হয়। কালো কোষে চারটি ইনপুট এবং দুটি আউটপুট রয়েছে। এই কোষের ইনপুটগুলি হল বর্তমান পর্যায়ের P & G সংকেত এবং পূর্ববর্তী পর্যায়ের P, G সংকেত।
একটি PG লজিকের মধ্যে AND & XOR গেট রয়েছে যেখানে AND লজিক গেট G সংকেত তৈরি করতে ব্যবহৃত হয় এবং XOR লজিক গেট P সংকেত প্রদান করে। অপ্রয়োজনীয় ইনভার্টার দূর করতে, দুই ধরনের ধূসর কোষ এবং কালো কোষ ব্যবহার করা হয়। ধূসর ঘরের জন্য এক সারিতে ব্যবহৃত ইনভার্টিং গেটগুলি হল AOI বা AND-OR-Inverter এবং পরবর্তী সারির মধ্যে কালো কোষের জন্য Inverting গেটগুলি OAI বা OR-AND-Inverter ব্যবহার করে৷ AOI সেল উল্টানো আউটপুট প্রদানের জন্য সাধারণ ইনপুট ব্যবহার করে যেখানে OAI স্বাভাবিক আউটপুট প্রদানের জন্য উল্টানো ইনপুট ব্যবহার করে।
ব্রেন্ট কুং অ্যাডার অপারেশন
ব্রেন্ট কুং অ্যাডার হল একটি সমান্তরাল প্রিফিক্স অ্যাডার যা উচ্চ-কর্মক্ষমতা সংযোজনের অপারেশনের জন্য ব্যবহৃত হয়। এই সংযোজকটি একটি গাছের কাঠামোর মতো দেখায় যা গাণিতিক ক্রিয়াকলাপ সম্পাদন করে। এই সংযোজনকারীর মধ্যে কালো কোষ এবং ধূসর কোষ রয়েছে। প্রতিটি কালো কক্ষের দুটি AND গেট এবং একক বা গেট রয়েছে এবং প্রতিটি ধূসর কক্ষে একটি মাত্র AND গেট রয়েছে।
ব্রেন্ট-কুং অ্যাডার দুটি পর্যায় অন্তর্ভুক্ত করে; প্রাক-প্রক্রিয়াকরণ পর্যায় এবং প্রজন্মের পর্যায়। প্রথম পর্যায়ে, প্রতিটি জোড়া ইনপুট থেকে জেনারেট এবং প্রচার করা হবে। এখানে প্রোপাগেট ইনপুট বিটের জন্য একটি 'XOR' অপারেশন প্রদান করে যেখানে জেনারেট ইনপুট বিটের জন্য একটি 'AND' অপারেশন প্রদান করে। 'Pi' এবং 'Gi'-এর মতো প্রচার ও উৎপন্ন করা নিচে দেওয়া হল।
Pi = Ai XOR Bi এবং Gi = Ai AND Bi।
দ্বিতীয় পর্যায়ে, প্রতিটি বিটের জন্য ক্যারি জেনারেট করা হবে যা ক্যারি জেনারেট 'সিজি' নামে পরিচিত এবং ক্যারি জেনারেট 'সিপি' নামে পরিচিত প্রতিটি বিটের জন্য ক্যারি জেনারেট করা হয়। পরবর্তী অপারেশনের জন্য, ক্যারি প্রোপাগেট এবং ক্যারি জেনারেট তৈরি করা হবে। প্রতিটি বিট অপারেটের মধ্যে উপলব্ধ চূড়ান্ত সেল বহন প্রদান করে। সুতরাং চূড়ান্ত বিট বহন শেষ বিট পর্যন্ত একযোগে পরবর্তী বিটের যোগফল করতে সহায়তা করবে। ক্যারি জেনারেট এবং প্রচার হিসাবে দেওয়া হয়;
Cp = P1 এবং P0 এবং Cg=G1 বা (P1 এবং G0)
এটি প্রধানত দুটি বত্রিশ বিটের সংযোজন ক্রিয়াকলাপের জন্য ব্যবহৃত হয় এবং প্রতিটি বিট প্রিপ্রসেসিং স্টেজ এবং জেনারেশন স্টেজ অনুভব করে তারপর এটি চূড়ান্ত যোগফল প্রদান করে।
প্রাথমিক ইনপুট বিটগুলি প্রি-প্রসেসিং পর্যায়ের নীচে চলে যায় এবং তারা প্রচার ও উৎপন্ন করে। সুতরাং এইগুলি প্রচারের পাশাপাশি জেনারেট জেনারেট জেনারেট জেনারেট করে এবং ক্যারি জেনারেট করে এবং চূড়ান্ত যোগফল প্রদান করে। ব্রেন্ট-কুং অ্যাডার ধাপে ধাপে প্রক্রিয়াটি নীচে দেখানো হয়েছে।

ব্রেন্ট-কুং অ্যাডার বিন্যাসটি একটি গাছের কাঠামোর মতো দেখায় এবং এটি হাই-স্পিড অ্যাডার যা গেট-লেভেল লজিককে লক্ষ্য করে। লজিক গেটের সংখ্যা কমিয়ে এই অ্যাডারটি ডিজাইন করা যেতে পারে। এইভাবে, এটি এই আর্কিটেকচারের মধ্যে ব্যবহৃত বিলম্ব এবং মেমরি হ্রাস করে।
ব্রেন্ট কুং অ্যাডার ভেরিলগ কোড
ব্রেন্ট কুং অ্যাডার ভেরিলগ কোড নীচে দেখানো হয়েছে।
`ইনপুটসাইজ 64 সংজ্ঞায়িত করুন //ইনপুট আকার সেট করুন n
GROUPSIZE 8 সংজ্ঞায়িত করুন //গোষ্ঠীর আকার সেট করুন = 1, 2, 4 বা 8
মডিউল Brent_Kung_Adder(A, B, S);
ইনপুট [`ইনপুটসাইজ – 1:0] ক;
ইনপুট [`ইনপুটসাইজ – 1:0] বি;
আউটপুট [`ইনপুটসাইজ:0] এস;
তারের [`INPUTSIZE / `GROUPSIZE * 2 – 1:0] r_temp;
তারের [`ইনপুটসাইজ / `গ্রুপসাইজ * 2 – 1:0] r;
তারের [`ইনপুটসাইজ / `গ্রুপসাইজ:0] সিন;
তারের [`ইনপুটসাইজ / `গ্রুপসাইজ * 2 – 1:0] q;
cin[0] = 1’b0 বরাদ্দ করুন;
উৎপন্ন
যেখানে;
এর জন্য (i = 0; i < `INPUTSIZE / `GROUPSIZE; i = i + 1) শুরু: parallel_FA_CLA_prefix
group_q_generation #(.Groupsize(`GROUPSIZE))
চ(
.a(A[`GROUPSIZE * (i + 1) – 1:`GROUPSIZE * i]),
.b(B[`GROUPSIZE * (i + 1) – 1:`GROUPSIZE * i]),
.cin(cin[i]),
.s(S[`GROUPSIZE * (i + 1) – 1:`GROUPSIZE * i]),
.qg(q[i * 2 + 1:i * 2])
);
শেষ
সমান্তরাল_উপসর্গ_বৃক্ষ_প্রথম_হাফ #(.বৃক্ষের আকার(`INPUTSIZE / `GROUPSIZE))
t1(
.q(q[`ইনপুটসাইজ / `গ্রুপসাইজ * 2 – 1:0]),
.r(r_temp[`INPUTSIZE / `GROUPSIZE * 2 – 1:0])
);
সমান্তরাল_উপসর্গ_বৃক্ষ_সেকেন্ড_অর্ধ #(.ট্রিসাইজ(`INPUTSIZE / `GROUPSIZE))
t2(
.q(r_temp[`INPUTSIZE / `GROUPSIZE * 2 – 1:0]),
.r(r[`ইনপুটসাইজ / `গ্রুপসাইজ * 2 – 1:0])
);
এর জন্য (i = 0; i < `INPUTSIZE / `GROUPSIZE; i = i + 1) শুরু: cin_generation
cin_generation_logic f(
.r(r[2 * i + 1:2 * i]),
.c0(1’b0),
.cin(cin[i + 1])
);
শেষ
বরাদ্দ S[`INPUTSIZE] = cin[`INPUTSIZE / `GROUPSIZE];
endgenerate
endmodule
// সমান্তরাল উপসর্গ গাছের প্রথমার্ধ
মডিউল parallel_prefix_tree_first_half #(প্যারামিটার Treesize = `INPUTSIZE / `GROUPSIZE)(q, r);
ইনপুট [Treesize*2 – 1:0] q;
আউটপুট [Treesize*2 – 1:0] r;
উৎপন্ন
যেখানে;
যদি (Treesize == 2) শুরু হয়: trivial_case
বরাদ্দ r[1:0] = q[1:0];
উপসর্গ_লজিক চ(
.ql(q[1:0]),
.qh(q[3:2]),
.r(r[3:2])
);
শেষ অন্য শুরু: recursive_case
তারের [বৃক্ষের আকার * 2 – 1:0] r_temp;
সমান্তরাল_উপসর্গ_বৃক্ষ_প্রথম_হাফ #(.Treesize(Treesize/2))
recursion_lsbh(
.q(q[Treesize – 1:0]),
.r(r_temp[বৃক্ষের আকার – 1:0])
);
সমান্তরাল_উপসর্গ_বৃক্ষ_প্রথম_হাফ #(.Treesize(Treesize/2))
recursion_msbh(
.q(q[Treesize*2 – 1:Treesize]),
.r(r_temp[Treesize * 2 – 1:Treesize])
);
জন্য (i = 0; i < Treesize * 2; i = i + 2) শুরু: parallel_stitch_up
যদি (i != গাছের আকার * 2 – 2) শুরু হয়: parallel_stitch_up_pass
r[i + 1:i] = r_temp[i + 1:i] বরাদ্দ করুন;
শেষ অন্য শুরু: parallel_stitch_up_produce
উপসর্গ_লজিক চ(
.ql(r_temp[Treesize – 1:Treesize – 2]),
.qh(r_temp[বৃক্ষের আকার * 2 – 1:বৃক্ষের আকার * 2 – 2]),
.r(r[Treesize*2 – 1:Treesize* 2 – 2])
);
শেষ
শেষ
শেষ
endgenerate
endmodule
// সমান্তরাল উপসর্গ গাছের দ্বিতীয়ার্ধ
মডিউল parallel_prefix_tree_second_half #(প্যারামিটার Treesize = `INPUTSIZE / `GROUPSIZE)(q, r);
ইনপুট [Treesize*2 – 1:0] q;
আউটপুট [Treesize*2 – 1:0] r;
তারের [Treesize*2* ($clog2(Treesize) – 1) – 1:0] r_temp;
r_temp [Treesize * 2 – 1:0] = q [Treesize * 2 – 1:0];
উৎপন্ন
genvar i, j;
এর জন্য (i = 0; i < $clog2(Treesize) - 2; i = i + 1) শুরু: সেকেন্ড_হাফ_লেভেল
r_temp[Treesize * 2 * (i + 1) + ((Treesize / (2 ** i)) – 1 – 2 ** ($clog2(Treesize / 4) – i)) * 2 – 1: Treesize * 2 * (i + 1)] = r_temp[বৃক্ষের আকার * 2 * i + ((Treesize / (2 ** i)) – 1 – 2 ** ($clog2(Treesize / 4) – i)) * 2 – 1: Treesize * 2 * i];
(j = (Treesize / (2 ** i)) – 1 – 2 ** ($clog2(Treesize / 4) – i); j < Treesize; j = j + 2 ** ($clog2(Treesize / 2) এর জন্য ) – i)) শুরু: দ্বিতীয়_হাফ_লেভেল_লজিক
উপসর্গ_লজিক চ(
.ql(r_temp[Treesize * 2 * i + (j – 2 ** ($clog2(Treesize / 4) – i)) * 2 + 1:Treesize * 2 * i + (j – 2 ** ($clog2( গাছের আকার / 4) – i)) * 2]),
.qh(r_temp[ট্রিসাইজ * 2 * i + j * 2 + 1: Treesize * 2 * i + j * 2]),
.r(r_temp[Treesize * 2 * (i + 1) + j * 2 + 1: Treesize * 2 * (i + 1) + j * 2])
);
যদি (j != Treesize – 1 – 2 ** ($clog2(Treesize / 4) – i)) শুরু হয়: second_half_level_direct_connect
r_temp[Treesize * 2 * (i + 1) + (j + 2 ** ($clog2(Treesize / 2) – i)) * 2 – 1: Treesize * 2 * (i + 1) + j * 2 + 2] = r_temp[Treesize * 2 * i + (j + 2 ** ($clog2(Treesize / 2) – i)) * 2 – 1: Treesize * 2 * i + j * 2 + 2];
শেষ
শেষ
r_temp [Treesize * 2 * (i + 2) – 1: Treesize * 2 * (i + 2) – (2 ** ($clog2(Treesize / 4) – i)) * 2] = r_temp[Treesize * 2 * (i + 1) – 1: Treesize * 2 * (i + 1) – (2 ** ($clog2(Treesize / 4) – i)) * 2];
শেষ
r[1:0] = r_temp[Treesize * 2 * ($clog2(Treesize) – 2) + 1:Treesize * 2 * ($clog2(Treesize) – 2)];
জন্য (i = 1; i < Treesize; i = i + 2) শুরু: final_r_odd
r[i * 2 + 1:i * 2] = r_temp[Treesize * 2 * ($clog2(Treesize) – 2) + i * 2 + 1:Treesize * 2 * ($clog2(Treesize) – 2) + i*2];
শেষ
জন্য (i = 2; i < Treesize; i = i + 2) শুরু: final_r_even
উপসর্গ_লজিক চ(
.ql(r_temp[Treesize * 2 * ($clog2(Treesize) – 2) + i * 2 – 1:Treesize * 2 * ($clog2(Treesize) – 2) + i * 2 – 2]),
.qh(r_temp[Treesize * 2 * ($clog2(Treesize) – 2) + i * 2 + 1: Treesize * 2 * ($clog2(Treesize) – 2) + i * 2]),
.r(r[i * 2 + 1:i * 2])
);
শেষ
endgenerate
endmodule
মডিউল group_q_generation #(প্যারামিটার Groupsize = `GROUPSIZE)(a, b, cin, s, qg);
ইনপুট [গ্রুপসাইজ – 1:0] a;
ইনপুট [গ্রুপসাইজ – 1:0] b;
ইনপুট cin;
আউটপুট [গ্রুপসাইজ – 1:0] s;
আউটপুট [1:0] qg;
তারের [2 * গ্রুপসাইজ – 1:0] q;
তারের [গ্রুপসাইজ – 1:0] c;
বরাদ্দ c[0] = cin;
উৎপন্ন
যেখানে;
এর জন্য (i = 0; i < গ্রুপ সাইজ; i = i + 1) শুরু: parallel_FA_CLA_prefix
FA_CLA_উপসর্গ f(
.a(a[i]),
.b(b[i]),
.cin(c[i]),
.s(s[i]),
.q(q[i * 2 + 1:i * 2])
);
যদি (i != গ্রুপ সাইজ - 1) শুরু হয়: বিশেষ_কেস
বরাদ্দ c[i + 1] = q[i * 2 + 1] | (q[i*2] এবং c[i]);
শেষ
শেষ
//গ্রুপ আকারের উপর ভিত্তি করে গ্রুপ q প্রজন্ম
যদি (গ্রুপ আকার == 1) শুরু হয়: case_gs1
বরাদ্দ করা qg[1] = q[1];
বরাদ্দ করা qg[0] = q[0];
end else if (Groupsize == 2) begin: case_gs2
বরাদ্দ qg[1] = q[3] | (q[1] এবং q[2]);
বরাদ্দ qg[0] = q[2] & q[0];
end else if (Groupsize == 4) begin: case_gs4
বরাদ্দ qg[1] = q[7] | (q[5] এবং q[6]) | (q[3] এবং q[6] এবং q[4]) | (q[1] এবং q[6] এবং q[4] এবং q[2]);
বরাদ্দ qg[0] = q[6] & q[4] & q[2] & q[0];
end else if (গ্রুপ সাইজ == 8) শুরু: case_gs8
বরাদ্দ qg[1] = q[15] | (q[13] এবং q[14]) | (q[11] এবং q[14] এবং q[12]) | (q[9] এবং q[14] এবং q[12] এবং q[10]) | (q[7] এবং q[14] এবং q[12] এবং q[10] এবং q[8]) | (q[5] এবং q[14] এবং q[12] এবং q[10] এবং q[8] এবং q[6]) | (q[3] & q[14] & q[12] & q[10] & q[8] & q[6] & q[4]) | (q[1] এবং q[14] এবং q[12] এবং q[10] এবং q[8] এবং q[6] এবং q[4] এবং q[2]);
qg[0] = q[14] & q[12] & q[10] & q[8] & q[6] & q[4] & q[2] & q[0];
শেষ
endgenerate
endmodule
// Cin প্রজন্মের যুক্তি
মডিউল cin_generation_logic(r, c0, cin);
ইনপুট [1:0] r;
ইনপুট c0;
আউটপুট cin;
cin = (r[0] & c0) | r[1];
endmodule
// উপসর্গ ক্রিয়াকলাপের জন্য মৌলিক যুক্তি
মডিউল উপসর্গ_লজিক(ql, qh, r);
ইনপুট [1:0] ql;
ইনপুট [1:0] qh;
আউটপুট [1:0] r;
বরাদ্দ r[0] = qh[0] & ql[0];
বরাদ্দ করুন r[1] = (qh[0] এবং ql[1]) | qh[1];
endmodule
// ক্যারি লুক-এহেড সহ সম্পূর্ণ অ্যাডার সেল
মডিউল FA_CLA_prefix(a, b, cin, s, q);
ইনপুট a;
ইনপুট b;
ইনপুট cin;
আউটপুট s;
আউটপুট [1:0] q;
বরাদ্দ q[0] = a ^ b;
বরাদ্দ s = q[0] ^ cin;
বরাদ্দ q[1] = a & b;
endmodule
সুবিধাদি
ব্রেন্ট কুং অ্যাডারের সুবিধার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে।
- এটি একটি কম-পাওয়ার অ্যাডার কারণ এটি ফলাফল পেতে একটি সর্বনিম্ন সার্কিট ব্যবহার করে।
- এটি একটি খুব জনপ্রিয় এবং বহুল ব্যবহৃত অ্যাডার।
- কোগে-স্টোন অ্যাডারের তুলনায় কম মডিউল ব্যবহার করে এই ধরনের অ্যাডার প্রয়োগ করা যেতে পারে।
- ব্রেন্ট-কুং অ্যাডার ডিজাইনিং খুব সহজ।
- এই অ্যাডারের অন্যান্য মডিউলগুলির সাথে কম সংযোগ রয়েছে।
- এই অ্যাডারগুলি মূলত কোগে-স্টোন অ্যাডারগুলির ত্রুটিগুলি সমাধান করার জন্য প্রস্তাব করা হয়েছিল।
অসুবিধা
দ্য ব্রেন্ট কুং অ্যাডের অসুবিধা r নিম্নলিখিত অন্তর্ভুক্ত.
- এই সংযোজনকারীদের বেশি বিলম্ব হয় এবং সমস্ত ক্যারি বিট কম্পিউট করার জন্য এটির 2 log2 n − 2 লজিক স্তর প্রয়োজন।
- এই অ্যাডারের প্রধান ত্রুটি হল ফ্যানআউট যা পুরো যোগকারী জুড়ে কারেন্টের প্রচারকে বিভক্ত করতে এবং দুর্বল হতে পারে।
ব্রেন্ট কুং অ্যাডার অ্যাপ্লিকেশন
ব্রেন্ট কুং অ্যাডারের অ্যাপ্লিকেশনগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে।
- একটি ব্রেন্ট-কুং অ্যাডার একটি পাইপলাইন পদ্ধতিতে ব্যবহার করা হয় যাতে কম্বিনেটরিয়াল লজিক ডেপথ এবং গ্লিচ স্টেবিলাইজেশন কমিয়ে পাওয়ার খরচ কমানো হয়।
- ব্রেন্ট-কুং অ্যাডার i/p থেকে সমস্ত o/ps পর্যন্ত একটি অসামান্য সংখ্যক পর্যায় সরবরাহ করে কিন্তু অসমমিত মধ্যবর্তী পর্যায়ে লোডিং সহ।
- এই অ্যাডারটি গুণকের পাশাপাশি অন্যান্য ডেটা পাথ উপাদানগুলির মধ্যে ব্যবহার করা যেতে পারে।
এইভাবে, এই ব্রেন্ট কুং অ্যাডারের একটি ওভারভিউ , এর কাজ, সুবিধা, অসুবিধা এবং এর প্রয়োগ। এটি একটি অত্যন্ত দক্ষ সংযোজক এবং এটির গঠন একটি গাছের কাঠামোর মতো দেখায় যা প্রধানত উচ্চ-পারফরম্যান্সের গাণিতিক ক্রিয়াকলাপের জন্য ব্যবহৃত হয়। এই ধরনের অ্যাডার খুব দ্রুত এবং প্রধানত গেট-স্তরের যুক্তিতে ফোকাস করে। এই অ্যাডারটি কম সংখ্যক লজিক গেট ব্যবহার করে ডিজাইন করা হয়েছে। এইভাবে, এটি এই আর্কিটেকচারের মধ্যে ব্যবহৃত মেমরি এবং বিলম্ব হ্রাস করে। এখানে আপনার জন্য একটি প্রশ্ন, ব্রেন্ট কুং অ্যাডার নামেও পরিচিত?