МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Вопросы по языку Verilog

Re: Вопросы по языку Verilog 7 года 9 мес. назад #634

Доброго времени суток!
Пытаюсь собрать небольшой цифровой автомат, генерирующий по кругу числа (0-4-3-7-6-5-2-1).Схема состоит из 3х триггеров и комбинационной схемы к каждому из них.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


После прошивки перекидывается только старший триггер. Что я не так делаю?)

З.Ы. Схема была промоделирована в приложении Micro-Cap где показала свою работоспособность.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #635

  • nckm
  • nckm аватар
  • Не в сети
  • Администрация форума
  • Администрация форума
  • Сообщений: 101
  • Спасибо получено: 29
просимулировал Ваш код в iverilog - не работает. только один бит и переключается.

Вы уверены, что логические функции для d правильно описаны?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #636

Да КС управления триггерами синтезирована правильно, функции переписал правильно(все перепроверил).

вот результат симулирования схемы построенной на логических элементах.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #637

  • nckm
  • nckm аватар
  • Не в сети
  • Администрация форума
  • Администрация форума
  • Сообщений: 101
  • Спасибо получено: 29
может вам написать более человеко-понятный код и пусть компилятор сам оптимизирует логическую функцию?
Типа как-то так:
assign d[1] = (x==4) | (x==3) | (x==7) | (x==5)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #638

Не совсем понимаю как это реализовано.Поразрядно выбираем состояния автомата в которых есть единица во втором разряде или просто подряд пишем все состояния автомата? Для чего операция равенства?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #639

  • nckm
  • nckm аватар
  • Не в сети
  • Администрация форума
  • Администрация форума
  • Сообщений: 101
  • Спасибо получено: 29

Techno Viking пишет: Не совсем понимаю как это реализовано.Поразрядно выбираем состояния автомата в которых есть единица во втором разряде или просто подряд пишем все состояния автомата? Для чего операция равенства?

но это в принципе то же самое, что и у вас было написано (только у вас там трудно разобраться что к чему видимо Вы пытались написать оптимальную логическую функцию?). Вы описываете при каких условиях нужный бит принимает нужные значения.
И в моем предложении так же.
ваша последовательность 0-4-3-7-6-5-2-1
В двоичном виде это
000
100
011
111
110
101
010
001
Тогда скажем единица во втором бите d[1] будет если предыдущее значение x равно 4, 3,7,5
Точно так же можно описать для всех бит d[2:0]

module auto (clock, reset, x);
wire [2:0]d;
input wire clock;
input wire reset;
output reg [2:0]x;

always @ (posedge reset or posedge clock)
begin
if (reset)
x <= 3'b000;
else
x <= d;
end

assign d[0]=(x==4)|(x==3)|(x==6)|(x==2);
assign d[1]=(x==4)|(x==3)|(x==7)|(x==5);
assign d[2]=(x==0)|(x==3)|(x==7)|(x==6);

endmodule

Только что попробовал - так в симуляторе работает.
Спасибо сказали: Techno Viking

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 7 года 9 мес. назад #644

вопрос снят

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Techno Viking.

Re: Вопросы по языку Verilog 7 года 5 мес. назад #971

Дабы не плодить тем задам вопрос здесь.
Я начинающий, поэтому прошу строго не судить. Verilog только начал изучать. Собственно вопрос: Как в Verilog организовать модуль с управляющими импульсами определёнными по времени?
Например: есть некий тактовый сигнал поступающий на вход In_F, с него делителями получаются сигналы скажем с периодами 0,1с, 1,25мс в противофазе друг другу, разделённые промежутками, например 100мкс, для чёткого переключения логики.
Спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
Последнее редактирование: от Серый Волк.

Re: Вопросы по языку Verilog 7 года 5 мес. назад #972

Не очень понятно, что вы хотите реализовать. У вас есть тактовая частота, а нужно реализовать
какую-то последовательность сигналов?
А верилог это всего лишь "средство описания аппаратуры", пишите какие нибудь фрагменты кода
и смотрите что получается в РТЛ-вьювере или как работает в симуляторе.

UPD.
Вы-бы диаграмки нарисовали, было-бы понятнее

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от umarsohod.

Re: Вопросы по языку Verilog 7 года 5 мес. назад #973

Извиняюсь, плохо объяснил ситуацию.
0. Есть некий модуль описанный на Verilog'е имеющий 1 вход (тактовый) и 2 выхода (qE и qL).
1. Есть тактовый сигнал поступающий на вход модуля (4МГц, может быть другим - зависти от кварца который удастся найти).
2. Есть счётчик со входом E - разрешение счёта.
3. Есть регистр со входом L - разрешение загрузки.
Нужно описать модуль таким образом, чтобы сначала выдавался импульс на счётчик с периодом в 0,1 с (qE), затем импульс 1мс (qL). Затем спустя 2мс - повтор по циклу.
Как организовать цикл знаю. А вот как организовать задержки между состояниями выходов - полный облом. :(
Поскольку в литературе описание delay - для не синтезируемых модулей, тест-бенчей. А как для реальной конструкции реализовать?
Понимаю что мой вопрос на уровне заварочного чайника... :blush: Если поясните огромное спасибо!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
Время создания страницы: 0.204 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter