longtim 发表于 2010-6-28 01:05:03

这个verilog程序有何问题?

这个verilog程序有何问题?
module ludeng(clk,rst,min1,min5,min10,reg_ind,major_red,major_green,minor_red,minor_green);
parameter major_0=0,major_1=1,minor=2;
input clk,rst,reg_ind;
output min1,min5,min10;
output major_red,major_green,minor_red,minor_green;
reg min1,min5,min10;
reg next_state;
reg state;
reg cnt;

always@(posedge clk or posedge rst)
begin
if(rst==1'b1)
state<=major_0;
else state<=next_state;
end

always@(state or min1 or min5 or min10 or reg_ind)
begin
case(state)
major_0:
begin
major_green=1'b1;
minor_red=1'b1;
if(min5==1'b1)
next_state=major_1;
else next_state=major_0;
end
major_1:
begin
if((min10==1'b1)||(reg_ind==1'b1))
next_state=minor;
else next_state=major_1;
end
minor:
begin
minor_green=1'b1;
major_red=1'b1;
if(min1==1'b1)
next_state=major_0;
else next_state=minor;
end
default:

next_state=major_0;

endcase



always@(posedge clk)
begin
if(rst==1'b1)
cnt=10'h000;
else
if(clr==1'b1)
cnt=10'h000;
else cnt=cnt+1'b1;
end

always@(cnt or state)
begin if((state=major_0)&&(cnt==9'd299))
min5=1'b1;
else min5=1'b0;
end

always@(cnt or state)
begin if((state=major_1)&&(cnt==9'd299))
min10=1'b1;
else min10=1'b0;
end

always@(min1 or min5 or min10)
begin if(min1||min5||min10)
clr=1;
else clr=0;
end
always@(rst or state)
begin
if(rst=1)
reg_ind<=1'b0;
else if(state==minor)
reg_ind<=1'b0;

end




endmodule

encounter 发表于 2010-6-28 02:03:02

好帖,顶了

longtime 发表于 2010-6-28 02:57:43

你编译提示出了什么问题?

UFP 发表于 2010-6-28 04:57:09

自己回去好好研究下吧,错的地方实在太多了

longtim 发表于 2010-6-28 05:03:26

我是新手看不出来,什么道道?

ngtim 发表于 2010-6-28 05:42:40

begin end成对出现

ngtim 发表于 2010-6-28 07:40:58

我下午去实验窒看看吧,晚是给你说

FFT 发表于 2010-6-28 08:56:01

你编译一下,出错的地方:<br>
always 那一块差一个end<br>
然后output型的不可以用在always里面而只能用在assign里面

CHA 发表于 2010-6-28 09:46:49

不好意思我刚才说的&ldquo;然后output型的不可以用在always里面而只能用在assign里面 &rdquo;在这里不对,它是指在testbench里不对(在testbench里output型的不可以用在always里面而只能用在assign里面),在这里是对的。在模块里input型不可以用在always里面而只能用在assign里面.

longtim 发表于 2010-6-28 11:01:06

output型要定义成reg型,凡是在always里要赋值的都要定义成reg型,一般在写完output后就直接把它们定义成reg型。
页: [1] 2
查看完整版本: 这个verilog程序有何问题?