module test11(clk,din,reset,dout);
input clk,reset; //时钟/复位
input [7:0]din; //输入数据
output dout;
reg [3:0]locate_47; //锁定47的位置
reg[2:0]num; //搜索阶段记录连续47的个数即搜索的帧数<=7
reg [3:0]count; //计数
reg lock,p; //开始锁定阶段的控制位
reg[7:0]din_r,din_r_1; //数据寄存
reg dout_r;wire dout_r_1;
reg[2:0]k;
//-------开始复位---------
always@(posedge clk)
begin
if(reset)
begin
count=0;locate_47=0;
num=0;lock=0;k=3;p=1'b0;
dout_r=0;
end end
//-------计数和数据输入-----------
always@(posedge clk)
begin
din_r=din;
count=count+1'b1;
if(count==4'b1010)
count=4'b0000;
end
//--------------------------------------
always@(posedge clk)
begin
if(count==locate_47)
din_r_1=din_r; //
if(din_r_1==47) //
num=num+1'b1;
else
begin
if(k==3)
locate_47=locate_47+1'b1;
end
if(locate_47==4'd10)
locate_47=4'b0000;
end
//-------------------------------------
always@(posedge clk)
begin
if(num==3'b011)
num=3'b000;
lock=1'b1;
end
//----------------------------------
always@(posedge clk)
begin
if(lock)
begin
p=~p;
if(din_r_1==8'h47)
dout_r=~dout_r;
else
begin
k=k+3'b001;
if(k==3'b010)
begin
k=3'b011;
lock=0;
end
end
end
end
assign dout=dout_r;
endmodule
加入assign dout=dout_r;时就出现下面错误,,没加时只出现警告。
是哪里语法出现错误呢,,请高手指点。。
程序的功能是搜索和容错功能,每个时钟进来一个字(8位)数据,十个字为一帧,要搜索出帧的头个字(即帧头),每个帧头都是47,但2个帧头中间也可能出现47,当连续检测到3个在帧中同样位置的都为47,就确定其为帧头,这时就有一个out输出高,定位后每到帧的这个位置out就为高,但如果连续出现2个不为47,又要重新进入搜索程序。
错误:
Info: *******************************************************************
Info: Running Quartus II Analysis & Synthesis
Info: Version 9.1 Build 222 10/21/2009 SJ Web Edition
Info: Processing started: Fri Apr 09 00:52:25 2010
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off test11 -c test11
Info: Found 1 design units, including 1 entities, in source file test11.v
Info: Found entity 1: test11
Info: Elaborating entity "test11" for the top level hierarchy
Error (10028): Can't resolve multiple constant drivers for net "locate_47[3]" at test11.v(30)
Error (10029): Constant driver at test11.v(13)
Error (10028): Can't resolve multiple constant drivers for net "locate_47[2]" at test11.v(30)
Error (10028): Can't resolve multiple constant drivers for net "locate_47[1]" at test11.v(30)
Error (10028): Can't resolve multiple constant drivers for net "locate_47[0]" at test11.v(30)
Error (10028): Can't resolve multiple constant drivers for net "count[3]" at test11.v(22)
Error (10028): Can't resolve multiple constant drivers for net "count[2]" at test11.v(22)
Error (10028): Can't resolve multiple constant drivers for net "count[1]" at test11.v(22)
Error (10028): Can't resolve multiple constant drivers for net "count[0]" at test11.v(22)
Error (10028): Can't resolve multiple constant drivers for net "lock" at test11.v(45)
Error (10028): Can't resolve multiple constant drivers for net "dout_r" at test11.v(52)
Error (10028): Can't resolve multiple constant drivers for net "k[2]" at test11.v(52)
Error (10028): Can't resolve multiple constant drivers for net "k[1]" at test11.v(52)
Error (10028): Can't resolve multiple constant drivers for net "k[0]" at test11.v(52)
Error: Can't elaborate top-level user hierarchy
Error: Quartus II Analysis & Synthesis was unsuccessful. 15 errors, 0 warnings
Error: Peak virtual memory: 164 megabytes
Error: Processing ended: Fri Apr 09 00:52:27 2010
Error: Elapsed time: 00:00:02
Error: Total CPU time (on all processors): 00:00:01 |