集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1576|回复: 0

请求懂Verilog HDL语言的朋友们帮我看看这个程序

[复制链接]
CCIE 发表于 2010-6-28 00:13:25 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-18 11:13 编辑

请求懂Verilog HDL语言的朋友们帮我看看下面这个程序,这个程序能综合可就是在仿真时就不能仿真出我想要的预期结果,由于我刚学习这们语言所以还有好多地方不是很熟悉,现在我不知道是这个程序编得有问题还是我编的测试文件有问题?请各位高手帮我看看这个程序,再给我编个测试文件.我现在正等着这个程序急用,如有朋友能帮我,下次需要我帮忙时尽管说!
非常感谢大家!
module IDCounter (IDclock,reset,inc,dec,IDout);
input IDclock, reset, inc, dec;
output IDout;
reg inc_new;
reg inc_pulse;
reg dec_new;
reg dec_pulse;
reg Toggle_FF;
reg delayed;
reg advanced;
reg IDout;

always @ (posedge IDclock)
begin
if(!inc)
  begin
   inc_new<=1;
   inc_pulse<=0;
  end
else if(inc_pulse)
begin
   inc_pulse<=0;
   inc_new<=0;
end
else if(inc&&inc_new)
begin
  inc_pulse<=1;
  inc_new<=0;
  end
  else
   begin
   inc_pulse<=0;
   inc_new<=0;
   end
  end
always @ (posedgeIDclock)
begin
  if(!dec)
  begin
   dec_new<=1;
   dec_pulse<=0;
   end
  else if(dec_pulse)
  begin
    dec_pulse<=0;
    dec_new<=0;
  end
   else if(dec&&dec_new)
   begin
   dec_pulse<=1;
   dec_new<=0;
    end
   else
   begin
   dec_pulse<=0;
   dec_new<=0;
    end
  end
always @ (posedgeIDclock)
begin
  if(!reset)
  begin
   Toggle_FF<=0;
   delayed<=1;
   advanced<=1;
  end
  else
    begin
    if(inc_pulse)
     begin
     advanced<=1;
     Toggle_FF<=!Toggle_FF;
     end
    else if(dec_pulse)
    begin
      delayed<=1;
      Toggle_FF<=!Toggle_FF;
    end
    else if(Toggle_FF==0)
    begin
      if(!advanced)
      Toggle_FF<=!Toggle_FF;
      else if(advanced)
      begin
      Toggle_FF<=Toggle_FF;
      advanced<=0;
      end
     end
   else
     begin
      if(!delayed)
       Toggle_FF<=!Toggle_FF;
      else if(delayed)
       begin
       Toggle_FF<=Toggle_FF;
       delayed<=0;
      end
    end
    end
end
always @ (IDclock or Toggle_FF)
begin
if(Toggle_FF)
   IDout=0;
else
   begin
    if(IDclock)
     IDout=0;
    else
    IDout=1;
   end
end
endmodule


仿真后的预期结果应该如下:
在此相位控制器模块中,IDclock为输入的时钟信号,inc为进位脉冲信号,dec为借位脉冲信号,IDout为输出信号,相位控制器在没有进位与借位信号时对时钟进行了二分频。此时IDclock为40ns,输出IDout为80ns。当出现进位脉冲inc时,输出信号IDout序列中插入一个脉冲,当出现借位脉冲dec时,输出信号IDout序列中扣除一个脉冲,从而实现了相位控制器对本地时钟序列的控制。该模块符合设计要求。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 03:32 , Processed in 0.055375 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表