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

Hello world и Vivado Clocking Wizard

Доброго времени суток.

Решил усложнить "hello world" и умножить входящую частоту 12МГц с отладочной платы до 24МГц с помощью mmcm.

Вопрос: какие нужно сделать манипуляции, что бы использовать эту частоту c clk_out1_0 в конструкции rising_edge.

 

Сейчас это выглядит так:

    process(CLK12MHZ)
    begin
        if rising_edge(CLK12MHZ) then
            count <= count + 1;
        end if;
    end process;

 

Цель:

    process(CLK24MHZ)
    begin
        if rising_edge(CLK24MHZ) then
            count <= count + 1;
        end if;
    end process;

 

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
Доброго времени суток.
Интересно, когда народ перестанет использовать эту несуразную фразу? Простое "Здравствуйте" содержит меньше букв.

 

Решил усложнить "hello world" и умножить входящую частоту 12МГц с отладочной платы до 24МГц с помощью mmcm.

Вопрос: какие нужно сделать манипуляции, что бы использовать эту частоту c clk_out1_0 в конструкции rising_edge.

 

Сейчас это выглядит так:

    process(CLK12MHZ)
     begin
         if rising_edge(CLK12MHZ) then
             count <= count + 1;
         end if;
     end process;

 

Цель:

    process(CLK24MHZ)
     begin
         if rising_edge(CLK24MHZ) then
             count <= count + 1;
         end if;
     end process;

 

И в чём у вас проблемы?

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


Ссылка на сообщение
Поделиться на другие сайты
Интересно, когда народ перестанет использовать эту несуразную фразу? Простое "Здравствуйте" содержит меньше букв.

 

 

 

И в чём у вас проблемы?

Хай! VHDL не дает читать из out.

Это с одной стороны логично, с другой стороны я пока не понимаю как "взять" эту частоту для использования в process/rising_edge.

Спс.

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


Ссылка на сообщение
Поделиться на другие сайты
Хай! VHDL не дает читать из out.

Это с одной стороны логично, с другой стороны я пока не понимаю как "взять" эту частоту для использования в process/rising_edge.

Спс.

Чтобы "читать из out", объявляете еще один сигнал. Выдаете его на out и его же можно спокойно использовать внутри entity.

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


Ссылка на сообщение
Поделиться на другие сайты
Чтобы "читать из out", объявляете еще один сигнал. Выдаете его на out и его же можно спокойно использовать внутри entity.

Или используйте стандарт VHDL2008 ;)

P.S. Правда поддержка этого какая-то кривая.

То САПР ругается, то нет....

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


Ссылка на сообщение
Поделиться на другие сайты
Чтобы "читать из out", объявляете еще один сигнал. Выдаете его на out и его же можно спокойно использовать внутри entity.

Спасибо. Не подскажете как это будет выглядеть в контексте этого кода:

 

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity blinky is
    port(
        CLK12MHZ : in std_logic;
        CLK24MHZ : buffer std_logic;
        led      : out std_logic_vector(3 downto 0)
    );
end entity blinky;

architecture behavioral of blinky is
    signal count : std_logic_vector(27 downto 0);

    component design_1_wrapper is
        port (
            sys_clock : in STD_LOGIC;
            clk_out1_0 : out STD_LOGIC
        );
    end component design_1_wrapper;

begin

    newfreq: design_1_wrapper
        port map (
            clk_out1_0 => CLK24MHZ,
            sys_clock => CLK12MHZ
        );

    process(CLK24MHZ)
    begin
        if rising_edge(CLK24MHZ) then
            count <= count + 1;
        end if;
    end process;

    led(0) <= count(24);
    led(1) <= count(25);
    led(2) <= count(26);
    led(3) <= count(27);

end architecture behavioral;

В данном случае Vivado ругается, что CLK24MHZ не назначен пин в constraints.

 

Или используйте стандарт VHDL2008 ;)

P.S. Правда поддержка этого какая-то кривая.

То САПР ругается, то нет....

Угу, код во врапере начинает подсвечивается красным в рандомных местах, пока решил не связываться с VHDL2008.

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


Ссылка на сообщение
Поделиться на другие сайты
Спасибо. Не подскажете как это будет выглядеть в контексте этого кода:

Разобрался. На 2 уровня ниже, в файле design_1.vhd есть нужный сигнал:

 

signal clk_wiz_0_clk_out1 : STD_LOGIC;
clk_out1_0 <= clk_wiz_0_clk_out1;

 

Всем спасибо. Надеюсь эта тема пригодится слоупокам типо меня.

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


Ссылка на сообщение
Поделиться на другие сайты
Всем спасибо. Надеюсь эта тема пригодится слоупокам типо меня.

Самое главное - это сделать вывод о том, что проектирование на FPGA начинается не с написания HDL - а с карандаша и бумаги, где все блок схемы, структура устройства описываются и продумываются заранее.

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация