10 位 ADC 接口 mit VHDL

10 Bits ADC Interface mit VHDL

提问人:Didier Noël 提问时间:11/3/2023 更新时间:11/3/2023 访问量:48

问:

非常感谢您的帮助。我正在尝试编写VHDL代码 对于我的 10 位 ADC。ADC有两个输入, 然后通过时钟的上升沿和下降沿多路复用到输出。 是多路复用的。我想问一下这个,ADC连接到信号 信号发生器,所以我想知道输入端口应该是什么样子 输入端口应如下所示(向量或仅std_logic)。由于ADC输出 连接到 Pynq Z2 板的树莓派,我想知道 知道如何编写XDC文件。我已经很期待了 为您提供指导性的帮助。

此致敬意

请帮我编程这个ADC

----------------------------------------------------------------------------------
-- Company:
-- Engineer:
-- 
-- Create Date: 01.11.2023 20:17:11
-- Design Name:
-- Module Name: ADC_Interface_conv_file - Behavioral
-- Project Name:
-- Target Devices:
-- Tool Versions:
-- Description:
-- 
-- Dependencies:
-- 
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- 
----------------------------------------------------------------------------------


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity ADC_conv is
  Port (
                Reset            : in std_logic;                -- Reset signal
                wr_en            : in std_logic;                -- start signal from FSM to convert data
                ADC_inphase : in std_logic_vector(9 downto 0);--receiver side i/p
                ADC_quadrature : in std_logic_vector(9 downto 0); --receiver side i/p

    -- Dout1            : out std_logic_vector(9 downto 0);--receiver side 0/p
                Dout            : out std_logic_vector(9 downto 0);--receiver side o/p

                Clock_out          : out std_logic ;              -- clock output
-- ADC_CLK2 : out std_logic;
                enable_out       : out std_logic;               -- convertion done signal
    --Reset : IN  STD_LOGIC;
                Clock : IN  STD_LOGIC                          -- clock signal input

   );
end ADC_conv;

architecture Behavioral of ADC_conv is

    shared variable temp1, temp2 : std_logic_vector(9 downto 0) ;

begin

    Convertion : Process (Clock, Reset, wr_en, ADC_inphase) is

                        begin

                            if Reset = '1' then

                                Dout <= ( others => '0' ) ;
                                enable_out <= '0' ;
                                Clock_out <= '0' ;

                            else if rising_edge(Clock) then
                                if (wr_en = '1') then
                                    temp1 := ADC_inphase ;
                                 else
                                    temp1 := (others => '0');
                                end if ;

                            end if ;
                            end if ;


    end process Convertion ;

    Convertion_quadrature : Process (Clock, Reset, wr_en, ADC_quadrature) is

                        begin

                            if Reset = '1' then

                                Dout <= ( others => '0' ) ;
                                enable_out <= '0' ;
                                Clock_out <= '0' ;

                            else if falling_edge(Clock) then
                                if (wr_en = '1') then
                                    temp2 := ADC_quadrature ;
                                else
                                    temp2 := (others => '0');
                                end if ;

                            end if ;
                            end if ;


    end process Convertion_quadrature ;

    Dout <= temp1 when Clock = '1' else temp2 ;


end Behavioral;
VHDL 硬件 FPGA ADC

评论

3赞 the busybee 11/3/2023
欢迎来到 StackOverflow!你参加了这次旅行,恭喜你,这是一个好的开始。你也读过《如何问》吗?请编辑您的问题并添加您想要实现的目标,我不明白。是否要创建一个与所描述的基本ADC相似的仿真组件?或者您想捕获真实ADC的结果以使其适应上述Raspi?此外,当你在做的时候:你的缩进很糟糕,来源几乎不可读。请采取严肃的风格并坚持下去。

答: 暂无答案