Jump to content
    

VHDL, что не так?

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

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

 

Раздел HDL Coding Techniques

counters

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

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

Share this post


Link to post
Share on other sites

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

Возник вопрос как на 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;

Edited by yagger

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

:smile3046: спасибо, уже решил проблему. я пока с типами этими путаюсь ё маё...

Share this post


Link to post
Share on other sites

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

например так

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;

Share this post


Link to post
Share on other sites

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";

 

и т.д.

Share this post


Link to post
Share on other sites

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

 

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

 

и т.д.

 

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

Share this post


Link to post
Share on other sites

Для кода "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;

 

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

Share this post


Link to post
Share on other sites

гы, почему?

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

 

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

Share this post


Link to post
Share on other sites

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

 

 

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

Share this post


Link to post
Share on other sites

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

Edited by yagger

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

 

Спасибо.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...