আমি জিলিনক্সের সরঞ্জামগুলির সাথে পরিচিত নই, তবে আমি আল্টেরার সাথে রয়েছি, তাই আমি আপনাকে তাদের সম্পর্কে বলব। জিলিনেক্স এবং অন্যদের খুব আলাদা হওয়া উচিত নয়।
Verilog
আপনার প্রথমে যা করতে হবে তা হ'ল ভেরিলোগ । এটি আপনার মাথাকে আঘাত করবে কারণ ভেরিলোগ (এবং কিছুটা অনুরূপ ভিএইচডিএল) প্রথমে সিমুলেশন ভাষা হিসাবে ডিজাইন করা হয়েছিল এবং অনেকগুলি নির্মাণ ( #5
যার অর্থ "অপেক্ষা 5 সময়ের পদক্ষেপ", একটি সময় পদক্ষেপ সাধারণত ন্যানোসেকেন্ড হয়ে থাকে)। তাই আপনি যদি মনে রাখতে হবে আপনার Verilog কোড করতে হবে যে বিধিনিষেধ অনেক আছে synthesizable একটি FPGA জন্য bitstream মধ্যে, অর্থাত্ compilable।
তবে সবচেয়ে বড় ধাক্কাটি হ'ল আপনি যা ভেরিলগ (এবং ভিএইচডিএল) এ লেখেন তা হ'ল সিস্টেমের কাছ থেকে আপনি যে আচরণটি প্রত্যাশা করছেন তা এবং সংকলকটি আপনার বিবরণ থেকে সঠিক যুক্তি অনুভব করে। আপনি যদি সাবধান না হন তবে আপনি এ থেকে প্রচুর দুষ্টু বাগ পেতে পারেন।
উদাহরণস্বরূপ, একটি ডি ফ্লিপ-ফ্লপ দেখতে দেখতে:
always @(posedge RESET or posedge CLK)
begin
if(RESET)
Q <= 1'b0;
else if(CLK_ENA)
Q <= D;
end
এটি কোনও ডিএফএফ কীভাবে কাজ করে তা বর্ণনা করে এবং সংকলকটি এটি বিশ্লেষণ করে আপনাকে একটি ডিএফএফ চাইবে তা নির্ধারণ করতে হবে। @(...)
একটি বলা হয় সংবেদনশীলতা তালিকা , যা সংকেত যে কোড ব্লক একটি reevaluation আরম্ভ একটি তালিকা রয়েছে; সুতরাং, এই ব্লকটিতে Q
কেবল তখনই পরিবর্তন হয় যখন সেখানে একটি বাড়তি প্রান্ত থাকে RESET
বা CLK
(এটি সক্রিয়-উচ্চ রিসেটের জন্য)। আপনি যদি সংবেদনশীলতার তালিকায় কিছু ভুলে যান (এতে কোনও ডান হাতের পার্শ্বের ভেরিয়েবলগুলি কোনও সংযুক্তিযুক্ত লজিক ব্লকের জন্য কোনও posedge
বা negedge
সংশোধক ছাড়াই থাকা উচিত ) সংকলক একটি ত্রুটি বলার পরিবর্তে প্রয়োজন অনুসারে ল্যাচগুলি সংশ্লেষিত করবে। ক্রেজি, তবে এটি এটি কীভাবে, কারণ ভেরিলোগ মূলত একটি সিমুলেশন ভাষা ছিল যা বাস্তবায়নের বিশদটি গোপন করে (এবং এটির প্রয়োজন হয় না)। ভিএইচডিএল একই তবে আরও অনেক ভার্জোজ ose
শেষ অবধি, কয়েক বছর আগে সিস্টেমভেরিলগ নামে ভেরিলোগের একটি নতুন সংস্করণ প্রকাশিত হয়েছিল যা সংশ্লেষযোগ্য কোডটি অনেক বেশি সহজ করে তোলে । যদি সম্ভব হয় তবে এই ভাষাটি শিখুন, কারণ জিলিনেক্স আইএসই এবং দ্বিতীয় আল্টেরা কোয়ার্টাস দু'জনেই এটি সমর্থন করে। মূল সমস্যাটি হ'ল ভাল রেফারেন্স উপাদানের সম্পূর্ণ অভাব।
একটি ডিএফএফ-এর সিস্টেমভেরিলোগ সংস্করণ কয়েকটি ছোট ছোট জিনিস পরিষ্কার করে:
always_ff @(posedge RESET, posedge CLK)
begin
if(RESET)
Q <= '0;
else if(CLK_ENA)
Q <= D;
end
দ্রষ্টব্য যে সংবেদনশীলতার তালিকার সংকেতগুলি কমা দ্বারা পৃথক করা হয়েছে। এটি কারণ or
বিভ্রান্তিকর কারণ and
সেখানে কাজ করতে পারে না। 1'b0
(একটি একক 0
বিট) এর প্রতিস্থাপনটিও লক্ষ করুন '0
(এমন একটি প্রতীক যা প্রসারিত হয় তবে অনেকগুলি 0
বিটের ক্ষেত্রে এটি কী অর্পণ করা হচ্ছে তার উপর ভিত্তি করে; প্যারামিটারাইজড মডিউলগুলির সাথে আরও অনেক নমনীয়)। শেষ পর্যন্ত, always
(যা কোনও কিছুর জন্য ব্যবহৃত হতে পারে; সংযুক্ত যুক্তি, ল্যাচস এবং ফ্লিপ ফ্লপ) এর প্রতিস্থাপনটি নোট করুন always_ff
যার সাথে ফ্লিপ-ফ্লপগুলিকে সংশ্লেষিত করার জন্য সামগ্রীগুলি প্রয়োজন। always_comb
এটির একটি রয়েছে যা সংবেদনশীলতা তালিকাটি সরিয়ে দেয়, কারণ এটি কেবল ইনপুট থেকে ব্লকে সংবেদনশীলতাগুলি তৈরি করে।
আল্টেরার ডিজাইন সফ্টওয়্যারটিকে দ্বিতীয় কোয়ার্টাস বলা হয় এবং আপনি ওয়েব সংস্করণটি সন্ধান করবেন । (সাবস্ক্রিপশন সংস্করণগুলি বরং ব্যয়বহুল এবং কেবলমাত্র দ্রুত বা সাম্প্রতিকতম এফপিজিএ মডেলগুলির জন্য প্রয়োজন))
দুঃখের বিষয় হ'ল আমি এই বিষয়টিতে ভাল বইটি পাই নি। আমি যা শিখেছি একাধিক উত্স, যেমন ভেরিলোগ বইগুলি যা সংশ্লেষযোগ্য এবং কোনটি নয় এবং উদাহরণ কোডটি আপনাকে বলার ভাল কাজ করে না এমন জিনিসগুলি একসাথে পাইক করে আমি কী পেয়েছি। কোয়ার্টাস দ্বিতীয়টিতে একটি "সন্নিবেশ টেম্পলেট" কমান্ড রয়েছে যা ডি ফ্লিপ-ফ্লপ থেকে রাষ্ট্র মেশিনে কয়েকটি সাধারণ কাঠামোর জন্য টেমপ্লেট কোড সন্নিবেশ করে।
ডেমো হার্ডওয়্যার
একবার আপনি ভেরিলোগে আপনার প্রসেসরটি প্রয়োগ করে ফেললে আপনার এটি তৈরি করা দরকার। আপাতত, কোয়ার্টাসকে চিপটি বেছে নিতে দিন (আপনার পরিবারটি বেছে নিতে হবে; আমি সাইক্লোন চতুর্থকে সুপারিশ করব) এবং পিনআউটগুলি। একবার এটি হতাশ হয়ে উঠলে আপনি জানবেন যে আপনার কতটা চিপ দরকার। এটি আপনাকে বলবে যে আপনি কতগুলি যুক্তিযুক্ত উপাদান, ফ্লিপ ফ্লপ, র্যাম বিটস ইত্যাদি ব্যবহার করেছেন। নিশ্চিত হয়ে নিন যে এগুলির যে কোনওটির উপর আপনি 50% এর বেশি নন; আপনি যদি হন তবে কম্পাইলারটি চয়ন করা চিপটি দেখুন এবং ম্যানুয়ালি পরবর্তী বড়টি (যুক্তিযুক্ত উপাদানগুলিতে) নির্বাচন করুন যাতে কমপক্ষে অনেকগুলি পিন রয়েছে এবং আপনি 50% এর অধীনে ব্যবহার না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।
তারপরে কোনও ডেমো বোর্ডের জন্য শপিং করুন যাতে আপনি শেষ পর্যন্ত যেটি তৈরি করেছেন তার কমপক্ষে একটি চিপ রয়েছে। এটিতে পেরিফেরিয়াল এবং / অথবা আই / হে সংযোগকারী রয়েছে যা আপনার প্রয়োজন হবে তা পরীক্ষা করে দেখুন। কোনও অনুপস্থিত হার্ডওয়ার সরবরাহের জন্য কোনও এক্সপেনশন সংযোজকের সাথে প্লাগ করে এমন একটি ডিনিকার্ড তৈরি করা অস্বাভাবিক নয়।
এখন আপনি নিজের হার্ডওয়্যারটি বেছে নিয়েছেন, আসল পিনআউটগুলি খুঁজে বের করুন এবং ডান পিনগুলিতে ডান সংকেত রাখতে পিন প্ল্যানার ব্যবহার করুন। ডেমো বোর্ডের একটি ব্যবহারকারীর গাইড থাকবে যা আপনাকে জানায় যে ডেমো বোর্ডে কোন ডিভাইস বা সংযোজক পিনগুলি কোন পিনগুলি তারযুক্ত।
আপনি পিনআউটস সেট হয়ে গেলে এটি আবার তৈরি করুন যাতে এটি আপনার পছন্দসই পিনগুলি ব্যবহার করে। মনে রাখবেন যে সিস্টেম ঘড়ির মতো কিছু সংকেতের জন্য ডেডিকেটেড ইনপুট পিনের প্রয়োজন হবে (যাতে তারা সরাসরি অভ্যন্তরীণ পিএলএলগুলিতে যাত্রা করে)।
আপনার ডিজাইনটি সরাসরি এফপিজিএতে ডাউনলোড করতে প্রোগ্রামারটি ব্যবহার করুন (সেই শিফট রেজিস্টারটি আমি কিছুক্ষণ আগে উল্লেখ করেছি)। এখন আপনি পরিচিত সম্পাদনা-সংকলন-চালিত ডিবাগিং চক্রের মধ্যে রয়েছেন। এটি কাজ না করা পর্যন্ত এটি পিটুন।
এটি একবার কাজ হয়ে গেলে, আপনি প্রোগ্রামারটিকে অনলাইন বোর্ডের কনফিগারেশন ডিভাইসে কোড ডাউনলোড করতে ব্যবহার করতে পারেন যাতে আপনার প্রোগ্রামটি লোড হয়ে যায় এবং পাওয়ার-অন চালিত হয়।
এটি বেশ দীর্ঘ ছিল এবং আমি আশা করি এটি কিছুটিকে সহায়তা করেছিল। একটা ব্যাপার অনেক শিখতে; এটি একটি নতুন প্রোগ্রামিং ভাষা শেখার মতো নয় যেমন এটি একটি নতুন প্রোগ্রামিং দৃষ্টান্ত শেখার মতো, যেমন পদ্ধতিগত থেকে কার্যকরী ভাষায় সরে যাওয়া। ভেরিলোগ একসাথে ভাষা; কোড সর্বাধিক সর্বদা চালানো হয়।
শুভকামনা!