我有一个简单的Verilog程序,递增一个32位的计数器,所述数字转换为使用$ sformat ASCII字符串并压入使用FTDI FT245RL在时间字符串到主机1个字节。

不幸的是Xilinx公司XST不断优化远字符串寄存器向量。我试着摆弄周围没有成功不同的初始化和访问程序。我似乎无法关闭优化,并且所有的我在网上找的例子不同,很少从我的初始化程序。我在做什么错了?

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 
  

应用的装载装置   从文件“3s100e.nph” Rf_Device   环境/opt/Xilinx/10.1/ISE。   警告:XST:1293 - FF /锁存str_0   具有0在块的恒定值   。这FF /锁存器将被   优化过程中修剪   过程

     

警告:XST:1896 - 由于其他   FF /锁存微调,FF /锁存str_1   具有0在块的恒定值   。这FF /锁存器将被   优化过程中修剪   处理。

     

警告:XST:1896 - 由于其他   FF /锁存微调,FF /锁存str_2   具有0在块的恒定值   。这FF /锁存器将被   优化过程中修剪   过程

有帮助吗?

解决方案

在$ sformat任务是不太可能综合的 - 考虑,编译器会需要产生到实现该功能的硬件!这意味着你的“海峡”寄存器永远不会被更新,所以编译器认为它可以优化它拿走。考虑一个BCD计数器,还可能有查找表的BCD码转换成ASCII码。

AFAIK“初始”块不是综合的。要初始化触发器,使用复位信号。回忆需要一个“为”像你有循环,但其中只有复位后触发。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top