একটি এফপিজিএ ডিজাইনের জন্য একটি হার্ডওয়্যার বিবরণ ভাষা (এইচডিএল) প্রয়োজন। এইচডিএলগুলি সি এর মতো একেবারেই কিছুই নয়, যেখানে একটি সি প্রোগ্রাম নির্দেশাবলীর একটি ক্রমিক সিরিজ এবং সমান্তরাল সম্পাদন অর্জনের জন্য নিজেকে অবশ্যই সংযুক্ত করতে হবে, একটি এইচডিএল একটি যুগল সার্কিট বর্ণনা করে এবং অনুক্রমিক সম্পাদন অর্জনের জন্য নিজেকে অবশ্যই প্রতিরূপ করতে হবে। এটি খুব আলাদা একটি বিশ্ব এবং আপনি যদি কোনও সফটওয়্যার বিকাশকারী হিসাবে ভাবনার সময় এফপিজিএতে একটি সার্কিট তৈরি করার চেষ্টা করেন তবে তা ক্ষতিগ্রস্থ হবে।
একটি এমসিইউ সময়সীমাবদ্ধ। আরও কাজ সম্পাদনের জন্য আপনার আরও প্রসেসরের চক্র প্রয়োজন। ঘড়ির তাদের ফ্রিকোয়েন্সিগুলির খুব প্রকৃত সীমা থাকে, সুতরাং একটি গণনামূলক প্রাচীরকে আঘাত করা সহজ। তবে একটি এফপিজিএ স্থান-সীমাবদ্ধ। আরও কাজ সম্পাদনের জন্য, আপনি কেবল আরও বেশি সার্কিট যুক্ত করুন। যদি আপনার এফপিজিএ যথেষ্ট পরিমাণে বড় না হয় তবে আপনি আরও একটি বড় কিনতে পারেন। এমন একটি সার্কিট তৈরি করা খুব শক্ত যেটি বৃহত্তম এফপিজিএ-তে ফিট করতে পারে না এবং এমনকি যদি আপনি সেখানে অ্যাপস নোটও থাকেন তবে কীভাবে ডেইজি চেইন এফপিজিএ একসাথে করবেন তা বর্ণনা করে।
সমান্তরাল বাস্তবায়নের দিকে এফপিজিএগুলি আরও বেশি ফোকাস করে। কখনও কখনও আপনার চিন্তায় থাকতে হয় যে আপনার এমসিইউয়ের আইএসআর বাধাগুলি পরিষেবা দিতে কতক্ষণ সময় নেয় এবং আপনি আপনার হার্ড-রিয়েল-টাইম সীমাটি অর্জন করতে সক্ষম হবেন কিনা তা নিয়ে ভাবতে হবে। যাইহোক, এফপিজিএ-তে একটি সর্বদা প্রচুর পরিমাণে ফিনিট স্টেট মেশিন (এফএসএম) চলছে। এগুলি "ফেম্টো-কন্ট্রোলারগুলি" যেমন নিয়ন্ত্রণ যুক্তির সামান্য মেঘের মতো। এগুলি সব একই সাথে চলছে, সুতরাং একটি বাধা নিখোঁজ হওয়ার বিষয়ে কোনও উদ্বেগ নেই। আপনার কোনও এডিসির সাথে ইন্টারফেস করার জন্য একটি এফএসএম থাকতে পারে, একটি মাইক্রোকন্ট্রোলারের ঠিকানা / ডেটা বাসে ইন্টারফেস করার জন্য অন্য এফএসএম, স্টেরিও কোডেকে ডেটা প্রবাহিত করার জন্য অন্য এফএসএম, তবে এডিসি থেকে কোডেকে ডেটাফ্লো বাফার জন্য অন্য একটি এফএসএম ... আপনি সমস্ত এফএসএম সমন্বিতভাবে গানে তা নিশ্চিত করার জন্য একটি সিমুলেটর ব্যবহার করা দরকার।
এফপিজিএগুলি একটি পিসিবি লেআউট ডিজাইনারের ভিজা স্বপ্ন। এগুলি অত্যন্ত কনফিগারযোগ্য। আপনার বিভিন্ন ভোল্টেজ এমনকি ড্রাইভের শক্তিগুলিরও বিভিন্ন লজিক ইন্টারফেস (এলভিটিটিএল, এলভিসিএমওস, এলভিডিএস, ইত্যাদি) থাকতে পারে (যাতে আপনার সিরিজ-সমাপ্তি প্রতিরোধকের প্রয়োজন হয় না)। পিনগুলি অদলবদলযোগ্য; আপনি কি কখনও কোনও এমসিইউ ঠিকানা বাস দেখেছেন যেখানে চিপের চারপাশে পিনগুলি ছড়িয়ে ছিটিয়ে ছিল? আপনার পিসিবি ডিজাইনার সম্ভবত সমস্ত সংকেত সঠিকভাবে একসাথে বাঁধতে সম্ভবত একগুচ্ছ বায়াস ফেলে দিতে হবে। একটি এফপিজিএর সাহায্যে, পিসিবি ডিজাইনার পরে সুবিধাজনক যে কোনও আদেশে চিপটিতে সিগন্যালগুলি চালাতে পারে এবং তারপরে এফপিজিএ টুলচেইনে নকশাটি আবার এনোটোটেট করা যায়।
এফপিজিএগুলিতে প্রচুর সুন্দর, অভিনব খেলনা রয়েছে। আমার প্রিয় পছন্দের একটি হ'ল জিলিনেক্স চিপসের ডিজিটাল ক্লক ম্যানেজার। আপনি এটিকে একটি ঘড়ির সংকেত খাওয়াতে পারেন এবং এটি বিভিন্ন প্রকারের ফ্রিকোয়েন্সি মাল্টিপ্লায়ার এবং বিভাজকগুলি ব্যবহার করে এর থেকে আরও চারটি অর্জন করতে পারে, সবগুলিই আদিম 50% শুল্ক এবং 100% ধাপে ... এবং এটি এমনকি ঘড়ির কাঁচের জন্য অ্যাকাউন্ট করতে পারে চিপ থেকে বাহ্যিক প্রচারে বিলম্ব হয়!
সম্পাদনা (সংযোজনের জবাব):
আপনি এফপিজিএতে একটি "সফট কোর" রাখতে পারেন। আপনি আক্ষরিকভাবে একটি মাইক্রোকন্ট্রোলার সার্কিট একসাথে তারের করছেন, বা বরং আপনি সম্ভবত অন্য কোনও এর সার্কিটটিকে আপনার ডিজাইনের মধ্যে ফেলে দিচ্ছেন, যেমন জিলিনেক্সের পিকোব্লেজ বা মাইক্রোব্লেজ বা আল্টেরার নিওস। তবে সি-> ভিএইচডিএল সংকলকগুলির মতো, এফএসএম এবং ডেটাপাথ বা একটি প্রকৃত মাইক্রোকন্ট্রোলার ব্যবহারের তুলনায় এই কোরগুলি কিছুটা স্ফীত ও ধীর হয়ে থাকে। বিকাশ সরঞ্জামগুলি ডিজাইন প্রক্রিয়াতে উল্লেখযোগ্য জটিলতাও যুক্ত করতে পারে, যখন এফপিজিএগুলি ইতিমধ্যে অত্যন্ত জটিল চিপ হয় তখন এটি খারাপ জিনিস হতে পারে।
শিলিনেক্সের ভার্টেক্স 4 সিরিজের মতো এফপিজিএ ফ্যাব্রিক সহ একটি বাস্তব, ডেডিকেটেড আইবিএম পাওয়ারপিসি রয়েছে এমন কিছু এফপিজিএ রয়েছে যার মধ্যে "হার্ড কোর" এমবেড করা আছে।
EDIT2 (মন্তব্যে জবাব):
আমার মনে হয় আমি এখন দেখছি ... আপনি একটি পৃথক এমসিইউকে একটি এফপিজিএতে সংযুক্ত করার বিষয়ে জিজ্ঞাসা করছেন; অর্থাত্ পৃথক দুটি চিপ। এটি করার উপযুক্ত কারণ রয়েছে; এফপিজিএগুলির হার্ড কোর রয়েছে এবং শালীন নরম কোরগুলি সমর্থন করার জন্য যথেষ্ট বড় এটি সাধারণত অনেক শত পিনের সাথে দানব হয় যা শেষ হয় একটি বিজিএ প্যাকেজ প্রয়োজন, যা সহজেই 10 এর একটি ফ্যাক্টর দ্বারা পিসিবি ডিজাইনের অসুবিধা বৃদ্ধি করে।
সি অনেক সহজ, যদিও এমসইউগুলির স্পষ্টতই এফপিজিএর সাথে কাজ করে তাদের জায়গা রয়েছে। যেহেতু এটি সি লিখতে সহজ, আপনি এমসিইউতে "ব্রেইন" বা কেন্দ্রীয় অ্যালগরিদম লিখতে পারেন, যখন এফপিজিএ সাব-অ্যালগরিদমগুলি কার্যকর করতে পারে যা ত্বরান্বিত হতে পারে। সি কোডে পরিবর্তিত জিনিসগুলি রাখার চেষ্টা করুন, কারণ এটি পরিবর্তন করা সহজ, এবং প্রায়শই পরিবর্তন হবে না এমন আরও ডেডিকেটেড ধরণের জিনিস হতে এফপিজিএ ছেড়ে দিন।
এমসিইউ ডিজাইনের সরঞ্জামগুলি ব্যবহার করাও সহজ। এমনকি কিছুটা সাধারণ ডিজাইনের জন্যও, এফপিজিএ বিট ফাইলটি তৈরি করতে ডিজাইন সরঞ্জামগুলির জন্য কয়েক মিনিট সময় লাগে তবে জটিল এমসিইউ প্রোগ্রামগুলি সাধারণত কয়েক সেকেন্ড সময় নেয়। এমসিইউতে ভুল হওয়ার মতো আরও অনেক কিছুই রয়েছে, সুতরাং এগুলি ডিবাগ করা আরও সহজ ... এফপিজিএ কতটা জটিল হতে পারে তা আমি বোঝাতে পারি না। আপনার কাছে যা আছে তার জন্য আপনার সত্যিকারের ডাটাশিট নেওয়া দরকার এবং এর প্রতিটি পৃষ্ঠা পড়ার চেষ্টা করা উচিত। আমি জানি, এটি কয়েক শত পৃষ্ঠা ... যাইহোক এটি করুন।
এগুলি সংযুক্ত করার সর্বোত্তম উপায় হ'ল একটি বাহ্যিক ঠিকানা এবং ডেটা বাসের সাথে একটি এমসিইউ ব্যবহার করা। তারপরে আপনি কেবল এমসিইউতে এফপিজিএ সার্কিটগুলি মেমরির মানচিত্র করতে পারেন এবং নিজের নিজস্ব "রেজিস্টার" যুক্ত করতে পারেন যার প্রত্যেকটির নিজস্ব ঠিকানা রয়েছে। এখন এফপিজিএ একটি 32-বিট টাইমারের মতো কাস্টম পেরিফেরিয়াল যুক্ত করতে পারে যা 8-বিট রিডের মধ্যে ওভারফ্রোলগুলি রোধ করার জন্য প্রথম বাইটটি একবারে পড়লে একবারে সমস্ত 4 বাইট ল্যাচ করতে পারে। আপনি পৃথক এডিসির মতো অন্যান্য চিপ থেকে আরও পেরিফেরিয়াল মেমরির জন্য আঠালো যুক্তি হিসাবে এটি ব্যবহার করতে পারেন।
শেষ অবধি, কিছু এমসিইউ এফপিজিএর মতো "বাহ্যিক মাস্টার" ব্যবহারের জন্য ডিজাইন করা হয়েছে। সাইপ্রেস কয়েকটি ইউএসবি এমসিইউ তৈরি করে যার ভিতরে একটি 8051 থাকে তবে উদ্দেশ্যটি হ'ল ইউএসবি ডেটা উত্পাদিত / গ্রহণ করা হয় যেমন একটি এফপিজিএ দ্বারা।