আমি ফ্ল্যাশ মেমরি প্রোগ্রামিং নিয়ে আলোচনা করতে যাচ্ছি, তবে অনেকগুলি উপাদান EEPROMs (বৈদ্যুতিন ক্ষয়যোগ্য প্রোগ্রামেবল রম) এর সাথে সমান হবে, যেহেতু ১৯৮০ এর দশকের মাঝামাঝি সময়ে EEPROM থেকে ফ্ল্যাশ মেমরি নেওয়া হয়েছিল। শারীরিক দৃষ্টিকোণ থেকে নীচে বর্ণিত হিসাবে, ডিফল্ট অবস্থাটি 1 এর। তবে আরও গুরুত্বপূর্ণ বিষয়, আমি কেন এখানে একটি ডিফল্ট রাষ্ট্র রয়েছে তা ব্যাখ্যা করতে যাচ্ছি - আপনি শেষ সময় থেকে ইতিমধ্যে যা প্রোগ্রাম করা হয়েছে তার উপরে আপনি নির্বিচারে প্রোগ্রাম করতে পারবেন না।
ইন্টারফেসটি মাইক্রোকন্ট্রোলারের মেমরি ম্যাপের মধ্যে ডেটা স্থাপনের জন্য উপযুক্ত - পুরো ঠিকানা এবং ডেটা বাসগুলি মিমিক র্যাম করে এবং যে কোনও স্থানে এলোমেলো অ্যাক্সেসের অনুমতি দেয় বলে প্রোগ্রামটি ফ্ল্যাশের জন্য প্রায় সবসময়ই এনওআর ফ্ল্যাশ বেছে নেওয়া হয়। ডেটা একবারে একটি শব্দ পড়তে পারে, যেখানে কোনও শব্দ মাইক্রোকন্ট্রোলারের ডেটা প্রস্থ হিসাবে সাধারণত সংজ্ঞায়িত হয়, সাধারণত 8, 16 বা 32-বিট। অন্যদিকে ন্যাশন ফ্ল্যাশটি হার্ড ড্রাইভগুলি প্রতিস্থাপন করতে এবং ক্রমানুসারে কাজ করার জন্য তৈরি করা হয়েছিল।
তবে প্রোগ্রামিং কিছুটা জটিল হয়ে যায়। ইতিমধ্যে উল্লিখিত হিসাবে, NOR ফ্ল্যাশ এবং নন ফ্ল্যাশ, EEPROM এবং এমনকি EPROM এর মতো অন্যান্য অ-উদ্বায়ী স্মৃতিগুলির জন্য ডিফল্ট রাষ্ট্রটি একটি যুক্তিযুক্ত is আপনি এই ডিভাইসে 1 টি প্রোগ্রাম করতে পারবেন না, আপনি কেবল 0 এর প্রোগ্রাম করতে পারেন program সুতরাং উদাহরণস্বরূপ, আপনার যদি 0x0123 সমন্বিত একটি বাইট থাকে এবং আপনি এটি 0x3210 এ পরিবর্তন করতে চান, আপনি র্যামে বাইটে লেখার মতো সরাসরি এটি করতে পারবেন না।
পরিবর্তে, মেমরির বিটগুলি অবশ্যই মুছতে হবে, যা তাদের ইতিমধ্যে উল্লিখিত ডিফল্ট 1 রাজ্যে রাখে। এটি কেবল শব্দগুলিতে নয় ব্লকগুলিতে করা যেতে পারে। মাইক্রোচিপ পিআইসি 32-তে, যা আমি সবচেয়ে ইদানীং নিয়ে কাজ করেছি, সর্বনিম্ন ব্লকের আকার যা মুছতে পারে তা 4096 বাইট। সুতরাং আপনি যদি কেবল একটি শব্দ (32-বিট) পরিবর্তন করতে চান, আপনাকে মেমোরির 4K পড়তে হবে, ব্লকটি মুছে ফেলতে হবে, তবে 4K মেমরিটি ফ্ল্যাশে ফিরে লিখতে হবে তবে প্রয়োজনীয় 32-বিট মান সহ। এই মুছে ফেলাতে কিছুটা সময় লাগতে পারে - একটি সেকেন্ডের ভাল অংশ।
নীচে একটি ফ্ল্যাশ মেমরি সেল এর ছবি রয়েছে is ফ্ল্যাশ ফ্লোটিং গেটে ইলেক্ট্রনগুলি সরিয়ে বা রাখার মাধ্যমে ডেটা সঞ্চয় করে। বৈদ্যুতিনগুলি যখন ভাসমান গেটে উপস্থিত থাকে, ট্রানজিস্টর দিয়ে কোনও বর্তমান প্রবাহিত হয় না, এটি একটি 0 নির্দেশ করে When যখন বৈদ্যুতিনগুলি ভাসমান গেট থেকে অপসারণ করা হয়, ট্রানজিস্টার একটি পরিচালনা করে 1 পরিচালনা করে ((এটি কনভেনশন দ্বারা - এটি হতে পারে অন্য উপায়ে তবে সমস্ত ডেটা লাইনে ইনভার্টার লাগবে))
মুছে ফেলা অপারেশন। ফ্ল্যাশ মেমরি সেলগুলির ডিফল্ট অবস্থা (একটি একক স্তরের NOR ফ্ল্যাশ সেল) 1 কারণ ভাসমান গেটগুলি কোনও নেতিবাচক চার্জ বহন করে না। উত্স এবং নিয়ন্ত্রণ গেট (শব্দ লাইন) জুড়ে একটি ভোল্টেজ প্রয়োগ করে একটি ফ্ল্যাশ-মেমরি সেল (1 এ পুনরায় সেট করা) মুছে ফেলা সম্ভব। ভোল্টেজটি -9 ভি থেকে -12 ভি অবধি হতে পারে। এবং উত্সটিতে প্রায় 6V প্রয়োগ করুন। ভাসমান গেটের ইলেক্ট্রনগুলি টেনে নামিয়ে কোয়ান্টাম টানেলিংয়ের মাধ্যমে উত্সে স্থানান্তর করা হয় । অন্য কথায়, ইলেক্ট্রনগুলি ভাসমান গেট থেকে উত্স এবং স্তরটিতে টানেল হয়।
কারণ মুছে ফেলার জন্য উচ্চ ভোল্টেজ ব্যবহার করা হয়, তাই ব্লকগুলিতে মুছে ফেলার জন্য কম মরা অঞ্চল প্রয়োজন। সুতরাং ভোল্টেজগুলি একবারে পুরো সারি ট্রানজিস্টারে প্রয়োগ করা যেতে পারে।
লেখার জন্য, একটি NOR ফ্ল্যাশ সেল প্রোগ্রাম করা যেতে পারে, বা নিম্নলিখিত পদ্ধতি দ্বারা 0 তে সেট করা যেতে পারে। লেখার সময়, নিয়ন্ত্রণ গেটে (ওয়ার্ড লাইন) প্রায় 12 ভি এর উচ্চ ভোল্টেজ প্রয়োগ করা হয়। যদি 7V এর আশেপাশে একটি উচ্চ ভোল্টেজ বিট লাইন (ড্রেন টার্মিনাল) এ প্রয়োগ করা হয় তবে একটি 0 কক্ষে সঞ্চিত থাকে। চ্যানেলটি এখন চালু আছে, তাই ইলেক্ট্রনগুলি উত্স থেকে ড্রেনে প্রবাহিত হতে পারে। হট-ইলেক্ট্রন ইনজেকশন নামক প্রক্রিয়াটির মাধ্যমে কিছু উচ্চ-শক্তি ইলেক্ট্রনগুলি ভাসমান গেটের উপরে অন্তরক স্তরটি দিয়ে লাফিয়ে ফেলার কারণ হিসাবে উত্স-ড্রেন প্রবাহ যথেষ্ট পর্যাপ্ত।
পড়ার জন্য, নিয়ন্ত্রণ গেটে এবং ড্রেনে 1V এর কাছাকাছি প্রায় 5V এর ভোল্টেজ প্রয়োগ করা হয়। নিকাশী এবং উত্সের মধ্যে প্রবাহিত বর্তমানের দ্বারা মেমরি সেলটির অবস্থা পৃথক করা হয়।
অ-উদ্বায়ী মেমরির ব্যবহারযোগ্য জীবন মোছার চক্রগুলির ক্ষেত্রে পরিমাপ করা হয়। এনওআর এর অসুবিধে হ'ল মুছে যাওয়া চক্রের সংখ্যা ন্যানড মেমরির প্রায় 1/10। পিআইসি 32 এর অনেকগুলি সংস্করণ কেবল ফ্ল্যাশ মেমরিটিকে 1000 বার আপডেট করার অনুমতি দেয়, EEPROMs এর জন্য সাধারণত 100,000 মুছে ফেলার চক্রটি কম করে দেয়।
সুতরাং এটি এত গুরুত্বপূর্ণ নয় যদি ডিজাইনাররা ডিফল্ট রাজ্যটি 1 বা 0 হয় (তারা সেই মানটি বেছে নিয়েছিল যা সবচেয়ে সহজ বাস্তবায়নের অনুমতি দেয়); গুরুত্বপূর্ণ বিষয়টি হ'ল একজনকে প্রথমে ফ্ল্যাশের একটি ব্লক মুছে ফেলতে হয় (যা সময় নেয়) এবং তারপরে পুরো ব্লকটি পুনরায় প্রোগ্রাম করতে হবে (এমনকি একটি শব্দও পরিবর্তিত হচ্ছে (যার জন্য যথেষ্ট পরিমাণ র্যাম প্রয়োজন)।
ডিভাইসটির এই ব্লকটি মুছে ফেলা প্রথম EPROMs (Erasable প্রোগ্রামেবল রম) -এ ফিরে যায়, যা EEPROM গুলি এগিয়ে যায় কোডটি চিপগুলিতে প্রোগ্রাম করা হয়েছিল (16KB 27128 এর মতো) এবং সকেটে স্থাপন করা হয়েছিল। এই চিপগুলির উপরে একটি সামান্য উইন্ডো ছিল যা ডাইতে আলো জ্বলতে দেয়। যখন প্রোগ্রামটি পরিবর্তন করতে হয়েছিল, তখন চিপগুলিকে 20 মিনিট বা তার বেশি সময় জন্য একটি ইউভি ইরেজারে রাখা হয়েছিল, যা পুরো চিপটি মুছে ফেলবে। তারপরে চিপটি নতুন প্রোগ্রাম দিয়ে প্রোগ্রাম করা হত।
কিছু EEPROM প্রোগ্রামিংয়ের আগে মেমরির ব্লকগুলি মুছে ফেলা প্রয়োজন; অন্যরা একবারে বাইট লেখার অনুমতি দেয় (EEPROM কন্ট্রোলার আসলে বাইটটি প্রথমে এবং প্রোগ্রামগুলি মুছে দেয়)।