Forum: FPGA, VHDL & Co. XADC in VHDL instanziieren, wie generiertes VERILOG in VHDL-Projekt einbinden?


von Matthias (Gast)


Lesenswert?

Ich habe dies bereits z.b. für eine PLL gemacht wobei klar war, wie sie 
zu benutzen war:
1
module clk_wiz_0 
2
 (
3
  // Clock out ports
4
  output        clk_out1,
5
  // Status and control signals
6
  input         reset,
7
  output        locked,
8
 // Clock in ports
9
  input         clk_in1
10
 );

wird zu:
1
component clk_wiz_0 is
2
 PORT(
3
  -- Clock out ports
4
  clk_out1 : out STD_LOGIC;
5
  -- Status and control signals
6
  reset : in STD_LOGIC;
7
  locked : out STD_LOGIC;
8
  -- Clock in ports
9
  clk_in1: in STD_LOGIC
10
 );
11
 end component;

Aber wie soll der generierte XADC angeschlossen werden?
1
module xadc_wiz_0
2
          (
3
          dclk_in,             // Clock input for the dynamic reconfiguration port
4
          vauxp0,              // Auxiliary channel 0
5
          vauxn0,
6
          busy_out,            // ADC Busy signal
7
          channel_out,         // Channel Selection Outputs
8
          eoc_out,             // End of Conversion Signal
9
          eos_out,             // End of Sequence Signal
10
          alarm_out,           // OR'ed output of all the Alarms    
11
          muxaddr_out,
12
          vp_in,               // Dedicated Analog Input Pair
13
          vn_in);

Meine Idee:
dclk_in -> std_logic --> Clock Eingang
vauxp0 -> std_logic -->Analog-Spannungseingang
vauxn0 -> std_logic -->Analog-Spannungseingang
busy_out -> std_logic --> Wandlung läuft
channel_out -> std_logic_vector(4 downto 0) --> Aktuell ausgegeber Kanal
eoc_out -> std_logic
eos_out -> std_logic
alarm_out -> std_logic
muxaddr_out -> std_logic_vector(4 downto 0) --> demnach für externen MUX
vp_in -> Analogeingang
vn_in -> Analogeingang

Was ich nicht verstehe ist die Datenschnittstelle.
--> Wie sollen denn nun die Daten heraus kommen?

Alternativ gibt es nich diese Inst-Beschreibung:
1
inst (
2
        .CONVST(GND_BIT),
3
        .CONVSTCLK(GND_BIT),
4
        .DADDR(GND_BUS7[6:0]),
5
        .DCLK(dclk_in),
6
        .DEN(GND_BIT),
7
        .DI(GND_BUS16[15:0]),
8
        .DWE(GND_BIT),
9
        .RESET(GND_BIT),
10
        .VAUXN(aux_channel_n[15:0]),
11
        .VAUXP(aux_channel_p[15:0]),
12
        .ALM(alm_int),
13
        .BUSY(busy_out),
14
        .CHANNEL(channel_out[4:0]),
15
        .DO(),
16
        .DRDY(),
17
        .EOC(eoc_out),
18
        .EOS(eos_out),
19
        .JTAGBUSY(),
20
        .JTAGLOCKED(),
21
        .JTAGMODIFIED(),
22
        .OT(),
23
        .MUXADDR(muxaddr_out),
24
        .VP(vp_in),
25
        .VN(vn_in)
26
          );
Wie soll man hier diese GND_BUS signale verbinden?

Generell wäre es toll, wenn jemand weiß wie man den XADC richtig 
einsetzt, oder generell wie so generierte Blöcke korrekt angeschlossen 
werden?

Schöne Grüße,
Matthias

von Gustl B. (gustl_b)


Lesenswert?

Hast du schon die Suche hier im Forum verwendet? XADC kam schon mehrmals 
vor.

Allerdings funktioniert die Suche bei mir auf dem Telefon gerade nicht.

Aber die Google Suche hat geliefert:
Beitrag "Xilinx Artix-7 Nexys 4 mit VGA und XADC"
Da ist ein Beispiel ZIP im ersten Post enthalten.

von Duke Scarring (Gast)


