I wanted to synthesis this coding, but it keep telling me that there is error at "reg button_old, button_raise;". Is there anyone who knows what mistakes I have in the coding? Thank you very much for your help. We are doing project using nexys 4, we are able to simulate the coding, but are unable to synthesis it so we are not able to proceed to the next steps. Hope someone can help us.
`timescale 1ns / 1ps
module Player (input clk, input rst,input button, input [29:0] set, input button_p1, input button_p2, output [3:0]oscore1, output [3:0]oscore2, output LED_ON, output answer, output [3:0]seg1, output [3:0]seg2)
reg button_old, button_raise;
reg number;
reg [3:0] Score_P1, Score_P2;
wire [3:0] Score_P1, Score_P2;
reg [6:0] sevseg;
wire answer;
reg Clk_10000;
reg [31:0] count;
reg [3:0] digit;
output [3:0] digit;
always @(posedge clk or posedge rst) begin
// detect rising edge
button_old = 0;
button = 0;
button_raise =1'b0;
if (button_old != button && button == 1'b1)
button_raise <= 1'b1
button_old <= button;
// increment number
if(button_raise == 1b'1)
begin
Score_P1 = 4'b0000;
Score_P2 =4'b0000;
if(~rst) number <= 0;
else if(button_p1 && !button_p2 && answer==1'b1)
Score_P1 <= (Score_P1 + 1);
else if(button_p2 && !button_p1 && answer==1'b1)
Score_P2 <= (Score_P2 + 1);
else if(button_p1 && button_p2 && answer==1'b1 || answer==1'b0)
LED_ON [0];
else LED_ON [7];
end
end
end else
button <=0;
button_old <=0;
button_raise <=0;
end
assign oscore1= Score_P1;
assign oscore2= Score_P2;
always @ (rd_ptr) begin
set = setlist[rd_ptr];
assign answer = set [totlen-1];
case (digit)
4'b1000: sevseg = set [27:21];
4'b0100: sevseg = set [20:14];
4'b0010: sevseg = set [13:7];
4'b0001: sevseg = set [6:0];
default: sevseg= 7'b0000000;
endcase
assign setlist[0] <= 29'b01111110100110011111101001111;
assign setlist[1] <= 29'b11111110100111111111101001111;
assign setlist[2] <= 29'b01111110000000111111100000000;
assign setlist[3] <= 29'b01111110100111111111100100000;
end
always@(digit or seg1 or seg2) begin
case(digit)
4'b1110: sevseg = seg1[41:35];
4'b1101: sevseg = seg1[34:28];
4'b1011: sevseg = seg2[27:21];
4'b0111: sevseg = seg2[20:14];
endcase
end
always @ (posedge Clk or negedge rst) begin
if (!rst) begin
count <= 32'd0;
Clk_10000<=0;
end else begin
if (count == 'd10000) begin
count <= 32d'0;
Clk_10000 <= ~Clk_10000;
end else begin
count <= count +1;
end
end
end
always @ (posedge Clk_10000 or negedge rst) begin
if (!rst) begin
digit <= 4'b1110;
end else if (Clk_10000) begin
digit <= {digit [2:0], digit [3]};
end
end
always @ (Score_P1)
begin
case (Score_P1)
4'b0000: seg1 <= 14'b0000001_0000001;
4'b0001: seg1 <= 14'b0000001_1001111;
4'b0010: seg1 <= 14'b0000001_0010010;
4'b0011: seg1 <= 14'b0000001_0000110;
4'b0100: seg1 <= 14'b0000001_1001100;
4'b0101: seg1 <= 14'b0000001_0100100;
4'b0110: seg1 <= 14'b0000001_0100000;
4'b0111: seg1 <= 14'b0000001_0001111;
4'b1000: seg1 <= 14'b0000001_0000000;
4'b1001: seg1 <= 14'b0000001_0001100;
4'b1010: seg1 <= 14'b1001111_0000001;
4'b1011: seg1 <= 14'b1001111_1001111;
4'b1100: seg1 <= 14'b1001111_0010010;
4'b1101: seg1 <= 14'b1001111_0000110;
4'b1110: seg1 <= 14'b1001111_0100100;
4'b1111: seg1 <= 14'b1001111_0100000;
endcase
end
always @ (Score_P2)
begin
case (Score_P2)
4'b0000: seg2 <= 14'b0000001_0000001;
4'b0001: seg1 <= 14'b0000001_1001111;
4'b0010: seg2 <= 14'b0000001_0010010;
4'b0011: seg2 <= 14'b0000001_0000110;
4'b0100: seg2 <= 14'b0000001_1001100;
4'b0101: seg2 <= 14'b0000001_0100100;
4'b0110: seg2 <= 14'b0000001_0100000;
4'b0111: seg2 <= 14'b0000001_0001111;
4'b1000: seg2 <= 14'b0000001_0000000;
4'b1001: seg2 <= 14'b0000001_0001100;
4'b1010: seg2 <= 14'b1001111_0000001;
4'b1011: seg2 <= 14'b1001111_1001111;
4'b1100: seg2 <= 14'b1001111_0010010;
4'b1101: seg2 <= 14'b1001111_0000110;
4'b1110: seg2 <= 14'b1001111_0100100;
4'b1111: seg2 <= 14'b1001111_0100000;
endcase
end
endmodule