Z
ZeleC
Guest
І. намагається зробити генератор імпульсів, щоб бути реалізовані в CPLD
Ідея полягає в отриманні вихідного імпульсу 280, отриманих нами від 25 кГц годинник
імпульсу починається фронту акуратний
Я написав це, і це працювало як expecteted коли імітується в ModelSim
особа є timer280us
Порт (Clk25k: у std_logic;
Сінхровивод: у std_logic;
Висновок: з std_logic);
timer280us кінця;
Поведінкові в архітектурі є timer280us
Сигнал лічильника: std_logic_vector (2 DOWNTO 0): = "000";
Сигнал Timer_on: std_logic: = '0 ';
Сигнал output_temp: std_logic: = '1 ';
починати
фото: процес (Clk25k, Тріг)
починати
якщо акуратний = '1 ', то
- Якщо Timer_On = '1 ', то
Лічильник <= "000";
Timer_on <= '1 ';
- END IF;
ELSIF Clk25k'event і (Clk25k = '1 '), то
якщо Timer_On = '1 ', то
Лічильник <= Counter 1;
Output_temp <= '0 ';
Якщо лічильник = "110", а потім
Timer_On <= '0 ';
Output_temp <= '1 ';
End If;
End If;
End If;
Наприкінці процесу;
- Скинути: процес (акуратний)
- Почати
- Якщо rising_edge (акуратний), то
- Counter <= "000";
- Timer_On <= '1 ';
- END IF;
- Кінець процесу;
виході <= output_temp;Поведінкові кінця;
Але проблема в тому, що, коли тригер імпульсу відбулося, і поки акуратний = '1 'лічильник не почнеться, то, що я хочу зробити, це почати негайно по фронту акуратний
Так як же я переписувати код, щоб зробити це.
Ідея полягає в отриманні вихідного імпульсу 280, отриманих нами від 25 кГц годинник
імпульсу починається фронту акуратний
Я написав це, і це працювало як expecteted коли імітується в ModelSim
особа є timer280us
Порт (Clk25k: у std_logic;
Сінхровивод: у std_logic;
Висновок: з std_logic);
timer280us кінця;
Поведінкові в архітектурі є timer280us
Сигнал лічильника: std_logic_vector (2 DOWNTO 0): = "000";
Сигнал Timer_on: std_logic: = '0 ';
Сигнал output_temp: std_logic: = '1 ';
починати
фото: процес (Clk25k, Тріг)
починати
якщо акуратний = '1 ', то
- Якщо Timer_On = '1 ', то
Лічильник <= "000";
Timer_on <= '1 ';
- END IF;
ELSIF Clk25k'event і (Clk25k = '1 '), то
якщо Timer_On = '1 ', то
Лічильник <= Counter 1;
Output_temp <= '0 ';
Якщо лічильник = "110", а потім
Timer_On <= '0 ';
Output_temp <= '1 ';
End If;
End If;
End If;
Наприкінці процесу;
- Скинути: процес (акуратний)
- Почати
- Якщо rising_edge (акуратний), то
- Counter <= "000";
- Timer_On <= '1 ';
- END IF;
- Кінець процесу;
виході <= output_temp;Поведінкові кінця;
Але проблема в тому, що, коли тригер імпульсу відбулося, і поки акуратний = '1 'лічильник не почнеться, то, що я хочу зробити, це почати негайно по фронту акуратний
Так як же я переписувати код, щоб зробити це.