كيف يمكنك تنفيذ هذا المنطق الرقمي في Verilog أو VHDL؟

StackOverflow https://stackoverflow.com/questions/486471

  •  20-08-2019
  •  | 
  •  

سؤال

لقد نشرت إجابة ل سؤال آخر لتدفق المكدس الأمر الذي يتطلب تنفيذ بعض المنطق الرقمي في Verilog أو VHDL بحيث يمكن برمجته في FPGA.

كيف يمكنك تنفيذ المخطط المنطقي التالي في Verilog أو VHDL أو أي لغة أخرى لوصف الأجهزة؟

تمثل المربعات المرقمة البتات الموجودة في الحقل.كل حقل لديه ك بت، وبت ل حاضِر و قناع سيتم توفيرها بواسطة نظام كمبيوتر (باستخدام سجل مغلق أو ما يعادله).البتات في التالي ستتم قراءتها مرة أخرى في نفس نظام الكمبيوتر.

نص بديل http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

أنظر أيضا: سؤال تدفق المكدس هذا

هل كانت مفيدة؟

المحلول

شيء من هذا القبيل؟

module scheduler
 #( parameter K = 10 )
  (
   input wire [K:1] current,
   input wire [K:1] mask,
   output reg [K:1] next
   );

   reg [K:1] a;
   reg [K:1] b;

   //'[i+1]' busses that wrap.
   // eg, for a 4-bit bus...
   // a[i]:        a[4],a[3],a[2],a[1] (obviously...)
   // a_wrap[i]:   a[1],a[4],a[3],a[2] 
   wire [K:1] mask_wrap    = { mask[1],mask[K:2] };
   wire [K:1] a_wrap       = { a[1], a[K:2] };
   wire [K:1] current_wrap = { current[1], current[K:2] };

   integer i;
   always @( * ) begin
      for( i=1; i<=K; i=i+1 ) begin
         a[i] = ~current_wrap[i] && b[i];
         b[i] = a_wrap[i] || mask_wrap[i];
         next[i] = ~a[i] && mask_wrap[i];
      end
   end


endmodule

(تنصل:مبطن ولكن غير مقلد)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top