UDB. ما هذا؟ الجزء 6. الحالة والتحكم وحدة



في المقالات السابقة ، ترجمات وثائق السرو ، تم النظر بشكل كبير في التشغيل التلقائي التشغيلي Datapath. تدريجيا ننتقل إلى دراسة وحدات UDB الأخرى ، ولا سيما وحدة الإدارة والحالة.

المحتوى العام للدورة "UDB. ما هذا؟ "
الجزء 1. مقدمة. Pld.
الجزء 2. Datapath.
الجزء 3. Datapath FIFO.
الجزء 4. Datapath ALU.
الجزء 5. Datapath. أشياء صغيرة مفيدة.
الجزء 6. وحدة الإدارة والحالة. (المادة الحالية)
الجزء 7. توقيت وإعادة ضبط وحدة التحكم
الجزء 8. معالجة UDB

21.3.3. وحدة الإدارة والحالة


يظهر الشكل 21-28 رؤية عالية المستوى لوحدة التحكم وحالتها. يتم نقل بت الحالة الخاصة بسجل التحكم لتتبع الموارد ، مما يتيح للبرنامج القدرة على التحكم في سلوك UDB. يستقبل سجل الحالة البيانات من خطوط التتبع ، حتى يتمكن البرنامج من مراقبة العمليات التي يقوم بها UDB.


الشكل 21-28. سجلات الإدارة والوضع.

يظهر هيكل وحدة التحكم والحالة بمزيد من التفصيل في الشكل 21-29. الهدف الرئيسي من هذه الوحدة هو تنسيق تفاعل برنامج المعالج الأساسي مع عمل عناصر UDB الداخلية. ومع ذلك ، نظرًا للارتباط القوي بمصفوفة التتبع ، يمكن تكوين هذه الكتلة لأداء وظائف أخرى.


الشكل 21-29. وحدة التحكم والحالة.

أوضاع التشغيل:

  • وضع الإدخال يمكن إدخال حالة الخطوط المنتهية من الخارج والتقاطها كحالة ، وبعد ذلك تتم قراءة وحدة المعالجة المركزية أو DMA.
  • مراقبة الانتاج يمكن لوحدة المعالجة المركزية أو DMA كتابة البيانات إلى سجل التحكم. ستحدد هذه البيانات حالة الخطوط التي تذهب إلى موارد التتبع.
  • التوازي المدخلات - إلى مدخلات متوازية
  • الإخراج الموازي - من الإخراج الموازي لـ Datapath.
  • وضع العداد في هذا الوضع ، يعمل سجل التحكم بمثابة عداد تناقصي 7 بت مع فترة قابلة للبرمجة وإعادة الضبط التلقائي. يمكن تكوين مدخلات قناة التتبع للتحكم في كل من العداد وإعادة ضبطه. عند تنشيط هذا الوضع ، فإن وظيفة سجل التحكم غير متاحة.
  • وضع التزامن / وضع المزامنة . في هذا الوضع ، يعمل سجل الحالة كمزامن مزدوج 4 بت. عند تنشيط هذا الوضع ، فإن وظيفة سجل الحالة غير متاحة.

21.3.3.1 الوضع ووضع التحكم


عند التشغيل في وضع التحكم والحالة ، تعمل هذه الوحدة بمثابة سجل للحالة وتسجيل تجاوز القناع وتسجيل التحكم في التكوين الموضح في الشكل 21-30.


الشكل 21-30. إدارة الوظائف والحالة.

عملية تسجيل الحالة


كل UDB لديه سجل حالة 8 بت واحد. تأتي المدخلات لهذا السجل من أي إشارة من بنية التتبع الرقمي. سجل الحالة قابل للتدمير: يفقد حالته أثناء النوم وبعد الاستيقاظ تبلغ القيمة 0x00. يمكن برمجة كل بت بشكل مستقل للعمل في واحد من وضعين.

الجدول 21-19. سجل الحالة.

