picman 0 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба Ладно, спасибо и на этом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба скачал и сейчас открыт у меня... может просто еще не нашел такое? :rolleyes: просто с англицким не сильно, поэтому медленно. Раздел HDL Coding Techniques counters А не получается у Вас, потому что счетчика с двумя входами, работающими по фронту не бывает. есть приоритетные условия if elsif else, и все это по фронту клока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 (изменено) · Жалоба Немного изучил и почитал, экспериментирую дальше... Возник вопрос как на 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; Изменено 16 июня, 2009 пользователем yagger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба кхм, а ничего что : 1. Это VHDL а не Си, хоть в одном учебнике по VHDL вы видели "elsif (count and 2) then" такую запись? значений по умолчанию в VHDL нет, читайте стандарт!!! 2. Это параноидальный VHDL операторы rhs в and должны быть одного типа, приведений типов по умолчанию в этом языке нет. Читайте стандарт!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба :smile3046: спасибо, уже решил проблему. я пока с типами этими путаюсь ё маё... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба есть ли в синтаксисе нечто вроде "неопределенного" значения например так 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба 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"; и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба спасибо, я немного по другому решил: if (count(0) = '1') then mux <= "111"; elsif (count(1) = '1') then mux <= "110"; и т.д. Для кода "3" всё равно к моему варианту придёте :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Для кода "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; вроде бы все окей работает! может чего не доглядел??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба гы, почему? вроде бы все окей работает! может чего не доглядел??? Дык это Вы по одному биту проверяете,а если нужно будет сравнить группу бит счётчика с константой?Например когда код в младших двух битах равен 3 нужно выполнить какое-то действие.Я это имел ввиду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 · Жалоба Дык это Вы по одному биту проверяете,а если нужно будет сравнить группу бит счётчика с константой?Например когда код в младших двух битах равен 3 нужно выполнить какое-то действие.Я это имел ввиду. аа, понял. не тут как раз цель выяснить чему равен номер бита с 1, когда все последующие равны 0 правее его... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 16 июня, 2009 Опубликовано 16 июня, 2009 (изменено) · Жалоба Подскажите пожалуйста где почитать про конфигурирование внутреннего озу циклонов, как это делать на практике или как это описывается на VHDL (если конфигурация описывается)...Что то по поиску и по гуглу ну ни чего не нашел... ;) Изменено 16 июня, 2009 пользователем yagger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Подскажите пожалуйста где почитать про конфигурирование внутреннего озу циклонов, как это делать на практике или как это описывается на VHDL (если конфигурация описывается)...Что то по поиску и по гуглу ну ни чего не нашел... ;) Искать ответ по альтере надо на www.altera.com Путь 1 : Quatus-> Tools- > MegaWizard -> Create -> Memory Compiler -> ROM Путь 2 : Quartus -> File -> VHDL -> Insert Template -> VHDL -> Full Designs -> RAMs and ROMs Нужное где то рядом, читайте мануалы на софт которым пользуетесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
picman 0 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Искать ответ по альтере надо на www.altera.com Путь 1 : Quatus-> Tools- > MegaWizard -> Create -> Memory Compiler -> ROM Путь 2 : Quartus -> File -> VHDL -> Insert Template -> VHDL -> Full Designs -> RAMs and ROMs Нужное где то рядом, читайте мануалы на софт которым пользуетесь Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться