微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于verilog在spectra中的仿真中的奇怪

关于verilog在spectra中的仿真中的奇怪

时间:10-02 整理:3721RD 点击:
我想做一个把pseudo thermometer code转换成thermometer code,然后再转换成binary, 写了一段verilog。
在ISE的testbench里面用了几个输入测试,结果都还正常,
00000.....0000111   --> 000011
111100.....000111  -->  000011
但是用spectral里面做仿真时,结果很奇怪,不管输入是什么:
  如果输出悬空,结果都是不定态***,
  如果输出接一个大电阻,然后接地,那么输出就是全0;
不知道为什么。
请问是不是verilog里面不能用function,还是不能用for循环。请高手指教。代码贴在后面了。
module d_con_tdc_64b (tdc_data, vcon);
   
    //input output  
    input [62:0] tdc_data;
    output [5:0]vcon;
   
   // use a function to pre_process the input data
wire [62:0]tem= high_zero(tdc_data);

function [62:0]high_zero;
input [62:0]in_d;
integer i;
integer flag;  //
begin
high_zero=62'd0;
flag=0;
   
for(i=0;i<63;i=i+1)
  begin
  if((in_d[i])&(flag==0))
  high_zero[i]=1'b1;
  else if(in_d[i]==(1'b0))
  flag=1;
  end
end
endfunction
// use a function to converter thermometer to binay
wire [5:0]tem2 = encode(tem);
function [62:0]encode;
input [62:0]in_d2;
integer counter;
begin
encode = 6'd0;
for(counter=0;counter<63;counter=counter+1)
  assign encode = encode + tem[counter];
  
end
endfunction

assign vcon = tem2;
   
endmodule

自己顶一个

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top