Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 1

Цель работы

Цель этой работы — получение минимального представления о языке SystemVerilog, среде проектирования Vivado и базовом процессе проектирования цифровых схем.

Предполагается, что:

  • среда Vivado установлена;
  • вы минимально знакомы с её интерфейсом и основными командами.

Задание

Необходимо спроектировать и описать на SystemVerilog простейшую логическую схему с:

  • двумя входами;
  • одним выходом.

Предметная постановка

К входам схемы подключены кнопки в дверях автомобиля:

  • когда дверь открыта, кнопка нажата;
  • состояние кнопки преобразуется в логический сигнал на входе схемы.

К выходу схемы подключена лампа освещения салона:

  • при логической единице на выходе лампа горит;
  • при логическом нуле — погашена.

Требование:
схема должна зажигать лампу, если открыта хотя бы одна дверь.


Важная тонкость

Способ подключения кнопок может быть разным:

  • при нажатии кнопка может выдавать логический 0 или логическую 1 — это зависит от схемы включения (active-low / active-high).

Откройте папку docs и ознакомьтесь с описанием устройства, на котором будет реализована схема (стр. 6).
Определите активный уровень сигнала кнопки и учтите это при проектировании.


Порядок выполнения

  1. Откройте файл проекта:

    vivado/door_lamp.xpr
    
  2. В левой панели Flow Navigator откройте Project Manager.

  3. В окне Sources найдите файл:

    door_lamp.sv
    
  4. Откройте его.
    В файле уже приведено описание интерфейса модуля — список входных и выходных сигналов.

  5. После описания интерфейса добавьте описание логики схемы.

    Перед написанием кода:

    • составьте для себя таблицу истинности зависимости lamp от door1 и door2;
    • убедитесь, что учли активный уровень кнопок.
  6. Описывая логику:

    • используйте только оператор assign;
    • не используйте always, always_comb, if, case (на этом этапе).

Анализ схемы

После описания логики:

  1. Перейдите в RTL Analysis → Schematic.
  2. Посмотрите, какая логическая схема была синтезирована.
  3. Ответьте для себя:
    • какие логические элементы используются?
    • соответствует ли схема ожидаемой логике?

Проверка решения (симуляция)

Для проверки корректности работы используется симуляция.

  • Тестбенч door_lamp_tb.sv уже подготовлен.
  • Найдите его в окне Sources и откройте.
  • Изменять тестбенч не нужно.

Рекомендуемый порядок:

  1. Внимательно прочитайте код тестбенча.
  2. Для лучшего понимания можно скопировать его в ChatGPT и попросить:
    • объяснить, что делает этот код;
    • как он работает;
    • зачем нужен каждый его фрагмент.
  3. Если что-то непонятно — задайте дополнительные вопросы.

Запуск симуляции

  1. В панели Flow Navigator выберите Behavioral Simulation.
  2. После завершения симуляции:
    • откройте вывод в Tcl Console;
    • проанализируйте результаты.

Корректно ли работает схема?


Что сдается

Что сдаётся: репозиторий GitHub Classroom


Критерии выполнения лабораторной работы

Лабораторная работа считается выполненной, если:

  • модуль door_lamp корректно описан на SystemVerilog;
  • симуляция (Behavioral Simulation) завершается без ошибок;
  • выходной сигнал lamp принимает корректные значения для всех комбинаций входов;
  • проект синтезируется без ошибок;
  • студент может устно объяснить ход решения и принятые допущения.

Дополнительное задание

1. Оператор case

Перепишите основной код, используя оператор case вместо логических операций.


2. Управление фарами автомобиля (по желанию)

Создайте схему управления фарами автомобиля.

Исходные элементы:

  • 8 светодиодов — фары автомобиля;
  • 2 движковых переключателя;
  • 1 кнопка.

Расположение светодиодов:

Д  Д  Б  -  -  Б  Д  Д
  • Б — ближний свет
  • Д — дальний свет
  • два центральных светодиода не используются и всегда должны быть равны 0

Управление:

  • первый переключатель — включение фар;
  • второй переключатель — включение дальнего света;
  • кнопка — временное включение дальнего света (аналог подрулевого рычага без фиксации).

Постарайтесь имитировать поведение фар реального автомобиля.


Требования к реализации

  • опишите логику на Verilog/SystemVerilog;
  • используйте только оператор assign;
  • выходы светодиодов опишите как:
    output [7:0] led

Если вы ещё не знаете, что означает [7:0], спросите об этом ChatGPT.

Подумайте:

  • как соединить один логический сигнал сразу с несколькими выходами;
  • что произойдёт, если левая и правая части оператора assign имеют разную ширину.

Преподаватель может задать вопросы про:

  • векторы в SystemVerilog;
  • slicing (вырезание);
  • concatenation (конкатенацию);
  • правила согласования разрядности сигналов.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages