এসপিআই মডিউলটিতে একটি বিল্ট ব্যবহার এবং বিট-ব্যাং করার মধ্যে কি পার্থক্য রয়েছে?


25

দুজনের মধ্যে কি কোনও পার্থক্য রয়েছে, বা এটি কেবল বিমূর্ততার বিষয়? আমার স্বজ্ঞাত বলে যে এখানে কোনও পার্থক্য নেই তবে আমি ভুল হতে চাই।


1
আপনি বিট-বিং এ কতটা ভাল তা নির্ভর করে। দেখুন code.google.com/p/fastspi এবং waitingforbigo.com :-)
রবার্ট অ্যাটকিনস

উত্তর:


33

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

তবে এর চেয়ে আরও কিছু আছে। বিট-ব্যাং করার সময়, এমসিইউ এটি বিট-ব্যাং করতে ব্যস্ত is এটি ডেটা স্থানান্তরিত করছে এবং জিপিআইও লাইনগুলিকে গুঁড়িয়ে দিচ্ছে। অর্থ, এটি অন্য কিছু করা যাবে না। এসপিআই নিয়ন্ত্রণকারী ব্যবহার করার সময়, নিয়ামক সেই সমস্ত জিনিস করতে ব্যস্ত থাকে এবং এমসিইউ অন্যান্য জিনিসগুলি করতে নিখরচায় থাকে।

সুতরাং একটি আসল এসপিআই নিয়ন্ত্রণকারী সহ, আসল এসপিআই স্থানান্তরটি আরও দ্রুত এবং এমসিইউ এটি অন্য কিছু কাজে ব্যবহার করতে পারে এমন কিছু চক্র ফিরে পেয়েছে।


11

উভয় পদ্ধতি ব্যবহার করে আপনি একই ফলাফল অর্জন করতে পারেন এমন পদে কোনও পার্থক্য নেই তবে আপনি একে অপরের থেকে কেন বেছে নেবেন তার কয়েকটি কারণ রয়েছে।

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


বিড়ম্বনা কারণ আবর্জনা। প্রায়শই আপনার প্রয়োজনীয় কনফিগারেশনে এসপিআই হার্ডওয়্যার সেটআপ করতে এসপিআই পেরিফেরাল ডেটাশিটটি পড়ার জন্য কেবল এসপিআই মাস্টার কোড লেখার চেয়ে বেশি সময় লাগে এবং এর ফলে কেবল স্লেভ ডিভাইস ডেটাশিট পড়তে হয়।
অলিন ল্যাথ্রপ

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

6

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

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

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

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

ফার্মওয়্যার এসপিআই মাস্টারের আর একটি সুবিধা হ'ল আপনি এসপিআই সিকোয়েন্স অনুযায়ী বিটগুলির একটি স্বেচ্ছাসেবী নির্বাচন করতে পারেন। হার্ডওয়্যার সাধারণত 8 বিটের গুণমানের মধ্যে সীমাবদ্ধ। বেশিরভাগ ডিভাইসগুলি পুরো বাইট ট্রান্সফার করার জন্য নকশাকৃত, তবে প্রায়শই তাদের প্রয়োজন হয় না। উদাহরণস্বরূপ, একটি 10 ​​বিট এ / ডি সম্ভবত 10 ডেটা বিটগুলি প্রথমে প্রেরণ করবে, তারপরে 0 বা আবর্জনা প্রেরণ করবে যদি আপনি এটি অবিরত রাখেন। যদি হার্ডওয়্যার এসপিআই ব্যবহার করা হয় তবে আপনাকে 16 বিট স্থানান্তর করতে এবং আবর্জনা থেকে মুখোশ করতে বাধ্য করা হবে। সবকিছু ঠিকঠাক কাজ করবে, তবে ফার্মওয়্যার এসপিআই মাস্টার আসলে এই ক্ষেত্রে হার্ডওয়ারের চেয়ে দ্রুততর হতে পারে কারণ এটি কেবল সর্বনিম্ন প্রয়োজনীয় 10 বিট ট্রান্সফার করে।

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

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

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

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


