Forum: FPGA, VHDL & Co. 10 Bits ADC Interface mit VHDL


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 Beruk (manitou)


Angehängte Dateien:

Lesenswert?

Hallo liebe Leute,
ich würde mich auf eure Hilfe sehr freuen. Ich versuche einen VHDL-Kode 
für meinen 10 Bits ADC zu schreiben. Der ADC besitzt zwei Eingänge, die 
dann zu einem Ausgang durch die steigende und fallende Flanke des Clocks 
gemultiplext werden. Ich wollte dazu noch fragen, der ADC ist an einem 
Signalgenerator angeschlossen, deswegen frage ich mich wie sollte die 
Eingangsports aussehen (Vektors oder nur std_logic). Da der ADC-Ausgang 
an dn Raspberry Pi des Pynq Z2 Boards angeschlossen wird, würde ich gern 
wissen, wie der XDC-File geschrieben werden muss. Ich freue mich schon 
auf eure lehrreiche Hilfe.

Beste Grüße

---------
ADC-Code
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
use IEEE.NUMERIC_STD.ALL;
5
6
entity ADC_conv is
7
  Port (
8
                Reset            : in std_logic;               
9
                wr_en            : in std_logic;           
10
                ADC_inphase : in std_logic_vector(9 downto 0);
11
                ADC_quadrature : in std_logic_vector(9 downto 0); 
12
                Dout            : out std_logic_vector(9 downto 0);
13
                Clock_out          : out std_logic ;             
14
                enable_out       : out std_logic;              
15
                Clock : IN  STD_LOGIC                          
16
17
   );
18
end ADC_conv;
19
20
architecture Behavioral of ADC_conv is
21
    shared variable temp1, temp2 : std_logic_vector(9 downto 0) ;
22
begin
23
  Convertion : Process (Clock, Reset, wr_en, ADC_inphase) is
24
                        begin
25
                            if Reset = '1' then
26
                                Dout <= ( others => '0' ) ;
27
                                enable_out <= '0' ;
28
                                Clock_out <= '0' ;
29
                            else if rising_edge(Clock) then
30
                                if (wr_en = '1') then
31
                                    temp1 := ADC_inphase ;
32
                                 else
33
                                    temp1 := (others => '0');
34
                                end if ;
35
                            end if ;
36
                            end if ;
37
 end process Convertion ;
38
 Convertion_quadrature : Process (Clock, Reset, wr_en, ADC_quadrature) is
39
                        begin
40
                            if Reset = '1' then
41
                                Dout <= ( others => '0' ) ;
42
                                enable_out <= '0' ;
43
                                Clock_out <= '0' ;
44
                            else if falling_edge(Clock) then
45
                                if (wr_en = '1') then
46
                                    temp2 := ADC_quadrature ;
47
                                else
48
                                    temp2 := (others => '0');
49
                                end if ;
50
                            end if ;
51
                            end if ;
52
    end process Convertion_quadrature ;
53
    Dout <= temp1 when Clock = '1' else temp2 ;
54
  end Behavioral;


-----------------------
XDC-File
1
## Clock signal 125 MHz
2
3
#set_property -dict { PACKAGE_PIN H16   IOSTANDARD LVCMOS33 } [get_ports { sysclk }]; #IO_L13P_T2_MRCC_35 Sch=sysclk
4
#create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { sysclk }];
5
6
7
8
##Raspberry Digital I/O 
9
10
#set_property -dict { PACKAGE_PIN W18   IOSTANDARD LVCMOS33 } [get_ports { rpio_02_r }]; #IO_L22P_T3_34 Sch=rpio_02_r
11
#set_property -dict { PACKAGE_PIN W19   IOSTANDARD LVCMOS33 } [get_ports { rpio_03_r }]; #IO_L22N_T3_34 Sch=rpio_03_r
12
#set_property -dict { PACKAGE_PIN Y18   IOSTANDARD LVCMOS33 } [get_ports { rpio_04_r }]; #IO_L17P_T2_34 Sch=rpio_04_r
13
#set_property -dict { PACKAGE_PIN Y19   IOSTANDARD LVCMOS33 } [get_ports { rpio_05_r }]; #IO_L17N_T2_34 Sch=rpio_05_r
14
#set_property -dict { PACKAGE_PIN U18   IOSTANDARD LVCMOS33 } [get_ports { rpio_06_r }]; #IO_L22P_T3_13 Sch=rpio_06_r
15
#set_property -dict { PACKAGE_PIN U19   IOSTANDARD LVCMOS33 } [get_ports { rpio_07_r }]; #IO_L12P_T1_MRCC_34 Sch=rpio_07_r
16
#set_property -dict { PACKAGE_PIN F19   IOSTANDARD LVCMOS33 } [get_ports { rpio_08_r }]; #IO_L12N_T1_MRCC_34 Sch=rpio_08_r
17
#set_property -dict { PACKAGE_PIN V10   IOSTANDARD LVCMOS33 } [get_ports { rpio_09_r }]; #IO_L21N_T3_DQS_13 Sch=rpio_09_r
18
#set_property -dict { PACKAGE_PIN V8    IOSTANDARD LVCMOS33 } [get_ports { rpio_10_r }]; #IO_L15P_T2_DQS_13 Sch=rpio_10_r
19
#set_property -dict { PACKAGE_PIN W10   IOSTANDARD LVCMOS33 } [get_ports { rpio_11_r }]; #IO_L16P_T2_13 Sch=rpio_11_r
20
#set_property -dict { PACKAGE_PIN B20   IOSTANDARD LVCMOS33 } [get_ports { rpio_12_r }]; #IO_L1N_T0_AD0N_35 Sch=rpio_12_r
21
#set_property -dict { PACKAGE_PIN W8    IOSTANDARD LVCMOS33 } [get_ports { rpio_13_r }]; #IO_L15N_T2_DQS_13 Sch=rpio_13_r
22
#set_property -dict { PACKAGE_PIN V6    IOSTANDARD LVCMOS33 } [get_ports { rpio_14_r }]; #IO_L22P_T3_13 Sch=rpio_14_r
23
#set_property -dict { PACKAGE_PIN Y6    IOSTANDARD LVCMOS33 } [get_ports { rpio_15_r }]; #IO_L13N_T2_MRCC_13 Sch=rpio_15_r
24
#set_property -dict { PACKAGE_PIN B19   IOSTANDARD LVCMOS33 } [get_ports { rpio_16_r }]; #IO_L2P_T0_AD8P_35 Sch=rpio_16_r
25
#set_property -dict { PACKAGE_PIN U7    IOSTANDARD LVCMOS33 } [get_ports { rpio_17_r }]; #IO_L11P_T1_SRCC_13 Sch=rpio_17_r
26
#set_property -dict { PACKAGE_PIN C20   IOSTANDARD LVCMOS33 } [get_ports { rpio_18_r }]; #IO_L1P_T0_AD0P_35 Sch=rpio_18_r
27
#set_property -dict { PACKAGE_PIN Y8    IOSTANDARD LVCMOS33 } [get_ports { rpio_19_r }]; #IO_L14N_T2_SRCC_13 Sch=rpio_19_r
28
#set_property -dict { PACKAGE_PIN A20   IOSTANDARD LVCMOS33 } [get_ports { rpio_20_r }]; #IO_L2N_T0_AD8N_35 Sch=rpio_20_r
29
#set_property -dict { PACKAGE_PIN Y9    IOSTANDARD LVCMOS33 } [get_ports { rpio_21_r }]; #IO_L14P_T2_SRCC_13 Sch=rpio_21_r
30
#set_property -dict { PACKAGE_PIN U8    IOSTANDARD LVCMOS33 } [get_ports { rpio_22_r }]; #IO_L17N_T2_13 Sch=rpio_22_r
31
#set_property -dict { PACKAGE_PIN W6    IOSTANDARD LVCMOS33 } [get_ports { rpio_23_r }]; #IO_IO_L22N_T3_13 Sch=rpio_23_r
32
#set_property -dict { PACKAGE_PIN Y7    IOSTANDARD LVCMOS33 } [get_ports { rpio_24_r }]; #IO_L13P_T2_MRCC_13 Sch=rpio_24_r
33
#set_property -dict { PACKAGE_PIN F20   IOSTANDARD LVCMOS33 } [get_ports { rpio_25_r }]; #IO_L15N_T2_DQS_AD12N_35 Sch=rpio_25_r
34
#set_property -dict { PACKAGE_PIN W9    IOSTANDARD LVCMOS33 } [get_ports { rpio_26_r }]; #IO_L16N_T2_13 Sch=rpio_26_r
35
#set_property -dict { PACKAGE_PIN Y16   IOSTANDARD LVCMOS33 } [get_ports { rpio_sd_r }]; #IO_L7P_T1_34 Sch=rpio_sd_r
36
#set_property -dict { PACKAGE_PIN Y17   IOSTANDARD LVCMOS33 } [get_ports { rpio_sc_r }]; #IO_L7N_T1_34 Sch=rpio_sc_r

: Bearbeitet durch Moderator
von Rick D. (rickdangerus)


Lesenswert?

Beruk schrieb:
> Da der ADC-Ausgang
> an dn Raspberry Pi des Pynq Z2 Boards angeschlossen wird,
Mir ist anhand dieser Beschreibung völlig schleierhaft, wo der ADC 
(welcher eigentlich?) angeschlossen werden soll.
Sitzt der schon auf dem Board?
Hängt der ADC am Zynq, wenn ja, an PL oder PS?
Hängt der am Raspi, wenn ja, an welcher Schnittstelle?
...

von A. F. (chefdesigner)


Lesenswert?

Rick D. schrieb:
> Mir ist anhand dieser Beschreibung völlig schleierhaft, wo der ADC
> (welcher eigentlich?) angeschlossen werden soll

wahrscheinlich an einigen dieser vielen RIO-Pins.

Das hier:

> Process (Clock, Reset, wr_en, ADC_inphase) is

sieht schon mal nicht so aus, als hätte der Schreiber verstanden, was er 
da tut

von Beruk (manitou)


Lesenswert?

Hallo ich danke Ihnen für die Rückmeldung. Der ADC wird ans Board über 
die Raspberry Pi Schnittstellen angeschlossen.

von Gustl B. (gustl_b)


Lesenswert?

Beruk schrieb:
> die Raspberry Pi Schnittstellen angeschlossen.

Das sind viele Pins und nicht alle sind geeignet. Welche dieser Pins 
sollen also verwendet werden?

Hier steht welche Pins es gibt und wo die angeschlossenen sind.
https://pynq.tue.nl/general/io/

: Bearbeitet durch User
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.