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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

想不明白了为什么输出一直是低电平

[复制链接]
发表于 2006-11-9 10:01:07 | 显示全部楼层 |阅读模式

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

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

x
我想实现一个周期为512输出占空比为437/512的波形,但是为什么输出的一直是低电平。搞不明白了,高手指点一下吧。
module test6(clkin,clkout);
parameter N=6400;
input clkin;
output clkout;
reg clkout;
integer i=0;
//***********************************//
always @(posedge clkin)begin
  begin
      if (i==N-1)
         i=0;
       else
         i=i + 1;
  end

if(0<=i%512<437) clkout<=0;
else   clkout<=1;

end
endmodule
这是编译时的警告:Warning: Reduced register "clkout~reg0" with stuck data_in port to stuck value GND
问一下这到底是什么问题啊,该怎么解决?
发表于 2006-11-9 11:00:18 | 显示全部楼层
i的定义有问题吧,定义成reg[15:0] i要好一点。
还有你的这段程序写的不太好,看看别人的计数器代码是怎么写的。
发表于 2006-11-9 11:28:01 | 显示全部楼层
你写这个是用来仿真的还是综合的?
if(0<=i%512<437)这个写法不对头!你去查查语法
发表于 2006-11-9 14:26:24 | 显示全部楼层
%用硬件很痛苦的哦
其实可以用一个counter在用一个比较,大于一个值就清counter,小于的话继续判断,大于什么值输出一个电平,小于什么值输出一个电平。
发表于 2006-11-9 15:21:15 | 显示全部楼层
0<=i%512<437

应该分开成两个吧,这样写象做数学作业,在C语言中也不是这样写的
发表于 2006-11-9 20:15:22 | 显示全部楼层
顶下拉 哦!
 楼主| 发表于 2006-11-9 21:59:30 | 显示全部楼层
谢谢各位达人了,不要bs我
刚接触硬件,有些编程规范不是很明白。
还请各位指点一二
 楼主| 发表于 2006-11-9 22:26:41 | 显示全部楼层
实际上我的程序的目的是要实现输入一个时钟,然后输出复合视频信号的。
复合视频信号的特点是它由场同步脉冲、均衡脉冲、以及行同步脉冲组成的,每一种脉冲
都是由不同的占空比的周期组成。通过输入时钟分不同的频率来实现,下面这段代码就是其中的一部分,if(i<2560)中的2560表示在前2560个时间单位实现场同步,在接下来的2560个时间单位
也就是if(i<5120)表示均衡脉冲。
我知道下面这些代码的实现太笨了,各位达人指点一下有什么好的方法来节省资源以及我的代码规范有什么问题都帮我指出来,小弟不胜感激!!


module test5(clkin,clkout);
parameter M=512;
parameter N=640000;
input clkin;
output clkout;
reg clkout;
integer count;
integer i=0;
//***********************************//       
always @(posedge clkin)begin
  begin
      if (i==N-1)
         i=0;
       else
         i=i + 1;
  end
//**********实现奇数场同步脉冲(M=512)**********//
if(i<2560)
           begin
                      if (count==(M-1))
                  count=0;
                       else
              count=count + 1;
                         if (count==437)
                             clkout<=1;
                         else if (count==511)
                          clkout<=0;       
                end       
//**********实现后均衡脉冲(M=512)**********//                       
else if(i<=5120)
           begin
                if (count==(M-1))
                 count=0;
                  else
                  count=count + 1;
                   if (count==38)
                     clkout<=1;
                   else if (count==511)
                         clkout<=0;
            end
end
endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-1 22:32 , Processed in 0.028471 second(s), 9 queries , Gzip On, Redis On.

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