集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 13114|回复: 27

三分频的verilog程序

[复制链接]
inter 发表于 2010-6-27 23:25:58 | 显示全部楼层 |阅读模式
小弟想编个三分频的程序,思想如下:利用计数器,进行模3计数,当第一个上升沿计数器计数到2时,使分频输出信号翻转,当这个计数器计数到3时,再回到0开始计数;再当第二个下降沿计数器计数到3时,再让分频输出信号翻转,同时将这个计数置0,从新开始计数!如此反复,形成三分频!(不知思路对不?)
以下是程序:
module threediv(divclk,a,b,clk,rst);//divclk是分频输出信号,a计数器一,b计数器二,clk时钟
input clk,rst;         //rst复位信号 
output divclk,a,b;
reg divclk;
reg[1:0] a,b;
always @(posedge clk or negedge rst)//第一个计数器按思路的实现
  begin
    if(~rst) a<=2'b00;
    else a<=a+1;
     begin
      if(a==2'b10) divclk<=~divclk;
      if(a==2'b11) a<=2'b00;
     end
  end
always @(negedge clk or negedge rst)//第二个计数器按思路的实现
  begin
    if(~rst)b<=2'b00;
    else  b<=b+1;
    begin
     if(b==2'b11)
      begin         
      divclk<=~divclk;
      b<=2'b00;         
      end      
    end
end


endmodule

以下是测试模块
module Tthreediv;
reg clk,rst;
reg divclk;
reg[1:0] a,b;
threediv d(divclk,a,b,clk,rst);
initial
  begin
     clk<=0;
     rst<=0;
     a=2'b00;
     b=2'b00;
     divclk=0;
  end  
always
begin
   #3 clk=~clk;
   #30 rst=~rst;
end
initial
  $monitor($time,clk,rst,divclk);
endmodule

我在ModelSim软件上仿真,编译通过了,可是要simulate就出现了下面的问题:
# Loading work.Tthreediv
# Loading work.threediv
# ** Error: (vsim-3053) G:/threediv/Tthreediv.v(5): Illegal output or inout port connection (port 'divclk').
#   Region: /Tthreediv/d
# ** Error: (vsim-3053) G:/threediv/Tthreediv.v(5): Illegal output or inout port connection (port 'a').
#   Region: /Tthreediv/d
# ** Error: (vsim-3053) G:/threediv/Tthreediv.v(5): Illegal output or inout port connection (port 'b').
#   Region: /Tthreediv/d
# Error loading design

感谢各位帮解决一下!
AAT 发表于 2010-6-28 00:29:38 | 显示全部楼层
老大,那几个信号是输出啊
tim 发表于 2010-6-28 01:43:08 | 显示全部楼层
恩,你的testbench写的有问题
CTT 发表于 2010-6-28 02:40:51 | 显示全部楼层
怎么解决呢?楼上的,帮小弟一下
tim 发表于 2010-6-28 04:23:57 | 显示全部楼层
你的output没有定义a,b的位宽!!!
ANG 发表于 2010-6-28 05:53:54 | 显示全部楼层
还有你的clkdiv不能在两个模块中都赋值
AAT 发表于 2010-6-28 07:21:04 | 显示全部楼层
补充一点:不要在一个module里用时钟上升沿和下降沿分别采样数据,应该放在不同模块里。这样做有利于在划分不同扫描链时把下降沿触发的触发器方便的分离开来,也有利于后端布局布线。
ANG 发表于 2010-6-28 09:19:24 | 显示全部楼层
恩,楼上的说的对, 开始没注意到
CCIE 发表于 2010-6-28 10:05:48 | 显示全部楼层
问题多多啊,^_^
tim 发表于 2010-6-28 10:35:41 | 显示全部楼层
感谢回帖的所有人,谢谢!同时希望后来者踊跃发言
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-1 13:33 , Processed in 0.064427 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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