https://github.com/kiselkovd/verilog_nand_complicated
https://github.com/kiselkovd/verilog_nand_complicated
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/kiselkovd/verilog_nand_complicated
- Owner: KiselkovD
- Created: 2025-09-25T06:31:04.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-09-25T06:51:46.000Z (9 months ago)
- Last Synced: 2025-10-10T08:18:45.501Z (9 months ago)
- Language: Verilog
- Size: 12.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.