Перейти к содержанию

Частота штатного генератора

Плата MAX II EPM240 CPLD Minimal Development Board.
Подключаю стандартный генератор ALTUFM_OSC osc( .oscena(1'b1), .osc(clk))
Померил частоту генератора счетчиком, счетчик досчитывает до 6 000 000 и обнуляется, переключая светодиод. Светодиод горит 1 секунду.
Получается, что частота штатного генератора 6 MHz (вместо заявленных 50MHz)?
Изменено пользователем demsp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Разве там 50МГц? Вроде на порядок ниже должна быть частота 5МГц и 3,3МГц (на выбор если не ошибаюсь)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ALTUFM_OSC это встроенный RC генератор. на несколько МГц.
тот что на плате - 50МГц, подключен к gclk3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5МГц и 3,3МГц

действительно, об этом написано в даташите

 

тот что на плате - 50МГц, подключен к gclk3.

gclk3? Объясните, пожалуйста, что это (в даташите написано про 3 пина, но я не разобрался)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
gclk3? Объясните, пожалуйста, что это (в даташите написано про 3 пина, но я не разобрался)
Вот на этой схеме прямо написано, что 50МГц идёт на вывод 64. А, вообще, давайте проект: посмотрим, что Вы там делите и чем? )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
...посмотрим, что Вы там делите и чем? )

Скорее всего, ТС ожидал что встроенный генератор будет выполнять функцию, схожую с работой PLL\ALTCLKCTRL в циклонах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Досчитываю до 6 000 000. LED мигает примерно 1 раз в секунду.

module M ( output reg LED);
ALTUFM_OSC osc( .oscena(1'b1), .osc(clk));
   reg signal;
   reg [24:0] osc_counter;
   reg [24:0] const_data =25'b10110111000110110000000;
initial 
   begin
      signal = 1'b0;
     osc_counter = 25'b0;
   end 
always @(posedge clk)
   begin
      osc_counter = osc_counter+ 1'b1;
      if(osc_counter == const_data)
         begin
            signal = ~signal;
           osc_counter = 25'b0; 
        end
LED = signal;
end
endmodule

Изменено пользователем demsp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Досчитываю до 6 000 000. LED мигает примерно 1 раз в секунду.

module M ( output reg LED);
....
always @(posedge clk)
   begin
      osc_counter = osc_counter+ 1'b1;
      if(osc_counter == const_data)
         begin
            signal = ~signal;
           osc_counter = 25'b0; 
        end


endmodule

Применяйте неблокирующие назначения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Досчитываю до 6 000 000. LED мигает примерно 1 раз в секунду.

И что Вам не нравится? Вы используете внутренний осциллятор, настроенный на 5,56 МГц, считаете до 6 млн и получаете секунду, что примерно соответствует действительности.

Если Вам хочется что бы моргало в 8-9 раз чаще, то тактируйте (если есть) от внешнего генератора (из проекта убирайте осциллятор) или уменьшайте предельное число в желаемое количество раз (вместо 6 млн задавайте 750 тыс, к примеру).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, с генератором на 5.5Мгц более-менее понятно. А как подключить генератор на 50МГц?

В этой схеме показано, что генератор должен идти на вывод 64. Но на синей плате нет вывода 64.

Изменено пользователем demsp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

генератор на плате распаян и к выводу 64 уже подключен, при этом наружу на разъём не выведен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти