首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助一段verilog程序的功能与时序仿真

你的程序一看就有错误啊!

reg [7:0] cnt = 0;这样赋初值是错误的.

reg  cntout;应为上面一样.

还有最后一个else
  cnt = 0;
 cntout = cnt;
应加begin-end语句.

正确的应是:

module ramuse( cntout, mclk, dinen);

output [7:0]  cntout;
input mclk, dinen;

reg[7:0]   cntout;

reg [7:0] cnt;

always @(posedge mclk )
begin
 if(dinen == 1)
   begin
     if(cnt<=9)
     cnt=cnt+1;
     else
     cnt=0;
   end
    else
      begin
     cnt = 0;
     cntout = cnt;
      end
end
//assign cntout = cnt;
endmodule
功能不知对不对,下次帮你看看!

一切皆有可能,爱拼才会赢!

这个试试啊!

module ramuse( clr, clk, cout);
output [7:0]  cout;
input clr,clk;
reg[7:0]   cout;
integer i;
always @(posedge clk )
begin
 if(!clr)
  cout<=0;
 else if(i==9)
     begin
  i<=0;
  cout<=cout+1;
     end
 else
  begin
  i<=i+1;
  cout<=0;
  end
end
endmodule

仿真图像是这样的:

靠!不支持图像啊!你自己试试吧!

 

一切皆有可能,爱拼才会赢!
module ramuse( clr, clk, cout);
output [7:0]  cout;
input clr,clk;
reg[7:0]   i,cout;
always @(posedge clk )
begin
 if(!clr)
  cout<=0;
 else if(i==9)
     begin
  i<=0;
  cout<=cout+1;
     end
 else
  begin
  i<=i+1;//这里不应该再赋初值0于cout;
   end
end
endmodule
一切皆有可能,爱拼才会赢!
返回列表