Jump to content

    

Делитель частоты clock-сигнала для клавиши

Вот пример make-кода клавиши, генерируемого клавиатурой PS2

jps2.png.e2f1639979288d9a3a25841034648207.png

 

Частота ALTUFM_OSC  (частота штатного генератора) 5.5 МГц (MAX II EPM240 CPLD Minimal Development Board).

Вот пример модуля, использующего штатный генератор

module inner_Clock ( 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
//досчитываем до 6 000 000 и обнуляем счетчик osc_counter
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; // LED мигает ~1 раз в сеунду.
end
endmodule

Здесь мы 5,5 МГц делим на 6 млн, получаем примерно 1 Гц.

Для того, чтобы "сгенерировать частоту" 12.88КГц необходимо чтобы const_data = ~ 427 (decimal) =  1 1010 1011 (binary).

Правильно?

Как  отсчитать 11 тактов?  

 

Edited by demsp

Share this post


Link to post
Share on other sites
On 6/1/2019 at 1:09 PM, demsp said:

Для того, чтобы "сгенерировать частоту" 12.88КГц необходимо чтобы const_data = ~ 427

у меня получилось 427,0186335595883

то есть из 5.5 сделать самому 12,88 сложновато будет за один прием.

Share this post


Link to post
Share on other sites

Тогда надо, наверное, внешний кварцевый генератор на 12800-12900 подключать?

Share this post


Link to post
Share on other sites

Приветствую!

5 hours ago, new123 said:

у меня получилось 427,0186335595883

то есть из 5.5 сделать самому 12,88 сложновато будет за один прием.

Не сложно -  суммируете константу K=2^N/427.018...  в регистр разрядностью N бит, старший бит которого и будет переключиться с нужной вам частотой. Выбором N можете получить почти любую точность деления.  

Удачи! Rob.

Share this post


Link to post
Share on other sites
В 01.06.2019 в 13:09, demsp сказал:

Частота ALTUFM_OSC  (частота штатного генератора) 5.5 МГц (MAX II EPM240 CPLD

Обратите внимание на то, что по документации на ПЛИС частота ALTUFM_OSC не имеет точного значения и лежит в пределах от 3,3 до 5,5 МГц

Share this post


Link to post
Share on other sites
3 hours ago, RobFPGA said:

Не сложно -  суммируете константу K=2^N/427.018...  в регистр разрядностью N бит, старший бит которого и будет переключиться с нужной вам частотой. Выбором N можете получить почти любую точность деления.  

сохранил, спасибо

Share this post


Link to post
Share on other sites

Зачем такие сложности? Частота клока для PS/2 Должна быть в пределах 10-16.7 кГц. 5.5M/2^9 ~ 10742. 9 разрядов счетчик решает проблему.

Share this post


Link to post
Share on other sites
On 6/2/2019 at 7:07 PM, AnatolySh said:

Задача-то какая? 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now