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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7103|回复: 7

[求助] 关于verilogA求助

[复制链接]
发表于 2011-5-17 15:53:23 | 显示全部楼层 |阅读模式

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

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

x
小弟要用verilogA写一个8位循环计数器
功能为:时钟上升沿触发,输入高电平输出加1,输入低电平输出减1
这是我写的程序:
`include "constants.h"
`include "disciplines.h"
module int_8b( B7, B6, B5, B4, B3, B2, B1, B0, Din, CLK);
electrical     B7, B6, B5, B4, B3, B2, B1, B0, Din, CLK;
parameter real trise = 0.1u;
parameter real tfall = 0.1u;
parameter real tdely = 0.1u;
parameter real vlogic_high = 1.8;
parameter real vlogic_low  = 0;
parameter real vtrans_clk  = 0.9;
`define num_bits  8
integer i;
integer m;
integer halfscal;
real fun[0:`num_bits-1];
analog begin
  @ (initial_step) begin
   i=0;
  end
  
  @ (cross(V(CLK) - vtrans_clk, +1)) begin
   halfscal = 128;
   if (V(Din) >= 0.9) begin
    if (i=255) begin
    i=0;
    end
    else begin
    i=i+1;
    end
   end
   else if (V(Din) < 0.9) begin
    if (i=0) begin
    i=255;
    end
    else begin
    i=i-1;
    end
   end
  
  for (m=(`num_bits-1); m >=0; m=m-1) begin
   if (i > halfscal-1) begin
   fun[m]=vlogic_high;
   i = i - halfscal - 1;
   end
   else begin
   fun[m]=vlogic_low;
   end
   halfscal = halfscal / 2;
  end

end

V(B7) <+ transition( fun[7], tdely, trise, tfall );
V(B6) <+ transition( fun[6], tdely, trise, tfall );
V(B5) <+ transition( fun[5], tdely, trise, tfall );
V(B4) <+ transition( fun[4], tdely, trise, tfall );
V(B3) <+ transition( fun[3], tdely, trise, tfall );
V(B2) <+ transition( fun[2], tdely, trise, tfall );
V(B1) <+ transition( fun[1], tdely, trise, tfall );
V(B0) <+ transition( fun[0], tdely, trise, tfall );

`undef num_bits
end
      
endmodule
但是仿真时八个输出一直是0   找了半天也没找到错误
大家帮我看看啊
跪谢啊!!!
发表于 2011-5-18 09:09:34 | 显示全部楼层
发现一个
判断条件 ==
发表于 2011-6-2 00:58:27 | 显示全部楼层
学习一下....
发表于 2017-12-22 14:42:22 | 显示全部楼层
回复 1# favourite626


   请问版主问题解决了吗,你附上的代码有语法错误,判断应该是==,最近也需要用到这个,跟你有一样的问题,你后来怎么解决的?
发表于 2019-7-5 15:22:03 | 显示全部楼层
最近在学veriloga,for循环中的i=i-halfscale-1,最终是0 ,所以计数只会计到1
发表于 2020-7-7 10:46:42 | 显示全部楼层


王仁广 发表于 2017-12-22 14:42
回复 1# favourite626


请问一下大佬这个问题解决了吗,麻烦赐教
发表于 2020-8-20 19:50:25 | 显示全部楼层
Thanks for sharing
发表于 2021-4-15 21:28:51 | 显示全部楼层
赞同5#,可以在中间另外设一个变量将i赋给m,把作为计数的i和下面的i做区分(比如说后面用m,m=m-halfscale...),这样后面的m在变的时候就不会影响上面的i
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 22:00 , Processed in 0.032925 second(s), 8 queries , Gzip On, Redis On.

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