STAT MDالوصف
0قراءة عادية. إرجاع القيمة الحالية لإشارة الدخل.
1الشائكة ، تطهيرها عند القراءة. المزالج مستوى الإدخال عالية
على إشارة الساعة. مسح بعد قراءة السجل.

من الميزات المهمة في عملية تطهير سجل الحالة أنه يتم إزالة البتات الجاهزة فقط. يسمح هذا البتات المتبقية بمتابعة التقاط الحالة للحفاظ على استمرارية العملية.

حالة القراءة العادية


بشكل افتراضي ، تقرأ وحدة المعالجة المركزية بشفافية حالة الدائرة المقابلة. يمكن استخدام هذا الوضع لقراءة البيانات المقطوعة داخل UDB.

عصا الحالة مع واضحة بعد القراءة


في هذا الوضع ، يتم أخذ عينات مدخلات سجل الحالة في كل دورة تحكم وساعة الحالة. إذا كانت الإشارة في ساعة معينة عالية ، يتم التقاطها في بت الحالة وتبقى عالية ، بغض النظر عن حالات الإدخال اللاحقة. عندما تقرأ وحدة المعالجة المركزية أو DMA سجل الحالة ، يتم مسح البت. مسح سجل الحالة هو وضع مستقل ويحدث حتى عند تعطيل تسجيل UDB ؛ يعتمد على توقيت الحافلة ويحدث كجزء من عملية القراءة.

حالة المزلاج أثناء القراءة


يوضح الشكل 21-31 بنية منطق قراءة الحالة. يتبع سجل الحالة اللاصقة مزلاج يغلق بيانات سجل الحالة ويبقيها مستقرة أثناء دورة القراءة ، بغض النظر عن عدد علامات الانتظار في عملية القراءة الحالية.


الشكل 21-31. منطق حالة القراءة.

جيل المقاطعة


في معظم الوظائف ، يرتبط إنشاء المقاطعة بمعلمات بت الحالة. كما هو مبين في الشكل 21-31 ، تم دمج هذه الميزة في منطق سجل الحالة في شكل عملية تقنيع وتطبيق عملية OR على الحالة. يمكن فقط استخدام أقل 7 بت من إدخال الحالة مع مولدات المقاطعة المضمنة. عادةً ما يتم استخدام البتة الأكثر أهمية (أهم بت ، MSB) كإخراج مقاطعة ويمكن إعادة توجيهها إلى وحدة تحكم المقاطعة باستخدام قنوات التتبع الرقمية. في هذا التكوين ، تتم قراءة حالة بت طلب المقاطعة من بت تسجيل الحالة العالية.

21.3.3.2 تشغيل سجل التحكم


يحتوي كل UDB على سجل تحكم 8 بت واحد. يعمل كسجل قياسي للقراءة / الكتابة على ناقل النظام ، حيث يتم التحكم في إخراج وحدات البت هذه بواسطة خطوط بنية التتبع الرقمي.

سجل التحكم قابل للتدمير: يفقد حالته أثناء النوم وبعد الاستيقاظ تبلغ القيمة 0x00.

أوضاع سجل الإدارة


يمكن تكوين كل بت في واحد من ثلاثة أوضاع. يتم تحديد التكوين عن طريق الجمع بين بت اثنين من سجلات 8 بت CTL_MD1 [7: 0] و CTL_MD0 [7: 0]. على سبيل المثال ، يتحكم {CTL_MD1 [0] ، CTL_MD0 [0]} في وضع صفر بت في سجل التحكم (انظر الجدول 21-20).

الجدول 21-20. التحكم في تسجيل وضع صفر بت
CTL MDالوصف
00الوضع المباشر
01وضع المزامنة
10(محفوظة)
11وضع النبض

وضع تسجيل التحكم المباشر


افتراضيًا ، يكون الوضع مباشرًا. كما هو مبين في الشكل 21-32 ، عند كتابة وحدة المعالجة المركزية أو DMA في سجل التحكم ، يتم إرسال إخراج سجل التحكم مباشرة إلى خط التتبع في نفس الدورة.


الشكل 21-32. وضع تسجيل التحكم المباشر.

وضع تسجيل التحكم متزامن


