Forum: FPGA, VHDL & Co. AD-/DA-Wandler mit unterschiedlichen Taktdomänen?


von Johann (Gast)


Lesenswert?

Hallo

bin noch bisschen neu in FPGA und frage mich ob meine Logik in 
nachfolgendem Code bzgl. synchronem Design richtig ist?

Der A/D-Wandler sampelt mit der pos. Taktflanke, bei der neg. Flanke 
stehen die Daten am Ausgang bereit.
Der D/A-Wandler übernimmt mit der pos. Taktflanke die Eingangsdaten und 
gibt sie aus.

Ist der Code nun so richtig gedacht oder wäre es sinnvoller überall 
@posedge zu verwenden und stattdessen die CLK-Signale einfach in der 
assign-Anweisung invertieren?

Ich hoffe man versteht den Code trotz Verilog, die Hardware versteht 
ihn.
1
/* 
2
  CLK  Oscillator 50 MHz
3
  ADCLK  Clock für AD-Wandler, L-H Sample, H-L Daten bereit
4
  DACLK  Clock für DA-Wandler, L-H Latch
5
  clk_50  50 MHz Clock für AD-Wandler
6
  clk_200  200 MHz Clock für DA-Wandler, Sys
7
*/
8
9
module top(
10
  input CLK,
11
  output ADCLK,
12
  output DACLK,
13
  input [7:0] AD,
14
  output [11:0] DA
15
  );
16
17
reg [7:0] data_in;   // Eingangsregister
18
reg [11:0] data_out; // Ausgangsregister
19
reg [11:0] data_tmp; // Temporäres Register
20
21
wire clk_50;
22
wire clk_200;
23
24
pll p1 (.inclk0(CLK), .c0(clk_50), .c1(clk_200));
25
26
assign ADCLK = clk_50;
27
assign DACLK = clk_200;
28
29
assign DA = data_out;
30
31
// AD-Wandler mit fallender Flanke AD-Clk einlesen
32
33
always @(negedge clk_50)  
34
  begin
35
    data_in <= AD;
36
  end
37
38
// DA-Ausgangsregister mit fallender Flanke DA-Clk beschreiben  
39
  
40
always @(negedge clk_200)
41
  begin  
42
    data_out <= data_tmp;
43
  end
44
45
// Daten aus Eingangsregister in temp. Register übernehmen, evtl. manipulieren
46
  
47
always @(posedge clk_200)
48
  begin
49
    data_tmp <= data_in >> 4; // Von 8 -> 12 bit
50
  end
51
  
52
endmodule

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.