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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> SignalTap 2 Logic Analyzer, Ошибка : Waiting for clock
Ensider
сообщение Jun 28 2017, 09:44
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(spectr @ Jun 28 2017, 09:23) *
Похоже что сигналтапу не хватает клоков, чтобы заполнить весь буфер. На АЦП, видимо, у вас идет клок, разрешаемый чипселектом, а не постоянно? В таком случае сделайте еще один такой же клок, но который будет работать постоянно. Тогда сигналтап от него заработает.

Это если прописать таким образом?Ниже:
Код
  always @ (posedge CLOCK_8)
        begin
            count <= count + 1;
        end


Цитата(AVR @ Jun 28 2017, 09:39) *
Должен быть постоянный клок, синхронный с данными, которые хочется захватить. Идет ли он извне или генерируется внутри, мне казалось это не принципиально.
В приведенном куске кода убрана шапка модуля - зачем? Чтоб труднее было помочь?


Если прописать вот так:

Код
  always @ (posedge CLOCK_8)
        begin
            count <= count + 1;
        end


Прикладываю с шапкой:

Код
//Проект АЦП связь с FPGA
                                                                                
                                                                                
                                                                                
localparam int unsigned DATA_TEMP            = 97;         //Сумма разрядносте 6 АЦП

localparam int unsigned SYS_CLOCK_FREQ        = 10000000;    // Частота ADC_CLK в герцах.

module NOKIA (input  ADC_SDO , SPICMOSI , SPICCLK , SPICFLG,

output ADC_CNV , SPICMISO , ADC_CLK );

logic            timer_2Hz;  
                                  
logic            timer_1Hz;

reg DATA_TEMP [96:0];                                  // Разрядность даннных АЦП

reg RDY;

reg CNV ;

reg serial_data;

reg SERIAL_BIT;

reg TEMP [96:0];

reg COUNT;


always @(posedge ADC_CLK) begin  

                                              

    if (COUNT == (SYS_CLOCK_FREQ/2 - 1)) begin
        timer_2Hz <= 1'b1;                                  // Этот сигнал будет выставляться в лог.1 на 1 такт с периодом 1/(SYS_CLOCK_FREQ/2), т.е.,
        COUNT           <= '0;                                     // с частотой 2 Гц. Счетчик cnt при этом сбрасывается.
    end
    else begin
        COUNT           <= COUNT+1;                               // В иных случаях счет разрешен,
        timer_2Hz <= 1'b0;                                // а сигнал таймера д.б. занулен.
    end
end
                                                                // Утверждают сигнал CNV
always @ (negedge ADC_CLK)
        begin
            if ((COUNT == 97) || (COUNT == 98))
                CNV = 1'b0;
            else
                CNV = 1'b1;
                     end
                    
                                                              // Чтение последовательных данных в 97-битовый регистр. После этого преобразовать его в параллельный, если счетчик равен 97 (конец потока данных)
                    
                       always @ (negedge ADC_CLK)
        
        begin
                         DATA_TEMP[CNV]   <= (serial_data);
            if (COUNT == 97)
                TEMP <= DATA_TEMP;
                     end