في الوضع المتزامن ، كما هو مبين في الشكل 21-33 ، تتم إعادة مزامنة إخراج سجل التحكم مع ساعة تساوي الساعة الحالية للتحكم والحالة (الحالة والتحكم ، SC). يتيح لك ذلك التحكم في مخططات توقيت الإخراج عند تردد SC المحدد ، وليس على تردد ساعة الناقل.


الشكل 21-33. وضع تسجيل التحكم متزامن.

سجل التحكم في وضع النبض


يشبه وضع النبض الوضع المتزامن ، حيث تتم إعادة اختبار بت التحكم في تردد SC ؛ يبدأ النبض في دورة SC الأولى ويتبع دورة الكتابة بالحافلة. يتم ضبط خرج بت التحكم أثناء دورة SC واحدة كاملة. في نهاية دورة الساعة هذه ، تتم إعادة ضبط بت التحكم تلقائيًا.

باستخدام طريقة التشغيل هذه ، يمكن للبرنامج كتابة 1 إلى بت سجل التحكم لإنشاء نبضة. بعد تعيين القيمة 1 للبت ، سيقوم البرنامج بقراءتها على أنها 1 حتى نهاية النبضة ، وبعد ذلك سيتم قراءتها على أنها 0. وبعد ذلك ، يمكن للبرنامج كتابة 1 آخر لبدء نبض جديد. وبالتالي ، لن يكون من الممكن إعطاء نبضات أكثر من كل خطوة ثانية من إشارة SC.

إعادة تعيين سجل الإدارة


يحتوي سجل التحكم على وضعين لإعادة الضبط يتم التحكم فيهما بواسطة بت تكوين EXT RES ، كما هو مبين في الشكل 21-34. عندما يكون EXT RES 0 (افتراضي) ، في الوضع المتزامن أو النبض ، يعيد إدخال إعادة التعيين الذي تم تتبعه إعادة ضبط المخرجات المتزامنة ، ولكن ليس بت التحكم نفسه. عندما تكون EXT RES 1 ، يعيد إدخال إعادة التعيين القابل للإرجاع تعيين بت التحكم والإخراج المتزامن.


الشكل 21-34. إعادة تعيين سجل الإدارة.

21.3.3.3 وضع الإدخال / الإخراج الموازي


في هذا الوضع ، يتم توصيل التحكم وتتبع الحالة بالتوازي المتزامن مع إشارات Datapath. لتنشيط هذا الوضع ، تحتاج إلى تشغيل بتات تكوين SC OUT لتحديد إخراج Datapath المتوازي. يتوفر الاتصال مع الإدخال المتوازي دائمًا ، ومع ذلك ، تتم مشاركة اتصالات التتبع هذه مع مدخلات تسجيل الحالة ومدخلات التحكم العداد ومخرجات المقاطعة.


الشكل 21-35. وضع I / O الموازي.

21.3.3.4 وضع العداد


كما هو مبين في الشكل 21-36 ، عندما تعمل الوحدة في وضع العداد ، يتوفر عداد تنازلي 7 بت للاستخدام داخل العمليات داخل UDB ولاحتياجات البرنامج. تشمل ميزات العداد:

  • تسجيل فترة 7 بت ، (القراءة / الكتابة).
  • تسجيل حساب 7 بت ، (قراءة / كتابة). الوصول ممكن فقط عندما يتم إيقاف العداد.
  • يعيد تحميل الفترة في حساب التسجيل تلقائيًا عندما يصل إلى الصفر.
  • بت التحكم في الوصول إلى البرنامج في السيطرة المساعدة تسجيل CNT START ، وتستخدم لبدء وإيقاف العداد. (إنها تتداخل مع إشارة ENABLE للأجهزة ويجب تثبيتها حتى تعمل إشارة الأجهزة Enable الاختيارية).
  • وحدات البت القابلة للتحديد من قنوات التتبع لعنصر التحكم الديناميكي الاختياري لوظائف التحميل والتحميل:
    - EN ، إشارة تتبع لبدء أو التوقف عن العد.
    - LD ، إشارة تحميل يمكن تتبعها تؤدي إلى إعادة تحميل الفترة. عندما تكون الإشارة مضبوطة ، فإنها تتداخل مع إشارة النهاية المعلقة. إنه حساس للمستوى ، وبينما يتم تحريك الإشارة ، تستمر الفترة في التحميل.
  • يمكن إرسال عداد 7 بت لتتبع الموارد كما sc_out [6: 0].
  • يمكن لإشارة الإنهاء إدخال موارد التتبع كـ sc_out [7].
  • في وضع "الافتراضي" ، يتم استخدام وضع العض لإشارة العد. في الوضع البديل ، يتحول إلى وضع الجمع.
  • في الوضع الافتراضي ، يجب تعيين إشارة EN للأجهزة الاختيارية ، إذا تم استخدامها ، لتمكين إشارة أجهزة LD. في الوضع البديل ، تكون إشارات أجهزة LD و EN مستقلة.


الشكل 21-36. وضع العداد
ملاحظة المترجم:
حول هذا المكان ، أدركت أنني لا أفهم شيئًا تمامًا من المستند. لا يوجد مكان في هذا الوضع "الافتراضي" و "البديل". بعد بحث طويل ، تمكنت من العثور على بعض ، ولكن على سبيل المثال.
ملف: C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ psoc \ content \ CyComponentLibrary \ CyComponentLibrary.cylib \ bScanComp_v1_10 \ bScanComp_v1_10.v
كود توضيحي:



نفس النص:
cy_psoc3_count7 #(.cy_period(Period),.cy_route_ld(0),.cy_route_en(1), .cy_alt_mode(1)) ChannelCounter( /* input */ .clock(clk_int), /* input */ .reset(1'b0), /* input */ .load(1'b0), /* input */ .enable(enable_int), /* output [06:00] */ .count(count), /* output */ .tc(tc_o) ); 


الإعلان عن المكون cy_psoc3_count7 الذي وجدته فقط للغة VHDL ، يبدو أن Verilog مدمج في أدوات التطوير. الآن تعرف تقريبًا مكان البحث عن وحدات توليف قيد المناقشة.

هنا نعتبر البتات الغامضة ، والتي تسمى إما SC OUT CTL أو SC_OUT_CTL ، لكن قيمها غير موثقة. لم أجدها على الإطلاق في أي مكان. يتضح من النص أنها تقوم بالتبديل بين المكون STATUS_CONTROL بين الأوضاع. ولكن في ملف VHDL المذكور سابقًا C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ lcpsoc3 \ cpsoc3.vhd

نرى بشكل منفصل العداد المعروف بالفعل لنا
 component cy_psoc3_count7 generic(cy_period : std_logic_vector (6 downto 0) := "1111111"; cy_init_value : std_logic_vector (6 downto 0) := "0000000"; cy_route_ld : boolean := false; cy_route_en : boolean := false; cy_alt_mode : boolean := false); port (clock : in std_logic; reset : in std_logic; load : in std_logic; enable : in std_logic; count : out std_logic_vector (6 downto 0); tc : out std_logic); end component; 


بشكل منفصل - الحالة والإدارة
  attribute atomic_rtl of cy_psoc3_status : component is rtl_generic; attribute cpu_access of cy_psoc3_status : component is true; component cy_psoc3_statusi generic(cy_force_order : boolean := false; cy_md_select : std_logic_vector (6 downto 0) := "0000000"; cy_int_mask : std_logic_vector (6 downto 0) := "0000000"); port (reset : in std_logic := '0'; clock : in std_logic := '0'; status : in std_logic_vector (6 downto 0); interrupt : out std_logic); end component; attribute atomic_rtl of cy_psoc3_statusi : component is rtl_generic; attribute cpu_access of cy_psoc3_statusi : component is true; component cy_psoc3_control generic(cy_init_value : std_logic_vector (7 downto 0) := "00000000"; cy_force_order : boolean := false; cy_ctrl_mode_1 : std_logic_vector (7 downto 0) := "00000000"; cy_ctrl_mode_0 : std_logic_vector (7 downto 0) := "00000000"; cy_ext_reset : boolean := false); port (reset : in std_logic := '0'; clock : in std_logic := '0'; control : out std_logic_vector (7 downto 0)); end component; 


