求各位大大 我用QUARTERS II 编的 VERILOG 不知道错误出在哪里啊 求高手指点!!!

module counter60(clk,clr,ld,en,da,db,qa,qb)
input clk,clr,ld,en;
input[4:1]da;
input[4:1]db;
output[4:1]qa;
output[4:1]qb;
output c;
reg[4:1]qa;
reg[4:1]qb;
always@(posedge clk or negedge clr or posedge )
begin
if(!clr) {qa,qb}=0;
else if (ld) {qa,qb}={da,db};
else
begin
if(en)==1
if{qa,qb}==8'h59
{qa,qb}=0;
else if(qb==9) begin qb=0;qa=qa+1;end
else qb=qb+1;
end
end
assign c=&{qa[2];qa[0];qb[3];qb[0]};
endmodule

都是一些基本的语法错误:
1、module counter60(clk,clr,ld,en,da,db,qa,qb)后必须有分号同时必须包含所有输入输出口的端口名称;所以应该改为“counter60(clk,clr,ld,en,da,db,qa,qb,c);”
2、input[4:1]da;
input[4:1]db;
output[4:1]qa;
output[4:1]qb;
这样的4位输入或输出端口最好定义为[3:0];如果你想定义为[4:1],那下面就不应该出现qa[0]、qb[0]等
3、always@(posedge clk or negedge clr or posedge )
posedge必须指明是什么的posedge。
4、 if(en)==1 应该改为:if(en==1);同理if{qa,qb}==8'h59应该改为:if({qa,qb}==8'h59)
5、这样语法就没有错误了,至于能不能实现你的目的,就要看看你的要求是什么了!
以下为修改后的程序,仅供参考:
module counter60(clk,clr,ld,en,da,db,qa,qb,c);
input clk,clr,ld,en;
input[3:0]da;
input[3:0]db;
output[3:0]qa;
output[3:0]qb;
output c;
reg[3:0]qa;
reg[3:0]qb;
always@(posedge clk or negedge clr or posedge ld)
begin
if(!clr) {qa,qb}=0;
else if (ld) {qa,qb}={da,db};
else
begin
if(en==1)
if({qa,qb}==8'h59)
{qa,qb}=0;
else if(qb==9) begin qb=0;qa=qa+1;end
else qb=qb+1;
end
end
assign c=&{qa[2],qa[0],qb[3],qb[0]};
endmodule
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-14
你这程序错误太多了,没法改。你想实现什么功能或许我可以帮你,建议你读一下夏宇闻写的《Verilog数字系统设计教程(第二版)》,一本很不错的Verilog语法书。本回答被网友采纳
第2个回答  2011-04-21
我就看了几行 发现你第一行都没有把呕output的c写进去
第3个回答  2011-04-23
1、module那行最后加分号
相似回答