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

скачал и сейчас открыт у меня... может просто еще не нашел такое? :rolleyes:

просто с англицким не сильно, поэтому медленно.

 

Раздел HDL Coding Techniques

counters

А не получается у Вас, потому что счетчика с двумя входами, работающими по фронту не бывает.

есть приоритетные условия if elsif else, и все это по фронту клока.

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


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

Немного изучил и почитал, экспериментирую дальше...

Возник вопрос как на VHDL сделать маневр как в программировании, а именно: "погасить" ненужные биты в переменной чтобы сравнить ее с константой?

вот кусочек примера как я думал сделать, но не тут то было... :rolleyes:

 

architecture pwcex_arch of pwcex is
    signal    count: std_logic_vector(7 downto 0);    --счетчик импульсов
    signal    mux: std_logic_vector(2 downto 0);        --код для выбора бита
begin

process (count)
begin
    if count = "00000000" then
        count <= "00000001";
    elsif (count and 1) then        <--------- вот это!
        mux <= "111";
    elsif (count and 2) then        <--------- вот это!
        mux <= "110";
    end if; 
end process;

end pwcex_arch;

 

ошибку выдает ессно что не может быть булевым объектом count.

 

есть ли в синтаксисе нечто вроде "неопределенного" значения

например так

 

process (count)
begin
    if count = "00000000" then
        count <= "00000001";
    elsif (count = "xxxxxxx1") then        <--------- вот это!
        mux <= "111";
    elsif (count = "xxxxxx10") then        <--------- вот это!
        mux <= "110";
    end if; 
end process;

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

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


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

кхм, а ничего что :

1. Это VHDL а не Си, хоть в одном учебнике по VHDL вы видели "elsif (count and 2) then" такую запись? значений по умолчанию в VHDL нет, читайте стандарт!!!

2. Это параноидальный VHDL операторы rhs в and должны быть одного типа, приведений типов по умолчанию в этом языке нет. Читайте стандарт!!!

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


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

есть ли в синтаксисе нечто вроде "неопределенного" значения

например так

process (count)
begin
    if count = "00000000" then
        count <= "00000001";
    elsif (count(0) = '1') then        <--------- вот это!
        mux <= "111";
    elsif (count(1 downto 0) = 2) then        <--------- вот это!
        mux <= "110";
    end if; 
end process;

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


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

process (count)
begin
    if count = "00000000" then
        count <= "00000001";
    elsif (count(0) = '1') then        <--------- вот это!
        mux <= "111";
    elsif (count(1 downto 0) = 2) then        <--------- вот это!
        mux <= "110";
    end if; 
end process;

 

спасибо, я немного по другому решил:

 

    if (count(0) = '1') then
            mux <= "111";
        elsif (count(1) = '1') then
            mux <= "110";

 

и т.д.

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


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

спасибо, я немного по другому решил:

 

    if (count(0) = '1') then
            mux <= "111";
        elsif (count(1) = '1') then
            mux <= "110";

 

и т.д.

 

Для кода "3" всё равно к моему варианту придёте :rolleyes:

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


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

Для кода "3" всё равно к моему варианту придёте :rolleyes:

 

гы, почему?

 

    if (count(0) = '1') then
            mux <= "111";
        elsif (count(1) = '1') then
            mux <= "110";
        elsif (count(2) = '1') then
            mux <= "101";
        elsif (count(3) = '1') then
            mux <= "100";
        elsif (count(4) = '1') then
            mux <= "011";
        elsif (count(5) = '1') then
            mux <= "010";
        elsif (count(6) = '1') then
            mux <= "001";
        elsif (count(7) = '1') then
            mux <= "000";
        end if;

 

вроде бы все окей работает! может чего не доглядел???

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


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

гы, почему?

вроде бы все окей работает! может чего не доглядел???

 

Дык это Вы по одному биту проверяете,а если нужно будет сравнить группу бит счётчика с константой?Например когда код в младших двух битах равен 3 нужно выполнить какое-то действие.Я это имел ввиду.

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


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

Дык это Вы по одному биту проверяете,а если нужно будет сравнить группу бит счётчика с константой?Например когда код в младших двух битах равен 3 нужно выполнить какое-то действие.Я это имел ввиду.

 

 

аа, понял. не тут как раз цель выяснить чему равен номер бита с 1, когда все последующие равны 0 правее его...

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


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

Подскажите пожалуйста где почитать про конфигурирование внутреннего озу циклонов, как это делать на практике или как это описывается на VHDL (если конфигурация описывается)...Что то по поиску и по гуглу ну ни чего не нашел... ;)

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

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


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

Подскажите пожалуйста где почитать про конфигурирование внутреннего озу циклонов, как это делать на практике или как это описывается на VHDL (если конфигурация описывается)...Что то по поиску и по гуглу ну ни чего не нашел... ;)

 

Искать ответ по альтере надо на www.altera.com

 

Путь 1 : Quatus-> Tools- > MegaWizard -> Create -> Memory Compiler -> ROM

Путь 2 : Quartus -> File -> VHDL -> Insert Template -> VHDL -> Full Designs -> RAMs and ROMs

 

Нужное где то рядом, читайте мануалы на софт которым пользуетесь

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


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

Искать ответ по альтере надо на www.altera.com

 

Путь 1 : Quatus-> Tools- > MegaWizard -> Create -> Memory Compiler -> ROM

Путь 2 : Quartus -> File -> VHDL -> Insert Template -> VHDL -> Full Designs -> RAMs and ROMs

 

Нужное где то рядом, читайте мануалы на софт которым пользуетесь

 

Спасибо.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...