Lesenswert?

Matthias schrieb:
> Aber wie soll der generierte XADC angeschlossen werden?
Da hilft der Xilinx Library Guide (UG953), S. 411 ff.
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug953-vivado-7series-libraries.pdf

Duke

von Matthias (Gast)


Lesenswert?

Danke euch beiden :)

Duke Scarring schrieb:
> Da hilft der Xilinx Library Guide (UG953), S. 411 ff.
> 
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug953-vivado-7series-libraries.pdf

Super, da gibt es auf Steite 414 ein konkretes beispiel einer 
VHDL-Instanz.
Werde ich ausprobieren...

Gustl B. schrieb:
> Hast du schon die Suche hier im Forum verwendet? XADC kam schon mehrmals
> vor.
>
> Allerdings funktioniert die Suche bei mir auf dem Telefon gerade nicht.
>
> Aber die Google Suche hat geliefert:
> Beitrag "Xilinx Artix-7 Nexys 4 mit VGA und XADC"
> Da ist ein Beispiel ZIP im ersten Post enthalten.

Werd ich mir dann auch noch anschauen, sowie ich dazu komme.

von Matthias (Gast)


Lesenswert?

Bin nun um einiges weiter, jedoch passt es noch nicht ganz:

Ich bekomme für jeden Port den Error:
[Synth 8-485] no port 'DCLK' on instance

Weiße jemand vielleicht wo man sowas nachlesen kann, wie eben ein 
solcher generierter Verilog Code in VHDL genutzt werden kann?
Bei den beispielen scheint es immer selbsterklärend, aber mit dem XADC 
ist es das eher nicht...

Habe noch kein Beispiel gefunden, welches es zeigt, insbesondere mit den 
Config-Register.

Grüße,
Matthias

Hier der generierte Code:
1
module xadc_wiz_0
2
          (
3
          dclk_in,             // Clock input for the dynamic reconfiguration port
4
          vauxp1,              // Auxiliary channel 1
5
          vauxn1,
6
          vauxp2,              // Auxiliary channel 2
7
          vauxn2,
8
          vauxp9,              // Auxiliary channel 9
9
          vauxn9,
10
          vauxp10,             // Auxiliary channel 10
11
          vauxn10,
12
          busy_out,            // ADC Busy signal
13
          channel_out,         // Channel Selection Outputs
14
          eoc_out,             // End of Conversion Signal
15
          eos_out,             // End of Sequence Signal
16
          alarm_out,           // OR'ed output of all the Alarms    
17
          vp_in,               // Dedicated Analog Input Pair
18
          vn_in);
19
20
          input dclk_in;
21
          input vauxp1;
22
          input vauxn1;
23
          input vauxp2;
24
          input vauxn2;
25
          input vauxp9;
26
          input vauxn9;
27
          input vauxp10;
28
          input vauxn10;
29
          input vp_in;
30
          input vn_in;
31
32
          output busy_out;
33
          output [4:0] channel_out;
34
          output eoc_out;
35
          output eos_out;
36
          output alarm_out;
37
38
        wire FLOAT_VCCAUX;
39
        wire FLOAT_VCCINT;
40
        wire FLOAT_TEMP;
41
          wire GND_BIT;
42
    wire [2:0] GND_BUS3;
43
    wire [8:0] GND_BUS7;
44
    wire [15:0] GND_BUS16;
45
          assign GND_BIT = 0;
46
    assign GND_BUS3 = 3'b000;
47
    assign GND_BUS7 = 7'b0000000;
48
    assign GND_BUS16 = 16'b0000000000000000;
49
          wire [15:0] aux_channel_p;
50
          wire [15:0] aux_channel_n;
51
          wire [7:0]  alm_int;
52
          assign alarm_out = alm_int[7];
53
          assign aux_channel_p[0] = 1'b0;
54
          assign aux_channel_n[0] = 1'b0;
55
56
          assign aux_channel_p[1] = vauxp1;
57
          assign aux_channel_n[1] = vauxn1;
58
59
          assign aux_channel_p[2] = vauxp2;
60
          assign aux_channel_n[2] = vauxn2;
61
62
          assign aux_channel_p[3] = 1'b0;
