Добрый вечер всем, статья вышла не на ту тему, что предполагалось, но тоже полезная. Она касается языка программирования Verilog. В данной статье мы рассмотрим такие действия, как создания модуля написанного на Verilog (может быть уже есть такая статья на сайте, но повторение мать заикания), плюс подключение дополнительно модуля написанного нами ранее (я заранее написал отдельно, чтобы было что подключать)

Итак приступим. Создаем проект кажется уже 5 пошел. Сначала добавляем файл схематика(1), а потом файл верилога(2).
trigerv1

В схематике просто поставьте 1 вход и 2 выхода.
trigerv2

Далее возвращаемся к созданию верилога. вот мы его создали, появилось вот такое окно
trigerv3

Пишем наш код для Т-Триггера, который будет срабатывать по переднему фронту. Для справки у Т-Триггера есть только один вход и 2 выхода(но я 1 сделал выход) нажали кнопку на выходе триггера появилась «1», нажали еще раз кнопку на выходе триггера появился «0»

module Trg(T,Q); //указываем имя входа и выхода , которые будут в модуле
input wire T; // указываем вход
output reg Q; // указываем выход
 
initial Q = 0; // устанавливаем по умолчанию выход в "0"
always @(posedge T) // отслеживание Входа переход из "0" в "1" ПО ПЕРЕДНЕМУ ФРОНТУ
 
   begin
       Q = ~Q; // инверсия выхода, из предыдущего состояние в будующее
   end
 
endmodule // конец

После того как вы написали этот код (для каждой строки указанны описания, поправьте меня если где то я не точно выразился). Запускаем Processing — Analyse Current File. Quartus начнет все проверять, и скажет нам все готово. Дальше мы нажимаем правой кнопкой на файл верилога в навигаторе и выбираем Create symbol. Не забываем сохранять все действия.
trigerv5

Quartus также все проверит, и теперь мы в схематике заходим в Symbol в папке Project видим наш Верилоговский файл.
trigerv6

У меня несколько файлов, потому что я тестировал еще другие файлы. Теперь соединяем вход и выход, у нас остается еще один пустой выход, его пока не трогаем.
trigerv7

Если нам нужно подключить файл, который создали давным давно (либо скачан с какого либо сайта, к примеру модуль SPIslave, который мне лень самому печатать), то для его добавления в проект, заходим в Project и выбираем ADD/remove file in project
trigerv8

Вылазит окошко, в котором указываем путь к новому модулю (сохраняйте модули в папки, в которых нет кириллицы в пути до файла, также не нужно выбирать имя файла на кириллице)
trigerv9

Сначала находим файл, а потом нажимаем кнопку ADD. Все файл добавлен нажимаем кнопку ОК.
trigerv10

Для закрепления, сделаем создадим еще один триггер на верилоге, который будет срабатывать по заднему фронту сигнала. Добавляем его в схематик и подключаем оставшийся выход.
trigerv11

Что же мы видим в симуляторе.
trigerv12

На выходе Q1 у нас триггер срабатывает при нажатии на кнопку, а на выходе Q2 у нас триггер срабатывает при отпускании кнопки, кому какой вариант использования нравится, тот тем и пользуется,

Наверно всем интересно, какой код у 2 триггера?
trigerv13

Понравилась статья? Оставляйте вопросы, комментарии.

7 комментариев: ПЛИС. VERILOG. T-TRIGGER

  • ну вот и хорошо добрались до верилога….это поистине правильный подход к разработке цифр схем на плис…а вот созданные модули на верилоге хорошо объединять в редакторе схем…

  • Ждем продолжения!

  • Я бы сказал, что некоректно использовать несинтезируемые конструкции в описании схем.
    Конкретно у Вас используется initial. Если открыть Verilog LRM (Language Reference manual) можно найти там, что далеко не все конструкции языка являются синтезируемыми. Это означает, что данная конструкция не имеет представления в железе и либо будет проигнорирована синтезатором либо вызовет ошибку компиляции.

    В данном конкретном случае правильнее было бы использовать сигнал сброса — подали сброс — установили триггер в нужное Вам положение.

  • Хотел собрать калькулятор, на какую вычислительную мощь можно расчитывать? Можно ли создать калькулятор с вычислительной мощностью в $2^1000 000& ? И какое максимальное значение переменной можно задать в ПЛИС? И если объединить несколько ПЛИС то вырастит ли вычислительная мощь?

  • думаю не корректно задан вопрос, зависит от многих параметров. что касается объединения, то проще взять одну плисину с большим количеством ячеек.

  • Мне ответили на одном форуме что для расчетов 2 в степени 1000000 2^1000000 нужно соответственно 1000000 триггеров. Например, мой смартфон вычисляет не более 2^1024. Есть идея собрать калькулятор для теста больших чисел на простоту. Тест полимиалный по модулю. То есть, для вывода достаточно пару пинов, чтобы узнать есть остаток от деления или нет. Здесь главное количества триггеров внутри камня(как я понял). Но, если я разделил одну переменную a(int) на другую b(int) 9:4 то куда записывается остаток и как его вывести на пины МК(выводы)? Подскажите, пожалуйста

  • 1000 000 ячеек действительно будет хранить информацию о вашем числе. Ширпотреб сейчас 20000+ ячеек. Вывести на пины просто, привязываете регистр к ногам output reg, т.е. на выходе будет автоматом то что вычислили.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика