ব্লকিং এবং ননব্লকিং অ্যাসাইনমেন্ট ভেরিলোগের মধ্যে পার্থক্য


15

আমি এই পৃষ্ঠাটি পড়ছিলাম http://www.asic-world.com/verilog/verilog_one_day3.html যখন আমি নিম্নলিখিতটি পেলাম:

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

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

উত্তর:


21

মোটামুটি নিশ্চিত ছিল যে ব্লক করা কার্য সমান্তরাল থাকাকালীন ননব্লকিং অ্যাসাইনমেন্টগুলি ক্রমযুক্ত ছিল।

নিয়োগ, executes "সিরিজের" ব্লকিং কারণ একটি ব্লক নিয়োগ ব্লক পর্যন্ত এটি সমাপ্ত পরবর্তী প্রতিবেদনটি সঞ্চালনের। সুতরাং পরবর্তী বিবৃতিটির ফলাফলগুলি প্রথমটি সম্পূর্ণ হওয়ার উপর নির্ভর করে।

অ-ব্লকিং অ্যাসাইনমেন্ট সমান্তরালভাবে সম্পাদন করে কারণ এটি অ্যাসাইনমেন্টগুলি বর্ণনা করে যা সমস্ত একই সময়ে ঘটে। ২ য় লাইনে একটি বিবৃতির ফলাফল 1 ম লাইনে বিবৃতিটির ফলাফলের উপর নির্ভর করবে না। পরিবর্তে, দ্বিতীয় লাইনটি কার্যকর করা হবে যেন ১ ম লাইনটি এখনও ঘটেনি।


সুতরাং কি বিবৃতি বরাদ্দ সম্পর্কে? তারা কি কেবল তাদের নিজস্ব একটি সম্পূর্ণ শ্রেণিতে আছে?
অকার্যকর তারা

4
হ্যাঁ, assignবিবৃতি সর্বদা ব্লকের বাইরে ঘটে এবং সাধারণত সংযোজক (আন-ল্যাচড) যুক্তি (যদিও সর্বদা অবরুদ্ধ থাকে কিছু ব্যতিক্রম সহ ধারাবাহিক যুক্তি বর্ণনা করে) বর্ণনা করতে ব্যবহৃত হয়। আফাইক, assignবিবৃতিগুলি সর্বদা "সমান্তরালে" কার্যকর করে যখনই তাদের এলএইচএসের কোনও মান পরিবর্তন হয়।
ফোটন

ঠিক আছে ... আমি এই ধারণাটি পেতে শুরু করি যে ভেরিলোগ সর্বাধিক মার্জিত ডিজাইনের ভাষা নয়। এটি সি শিখার মতো হবে।
অকার্যকর তারকা

1
ভেরিলোগ ইতিমধ্যে বিদ্যমান হার্ডওয়্যার "বর্ণনা" করার জন্য ডিজাইন করা হয়েছিল। এটি একটি ভাষা হিসাবে ডিজাইন করতে (সিনথেসাইজ করা) একটি ভাষা হিসাবে হ্যাক।
ফোটন

4
ভেরিলোগ যদি "সি শিখার মতো" সমস্যা হয় তবে ভিএইচডিএল একবার দেখুন। কিছু লোকের একে অপরের পক্ষে মোটামুটি দৃ strong় পছন্দ রয়েছে। কারও কারও কাছে ভিএইচডিএল খুব ভার্জোজ ose আমার কাছে এটি অনেক ভাল চিন্তা করা। (সিগন্যাল / ভেরিয়েবল অ্যাসাইনমেন্ট শব্দার্থবিজ্ঞানগুলি ব্লকিং / উদাহরণস্বরূপ তুলনায় অনেক বেশি পরিষ্কার)। stackoverflow.com/questions/13954193/... এবং sigasi.com/content/vhdls-crown-jewel আপনি এটা পছন্দ করা বা এটা ঘৃণা হতে পারে। তবে এটি একবার দেখার মতো।
ব্রায়ান ড্রামন্ড

6

নির্ধারিত বিবৃতিগুলি "ব্লকিং" বা "ননব্লকিং" নয়, সেগুলি "অবিচ্ছিন্ন"। একটি নির্ধারিত বিবৃতিটির আউটপুট সর্বদা এর ইনপুটগুলির নির্দিষ্ট ফাংশনের সমান। "ব্লকিং" এবং "ননব্লকিং" কার্যাদি কেবল সর্বদা ব্লকের মধ্যে বিদ্যমান within