always_ff @(posedge ADC_CLK) begin
    if (timer_2Hz == 1'b1) begin
        timer_1Hz <= ~timer_1Hz;
    end
end
                    
            assign ADC_CNV = CNV ;
            
             
endmodule


Цитата(doom13 @ Jun 28 2017, 09:06) *
Делитель какой частоты? Можете взять ее с клоковой ножки FPGA, подключить PLL и затактировать свою систему клоком с PLL.


Его нужно откуда-то взять, а это, как вариант, клоковая ножка FPGA, при условии что на нее подается сигнал тактирования.

И да, Ваш делитель - "не совсем делитель ", высокий уровень один такт ADC_CLK, все остальное время низкий.


Нужно прописать с постоянной на "высокий" ? Или сделать , как я привел уже пример? Ниже:

Код
  always @ (posedge CLOCK_8)
        begin
            count <= count + 1;
        end


Сообщение отредактировал Ensider - Jun 28 2017, 09:42
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 28 2017, 09:52
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



top module выкладывайте, чтоб было понятно, кто такой ADC_CLK и откуда он берется

, а то по коду модуля он выход, по рисунку выше - вход
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 28 2017, 09:59
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(doom13 @ Jun 28 2017, 09:52) *
top module выкладывайте, чтоб было понятно, кто такой ADC_CLK и откуда он берется

, а то по коду модуля он выход, по рисунку выше - вход


Я учел , то что он является выходом и исправил.Вот этот код окончательный.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 28 2017, 10:08
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Да и вообще (в случае приведённого куска кода) бред получился, вся схема тактируется от выходного пина
Код
...
module NOKIA (input  ADC_SDO , SPICMOSI , SPICCLK , SPICFLG,
output ADC_CNV , SPICMISO , ADC_CLK );
...

, но по коду ему ничего не присваивается, это вообще как?

Цитата(Ensider @ Jun 28 2017, 12:59) *
Я учел , то что он является выходом и исправил.Вот этот код окончательный.

Круто, т.е. сейчас он тупо выход, и на него Вы ничего не выдаете.
От чего вы хотите тактировать SignalTap и АЦП?
Приведённый код и есть топ-модуль? ...

Есть такая интересная штука RTL Viewer (Tools->Netlist Viewers->RTL Viewer), можете посмотреть, какую схему собрал компилер на основе Вашего кода.
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 28 2017, 10:15
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(doom13 @ Jun 28 2017, 10:02) *
Да и вообще (в случае приведённого куска кода) бред получился, вся схема тактируется от выходного пина
Код
...
module NOKIA (input  ADC_SDO , SPICMOSI , SPICCLK , SPICFLG,
output ADC_CNV , SPICMISO , ADC_CLK );
...

, но по коду ему ничего не присваивается, это вообще как?


Круто, т.е. сейчас он тупо выход, и на него Вы ничего не выдаете.
От чего вы хотите тактировать SignalTap и АЦП?
Приведённый код и есть топ-модуль? ...

Я хотел сделать , как вы мне предложили.Использовать ALTPLL.Значит все таки можно тактировать от ADC_CLK? В данном случае , да. Я уже сам запутался. Я хотел сделать делитель , чтобы от него тактировалось все.Потом уже обработку и забор и сохранение данных в отведенный регистр. Это не грамотно написано?

Цитата(doom13 @ Jun 28 2017, 10:08) *
Да и вообще (в случае приведённого куска кода) бред получился, вся схема тактируется от выходного пина
Код
...
module NOKIA (input  ADC_SDO , SPICMOSI , SPICCLK , SPICFLG,
output ADC_CNV , SPICMISO , ADC_CLK );
...

, но по коду ему ничего не присваивается, это вообще как?


Круто, т.е. сейчас он тупо выход, и на него Вы ничего не выдаете.
От чего вы хотите тактировать SignalTap и АЦП?
Приведённый код и есть топ-модуль? ...

Есть такая интересная штука RTL Viewer (Tools->Netlist Viewers->RTL Viewer), можете посмотреть, какую схему собрал компилер на основе Вашего кода.

Бред какой-то собрал.Который имеет один выход.

Цитата(Ensider @ Jun 28 2017, 10:12) *
Я хотел сделать , как вы мне предложили.Использовать ALTPLL.Значит все таки можно тактировать от ADC_CLK? В данном случае , да. Я уже сам запутался. Я хотел сделать делитель , чтобы от него тактировалось все.Потом уже обработку и забор и сохранение данных в отведенный регистр. Это не грамотно написано?


Бред какой-то собрал.Который имеет один выход.


Я просто не понимаю. Почему ADC_CLK нельзя использовать в качестве тактирования. Лишь потому , что по документации так. Что касается выходов я не подсоеденил ещё все выхода. Мне бы разобраться с клоком.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 28 2017, 10:22
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Внимание, объясняю ещё раз:
Если пин FPGA соответствующий сигналу ADC_CLK на схеме Вашей платы подключен к ноге SCK (8-ая нога) микросхемы AD7687, то ничего Вы от неё тактировать не можете, она сама (SCK) хочет чтоб её тактировали.

Цитата(Ensider @ Jun 28 2017, 13:15) *
Я просто не понимаю. Почему ADC_CLK нельзя использовать в качестве тактирования. Лишь потому , что по документации так. Что касается выходов я не подсоеденил ещё все выхода. Мне бы разобраться с клоком.

Для тактирования АЦП можно её использовать, но для этого она выходом должна быть, и тактовый сигнал к ней нужно подключить, и его же для тактирования SignalTap II можно использовать.
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 28 2017, 10:34
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(doom13 @ Jun 28 2017, 10:22) *
Внимание, объясняю ещё раз:
Если пин FPGA соответствующий сигналу ADC_CLK на схеме Вашей платы подключен к ноге SCK (8-ая нога) микросхемы AD7687, то ничего Вы от неё тактировать не можете, она сама (SCK) хочет чтоб её тактировали.


Для тактирования АЦП можно её использовать, но для этого она выходом должна быть, и тактовый сигнал к ней нужно подключить, и его же для тактирования SignalTap II можно использовать.


Первое я уяснил.А тактовый сигнал подключить так , как вы посоветовали ? "Можете взять ее с клоковой ножки FPGA, подключить PLL и затактировать свою систему клоком с PLL." ?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 28 2017, 10:39
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Да, ну только с той клоковой ножки, которая подключена к источнику сигнала тактирования sm.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 28 2017, 10:40
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 039
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



У вас к FPGA вообще какой нибудь генератор подключен? Если да, то тот пин FPGA, к которому он подключен, и должен являться самым главным клоком. Если нет - то нужно подключить, без него ничего работать не будет
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 28 2017, 11:10
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(XVR @ Jun 28 2017, 10:40) *
У вас к FPGA вообще какой нибудь генератор подключен? Если да, то тот пин FPGA, к которому он подключен, и должен являться самым главным клоком. Если нет - то нужно подключить, без него ничего работать не будет

Я как слепой сидел и не замечал этот момент.Вот у меня этот генератор.22 пин отвечает за это.А я возился с этим ADC_CLK.

Цитата(doom13 @ Jun 28 2017, 10:39) *
Да, ну только с той клоковой ножки, которая подключена к источнику сигнала тактирования sm.gif

Нашел эту ножку.Листал документацию , видел , что CLK есть , но пин не указывался. Дошло , что нужно в приложении посмотреть.

Цитата(doom13 @ Jun 28 2017, 10:39) *
Да, ну только с той клоковой ножки, которая подключена к источнику сигнала тактирования sm.gif

Первые признаки жизни есть.Я решил сделать вот так:
Код
always @ (posedge CLK)
        begin
            COUNT <= COUNT + 1;
        end

Только вот странно , из-за не подключенных переменных у меня получилась такая прямая в SignalTap 2?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 28 2017, 11:34
Сообщение #26


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Причина проблемы ясна: клок брался из космоса, а в космос его никто не положил. Попытка делать синхронную схему без самого святого - без клока.


--------------------
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 28 2017, 17:02
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(doom13 @ Jun 28 2017, 11:22) *
Внимание, объясняю ещё раз:
Если пин FPGA соответствующий сигналу ADC_CLK на схеме Вашей платы подключен к ноге SCK (8-ая нога) микросхемы AD7687, то ничего Вы от неё тактировать не можете, она сама (SCK) хочет чтоб её тактировали.


Для тактирования АЦП можно её использовать, но для этого она выходом должна быть, и тактовый сигнал к ней нужно подключить, и его же для тактирования SignalTap II можно использовать.


Можно обратиться за помощью?А почему , если SDO отвечает за передачу данных,его нельзя поставить на выход,относительно АЦП?Вот , что у меня получилось:
Клоки поступают на ADC_CLK потом все это идет на ADC_CNV, потом же должно идти на ADC_SDO , или я не совсем понял?

Сообщение отредактировал Ensider - Jun 28 2017, 17:05
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 28 2017, 18:11
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Что-то Вы совсем все плохо поняли. SDO - выходной пин АЦП, по тактовому сигналу ADC_CLK (SCLK) АЦП последовательно выдает на него биты текущего оцифрованного значения напряжения, Ваша задача принять и получить соответствующее значение. В теме про SPI-мастер про это говорили, Вам необходимо сформировать сигналы в соответствии с докой на АЦП (CNV, SCLK и т.д), там все разрисовано, что должно получиться.
1) CNV - старт преобразования напряжения в цифру, максимальная частота вроде 1МГц
2) По ADC_CLK, через какой-то интервал времени после CNV АЦП выдает валидные данные на линию SDO, а Вы их должны принять.
3) Далее обработка на ваше усмотрение.
Go to the top of the page
 
