verilog HDL 仿真错误

原创 2015年11月19日 14:43:16

学习xilinx FPGA,自己学习编写一个计数器的verilog HDL的程序,在仿真激励上编写始终不过,总报语法错误,郁闷啊。下面贴出这个程序,以便自己今后记住:

module cnt_4bit(q, clear,clock
    );
input  clear,clock;
output[3:0]  q;
 
reg[3:0]  q;
 
 
 
always @(posedge clear or negedge clock)
begin
if(clear)
q = 4'd0;
else
q = (q + 1) % 16;
end
 


endmodule


test bench的激励程序:

`timescale 1ns / 1ps


////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:   14:00:26 11/19/2015
// Design Name:   cnt_4bit
// Module Name:   E:/xilinx/study/project2/mux2_1/tb_cnt_4.v
// Project Name:  mux2_1
// Target Device:  
// Tool versions:  
// Description: 
//
// Verilog Test Fixture created by ISE for module: cnt_4bit
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////


module tb_cnt_4;


// Inputs
reg clear;
reg clock;


// Outputs
wire [3:0] q;


// Instantiate the Unit Under Test (UUT)
cnt_4bit uut (
.q(q), 
.clear(clear), 
.clock(clock)
);


initial begin
// Initialize Inputs
clear = 0;
clock = 0;


// Wait 100 ns for global reset to finish
//#100;
        
// Add stimulus here

//clock = 1'b0;

always 
#5 clock = ~clock;


begin
clear = 1'b1;
#15   clear = 1'b0;
#180 clear = 1'b1;
#10 clear = 1'b0;
#20 $finish;
end



end
initial 
$monitor($time,"output q = %d",q);
      
endmodule

书写完成就报错误:

ERROR:HDLCompiler:806 - "E:/xilinx/study/project2/mux2_1/tb_cnt_4.v" Line 53: Syntax error near "always".

找了半天没找出错误原因。郁闷!!


苦解:不知什么原因,配对begin....end修订激励程序

module tb_cnt;


// Inputs
reg clear;
reg clock;


// Outputs
wire [3:0] q;


// Instantiate the Unit Under Test (UUT)
cnt_4 uut (
.q(q), 
.clear(clear), 
.clock(clock)
);


initial begin
// Initialize Inputs
clear = 0;
clock = 0;


// Wait 100 ns for global reset to finish
//#100;
        
// Add stimulus here
//clock = 1'b0;
end

always #5 clock = ~clock;

initial begin
clear = 1'b0;
#15   clear = 1'b0;
#180 clear = 1'b1;
#10 clear = 1'b0;
#20 $finish;
end
initial 
$monitor($time,"output q = %d",q);
      
endmodule


终于迎来了光明,第一例程序终于活了。仿真结果如图。





相关文章推荐

modelsim仿真verilog HDL 简单命令使用

quit -f #强制退出modelsim quit -sim #退出仿真器 vlog exer1130/dl.v #编译verilog hdl文件exer1130/dl.v 到wo...
  • s_a_n_
  • s_a_n_
  • 2012年11月30日 18:22
  • 1517

Verilog HDL的基本语法

Verilog HDL的基本语法   前言   Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL...

Verilog HDL仿真之仿真数据的生成

  • 2012年08月10日 21:38
  • 25KB
  • 下载

Verilog HDL代码书写规范

信号命名规则  信号命名规则在团队开发中占据着重要地位,统一、有序的命名能大幅减少设计人员之间的冗余工作,还可便于团队成员代码的查错和验证。比较著名的信号命名规则当推Microsoft公司的“匈...
  • lvwx369
  • lvwx369
  • 2013年08月10日 23:24
  • 853

Verilog HDL 定点数探索实验(加&乘)

研一——通信电路设计——实验一

【连载】【FPGA黑金开发板】Verilog HDL那些事儿--数码管封装(十六)

声明:本文转载于http://www.cnblogs.com/kingst,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有。5.2 实验十五:数码管封装数码管的...

Verilog HDL 快速入门

Verilog HDL 快速入门Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),它是以文本形式来描述数字系统硬件的结构和行为的语言。 ...

Verilog HDL宏定义define

HDL宏定义define 宏定义 `define   用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为:   `define 标识符(宏名) 字符串(宏内容)   如:`...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:verilog HDL 仿真错误
举报原因:
原因补充:

(最多只允许输入30个字)