এফপিজিএ: গণনা বা গণনা?


11

আমি একটি এফপিজিএ (পাপিলিও বিকাশ বোর্ড, যা একটি xilinx স্পার্টান 3e, vhdl ব্যবহার করে) ব্যবহার করতে শিখছি।

আমার একটি ইনকামিং ডালটি একটি (হার্ড কোডড) সংখ্যায় ভাগ করতে হবে।

আমি 3 টি বিকল্প দেখতে পাচ্ছি - মোটামুটিভাবে সিউডোকোড হিসাবে (উদাহরণ হিসাবে 10 টি গণনা ব্যবহার করে):

  1. ইনপুট ক্রমবর্ধমান প্রান্তটি 1 দ্বারা বাড়িয়ে 0 তে শুরু করুন, 10 এর সাথে তুলনা করুন; যদি তারা সমান হয় তবে 0 এ পুনরায় সেট করুন এবং আউটপুট পালস ট্রিগার করুন
  2. ইনপুট ক্রমবর্ধমান প্রান্তটি 1 দ্বারা হ্রাস 10 এ শুরু করুন, 0 এর সাথে তুলনা করুন; যদি তারা সমান হয় তবে 10 এ পুনরায় সেট করুন এবং আউটপুট পালস ট্রিগার করুন
  3. 9 এ শুরু করুন, তবে নিশ্চিত করুন যে সেখানে কমপক্ষে 1 টি "0" বিট রয়েছে যা আমার আউটপুট বিট। ইনপুটটিতে ক্রমবর্ধমান প্রান্তটি কমেছে 1. আউটপুট বিটের উত্থিত প্রান্তে, পুনরায় সেট করুন।

দায়িত্ব চক্রটি গুরুত্বহীন।

এর মধ্যে কি অন্যদের চেয়ে ভাল? এমন কি আরও ভাল পদ্ধতি আছে যা আমি ভাবিনি?

কোনও "স্ট্যান্ডার্ড" উপায় আছে যা সংকলকটিকে অনুকূলিত করার সর্বোত্তম সুযোগ দেবে?


3
এটি কেবলমাত্র তিনটি বিকল্প :-) ... তবে গম্ভীরভাবে, এফপিজিএতে আসলে এটি এতটা গুরুত্বপূর্ণ নয়। স্বতন্ত্র যুক্তিযুক্ত উপাদানগুলি যথেষ্ট সাধারণ যে এটি একই সংখ্যক সংস্থান গ্রহণ করে এবং আপনি যে কোনও উপায়ে এটি সম্পাদন করেন gives এই সিদ্ধান্তটি নেমে এসেছে যে সংখ্যাগুলি গণনা বা নিচে বা অন্য কোনও প্যাটার্নে নকশার অন্য কোথাও কার্যকর।
ডেভ টুইট করেছেন

2
চতুর্থ বিকল্প: 10-বিট বিজ্ঞপ্তি শিফট রেজিস্টার "1000000000" দিয়ে লোড করা এবং একটি উঠতি প্রান্তে স্থানান্তরিত। আপনি যা করছেন তার জন্য সক্ষম হিসাবে শিফট রেজিস্টারটির একটি বিট ব্যবহার করুন।
লিংকন

1
পার্শ্ব নোট হিসাবে - আপনার সংকলক / ফিটার জিইউআই সরঞ্জামটি, কাজ শেষ করার পরে, আপনাকে একটি অপশন আসল সার্কিটটি দেখায় যা এটি বিভিন্ন বিমূর্ত স্তরে তৈরি করেছে, গেটগুলি থেকে নীচে, সুতরাং আপনি কীভাবে সরঞ্জামটি আপনার সার্কিটটি ফিট করে তা দেখতে সক্ষম হবেন এবং তারপরে আপনি উত্সটিতে যথাযথ পরিবর্তন করতে পারেন।
বেনামে

উত্তর:


12

এই স্তরে অনুকূলিতকরণ আপনার হৃদয়কে ভেঙে দেবে। আপনি যে এফপিজিএ ব্যবহার করছেন সেটির প্রযুক্তিগত ফল, এফপিজিএর অন্যান্য কারণগুলি, তবে ফিটরের র্যান্ডম সংখ্যার বীজ সহ আপনার নিয়ন্ত্রণের বাইরের কারণগুলির কারণেও ফলাফলটি পরিবর্তিত হতে পারে।

এটি বলে, আমি বিশ্বাস করি যে বিকল্পটি 3 সেরা হবে। বিকল্প 1 এবং 2 এর একটি তুলনাকারী / ওআর গেট কাউন্টারগুলির মধ্যে যাচ্ছে যাতে এটি সংকেত দিতে পারে যে লক্ষ্য সংখ্যাটি পৌঁছেছে। বিকল্প 2 1 এর চেয়ে সামান্য দ্রুত হতে পারে, যেহেতু এগুলি সবগুলি কোনও ইনভার্টার ছাড়াই একসাথে বা একসাথে করা যেতে পারে তবে আপনি আবার ছোট প্রযুক্তির পার্থক্যে চলে যান যেখানে এটি ওআর বা এক্সওর থেকে দ্রুততর হতে পারে।