আপনি কি এমন কোনও মাইক্রোকন্ট্রোলার স্লেভ বাস্তবায়ন দেখতে পেয়েছেন যা সাধারণ হার্ডওয়্যার এসপিআই ডিভাইসের মতো আচরণ করতে পারে (যেমন মাস্টারকে কোনও সময়ে সিএসে প্রান্ত দিতে এবং স্ট্যাটাস পড়ার অনুমতি দেওয়া এবং সিএস ব্যবহার করে কমান্ডের সীমানা চিহ্নিত করতে? বেশিরভাগ বাস্তবায়ন যা আমি দেখেছি না এমনকি বর্তমান বাইট এবং আগেরটির মধ্যে কোনও সিএস প্রান্ত ছিল কিনা তা রিপোর্ট করুন
সুপারক্যাট

@ সাউপ: হ্যাঁ, এটি একটি সমস্যা। স্লেভ এসপিআই হার্ডওয়্যার সাধারণত ঘড়ি এবং ইনপুট ডেটা উপেক্ষা করে এবং চিপ সিলেক্ট করা না গেলে আউটপুট ডেটা লাইনটিকে উচ্চ প্রতিবন্ধকতায় রাখে, তবে চিপ নির্বাচনের সীমানা কোথায় তা সাধারণত আপনাকে জানায় না। কমপক্ষে পিআইসি এসপিআই হার্ডওয়্যারটি ব্যবহার করে আমার মনে আছে, আপনাকে তার জন্য চিপ সিলেক্টে নিজের বাধা সেটআপ করতে হবে।
অলিন ল্যাথ্রপ

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

8048 প্রসেসর ক্রীতদাস বন্দরের একটি ঠিকানা পিন রয়েছে; যখন ডেটা বাহ্যিকভাবে ৮০৪৮ তে লেখা থাকে, 8048 সেই পিনের অবস্থাটি ল্যাচ করে এবং এটি তার কোডে উপলব্ধ করে তোলে (সাধারণত কোনও আদেশের প্রথম বাইটটি একটি ঠিকানায় এবং অন্যটিতে প্যারামিটার বা ডেটা লেখা হবে)। একটি ঠিকানার পঠন থেকে whatever০৪৪ কোডটি যা কিছু দেয় তা ফল পাবে, তবে অন্য ঠিকানা থেকে পড়া কিছু বিট ৮০৪৪ হার্ডওয়্যার দ্বারা তৈরি করা হয়েছে যা এটির 'ডেটা পড়তে বা লিখিত থাকতে প্রস্তুত কিনা তা নির্দেশ করে।
সুপারক্যাট

মাস্টার (সহজ) এবং ক্রীতদাসকে (আরও বেশি কঠিন) বিট-ব্যাং করা পার্থক্যটি নির্দেশ করার জন্য +1।
tcrosley

1

এটি আপনার জন্য এসপিআই করছেন তার উপর নির্ভর করে। যদি আপনার আগ্রহ এটি থেকে সর্বাধিক ডেটা রেট পেয়ে থাকে তবে হার্ডওয়্যারটি বিটবাংগিংয়ের চেয়ে সবসময় দ্রুত হয় (যেমন টেনেসির 3 এ আর্ম কর্টেক্স চিপ আমি হার্ডওয়ার এসপিআই সমর্থন ব্যবহার করে 22 এমবিপিএসে ডেটা আউট করতে পারি, বিটবাংগিংয়ের সাথে ~ 4.5 এমবিপিএস (এটি 3-16 থেকে স্থানান্তর প্রতি বিটগুলির স্বেচ্ছাসেবী সংখ্যাগুলিও পরিচালনা করতে পারে - নির্দিষ্ট নেতৃত্বাধীন নিয়ন্ত্রণকারীদের জন্য 12 বিট খণ্ডে ডেটা পাঠানোর সময় দরকারী!))। ১M মেগাহার্টজ গড়ের ক্ষেত্রে, পার্থক্যটি কিছুটা কম চরম, হার্ডওয়্যার সহ সর্বোচ্চ ডেটা রেট উচ্চ 4 / নিম্ন 5 এমবিপিএস বলে মনে হয়, যখন বিটব্যাঙ্গিং প্রায় 2.3 এমবিপিএস)।

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

উপরের সমস্তটি নির্ভর করে হার্ডওয়্যার এসপিআই এমনকি একটি বিকল্প কিনা।


0

আপনি যদি এসপিআইকে বিট-ব্যাং করেন তবে যোগাযোগগুলি পরিচালনা করতে আপনি এসএসপি বাধা ব্যবহার করতে পারবেন না। এটি অনেকগুলি ব্যবহারের জন্য এসপিআইয়ের পক্ষে গুরুত্বপূর্ণ নয়


1
কোনও নির্দিষ্ট প্রসেসরের উল্লেখ করা হয়নি, সুতরাং "এসএসপি ইন্টারপ্যান্ট" এই প্রসঙ্গে একটি অর্থহীন শব্দ।
অলিন ল্যাথ্রপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.