Ich verwende die Cyclone V
DE1-SoC
bei der Datenübertragung zwischen HPS
und FPGA
mit 2 FIFO
. Ich habe ein Problem mit einer sehr späten Ankunftszeit von Daten, was dazu führt, dass das slack
sehr negativ ist.
...
if ((Processing_state == 4'd5) && (FPGA_to_HPS_state == 0))
begin
a <= a + memo[i] * memo[i];
Processing_state <= 4'd4 ;
end
if (Processing_state == 4)
begin
if (|a == 0)
begin
k<=a;
Processing_state <= 4'd0 ;
end
else if (|a != 0)
begin
if(j == 20479)
begin
b <= a >> 12 ;
Processing_state <= 4'd4; //signal fpga the data is ready to be sent
end
else
begin
j <= j + 1;
Processing_state <= 4'd0 ;
end
end
end
if (Processing_state == 4)
begin
Processing_state <= 3;
data_buffer_valid <= 1'b1 ;
c <= b;
end
if (Processing_state == 3)
begin
Processing_state <= 2;
mean <= c / 5;
end
if (Processing_state == 2)
begin
Processing_state <= 1;
meaninput <= mean;
end
if (Processing_state == 4'd1)
begin
Processing_state <= 4'd0 ;
data_buffer_valid <= 1'b1 ;
a <= 0;
j <= 0;
end
...
if ((FPGA_to_HPS_state==0) && (!(fpga_to_hps_in_csr_readdata[0])) && data_buffer_valid)
begin
fpga_to_hps_in_writedata <= meaninput;
fpga_to_hps_in_write <= 1'b1 ; //write flag
FPGA_to_HPS_state <= 4'd1 ;
end
...
Der Kompilierbericht sagt, dass es ein Problem auf der Leitung gibtmean <= c / 5;
Aber das Seltsame ist, wenn ich die Zeile fpga_to_hps_in_writedata <= meaninput;
zum fpga_to_hps_in_writedata <= c;
Verschwinden des Problems ändere, zeigte der Kompilierbericht über das Timing das Problem nicht mehr.
fpga_to_hps_in_writedata
schreibt die Daten von zum FIFO
zu senden anHPS
Ist das ein Problem für FIFO
das, was ich ändern muss Qsys
? Ich habe die Empfehlung gelesen, aber ich habe nur etwas über die Grundlagen gelernt, Verilog
also keine Ahnung von der Zeitbeschränkung.
Ganzzahlige Division in der kombinatorischen Logik ist sehr logisch und zeitintensiv. Vielleicht möchten Sie einen anderen Weg finden, um dieses Ergebnis zu erhalten – vielleicht gibt es eine Möglichkeit, es zu leiten oder die Multiplikation mit 1/5 zu verwenden.
johnny2231
/
um zu sehen, ob das Problem gelöst werden kann oder nicht.johnny2231
David Tweed
johnny2231