Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ср апр 22, 2015 08:00:42
Добрый день!
Есть такая проблема компилятор ругается
Error (10200): Verilog HDL Conditional Statement error (255): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
на следующий кусок кода
- Код:
//.........
reg lo_1;
reg lo_2;
reg lo_3;
reg en_spi_clk;
reg valb1;
//.......
always @ (posedge en_spi_clk or posedge valb1)
begin
lo_1 = en_spi_clk;
lo_2 = valb1;
lo_3 = lo_1&lo_2;
if (lo_3)
valb2 <= 1'b1;
else
if (valb1)
valb2 <= 1'b0;
end
//.....
Не могу понять! Что ни как нельзя проверить en_spi_clk & valb1 ???
Если например сработал сигнал valb1 и en_spi_clk == 1 тогда делать то...
иначе если сработал сигнал valb1 и en_spi_clk == 0 тогда делать следующее...?
Последний раз редактировалось
pirotehnick Ср апр 22, 2015 12:50:10, всего редактировалось 2 раз(а).
Ср апр 22, 2015 09:35:26
Ошибку то скиньте тоже. И то, что оно ругается именно на эту часть кода не означает, что ошибка именно в ней, возможна в разных частях кода пытаетесь взаимозависимые действия произвести или что то в этом роде.
Ср апр 22, 2015 10:34:18
Ага, добавил описание ошибки...
Ср апр 22, 2015 12:07:40
Это весь always или ниже еще что то есть ? Попробуйте исключить оттуда if где используются en_spi_clk и valb1.
Ср апр 22, 2015 12:49:48
Да, это весь блок always...
Чт апр 23, 2015 07:27:10
Morroc писал(а):Попробуйте исключить оттуда if где используются en_spi_clk и valb1.
А как мне ещё проверить условие (en_spi_clk & valb1) внутри этого блока ?
Вс апр 26, 2015 17:30:35
Блин, что не тема, то обязательно грабли асинхронщины причем одни и теже. Мульён раз писали в alwayse не надо прописывать более одного сигнала. Правильнее сделать так. наверняка есть тактовая частота, более высокая нежели en_spi_clk или valbl. Назначьте ее (тактовую) в качестве чувствительного сигнала (posedge clk), а уже внутри алвайса проводите проверку на то что en_spi_clk=1 или valdl=1. Если нужно отработать только фронты - назначайте переменные с разрядностью больше одного бита, заводите в эти переменные сигналы и отлавливайте условия var="01" или var="10"(если разрядов два).
Вс апр 26, 2015 20:42:26
Можно какой нибудь кусочек кода с последним вариантом ?
Пн апр 27, 2015 20:51:34
Как делаю у себя (vhdl, перевести на верилог в качестве домашнего задания)
- Код:
entity primer is
port(
clk,sclk,ena, dti:in std_logic;
dout:out std_logic_vector(7 downto 0)
);
architecture rg of primer is
begin
process(clk)
variable dt_v:std_logic_vector(7 downto 0);--заполняемая переменная
variable sclk_v:std_logic_vector(1 downto 0);-- переменная для выделения фронта сигнала
begin
if(rising_edge(clk))then
sclk_v:=sclk_v(0)&sclk;--сдвиг сигнала
if(ena='1')then--если разрешено
if(sclk_v="10")then--если задний фронт
dt_v:=dt_v(6 downto 0)&dti;--заполняем переменную
end if;
end if;
dout<=dt_v;--вывод данных
end if;
end process;
end rg;
Некоторое уточнение, тактовый сигнал clk должен иметь в несколько раз (минимум 2, но лучше больше) большую частоту, чем сигналы ena и sclk
Пн апр 27, 2015 23:08:21
Ага... Что то типа ?
- Код:
module mymod ( gclk, sclk, dti, dout, ena );
input gclk;
input sclk;
input dti;
output [7:0] dout;
input ena;
reg [1:0] sclk_v;
reg [7:0] dt_v;
always @(posedge gclk)
begin
sclk_v = {sclk_v[0], sclk};
if (ena == 1)
if (sclk_v == "10")
dt_v = {dt_v[6:0], dti};
end
assign dout = dt_v;
endmodule
Вт апр 28, 2015 05:56:42
Похоже! Ну теперь дело за малым - проект в modelsim и проверить его работу
Сб июн 06, 2015 14:14:59
Привет всем. Котаны, подскажите, а с Альтеры сейчас можно ли скачать Квартус 2 без регистрации??? Или где его можно скачать адекватно? А то я там регистрировать не могу, бесит меня, все время по новой форму заполнять.
Нужно для Циклона 4.
Сб июн 06, 2015 14:30:14
СКАЗОЧНИК писал(а):А то я там регистрировать не могу
В смысле?
Один раз зарегался и пользуйся аккаунтом.
Сб июн 06, 2015 14:31:34
Да блин... полей много, ошибаюсь то там, то там... Да еще и ник-нэймы которые я выбираю уже все заняты и снова приходится с нуля заполнять...
четыре раза попробовал - псих взял...
Прошу прощения за глупые вопросы..
Все таки скачал я Квартус2 самой последней версии... Установил его (ну и объемчик...
). Теперь понял, что есть достаточно заметные различия с той версией, что описана на сайте Марсоход.орг.
Вопрос пока такой:
"Этот Квартус 2 версии 15.0 работает под виндой7 64 бита???" Или все таки переустанавливать надо систему на 32 разряда??
Вс июн 07, 2015 14:59:12
Но поскольку следующие версии Quartus II (начиная с 14.0) будут поддерживать только 64 разрядную ОС
Все, нашел. Вопрос исчерпал сам себя.
Вс июн 07, 2015 19:03:22
СКАЗОЧНИК писал(а):Все, нашел. Вопрос исчерпал сам себя.
Ты только сначала определись, с какими сериями будешь работать, а то они повыкидывали кучу из семейства.
И ещё Альтеру Интел покупает, и Латтисе тоже хочет продаться
глядишь, скоро процы с плисятиной будут ))
Вс июн 07, 2015 19:12:17
Так мне как бы... рано еще определяться... Я в них вообще не бум-бум... Купил себе отладочную плату с Циклоном 4, думаю забросить ее до осени или зимы, пока дальше ковыряться с АВР. Однако, бывает любопытство зашкаливает, поэтому и изучаю по чуть-чуть что-то новое (для кого-то старое).
Сб июл 18, 2015 10:18:45
СКАЗОЧНИК, а что за отладка? DE0 NANO?
Сб июл 18, 2015 20:03:07
Не совсем понимаю ваш вопрос... Что такое "отладка ДЕО НАНО"?
Сб июл 18, 2015 21:17:10
Раз не поняли - значит
не она
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.