Member 12891617 Ответов: 0

Как добавить задержки между состояниями в код VHDL..?


Я создаю код для управления светофором. Я разработал код, как показано ниже. Мне нужно добавить задержку в 10 секунд между Штатами, но у меня нет никакой идеи делать это. Я уже определил время " T " как стандартный логический вектор, но это не может быть использовано для добавления времени. Я собираюсь реализовать это в Xilinx Nanoboard 3000 с тактовой частотой 20 МГц. Могу ли я использовать тактовую частоту для генерации задержек?..? Какие переменные я должен включить в код вместо " T " и куда их поместить?

Что я уже пробовал:

сущность FSM_for_Traffic_Lights-это
порт (сброс, CLK : в std_logic;
T : в целочисленном диапазоне от 4 до 0;
LG, LY, LR : out std_logic );
конечная сущность FSM_for_Traffic_Lights ;

Архитектурное поведение FSM_for_Traffic_Lights таково
Тип statetype is (s_r, s_ry, s_g, s_y);
Сигнал CurState, NxtState: statetype:= s_r;

NSL: process (CurState, T)
начать
случай CurState таков
когда s_r =>
если (T = 1), то
NxtState <= s_ry;
конец, если;
когда s_ry =>
если (T = 2), то
NxtState <= s_g;
конец, если;
когда s_g =>
если (T = 3), то
NxtState <= s_y;
конец, если;
когда s_y =>
если ( T = 4), то
NxtState <= s_r;
конец, если;
в случае окончания;
конечный процесс;

SM: процесс (CLK, сброс)
начать
если Reset= '1', то
CurState <= s_r;
тогда elsif rising_edge (CLK)
CurState <= NxtState;
конец, если;
конечный процесс;

OL: process (CurState)
начать
если CurState = s_r, то
LG <= '0’; LY <=' 0’; LR <= ' 1’;
тогда elsif CurState = s_yr
LG <= '0’; LY <=' 1’; LR <= ' 1’;
elsif CurState = s_g тогда
LG <= '1’; LY <=' 0’; LR <= ' 0’;
elsif CurState = s_y тогда
LG <= '0’; LY <=' 1’; LR <= ' 0’;
конец, если;
конечный процесс;

Richard MacCutchan

Вам нужно проверить документацию на устройство.

0 Ответов