যখন ভিএইচডিএল-তে বিটি-র মাধ্যমে STD_LOGIC ব্যবহার করবেন


9

ব্যবহারের মধ্যে পার্থক্য কী:

ENTITY MyDemo is 
    PORT(X: IN STD_LOGIC; F: OUT STD_LOGIC );
END MyDemo; 

এবং

ENTITY MyDemo is 
    PORT(X: IN BIT; F: OUT BIT );
END MyDemo; 

এসটিডি_লজিক এবং বিপরীতে বিটি ব্যবহারের সীমাবদ্ধতাগুলি কী? তারা সম্পূর্ণরূপে বিনিময় সক্ষম? আমি বুঝতে পারি যে আমি যদি STD_LOGIC সংজ্ঞায়িত করেছি তবে অ্যারের উপাদানগুলিকে অ্যাক্সেস করতে আমি এটি BIT_Vector দিয়ে ব্যবহার করতে পারি না। তবে আমি পার্থক্যটি দেখতে পাচ্ছি না।


উত্তর:


9

Bitএকটি পূর্বনির্ধারিত প্রকার এবং কেবলমাত্র মান 0বা থাকতে পারে 1Bitটাইপ একটি idealized মান।

type Bit is ('0', '1');

std_logicstd_logic_1164প্যাকেজের অংশ এবং এটি একটি ডিজিটাল সিস্টেমের মধ্যে সংকেতগুলির আরও বাস্তবসম্মত মডেলিং সরবরাহ করে। এটি নয়টি ভিন্ন মান রাখতে সক্ষম is সাধারণত আপনার কোড মধ্যে আপনি শুধুমাত্র ব্যবহার করা হবে 0, 1এবং Z(উচ্চ-জেড)। Uটেস্টবেঞ্চে Xসিস্টেমটি মডেলিং করার সময় কিন্তু (একনাইটালাইজড) এবং (অজানা) খুব কার্যকর।

    -------------------------------------------------------------------    
    -- logic state system  (unresolved)
    -------------------------------------------------------------------    
    TYPE std_ulogic IS ( 'U',  -- Uninitialized
                         'X',  -- Forcing  Unknown
                         '0',  -- Forcing  0
                         '1',  -- Forcing  1
                         'Z',  -- High Impedance   
                         'W',  -- Weak     Unknown
                         'L',  -- Weak     0       
                         'H',  -- Weak     1       
                         '-'   -- Don't care
                       );

--    attribute ENUM_ENCODING of std_ulogic : type is "U D 0 1 Z D 0 1 D";

    -------------------------------------------------------------------    
    -- *** industry standard logic type ***
    -------------------------------------------------------------------    
    SUBTYPE std_logic IS resolved std_ulogic;

std_logic_1164প্যাকেজ এছাড়াও রূপান্তর করতে রূপান্তর ফাংশন প্রদান করে std_logicকরতে Bit


5

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


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

@ ট্রেন্ডড: ভাল বিষয় std_ulogic। তবে মনে রাখবেন অনেকগুলি কোর লেখা std_logicথাকবে যাতে আপনি এটির কয়েকটি দেখতে পাবেন।
ব্রায়ান কার্লটন

1
std_logicসত্যই চারপাশে সবচেয়ে সাধারণ টাইপ; আমি কেবল যুক্তি দিচ্ছি যে এটির ব্যবহারটি মূল অভিপ্রায় অনুসারে নয়: বহু-রাষ্ট্রীয় সংকেতের মডেলিং। অভ্যন্তরীণ ডিজাইন জন্য আমরা সাধারণত বিবেচনা 1বা 0ও একটি একক ড্রাইভার। বিষয়টিতে পুঙ্খানুপুঙ্খ আলোচনার জন্য ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ / প্রশ্ন / ১/৫৪৪/২ দেখুন ।
7:25 এ ট্রেন্ডড

5

std_logic একটি রেজুলেশন ফাংশন আছে

নয় std_logicব্যতীত আরো উপযোগী রাজ্যের আছে 1এবং 0এটি একটি রেজল্যুশন ম ফাংশন পূর্বনির্ধারণ রয়েছে।

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

SUBTYPE std_logic IS resolved std_ulogic;

std_ulogicঅমীমাংসিত (এবং এইভাবে অনেক কম দরকারী) সংস্করণটি কোথায় std_logic

বিশেষত, এটি দুর্দান্ত জিনিসগুলির মতো বোঝায় 0এবং এতে 1নেতৃত্ব দেয় X:

library ieee;
use ieee.std_logic_1164.all;

entity std_logic_tb is
end std_logic_tb;

architecture behav of std_logic_tb is
    signal s0 : std_logic;
begin
    s0 <= '0';
    s0 <= '1';
    process
    begin
        wait for 1 ns;
        assert s0 = 'X';
        wait;
    end process;
end behav;

এটি স্বজ্ঞাত জ্ঞান তৈরি করে, যেমনটি আমরা Xএমন এক রাষ্ট্র হিসাবে বুঝি যেখানে একক তারের সাথে একাধিক বেমানান মান প্রয়োগ করা হয়।

std_logic এছাড়াও এলআরএম-তে উপস্থিত একটি সারণী অনুসারে কীভাবে প্রতিটি অন্যান্য সম্ভাব্য জোড়া ইনপুট সংকেত সমাধান করতে হয় তাও জানে।

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

এর সম্ভাব্য মানগুলি std_logicএকটি ভাল পছন্দ কারণ এটি আইইইই 1164 দ্বারা মানক করা হয় এবং প্রচলিত ব্যবহারের ক্ষেত্রে ডিল করে।


0

std_logic বিট চেয়ে সমৃদ্ধ , এবং মূলত বেশিরভাগ সময় ব্যবহার করা উচিত।

রয়েছে বুলিয়ান টাইপ, যা, মত বিট , দুই মান আছে। এটি তুলনামূলক ফলাফলের ধরণ, আইএফ [বুল] বা WHEN [bool] এর পরে প্রত্যাশিত প্রকার , প্রায়শই নির্বাচনের ধ্রুবকগুলির জন্য ব্যবহৃত হয়:constant ENABLE_DEBUG_INTERFACE : boolean := true;

একটি স্থান যেখানে বিট পছন্দ করা যেতে পারে std_logic বৃহৎ অ্যারে, স্মৃতি জন্য। সিমুলেটরগুলির অনুকূলকরণের ক্ষেত্রে, স্টিম_লজিকের চেয়ে সিমুলেটারের স্মৃতিতে বিট কম অঞ্চল দখল করে । এবং আপনার ডিজাইনটি এক গিগাবাইট র‌্যাম ইনস্ট্যান্ট করে কিনা তা বিবেচনা করতে পারে।

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

অবশ্যই, এই কর্মক্ষমতা দিকটি ভাষার অংশ নয়, এবং ভিএইচডিএল সিমুলেটর বাস্তবায়নের উপর নির্ভর করে।

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