-
Techno Viking
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
-
-
|
Доброго времени суток!
Пытаюсь собрать небольшой цифровой автомат, генерирующий по кругу числа (0-4-3-7-6-5-2-1).Схема состоит из 3х триггеров и комбинационной схемы к каждому из них.
После прошивки перекидывается только старший триггер. Что я не так делаю?)
З.Ы. Схема была промоделирована в приложении Micro-Cap где показала свою работоспособность.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nckm
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 112
-
Спасибо получено: 34
-
-
-
-
-
|
просимулировал Ваш код в iverilog - не работает. только один бит и переключается.
Вы уверены, что логические функции для d правильно описаны?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Techno Viking
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
-
-
|
Да КС управления триггерами синтезирована правильно, функции переписал правильно(все перепроверил).
вот результат симулирования схемы построенной на логических элементах.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nckm
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 112
-
Спасибо получено: 34
-
-
-
-
-
|
может вам написать более человеко-понятный код и пусть компилятор сам оптимизирует логическую функцию?
Типа как-то так:
assign d[1] = (x==4) | (x==3) | (x==7) | (x==5)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Techno Viking
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
-
-
|
Не совсем понимаю как это реализовано.Поразрядно выбираем состояния автомата в которых есть единица во втором разряде или просто подряд пишем все состояния автомата? Для чего операция равенства?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nckm
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 112
-
Спасибо получено: 34
-
-
-
-
-
|
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
Только что попробовал - так в симуляторе работает.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Дабы не плодить тем задам вопрос здесь.
Я начинающий, поэтому прошу строго не судить. Verilog только начал изучать. Собственно вопрос: Как в Verilog организовать модуль с управляющими импульсами определёнными по времени?
Например: есть некий тактовый сигнал поступающий на вход In_F, с него делителями получаются сигналы скажем с периодами 0,1с, 1,25мс в противофазе друг другу, разделённые промежутками, например 100мкс, для чёткого переключения логики.
Спасибо.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Не очень понятно, что вы хотите реализовать. У вас есть тактовая частота, а нужно реализовать
какую-то последовательность сигналов?
А верилог это всего лишь "средство описания аппаратуры", пишите какие нибудь фрагменты кода
и смотрите что получается в РТЛ-вьювере или как работает в симуляторе.
UPD.
Вы-бы диаграмки нарисовали, было-бы понятнее
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Извиняюсь, плохо объяснил ситуацию.
0. Есть некий модуль описанный на Verilog'е имеющий 1 вход (тактовый) и 2 выхода (qE и qL).
1. Есть тактовый сигнал поступающий на вход модуля (4МГц, может быть другим - зависти от кварца который удастся найти).
2. Есть счётчик со входом E - разрешение счёта.
3. Есть регистр со входом L - разрешение загрузки.
Нужно описать модуль таким образом, чтобы сначала выдавался импульс на счётчик с периодом в 0,1 с (qE), затем импульс 1мс (qL). Затем спустя 2мс - повтор по циклу.
Как организовать цикл знаю. А вот как организовать задержки между состояниями выходов - полный облом. :(
Поскольку в литературе описание delay - для не синтезируемых модулей, тест-бенчей. А как для реальной конструкции реализовать?
Понимаю что мой вопрос на уровне заварочного чайника... :blush: Если поясните огромное спасибо!
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.156 секунд