63
          assign aux_channel_n[3] = 1'b0;
64
65
          assign aux_channel_p[4] = 1'b0;
66
          assign aux_channel_n[4] = 1'b0;
67
68
          assign aux_channel_p[5] = 1'b0;
69
          assign aux_channel_n[5] = 1'b0;
70
71
          assign aux_channel_p[6] = 1'b0;
72
          assign aux_channel_n[6] = 1'b0;
73
74
          assign aux_channel_p[7] = 1'b0;
75
          assign aux_channel_n[7] = 1'b0;
76
77
          assign aux_channel_p[8] = 1'b0;
78
          assign aux_channel_n[8] = 1'b0;
79
80
          assign aux_channel_p[9] = vauxp9;
81
          assign aux_channel_n[9] = vauxn9;
82
83
          assign aux_channel_p[10] = vauxp10;
84
          assign aux_channel_n[10] = vauxn10;
85
86
          assign aux_channel_p[11] = 1'b0;
87
          assign aux_channel_n[11] = 1'b0;
88
89
          assign aux_channel_p[12] = 1'b0;
90
          assign aux_channel_n[12] = 1'b0;
91
92
          assign aux_channel_p[13] = 1'b0;
93
          assign aux_channel_n[13] = 1'b0;
94
95
          assign aux_channel_p[14] = 1'b0;
96
          assign aux_channel_n[14] = 1'b0;
97
98
          assign aux_channel_p[15] = 1'b0;
99
          assign aux_channel_n[15] = 1'b0;
