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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.