Hallo allerseits,Nehmen Sie die Summe von 3 adc Daten für 3 Sampling
Ich bin ein Neuling in der Programmierung FPGA von Verilog-Sprache. Derzeit versuche ich, die Firmware zu entwerfen, um die Summe der adc-Daten bei 3 Sampling zu berechnen. Zuerst erkläre ich in meinem Code über ein adc bei einer Stichprobe. Wenn Sie den Code anschauen, können Sie das mit ansteigenden Flanke von clkr Uhr und adcIfEnb == 1 finden Sie in der adc_data den Wert von adcIfData bekommen und dies ist es, die Daten für eine Probenahme . In der nächsten steigenden Flanke von clkr Takt und adcIfEnb == 1 sind diese Daten in iradcTrg gespeichert. Schließlich werde ich die 3 Daten von adc_data für 3 Proben haben, die in iradcTrg gespeichert sind, und dann fasse ich 3 diese Daten zusammen.
wire adcIfData[79:0];
reg
always @(posedge clkr) begin
if(adcIfEnb) begin
adc_data[9:0] <= adcIfData[9:0];
end
end
reg [29:0] iradcTrg;
reg [9:0] adcTrg;
always @(posedge clkr) begin
if (adcIfEnb) begin
iradcTrg[29:0] <= {adc_trg[19:10],adc_trg[9:0],adc_data[9:0]};
adcTrg[9:0] <= adc_trg[29:20] + adc_trg[19:10] + adc_trg[9:0];
end
end
Allerdings gibt es zwei Probleme, die ich weiß nicht, wie zu lösen.
Zum einen an der Anfangszeit, als die ersten Daten von adc_data bei iradcTrg gespeichert und adcTrg auch die Summe nehmen. Es bedeutet, dass adcTrg = 0 + 0 + first_adc_data aber diese Summe vermieden werden muss.
Zweitens nach meinem Entwurf, ich sehe, dass adc_data in iradcTrg serialisiert wird. Es bedeutet, dass die adc_data wird wie folgt gespeichert werden:
[1 2 3] 4 5 6 => 1 [2 3 4] 5 6 => 1 2 [3 4 5] 6
Aber in meinem Fall, würde Ich mag, dass die adc_data wird so gespeichert werden, die Summe
[1 2 3] 4 5 6 => 1 2 3 [4 5 6]
daher zu bekommen, wie Soll ich meinen Code reparieren, um das Ergebnis zu erhalten, das ich erwartet habe, oder gibt es irgendwelche Dokumente, die mir in diesem Fall helfen können?