Obsługa ADC na kanale ANAIN1, czyli tam gdzie jest podłączony potencjometr.
Podczas kręcenia potencjometrem w prawo zapalaną się diody na płytce.
[FPGA] MAXIMATOR obsługa ADC
[FPGA] MAXIMATOR obsługa ADC
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Gott weiß ich will kein Engel sein.
Re: [FPGA] MAXIMATOR obsługa ADC
mógłbyś coś więcej o tym napisać? widzę, że jest tu użyty gotowy ip-core do adc-ka, tak samo będzie z innymi "peryferiami" wewnętrznymi w MAX10?
Nowy blog o tematyce embedded -> https://www.embedownik.pl/
Re: [FPGA] MAXIMATOR obsługa ADC
Wersja poprawiona kodu VHDL, okazuje się że nie potrzeba automatu skończonego (FSM) do obsługi ADC.
Wystarczy sprawdzać czy response_valid = '1'
Wystarczy sprawdzać czy response_valid = '1'
Kod: Zaznacz cały
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY Test_ADC IS
PORT(
CLK : IN STD_LOGIC;
LED : OUT STD_LOGIC_VECTOR(3 downto 0)
);
END Test_ADC;
ARCHITECTURE logic OF Test_ADC IS
signal reset_reset_n : STD_LOGIC;
signal command_valid : STD_LOGIC;
signal command_channel : STD_LOGIC_VECTOR(4 DOWNTO 0);
signal command_startofpacket : STD_LOGIC;
signal command_endofpacket : STD_LOGIC;
signal command_ready : STD_LOGIC;
signal response_valid : STD_LOGIC;
signal response_channel : STD_LOGIC_VECTOR(4 DOWNTO 0);
signal response_data : STD_LOGIC_VECTOR(11 DOWNTO 0);
signal response_startofpacket : STD_LOGIC;
signal response_endofpacket : STD_LOGIC;
component adc_qsys is
port (
clk_clk : in std_logic := 'X'; -- clk
reset_reset_n : in std_logic := 'X'; -- reset_n
command_valid : in std_logic := 'X'; -- valid
command_channel : in std_logic_vector(4 downto 0) := (others => 'X'); -- channel
command_startofpacket : in std_logic := 'X'; -- startofpacket
command_endofpacket : in std_logic := 'X'; -- endofpacket
command_ready : out std_logic; -- ready
response_valid : out std_logic; -- valid
response_channel : out std_logic_vector(4 downto 0); -- channel
response_data : out std_logic_vector(11 downto 0); -- data
response_startofpacket : out std_logic; -- startofpacket
response_endofpacket : out std_logic -- endofpacket
);
end component adc_qsys;
begin
u0 : component adc_qsys
port map (
clk_clk => CLK, -- clk.clk
reset_reset_n => reset_reset_n, -- reset.reset_n
command_valid => command_valid, -- command.valid
command_channel => command_channel, -- .channel
command_startofpacket => command_startofpacket, -- .startofpacket
command_endofpacket => command_endofpacket, -- .endofpacket
command_ready => command_ready, -- .ready
response_valid => response_valid, -- response.valid
response_channel => response_channel, -- .channel
response_data => response_data, -- .data
response_startofpacket => response_startofpacket, -- .startofpacket
response_endofpacket => response_endofpacket -- .endofpacket
);
command_channel <= "00000";
reset_reset_n <= '1';
command_valid <= '1';
command_startofpacket <= '1';
command_ready <= '1';
process(CLK)
begin
if rising_edge(CLK) and response_valid = '1' then
if response_data > 512 then
LED(0) <= '0';
else
LED(0) <= '1';
end if;
if response_data > 1536 then
LED(1) <= '0';
else
LED(1) <= '1';
end if;
if response_data > 2560 then
LED(2) <= '0';
else
LED(2) <= '1';
end if;
if response_data > 3584 then
LED(3) <= '0';
else
LED(3) <= '1';
end if;
end if;
end process;
END logic;
Gott weiß ich will kein Engel sein.
Re: [FPGA] MAXIMATOR obsługa ADC
dambo pisze:mógłbyś coś więcej o tym napisać? widzę, że jest tu użyty gotowy ip-core do adc-ka, tak samo będzie z innymi "peryferiami" wewnętrznymi w MAX10?
Nie jest to typowy IP-Core, został wygenerowany przy użyciu konfiguratora Qsys ( w menu: Tools->Qsys ), do wszystkich wbudowanych peryferiów używa się tego konfiguratora.
Gott weiß ich will kein Engel sein.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości