|
下面是一个十进制计数器的Verilog代码,它不包含测试向量,因为我已经在ModelSim里写了测试向量仿真,结果是正确的,所以它是一段可综合的代码,拿到Quartus II下编译的时候出现错误,说是“Error: Top-level design entity "count" is undefined”。
我拿这个错误提示 GG 了一下,发现有不少人遇到了这个问题,不过我是没有见到合适的解决办法,后来我咨询了老师(这就是在学校的优势),终于知道了原因所在。
先上代码:
module counter(clk,clr,load,en,data,q,count_flag);
input clk;
input clr;
input load;
input en;
input[3:0] data;
output reg[3:0] q;
output reg count_flag;
always@(posedge clk)
if(clr)
q <= 0;
else if(load == 1'b1)
q <= data;
else if(en == 1'b1) begin
if(q == 9 )
q <= 0;
else
q <= q + 1;
end
always@(q) begin
if(q == 9)
count_flag <= 1;
else
count_flag <= 0;
end
endmodule
原因是我们在建立工程的时候没有填写正确的“Top-level design entity”——顶层设计实例。
譬如上面这个程序,我们的模块名是“counter”,可是我在建立工程的时候,填写相关信息的时候是填写的“count”,所以在编译的时候EDA工具就报错,说是“Top-level design entity”没有定义。具体到建立工程的过程中,是下图所示这个步骤处应该填写我们的模块名称(对应上面这个计数器,这里就应该是counter):
关键是第三空,“What is the name of the top-level design entity for this project? This name is must exactly match the entity name in the design file.”,工具能根据工程的名称自动为我们填写这一空,因此可能很多人就没有注意了。不过细心的朋友应该注意过这个地方,工具已经说明这个地方必须完全匹配我们的实例名称。
最后,想说这么一句话——“着小成大”,虽然说什么“成大事者不拘小节”,可是不同的场合,不同的境遇,不同的阶段,不同的对象,我们都得有不同的对策,不能死抠原则,也不能完全不守原则,一个人一定要能变通,该着眼细节的地方就不该“不拘小节”。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|