在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2063|回复: 1

[求助] 关于verilog在spectra中的仿真中的奇怪

[复制链接]
发表于 2011-11-18 00:09:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想做一个把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
 楼主| 发表于 2011-11-18 17:12:50 | 显示全部楼层
自己顶一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-23 03:49 , Processed in 0.023638 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表