微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 小程序 求教

小程序 求教

时间:10-02 整理:3721RD 点击:
module count(reset,clk,out);
  input clk,reset;
  output out;
  reg [3:0] out;
  initial out=4'b0000;
  always @(posedge clk)
  begin
         if (reset) out<=4'b0000;
         else out<=out+4'b0001;
end
endmodule
'timescale 1ns/1ns
'include "count.v"
module count_tb;
  reg clk,reset;
  wire [3:0] out;
  parameter DELY=100;
  always #DELY clk=~clk;
  initial #DELY reset=1'b0;
  initial #DELY clk=1'b0;
  count count_tb(.reset(reset),.clk(clk),.out(out));
endmodule
为什么加上红色的代码后,modelsim 就不能编译了呢?  'timescale 和'include 不能在这里面用么? 这两根语句怎么用啊?

count module里面还有问题。去掉:initial out=4'b0000;
另外,你的reset是否为异步reset,是的话要加到always的敏感列表中的。
always @(posedge reset or posedgeclk)
此外,你的tb中的激励没有进行有效的reset动作,不出意外的话,仿真中你的count应全是X。

去掉 'include "count.v"



   initial out=4'b0000;我的意思是对out初始化;先前我就没有这样初始化,结果out没有输出。
   初始化 可以在测试模块初始化,也可以在源程序初始化吧?
   我想知道为什么我的modelsim中为什么用不了 时间尺度函数 'timenscale  和 'include  以及 'define ;是不是哪里需要设置啊?



    去掉了 还是不行 'timescale  不知道为什么 在我的modelsim种不能用!



    initial #DELY reset=1'b0;
     不是对reset 的有效动作么?

` 和'没分清楚吧?



    都试过了 还是不行 我就很纳闷了



    ** Error: E:/Wordspace/count4/sim/count_tb.v(1): near "'t": syntax error, unexpected "BASE", expecting "class"
这是错误提示

是分两个.v文件读入的么?
将timescale加到第一个读入的.v前,后面读入的.v不要加。试一试。



    你的tb只让reset=0,而你的module中reset高有效。参考:
initial
  begin
    reset = 1'b0;
    #DELAY reset = 1'b1;
    #DELAY reset = 1'b0;
  end



    什么意思?我一起编译的!一个源程序,一个测试程序。



    受才人指点 果真是我大意了分错了。谢谢

没有对count进行类型声明,对count进行初始化可以这样表达reg [3:0] count = 4'h0000;



    我明白你的意思了,如果我的测试信号对我的源程序没有有效的动作,就没有办法验证这个功能是不是有效的对吧?
  我知道out 如果没有初始化的话 结果是X ,不过我没有对reset进行有效的初始化,结果也没有出现错误。我在测试中对reset进行了无效的动作,但是reset是0而不是不定值,这样源程序是可以识别的吧?
   请指教,我这样理解对么?



    请问,我为什么要对count进行初始化啊,我新手不明白,请指教。 我的理解是:对count初始化是对寄存器的初始化。 不初始化 可能出现什么情况?

把书认真看一下



    不初始化,那么初始状态就可能是任意状态,下一状态也就不能确定了呗。reset信号就是干这个的。上电之后,让系统全部清零。X基本不大可能出现在真实电路中,所以,不要考虑X神马的。

个人浅见,请大牛指正!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top