реклама на сайте
подробности

 
 
> отладочная плата de1 работа с встроенным ацп
enzaime
сообщение Sep 20 2014, 15:54
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



написал вот такой код, основываясь на информации из документации ацп (ацп рабочий тестовый пример запускается нормально, но больше ничего полезного тестовый пример не дал, так как его код слишком сложен для моего понимания):
CODE
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity adc_test is
port(
clk:in std_logic;--входящий тактовый (50 мгц)
sclk:out std_logic;--тактовый ацп(max=20mgh)
cs_n:out std_logic;--сигнал низкого уровня(спад по заднему фронту означает начало работы ацп)
din:out std_logic;--сигнал подаваемый на ацп с информацией о том как, откуда преобразовывать сигнал
dout:in std_logic;--результат работы ацп
leds:out std_logic_vector(7 downto 0)--выведены 8 бит - результат преобразования в цифровой вид

);
end entity;
--структура dout (0 написаны для примера)
--00000000-результат преобразования(8 бит)
--000-номер канала(3 бита) (0 до 7 т.е если 2 то 010)
--0-ведущий бит(1 бит)
--0000-разделительные биты(4 бит)
architecture arch of adc_test is
signal control_reg:std_logic_vector(11 downto 0):="110000111011";
--структура din(здесь стоят конкретные значения, указаны в том порядке, в котором написаны выше(слева-направо))
--write=1 - запись в контрольный регистр
--seq=1 - идёт вместе с shadow (11 - означает, что конвертироваться будет с 0 канала до указанного, поочередно, если add=0, то с 0 по 0 канал)
--незначащий
--add 2,0,1=000 - номер канала (0)
--pm 1,0=11 - ацп работает на полную катушку(т.е. работает и когда надо, и когда не надо, например во время посылки незначащих 0 между выборками)
--shadow=1 - идёт вместе с seq (11 - означает, что конвертироваться будет с 0 канала до указанного, поочередно, если add=0, то с 0 по 0 канал)
--незначащий
--range=0 - аналоговый диапазон 0-2*REFin
--coding=1 - результат идёт последовательно
signal div:integer:=0;
signal adc_clk:std_logic:='0';
signal adc_cs:std_logic:='1';
signal cs_count:integer:=0;
signal first_takt:std_logic_vector(1 downto 0):="00";
signal takts_count:std_logic_vector(3 downto 0):="0000";
signal takts_count_cs:std_logic_vector(3 downto 0):="0000";
signal adc_dout:std_logic_vector(15 downto 0);
begin
sclk<=adc_clk;
cs_n<=adc_cs;
--делитель рез-т 16,6 мгц
process(clk)
begin
if(rising_edge(clk)) then
if(div<3) then
adc_clk<='0';
div<=div+1;
else
if(div>=3) then
adc_clk<='1';
div<=div+1;
end if;
end if;
if(div=5) then
div<=0;

end if;

end if;
end process;

process(adc_clk)
begin
if(rising_edge(adc_clk)) then
if(conv_integer(takts_count_cs)=0) then
adc_cs<='1';
else
adc_cs<='0' after 55 ns;
end if;
takts_count_cs<=takts_count_cs+1;
end if;
end process;

----------
--запись в din
--первый спад cs запись в контрольный регистр, 2 спад cs - получение преобразования
process(adc_clk,adc_cs)
begin
if(falling_edge(adc_clk)) then
if(adc_cs='0') then
if(conv_integer(takts_count)<12) then
din<=control_reg(11-conv_integer(takts_count));
--if(conv_integer(takts_count)=0) then
--control_reg(11-conv_integer(takts_count))<='0';
--end if;
end if;
takts_count<=takts_count+1;
else
takts_count<="0000";
end if;
end if;
end process;
--чтение из dout
--читается со 2 такта cs_n
process(adc_clk)
begin
if(falling_edge(adc_clk)) then
if(adc_cs='0')then
adc_dout(15-conv_integer(takts_count))<=dout;
if(conv_integer(takts_count)=15) then
leds<=adc_dout(11 downto 4);
end if;
end if;
end if;
end process;
end architecture;

результат работы никакой. Преобразование выводится на светодиоды, а они не горят. Контакты в плис я назначил правльно, т.е. как в документации к плате было написано.
Максимальная тактовая частота ацп 20 мгц, ( но я не знаю как из 50мгц сделать 20, поэтому поставил 16,(6)). Может кто знает где ошибка или может я принципиально что-то не так делаю?
Прикрепленный файл  AD7928.pdf ( 439.99 килобайт ) Кол-во скачиваний: 180
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 05:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016