একটি ব্লকিং অ্যাসাইনমেন্ট তত্ক্ষণাত এটি প্রক্রিয়া করার পরে প্রভাবিত করে। বর্তমান "টাইম ডেল্টা" প্রক্রিয়াকরণের শেষে একটি নন-ব্লকিং অ্যাসাইনমেন্ট নেওয়া হয়।

সর্বদা ব্লকগুলি সম্মিলিত বা অনুক্রমিক যুক্তি মডেল করতে ব্যবহার করা যেতে পারে (সিস্টেমেরilog সর্বদা_কম্ব এবং সর্বদা_এফটিকে স্পষ্ট করতে)। সংযোজক যুক্তি মডেলিংয়ের সময় এটি ব্যবহার করার জন্য সাধারণত আরও দক্ষ = তবে এটি সাধারণত আসলে কিছু যায় আসে না।

অনুক্রমিক যুক্তি মডেলিং করার সময় (যেমন সর্বদা @ (পোজক ক্লক)) আপনি সাধারণত ননব্লকিং অ্যাসিংমেন্ট ব্যবহার করেন। এটি আপনাকে "ঘড়ির প্রান্তের পূর্বে রাষ্ট্র" হিসাবে পদক্ষেপে "ঘড়ির প্রান্তের পরে রাষ্ট্র" নির্ধারণ করতে দেয়।

ক্রিয়াকলাপে ব্লকিং অ্যাসাইনমেন্টগুলি সর্বদা "ভেরিয়েবল" হিসাবে ব্লক করার ক্ষেত্রে এটি দরকারী। আপনি যদি এটি করেন তবে মনে রাখতে হবে দুটি মূল নিয়ম।

  1. কোনও ক্রিয়াকলাপের ভিতরে ব্লকিং অ্যাসাইনমেন্ট সহ সেট করা কোনও রেগ অ্যাক্সেস করবেন না in
  2. একই রেগে ব্লকিং এবং নন-ব্লকিং অ্যাসাইনমেন্টগুলি মিশ্রণ করবেন না।

এই বিধিগুলি ভঙ্গ করার ফলে সংশ্লেষণ ব্যর্থতা এবং / অথবা সিমুলেশন এবং সংশ্লেষণের মধ্যে আচরণের পার্থক্য হতে পারে।


"" এমন ক্রিয়াকলাপের ভিতরে ব্লকিং অ্যাসাইনমেন্টের সাথে সেট করা কোনও রেগ অ্যাক্সেস করবেন না যা সর্বদা নির্ধারিত হয় এর বাইরে থেকে ব্লক করে। "" আপনি কি এটি ব্যাখ্যা করতে পারেন?
ব্যবহারকারী 125575

বিভিন্ন ক্রমিকের সর্বদা ব্লকের একটি সংজ্ঞায়িত ক্রম থাকে না। সুতরাং একটি ব্লগিং অ্যাসিমেন্টমেন্ট সহ একটি "রেগ" সেটটি সর্বদা অন্য থেকে সর্বদা ব্লক করে পড়া অবিশ্বাস্য আচরণের দিকে পরিচালিত করে।
পিটার গ্রিন

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

অন্তত কোয়ার্টাসে আইআইআরসি এটি কেবল একটি ত্রুটি নয় সতর্কবার্তা হিসাবে বিবেচিত হয়।
পিটার গ্রিন

5

ব্লকিং অ্যাসাইনমেন্ট শব্দটি মানুষকে বিভ্রান্ত করে কারণ শব্দটিকে ব্লক করা সময়-ধারাবাহিক যুক্তির পরামর্শ বলে মনে হয়। তবে সংশ্লেষিত যুক্তিতে এটির অর্থ এই নয় , কারণ সবকিছু সমান্তরালভাবে কাজ করে

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

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

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


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

অবশ্যই সিস্টেমভেরিলোগের পদ্ধতিগত মোড, বিশেষত ব্লকগুলির initialমধ্যে বিবৃতিগুলির ক্ষেত্রে প্রযোজ্য program, একচেটিয়াভাবে ব্যবহার (সময়-ধারাবাহিক) ব্লকিং অ্যাসাইনমেন্ট । এটি টেস্টবেঞ্চ ডিজাইনের জন্য দরকারী তবে সাধারণত আরটিএল স্পেসিফিকেশনের জন্য নয়।
নোবার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.