An open API service indexing awesome lists of open source software.

https://github.com/kiselkovd/verilog_nand_complicated


https://github.com/kiselkovd/verilog_nand_complicated

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          

Этот проект реализует простой дизайн процессора (CPU) и тестовый стенд на языке описания аппаратуры Verilog. Он включает основной модуль CPU, построенный из набора встроенных и пользовательских компонентов, а также тестбенч для симуляции и проверки функциональности с использованием файлового ввода.

Структура проекта

- CPU.v: Верхнеуровневый модуль CPU, определяющий datapath и сигналы управления.
- TC_Universe.v: Модуль тестового стенда для симуляции с генерацией тактового сигнала и сброса, включая файловый ввод/вывод.
- build-CPU-iverilog.cmd: Скрипт сборки для компиляции и запуска проекта с помощью Icarus Verilog.
- builtin_components/: Директория с предопределёнными базовыми логическими модулями, такими как сумматоры, мультиплексоры, счётчики, регистры и логические элементы.
- custom_components/: Директория с самописными компонентами, включая ALU, блоки управления, регистры с расширенными функциями, обработку условий и логику программы. Подпапка 'lol' содержит вспомогательные модули, например, COND.v и and8.v.

Основные модули

CPU.v
- Модуль CPU имеет входы clk, rst и 8-битный вход Input; на выходе — 8-битный Output.
- Внутри используются экземпляры декодеров (TC_Decoder3), сплиттеров, логических элементов, мультиплексоров, счётчиков, регистров, ALU и управляющих блоков.
- Параметры UUID и NAME служат для уникальной идентификации инстанций модулей, что облегчает модульное переиспользование и отладку.
- Внутренние сигналы (wired с уникальными номерами) связывают компоненты для реализации декодирования инструкций, оценки условий, операций с регистрами, вычислений ALU и переключения выхода.

TC_Universe.v
- Обеспечивает генерацию тактового сигнала (clk) и синхронного сброса (rst).
- Загружает входные данные из указанного файла в память и последовательно подает их на вход CPU по управляющим сигналам.
- Отслеживает выходы CPU и выводит полученные символы в консоль для проверки при симуляции.
- Управляет переключением такта и сброса в среде симуляции.

Использование

1. Скомпилируйте и запустите проект с помощью Icarus Verilog, используя скрипт build-CPU-iverilog.cmd.
2. При необходимости укажите файл входных данных через аргумент командной строки INPUT_FILE во время симуляции.
3. Просматривайте консольный вывод с выходными сигналами CPU в ходе симуляции.

Особенности

- Модульный дизайн с параметризуемыми и переиспользуемыми блоками.
- Тестбенч поддерживает файловый ввод/вывод для реалистичных последовательностей данных.
- Параметризация UUID для улучшенной трассировки экземпляров.
- Управление данными ввода/вывода с помощью импульсных управляющих сигналов в тестбенче.

Требования

- Icarus Verilog (iverilog и vvp) для компиляции и симуляции.
- Командная оболочка Windows для запуска скрипта сборки.

Примечания

- Имена сигналов и проводников сгенерированы автоматически и могут выглядеть непривычно; для понимания их роли смотрите соответствующие модули компонентов.
- Ширина данных CPU — 8 бит.
- Дизайн ориентирован на образовательные и экспериментальные задачи в области цифрового дизайна, архитектуры процессоров и симуляции на Verilog.