Ich wollte diese Codierung synthetisieren, aber es sagt mir, dass es einen Fehler bei "reg button_alt, button_raise;". Gibt es jemanden, der weiß, welche Fehler ich in der Codierung habe? Vielen Dank für Ihre Hilfe. Wir machen Projekt mit Nexys 4, wir sind in der Lage, die Codierung zu simulieren, aber sind nicht in der Lage, es zu synthetisieren, so dass wir nicht in der Lage sind, mit den nächsten Schritten fortzufahren. Hoffe jemand kann uns helfen.Codierungsfehler für vivado Projekt
`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
[email protected](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
Eine Beschreibung, was Ihr Code möglicherweise nützlich ist. –
Ihr Code weist eine enorme Anzahl von Syntaxfehlern auf, einschließlich fehlender ';', doppelter Deklarationen, schlecht formatierter numerischer Literale. Ich bezweifle, dass du das simuliert hast. –
Von eyeballing es gibt ungefähr 20 einige Fehler, mindestens 7 eindeutige Fehlertypen. Zu den Fehlern gehören fehlende ';', fehlerhafte Anweisungen, abgeleitete Latches, prozedurale kontinuierliche Anweisungen, asynchrones Verwenden eines Taktsignals, Mehrfachdeklaration, falsche Verwendung von blockierenden/nicht blockierenden Zuweisungen usw.Wenn Sie auf FPGA sind, sollte Ihr Board mit asynchronem Reset Flops? Immer vor der Synthese simulieren. – Greg