100
XADC #(
101
        .INIT_40(16'h0000), // config reg 0
102
        .INIT_41(16'h21AF), // config reg 1
103
        .INIT_42(16'h0400), // config reg 2
104
        .INIT_48(16'h0000), // Sequencer channel selection
105
        .INIT_49(16'h0606), // Sequencer channel selection
106
        .INIT_4A(16'h0000), // Sequencer Average selection
107
        .INIT_4B(16'h0000), // Sequencer Average selection
108
        .INIT_4C(16'h0000), // Sequencer Bipolar selection
109
        .INIT_4D(16'h0000), // Sequencer Bipolar selection
110
        .INIT_4E(16'h0000), // Sequencer Acq time selection
111
        .INIT_4F(16'h0000), // Sequencer Acq time selection
112
        .INIT_50(16'hB5ED), // Temp alarm trigger
113
        .INIT_51(16'h57E4), // Vccint upper alarm limit
114
        .INIT_52(16'hA147), // Vccaux upper alarm limit
115
        .INIT_53(16'hCA33),  // Temp alarm OT upper
116
        .INIT_54(16'hA93A), // Temp alarm reset
117
        .INIT_55(16'h52C6), // Vccint lower alarm limit
118
        .INIT_56(16'h9555), // Vccaux lower alarm limit
119
        .INIT_57(16'hAE4E),  // Temp alarm OT reset
120
        .INIT_58(16'h5999), // VCCBRAM upper alarm limit
121
        .INIT_5C(16'h5111),  //  VCCBRAM lower alarm limit
122
        .SIM_DEVICE("7SERIES"),
123
        .SIM_MONITOR_FILE("design.txt")
124
)
125
126
inst (
127
        .CONVST(GND_BIT),
128
        .CONVSTCLK(GND_BIT),
129
        .DADDR(GND_BUS7[6:0]),
130
        .DCLK(dclk_in),
131
        .DEN(GND_BIT),
132
        .DI(GND_BUS16[15:0]),
133
        .DWE(GND_BIT),
134
        .RESET(GND_BIT),
135
        .VAUXN(aux_channel_n[15:0]),
136
        .VAUXP(aux_channel_p[15:0]),
137
        .ALM(alm_int),
138
        .BUSY(busy_out),
139
        .CHANNEL(channel_out[4:0]),
140
        .DO(),
141
        .DRDY(),
142
        .EOC(eoc_out),
143
        .EOS(eos_out),
144
        .JTAGBUSY(),
145
        .JTAGLOCKED(),
146
        .JTAGMODIFIED(),
147
        .OT(),
148
        .MUXADDR(),
149
        .VP(vp_in),
150
        .VN(vn_in)
151
          );
152
153
endmodule

Dann gibt es da noch meine Interpretation, welche noch nicht korrekt 
ist:
1
component xadc_wiz_0 is
2
--generic(
3
---- INIT_40 - INIT_42: XADC configuration registers
4
--INIT_40 : std_logic_vector(15 downto 0);
5
--INIT_41 : std_logic_vector(15 downto 0);
6
--INIT_42 : std_logic_vector(15 downto 0);
7
---- INIT_48 - INIT_4F: Sequence Registers
8
--INIT_48 : std_logic_vector(15 downto 0);
9
--INIT_49 : std_logic_vector(15 downto 0);
10
--INIT_4A : std_logic_vector(15 downto 0);
11
--INIT_4B : std_logic_vector(15 downto 0);
12
--INIT_4C : std_logic_vector(15 downto 0);
13
--INIT_4D : std_logic_vector(15 downto 0);
14
--INIT_4F : std_logic_vector(15 downto 0);
15
--INIT_4E : std_logic_vector(15 downto 0); --Sequenceregister 6 
16
----INIT_50 - INIT_58, INIT5C: Alarm Limit Registers
17
--INIT_50 : std_logic_vector(15 downto 0);
18
--INIT_51 : std_logic_vector(15 downto 0);
19
--INIT_52 : std_logic_vector(15 downto 0);
20
--INIT_53 : std_logic_vector(15 downto 0);
21
--INIT_54 : std_logic_vector(15 downto 0);
22
--INIT_55 : std_logic_vector(15 downto 0);
23
--INIT_56 : std_logic_vector(15 downto 0);
24
--INIT_57 : std_logic_vector(15 downto 0);
25
--INIT_58 : std_logic_vector(15 downto 0);
26
--INIT_5C : std_logic_vector(15 downto 0);
27
---- Simulation attributes :Set for proper simulation behavior 
28
--SIM_DEVICE : string; --Select target device(values)
29
--SIM_MONITOR_FILE : string);--Analog simulation data file name
30
port(
31
        CONVST : std_logic;              --IN --Control --Only for event-Mode
32
        CONVSTCLK : std_logic;           --IN --Control --Only for event-Mode
33
        DADDR : std_logic_vector(5 downto 0);--IN --DRP Addresse
34
        DCLK : std_logic;             --IN --DRP
35
        DEN : std_logic;            --IN --DRP data Enable
36
        DI : std_logic_vector(15 downto 0);              --IN --DRP Data-Input
37
        DWE : std_logic;                 --IN --DRP Data-Write Enable
38
        RESET : std_logic;               --IN --Control
39
        VAUXN : std_logic_vector(15 downto 0);-- IN --Analog in
40
        VAUXP : std_logic_vector(15 downto 0);-- IN --Analog in
41
        ALM : std_logic;                --OUT -Anarm
42
        BUSY : std_logic;           --OUT -Conversion Running
43
        CHANNEL : std_logic_vector(3 downto 0);    --OUT --Register welches grade fertig ist
44
        DO : std_logic_vector(15 downto 0);            --OUT --XADC-result
45
        DRDY : std_logic;       --OUT --XADC-DATA-VLD
46
        EOC : std_logic;            --OUT --Messung fertig
47
        EOS : std_logic;            --OUT --Alle kannäle fertig gewandelt
48
        JTAGBUSY : std_logic;           --OUT --JTAG DRP in Progress
49
        JTAGLOCKED : std_logic;         --OUT --DRP is ready for access
50
        JTAGMODIFIED : std_logic;       --OUT --JTAG Write has occured
51
        OT : std_logic;                   --OUT --Over-Temperature Alarm
52
        MUXADDR : std_logic_vector(4 downto 0);              --OUT --Address for external MUX
53
        VP : std_logic;              --IN --Dedicated Analog-In
54
        VN : std_logic               --IN --Dedicated Analog-In
55
);
56
end component;
1
XADC_inst : xadc_wiz_0
2
--generic map (
3
---- INIT_40 - INIT_42: XADC configuration registers
4
--INIT_40=>X"0000",
5
--INIT_41=>X"21AF",
6
--INIT_42=>X"0400",
7
---- INIT_48 - INIT_4F: Sequence Registers
8
--INIT_48=>X"0000",
9
--INIT_49=>X"0606",
10
--INIT_4A=>X"0000",
11
--INIT_4B=>X"0000",
12
--INIT_4C=>X"0000",
13
--INIT_4D=>X"0000",
14
--INIT_4F=>X"0000",
15
--INIT_4E=>X"0000", --Sequenceregister 6 
16
----INIT_50 - INIT_58, INIT5C: Alarm Limit Registers
17
--INIT_50=>X"B5ED",
18
--INIT_51=>X"57E4",
19
--INIT_52=>X"A147",
20
--INIT_53=>X"CA33",
21
--INIT_54=>X"A93A",
22
--INIT_55=>X"52C6",
23
--INIT_56=>X"9555",
24
--INIT_57=>X"AE4E",
25
--INIT_58=>X"5999",
26
--INIT_5C=>X"5111",
27
---- Simulation attributes :Set for proper simulation behavior 
28
--SIM_DEVICE => "7SERIES", --Select target device(values)
29
--SIM_MONITOR_FILE=>"design.txt"--Analog simulation data file name
30
--)
31
port map(
32
        CONVST=>'0',              --IN --Control --Only for event-Mode
33
        CONVSTCLK=>'0',           --IN --Control --Only for event-Mode
34
        DADDR=>xadc_daddr,--IN --DRP Addresse
35
        DCLK=>clk100,             --IN --DRP
36
        DEN=>xadc_eoc,            --IN --DRP data Enable
37
        DI=>x"0000",              --IN --DRP Data-Input
38
        DWE=>'0',                 --IN --DRP Data-Write Enable
39
        RESET=>'0',               --IN --Control
40
        VAUXN=>xadc_in_n,-- IN --Analog in
41
        VAUXP=>xadc_in_p,-- IN --Analog in
42
        ALM=>'0',--open,                --OUT -Anarm
43
        BUSY=>xadc_bsy,           --OUT -Conversion Running
44
        CHANNEL=>xadc_channel,    --OUT --Register welches grade fertig ist
45
        DO=>xadc_data,            --OUT --XADC-result
46
        DRDY=>xadc_data_en,       --OUT --XADC-DATA-VLD
47
        EOC=>xadc_eoc,            --OUT --Messung fertig
48
        EOS=>xadc_eos,            --OUT --Alle kannäle fertig gewandelt
49
        JTAGBUSY=>'0',--open,           --OUT --JTAG DRP in Progress
50
        JTAGLOCKED=>'0',--open,         --OUT --DRP is ready for access
51
        JTAGMODIFIED=>'0',--open,       --OUT --JTAG Write has occured
52
        OT=>'0',--open,                   --OUT --Over-Temperature Alarm
53
        MUXADDR=>"00000",--open,              --OUT --Address for external MUX
54
        VP=>xadc_vp,              --IN --Dedicated Analog-In
55
        VN=>xadc_vn               --IN --Dedicated Analog-In
56
);

von Duke Scarring (Gast)


Lesenswert?

Matthias schrieb:
> Weiße jemand vielleicht wo man sowas nachlesen kann, wie eben ein
> solcher generierter Verilog Code in VHDL genutzt werden kann?
Für das Verilog-Modul schreibt man eine passende VHDL-Component 
Beschreibung.
Welche Datentypen dort zulässig sind, steht im Synthesis-Guide.

Wenn Du generell Probleme mit der Arbeitsweise des XADC hast, dann 
solltest Du Dir den UG480 anschauen:
https://www.xilinx.com/support/documentation/user_guides/ug480_7Series_XADC.pdf

Duke

P.S.: Große VHDL-Dateien besser als Anhang einstellen, das schont mein 
Scrollrad an der Maus...

von Christian R. (supachris)


Lesenswert?

Wieso nutzt du denn nicht gleich die generierten *.vho Files? Da ist 
doch ein Instanziierungs Beispiel drin.

Matthias schrieb:
> Was ich nicht verstehe ist die Datenschnittstelle.
> --> Wie sollen denn nun die Daten heraus kommen?

Wenn du mit dem CoreGen den XADC so parametriert hast dass er im 
Sequencing Mode arbeitet, dann kannst du die Daten einfach so raus 
holen:
1
--after each channel sampling is finished, read the result via DRP interface
2
  DADDR_IN <= "00" & CHANNEL_OUT;
3
  DEN_IN <= EOC_OUT;

Immer wenn dann DRDY_OUT = 1 ist, kannst du an DO_OUT ein Ergebnis 
auslesen. Aus welchem Register da kommt, sagt dir CHANNEL_OUT, somit 
kannst du das den Eingängen zuordnen.

Was mich wundert, wieso hast du so viele Parameter und Signale bei dir? 
Benutzt du den "nackten" XADC ohne Core? Kann man machen, aber ist halt 
ungleich aufwendiger, als sich den Wrapper generieren zu lassen...

von Matthias (Gast)


Lesenswert?

Christian R. schrieb:
> Wieso nutzt du denn nicht gleich die generierten *.vho Files? Da ist
> doch ein Instanziierungs Beispiel drin.

SUPER! Genau nach sowas habe ich gesucht, wusste aber bisher nicht dass 
es das gibt!

Hie gibts nun noch ein Problem mit der Datenausgabe:
1
COMPONENT xadc_wiz_0
2
  PORT (
3
    dclk_in : IN STD_LOGIC;
4
    vp_in : IN STD_LOGIC;
5
    vn_in : IN STD_LOGIC;
6
    vauxp1 : IN STD_LOGIC;
7
    vauxn1 : IN STD_LOGIC;
8
    vauxp2 : IN STD_LOGIC;
9
    vauxn2 : IN STD_LOGIC;
10
    vauxp9 : IN STD_LOGIC;
11
    vauxn9 : IN STD_LOGIC;
12
    vauxp10 : IN STD_LOGIC;
13
    vauxn10 : IN STD_LOGIC;
14
    channel_out : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);
15
    eoc_out : OUT STD_LOGIC;
16
    alarm_out : OUT STD_LOGIC;
17
    eos_out : OUT STD_LOGIC;
18
    busy_out : OUT STD_LOGIC
19
  );
20
END COMPONENT;
21
22
your_instance_name : xadc_wiz_0
23
  PORT MAP (
24
    dclk_in => dclk_in,
25
    vp_in => vp_in,
26
    vn_in => vn_in,
27
    vauxp1 => vauxp1,
28
    vauxn1 => vauxn1,
29
    vauxp2 => vauxp2,
30
    vauxn2 => vauxn2,
31
    vauxp9 => vauxp9,
32
    vauxn9 => vauxn9,
33
    vauxp10 => vauxp10,
34
    vauxn10 => vauxn10,
35
    channel_out => channel_out,
36
    eoc_out => eoc_out,
37
    alarm_out => alarm_out,
38
    eos_out => eos_out,
39
    busy_out => busy_out
40
  );

Also an sich sehr schön, aber mit fehlt hier die Datenausgabe.
Damit kann ich mir nun am LA anschauen, dass er neue Daten hat, dass die 
Sequenz fertig ist, das gerade eine Wandlung läuft und auch welcher 
Kanal grage gewandelt wird.

Was ist denn nötig um eine Datenschnittstelle zu bekommen?

Christian R. schrieb:
> Matthias schrieb:
>> Was ich nicht verstehe ist die Datenschnittstelle.
>> --> Wie sollen denn nun die Daten heraus kommen?
>
> Wenn du mit dem CoreGen den XADC so parametriert hast dass er im
> Sequencing Mode arbeitet, dann kannst du die Daten einfach so raus
> holen:
> --after each channel sampling is finished, read the result via DRP
> interface
>   DADDR_IN <= "00" & CHANNEL_OUT;
>   DEN_IN <= EOC_OUT;
>
> Immer wenn dann DRDY_OUT = 1 ist, kannst du an DO_OUT ein Ergebnis
> auslesen. Aus welchem Register da kommt, sagt dir CHANNEL_OUT, somit
> kannst du das den Eingängen zuordnen.
>
> Was mich wundert, wieso hast du so viele Parameter und Signale bei dir?
> Benutzt du den "nackten" XADC ohne Core? Kann man machen, aber ist halt
> ungleich aufwendiger, als sich den Wrapper generieren zu lassen...

Das habe ich auch schon so vor gehabt / Kommt in einem anderen Thread 
vor.
Problem ist aber dass ich es mit der oben geposteten 
Component-Deklaration nicht schaffe ein Image zu bauen, wegen einer 
Meldung:
[Synth 8-485] no port 'DCLK' on instance
für sämtliche Ports.

Duke Scarring schrieb:
> Wenn Du generell Probleme mit der Arbeitsweise des XADC hast, dann
> solltest Du Dir den UG480 anschauen:
> https://www.xilinx.com/support/documentation/user_guides/ug480_7Series_XADC.pdf
>
> Duke
>
> P.S.: Große VHDL-Dateien besser als Anhang einstellen, das schont mein
> Scrollrad an der Maus...

Generelle Probleme mit der Nutzung/Arbeitsweise sehe ich nicht, es ist 
eben nur fraglich wie ich zu einem Image mit (vollständigem) XADC kommen 
kann.

Wenn nun schon ein Image mit laufendem XADC da ist, wäre es nun echt 
super wenn jemand noch wüsste wie man die Daten raus holen kann?

von Christian R. (supachris)


Lesenswert?

Also bei mir kommen die Daten mit dem oben geposteten Code raus. Dazu 
muss natürlich der Sequenzer aktiv sein und der DCLK am DRP laufen. Bist 
du sicher dass da ein CLK aktiv ist? Die Meldung ist ja recht eindeutig.
Nach den genauen Einstellungen im CoreGen kann ich dann nochmal gucken. 
Deine Instanz sieht aber so aus als hättest du DRP gar nicht aktiviert 
im Core? Da fehlt daddr, drdy, dout usw...

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

So in etwa müsste das aussehen, damit die Daten auch irgendwie nach 
außen gelangen braucht man natürlich AXI oder DRP.

von Matthias (Gast)


Lesenswert?

Christian R. schrieb:
> Also bei mir kommen die Daten mit dem oben geposteten Code raus. Dazu
> muss natürlich der Sequenzer aktiv sein und der DCLK am DRP laufen. Bist
> du sicher dass da ein CLK aktiv ist? Die Meldung ist ja recht eindeutig.
> Nach den genauen Einstellungen im CoreGen kann ich dann nochmal gucken.
> Deine Instanz sieht aber so aus als hättest du DRP gar nicht aktiviert
> im Core? Da fehlt daddr, drdy, dout usw...

Da hast du recht, ich hatte bei Interface-Options None ausgewählt.
Mit der Einstellung DRP hat der XADC auf einmal ein Interface, das nun 
auch schon läuft :)

Er ist wie oben beschrieben angeschlossen und die Daten kommen raus :)

Christian R. schrieb:
> So in etwa müsste das aussehen, damit die Daten auch irgendwie nach
> außen gelangen braucht man natürlich AXI oder DRP.

Genau so sieht's nun auch aus...

Nun macht es auch Sinn dass ich mit meinem ersten Versuch oben die 
Meldung bekamm dass es diverse Ports nicht gibt. Wobai das vermutlich 
nicht das einzige Problem war.

Der wichtigste Hinweis ist nun zu wissen dass es *.vho files gibt!

Aber eine Frage bleibt dann doch:
Warum kann man "Kein" Interface auswählen?
Macht es sinn den XADC ohne Datenausgabe zu betreiben?

Vielen Dank für eure Antworten,
Viele Grüße,
Matthias

von Rudolph (Gast)


Lesenswert?

Matthias schrieb:
> Warum kann man "Kein" Interface auswählen?
> Macht es sinn den XADC ohne Datenausgabe zu betreiben?

Wenn Dich nur die Alarm-Bits interessieren, dann schon, z.B. für einen 
simplen Übertemperaturalarm. Eine andere Anwendung wäre, wenn den XADC 
inklusive der VAUX-Pins nur per JTAG benutzen möchte.

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.