বিকল্প 3 কাউন্টারে একটি অতিরিক্ত বিটের স্বল্প ব্যয়ের জন্য তুলনা এড়িয়ে যায়। আপনি যদি ফ্লিপ-ফ্লপগুলিতে কঠোরভাবে সীমাবদ্ধ না হন তবে এটি অবশ্যই উপযুক্ত।

কাউন্টারগুলির সম্পর্কে একটি মজাদার ঘটনাটি হ'ল এগুলি একটি যুক্তিযুক্ত ব্লকের মধ্যে একটি ডিভাইস নির্দিষ্ট আকারে বিভক্ত হয়ে থাকে এবং এই অতিরিক্ত বিট আপনাকে সেই গোষ্ঠী থেকে বের করে দেয় তবে আপনি সময় পরিবর্তনের প্রত্যাশার চেয়ে বেশি দেখতে পাবেন।


+1, ঘড়ির গতি ব্যতীত যে প্রযুক্তির সীমাবদ্ধতাগুলিকে ধাক্কা দেয় তাদের সময়সীমা প্রতিবেদনটি তাদের সময়োপযোগীকরণের দিকনির্দেশনা দেওয়া উচিত। স্পার্টান 3 ই, বা কোনও বিষয় ছাড়াই কোনও এফপিজিএতে শত শত পিকোসেকেন্ড তাড়ানো সাধারণভাবে সময় অপচয় করা।
জালালিপপ

4

অন্য একটি বিকল্প হ'ল কাউন্টারের সূচনা 6 (= 2 4) করা হবে - 10) এ শুরু করা, গণনা করা, এবং তারপরে আউটপুট সক্রিয় হওয়ার পরে পুনরায় সেট করা (যেমন, এফএফগুলি সমস্ত হয়)।

এর সুবিধাটি হ'ল এটির জন্য কোনও অতিরিক্ত এফএফের প্রয়োজন হয় না, এবং অনেক এফজিপিএর কাউন্টার বা অ্যাডারের সার্কিটে এই ধরণের ক্যারি অপারেশনটি গতিতে সহায়তার জন্য যুক্তি সরবরাহ করে।


3

নির্ভর করে। উদাহরণস্বরূপ: 0 → 1 এবং 1 → 0 এর জন্য ফ্লিপ-ফ্লপ প্রচারের বিলম্ব অন্যরকম হতে পারে এবং তাই কাউন্টারের রূপান্তর দেরি করতে 000 → 001 এবং 001 → 000 কিছুটা আলাদা হতে পারে। এটি উচ্চতর বা নিম্নতর হতে পারে, এফপিজিএতে ব্যবহৃত সেন্টিমোস প্রযুক্তির উপর নির্ভর করে। সুতরাং আপনাকে সংশ্লেষিত করতে হবে এবং কোনটির আরও ভাল সময় পারফরম্যান্স রয়েছে তা খুঁজে বের করতে হবে।


3

সংকলক লেখকের দৃষ্টিকোণ থেকে: আপনি যদি ব্যবহার করেন integer তবে অভ্যন্তরীণ উপস্থাপনা অনির্ধারিত, এবং সংকলক সর্বাধিক দক্ষ বাস্তবায়ন বেছে নিতে মুক্ত।

আপনি যদি কোনও নির্দিষ্ট অভ্যন্তরীণ প্রতিনিধিত্বকে জোর করেন, তবে অপ্টিমাইজার এটিকে আরও উন্নত করার চেষ্টা করবে, তবে এটি কিছুটা খারাপ স্থান থেকে শুরু হবে।

কিছু এফপিজিএর "প্রিলোড" ক্ষমতা থাকে, যেখানে নিবন্ধগুলি স্বেচ্ছাচারিত মানগুলিতে আরম্ভ করা যায়, এক্ষেত্রে প্রারম্ভিক এন-1, গণনা করা এবং আউটপুট এবং রিসেট হিসাবে শীর্ষস্থানীয় ক্যারি বিটটি ব্যবহার করা (পরবর্তী চক্রের মধ্যে) সংযোজক এবং তুলনামূলক উভয়ই কার্যকর করার চেয়ে কার্যকর। প্রিলোড ব্যতীত, একটি সংযোজক আরও ভাল হতে পারে।

আপনি যদি অভ্যন্তরীণ কাঠামোটি জানেন না, তবে অন্যান্য যুক্তিগুলিতে বরাদ্দকৃত সংস্থানগুলি (অনেকগুলি এফপিজিএগুলি ভাসমান পয়েন্ট মাল্টিপল-অ্যাড যুক্তিকে নিবেদিত করে থাকে যা আপনি যদি কোনও অবশিষ্ট ইউনিট রাখেন তবে কোনও কাউন্টার বাস্তবায়নের জন্যও ব্যবহার করতে পারেন) এবং পুরোপুরি নিশ্চিত যে আপনি স্যুইচ করবেন না are ভিন্ন মডেলের কাছে উত্তরটি "এটি সম্পর্কে চিন্তা করবেন না"।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.