بشكل منفصل - المزامن
 component cy_psoc3_sync port (clock : in std_logic := '0'; sc_in : in std_logic; sc_out : out std_logic); end component; 


أكرر أن Verilog لا يحتوي على إصدار من هذه الإعلانات على الإطلاق (لا يوجد سوى نماذج سلوكية في دليل C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ sim ، لذلك أعتقد أن الإعداد bits لا يمكن للمبرمجين البسيط الوصول إلى الوسائط ، فعند قراءة هذا القسم ، يجب على المرء أن يضع هذه الحقيقة في الاعتبار ، حيث يتم إعطاء شيء ما لمجرد الرجوع إليه ، ولا يخضع لنا المبرمجون.
لتمكين وضع العداد ، يجب تحديد إخراج العداد في البتات SC_OUT_CTI [1: 0]. في هذا الوضع ، التشغيل العادي لسجل التحكم غير متوفر. في الوقت نفسه ، يمكن استخدام سجل الحالة لعمليات القراءة ، لكن يجب ألا تستخدمه لإنشاء مقاطعة ، لأن سجل تعيين القناع يستخدم أيضًا كسجل فترة مضادة. لا يتم إتلاف سجل الفترة ويحافظ على حالته بعد الاستيقاظ. لفترة من التدابير N ، يجب تحميل القيمة N-1 في سجل الفترة. القيمة N = 1 (الفترة صفرية) حيث أن قيمة مقسم التردد غير مدعومة وستؤدي إلى وحدة ثابتة عند إخراج TC (عدد المطراف ، TC). يعتمد توفر وضع SYNC على ما إذا كان التحكم الديناميكي (LD / EN) مستخدمًا أم لا. إذا لم يتم استخدامه ، فلن يؤثر ذلك على وضع SYNC. إذا تم استخدامه ، فإن وضع SYNC غير متاح.

21.3.3.5 وضع المزامنة


كما هو مبين في الشكل 21-37 ، يمكن أن يعمل سجل الحالة كساعة مزدوجة 4 بت متزامنة مع قيمة SC_CLK الحالية في حالة ضبط بت SYNC MD. يمكن استخدام هذا الوضع لتنفيذ التزامن المحلي للإشارات غير المتزامنة (على سبيل المثال ، مدخلات GPIO). في هذه الحالة ، يتم تحديد الإشارات المتزامنة من SC_IN [3: 0] ، ويتم توجيه المخرجات إلى جهات الاتصال SC_IO_OUT [3: 0] ، ويقوم SYNC MD تلقائيًا بتبديل جهات الاتصال SC_IO إلى وضع الإخراج. في هذا الوضع ، لا يتوفر التشغيل العادي لسجل الحالة ، ويتم تعطيل وضع بت الحالة اللاصقة بالقوة ، بغض النظر عن إعدادات التحكم في الوضع. لا يؤثر هذا الوضع على سجل التحكم. لا يزال يمكن استخدام العداد ، ولكن مع قيود. في وضع التشغيل هذا ، لا يمكن استخدام المدخلات الحيوية (LD / EN).


الشكل 21-37. وضع متزامن.

21.3.3.6 الحالة والتحكم في قطع مسافة السباق


تتطلب سجلات التحكم والحالة تحديد ساعة في أي من أوضاع التشغيل التالية:

  • سجل حالة مع أي شيء في وضع لزجة مع المقاصة بعد القراءة ،
  • سجل السيطرة في وضع العداد ،
  • وضع متزامن.

يتم تعيين التوقيت في الساعة وإعادة ضبط الوحدة. انظر 21.3.4. ساعة وإعادة ضبط وحدة التحكم.

21.3.3.7 سجل المراقبة المساعدة


سجل التحكم الإضافي للقراءة والكتابة هو سجل خاص يتحكم في أجهزة UDB الثابتة. يسمح هذا السجل لوحدة المعالجة المركزية (CPU) أو DMA بالتحكم بشكل حيوي في المقاطعات ، FIFOs ، والعمل المضاد. فيما يلي سجلات السجلات ووصفها:

سجل المراقبة المساعدة
76543210
CNT
START
الباحث ENFIFO1
لاتس
FIFO0
لاتس
FIFO1
CLR
FIFO0
CLR

Clear FIFO0 و FIFO1 (FIFO0 Clear ، FIFO1 Clear)


يتم استخدام بتات FIFO0 CLR و FIFO1 CLR لإعادة ضبط حالة FIFOs المقابلة. عند كتابة 1 لهذه البتات ، تتم إعادة تعيين حالة FIFO المقابلة. لمتابعة تشغيل FIFO ، من الضروري كتابة 0. تظل هذه البتات مفرغة. تعمل FIFO كمخازن مؤقتة مفردة البايت بدون وضع.

FIFO0 و FIFO1 المستوى (FIFO0 المستوى ، FIFO1 المستوى)


تقوم بتات FIFO0 LVL و FIFO1 LVL بتعيين المستوى الذي يرفع عنده FIFO من 4 بايت حالة الناقل (عندما يقرأ الحافلة أو يكتب إلى FIFO). تعتمد قيمة حالة ناقل FIFO على الاتجاه المكوّن ، كما هو موضح في الجدول أدناه.

الجدول 21-21. بت مستوى التحكم FIFO.
FIFOx
لاتس
وضع الإدخال
(الحافلة يكتب إلى FIFO)
وضع الإخراج
(يقرأ الحافلة من FIFO)
0غير ممتلئ
يمكنك كتابة ما لا يقل عن 1 بايت.
غير فارغ
يتوفر بايت واحد على الأقل للقراءة.
1دمرها ما لا يقل عن النصف.
يمكنك كتابة ما لا يقل عن 2 بايت.
نصف كامل على الأقل.
تتوفر على الأقل 2 بايت للقراءة.

المقاطعة تمكين


عند تنشيط منطق إنشاء سجل الحالة ، تُمكِّن بتة INT EN إشارة المقاطعة التي تم إنشاؤها من المرور.

بدء العداد / الحساب؟ (بداية العد)


يمكن استخدام بت CNT START لبدء وإيقاف العداد (متوفر فقط إذا تم تكوين البتات SC_OUT_CTL [1: 0] لوضع إخراج العداد).

21.3.3.8 ملخص سجلات الإدارة والوضع


يلخص الجدول أدناه وظائف سجلات التحكم والحالة. يرجى ملاحظة أنه يتم دمج سجلات القناع والتحكم مع العدادات وسجلات الفترة ، ولا تعتمد قيمة هذه السجلات على وضع التشغيل.

الجدول 21-22. ملخص موجز لتشغيل سجلات الإدارة والوضع
نظام الحكمإدارة / عداد
(التحكم / العد)
الحالة / المزامنة
(الحالة / SYNC)
قناع تراكب / الفترة
(قناع / فترة)
السيطرةالسيطرة خارجالحالة في أو SYNCتراكب حالة قناع
عدادمكافحة الخروجفترة العداد (فترة العد)
الوضعالسيطرة خارج أو العد خارجالوضع فيتراكب حالة قناع
المزامنة (SYNC)المزامنة (SYNC)غير متوفر ب (لا ينطبق)

أ. - لاحظ أنه في وضع العداد ، يعمل سجل تراكب القناع كسجل زمني ولا يمكن أن يعمل كقناع على السجل. وبالتالي ، فإن إخراج المقاطعة غير متاح عند تنشيط وضع العداد.

ب. - لاحظ أنه في وضع التزامن لا يتوفر سجل الحالة ، وبالتالي يستحيل استخدام سجل تراكب القناع. ومع ذلك ، يمكن استخدامه كسجل فترة لوضع العداد.

أن تستمر ...

Source: https://habr.com/ru/post/ar443380/


All Articles