Циклы в Verilog
В предыдущей части мы на простом примере познакомились с принципом модульной конструкции в Verilog и создали RS-триггеры с помощью концепции модуля-экземпляра.
Но что нам делать, если потребуется создать много (например, 50) D-триггеров, которые должны быть соединены между собой в соответствии со схемой делителя частоты? Мы уже знаем, как сделать общий модуль для D-триггера, поэтому нужно сделать 50 экземпляров этого модуля и соединить входы тактового сигнала каждого модуля с выходом предыдущего, также подвести сигнал Сброс (Reset) ко всем модулям и вывод D через инверсию соединить с выходом Q. В общем, нужно сделать всё то, что показано на рисунке:
Вручную писать столько экземпляров (50 штук по 6 строк в каждом – 300 строк!) – не практично. Поэтому в Verilog для генерации большого числа одинаковых модулей мы можем воспользоваться циклом контроллера счетчика, который является чем-то вроде цикла for. Но, чтобы этот цикл работал правильно, мы должны тщательно продумать структуру делителя частоты.