+Quote Post
Ensider
сообщение Jun 29 2017, 09:05
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 8-03-17
Из: Россия,Москва
Пользователь №: 95 746



Цитата(doom13 @ Jun 28 2017, 18:11) *
Что-то Вы совсем все плохо поняли. SDO - выходной пин АЦП, по тактовому сигналу ADC_CLK (SCLK) АЦП последовательно выдает на него биты текущего оцифрованного значения напряжения, Ваша задача принять и получить соответствующее значение. В теме про SPI-мастер про это говорили, Вам необходимо сформировать сигналы в соответствии с докой на АЦП (CNV, SCLK и т.д), там все разрисовано, что должно получиться.
1) CNV - старт преобразования напряжения в цифру, максимальная частота вроде 1МГц
2) По ADC_CLK, через какой-то интервал времени после CNV АЦП выдает валидные данные на линию SDO, а Вы их должны принять.
3) Далее обработка на ваше усмотрение.


Сделал через PLL клоки.У меня правильно получилось?

Код
localparam int unsigned DATA_TEMP            = 97;         //Сумма разрядносте 6 АЦП

module NOKIA (input  ADC_SDO ,INCLK0,INCLK1,

output ADC_CNV , CLK_10MHz , CLK_80MHz , CLK_20MHz , CLK_100MHz , CLK_40MHz );

reg DATA_TEMP [96:0];                                  // Разрядность даннных АЦП

reg CNV ;

reg serial_data;

reg TEMP [96:0];

reg COUNT;

PLL PLL_CLK(
        .inclk0(INCLK0),
       .inclk1(INCLK1),
        .c0(CLK_10MHz),
        .c1(CLK_80MHz),
        .c2(CLK_20MHz),
        .c3(CLK_100MHz),
        .c4(CLK_40MHz)
        );


После этого надо работать с CNV?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 29 2017, 10:11
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 326
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Диодом моргать научились? Если нет, забейте на АЦП и моргайте светодиодом.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 12th December 2017 - 12:24
Рейтинг@Mail.ru


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