سؤال

لدي برنامج Verilog بسيط يزيد من عداد 32 بت، وتحويل الرقم إلى سلسلة ASCII باستخدام SFormat $ ثم يدفع السلسلة إلى الجهاز المضيف 1 بايت في وقت واحد باستخدام FTDI FT245RL.

لسوء الحظ، يحتفظ Xilinx XST بتحسين متجه سجل السلسلة. لقد حاولت mucking حول التهيئة المختلفة وإجراءات الوصول دون نجاح. لا يبدو لي أن أطفئ الأمانة، وجميع الأمثلة التي أجدها عبر الإنترنت تختلف قليلا عن إجراءات التهيئة الخاصة بي. ما الخطأ الذي افعله؟

module counter(CK12, TXE_, WR, RD_, LED, USBD);

   input CK12;
   input TXE_;
   output WR;
   output RD_;
   output [7:0] LED;
   inout [7:0] USBD;

   reg [31:0] count = 0;

   reg [7:0] k;
   reg wrf  = 0;
   reg rd   = 1;
   reg [7:0] lbyte = 8'b00000000;   

   reg td              = 1;
   parameter MEM_SIZE  = 88;
   parameter STR_SIZE  = 11;
   reg [MEM_SIZE - 1:0] str;
   reg [7:0] strpos = 8'b00000000;

   initial
     begin
        for (k = 0; k < MEM_SIZE; k = k + 1)
          begin
             str[k]    = 0;
          end
     end

   always @(posedge CK12)
     begin
        if (TXE_ == 0 && wrf == 1)
          begin
             count    = count + 1;
             wrf         = 0;
          end


        else if (wrf == 0)  // If we've already lowered the strobe, latch the data
          begin
             if(td)
               begin
                  $sformat(str, "%0000000000d\n", count);
                  strpos = 0;
                  td     = 0;
               end

             str      = str << 8;
             wrf         = 1;
             strpos      = strpos + 1;       

             if(strpos == STR_SIZE)
               td        = 1;

          end       
     end

   assign RD_             = rd;
   assign WR              = wrf;
   assign USBD            = str[87:80];
   assign LED             = count[31:24];

endmodule 

تحميل جهاز لتحميل التطبيق RF_DEVICE من ملف '3s100e.nph' في البيئة / pt/xilinx/10.1/ise. تحذير: XST: 1293 - FF / LATCH STR_0 لديه قيمة ثابتة من 0 في كتلة. سيتم تقلص هذا FF / LATCH خلال عملية التحسين.

تحذير: XST: 1896 - نظرا لتشذيب FF / Latch، FF / LATCH STR_1 له قيمة ثابتة من 0 في كتلة. سيتم تقلص هذا FF / LATCH خلال عملية التحسين.

تحذير: XST: 1896 - نظرا لتشذيب FF / Latch، FF / LATCH STR_2 لديه قيمة ثابتة من 0 في كتلة. سيتم تقلص هذا FF / LATCH خلال عملية التحسين.

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

المحلول

من غير المرجح أن تكون مهمة SFORTION $ COMPORMAT يمكن توليفها - فكر في الأجهزة التي يحتاجها المحول البرمجي لإنتاجها لتنفيذ هذه الوظيفة! هذا يعني أن سجل "Str" الخاص بك لا يتم تحديثه، لذلك يعتقد المترجم أنه يمكنه تحسينه بعيدا. النظر في عداد BCD، وربما جدول البحث لتحويل رموز BCD إلى رموز ASCII.

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

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