Titus(27.08.2024)
Titus(27.08.2024)
1) если не смотреть на китайцев - только два варианта Альтера и Ксалинкс. Лично я за Ксалинкс (это мой "хлеб") . Инструментарий Ксалинкс на порядок лучше чем Альтера ("сравнивал" на одном проекте). Единственный минус - это его медлительность в "синтезе/компиляции".
По платам: нынче одинаково фигово. Лично у меня есть ZedBoard (vga hdmi audio), + ещё парочка плат (заводская и самопал).
2) пишут нынче на vhdl verilog systemverilog - остальные экзотика. Лично я за systemverilog - современный, лаконичный, практичен и море возможностей (помесь Си и Паскаля). vhdl - много лишнего "текста", местами сложен (аля язык АДА).
Симулятор входит в комплект инструментария (Альтера и Ксалинкс).
3) для начала можно посмотреть https://marsohod.org (не фонтан, но для беглого ознакомления норм, к сожалению заточен на альтеру)
4) народ подскажет.
- - - Добавлено - - -
src.pdf rez.pdf
исходно есть:
- два 4-х канальных буфера с Z-выходом
- первый триггер работает по фронту 0/1
- второй триггер работает по фронту 1/0
всё это превращается в три слоя логики ( первый LUT, остальные триггера)
В реальных плисах нет Z-логики в железе. В железе всегда либо 0 либо 1. Z-значение в реальности тоже 0 или 1 (на усмотрение синтезатора). В этой схеме когда оба EN_A EN_B в нулях или в единице на выходе будет значение, которое "удобно" синтезатору. Если это не устраивает - то для этой ситуации надо модернизировать исходную схему.
ПС: LUT это по факту комбинаторная логика от 1 до 6 входов
Последний раз редактировалось AlexG; 27.08.2024 в 23:55.
Titus(28.08.2024)
Так можно. Но не рекомендуется. На кристалле обычно есть несколько (на порядки меньше по отношению к кол-ву триггеров) буферов тактовой частоты, через которые можно подавать на тактовый вход большой группы триггеров произвольный сигнал. Но чем меньше разных частот используется в проекте - тем лучше. Потому, что у триггеров есть такие явления, как метастабильность. Которая будет обязательно возникать, если источник сигнала (триггер) работает на одной тактовой частоте, а приемник - на другой. Поэтому переход сигналов между системами триггеров, работающих на разных тактовых частотах - это тот еще гемор, требующий для правильной работы использования специальных узлов - синхронизаторов.
Когда все триггеры работают на одной тактовой частоте - то становится возможным предсказать и оптимизировать быстродействие схемы. Нужно лишь гарантировать, что выходы одних триггеров, пройдя через комбинационную логику, попадают на входы последующих триггеров - грубо говоря - не позднее следующего фронта тактовой частоты. Время прохождения сигналов через комбинационную логику зависит от сложности этой логики и разводки схемы на ПЛИС. Контролем и оптимизацией сложности и разводки занимается среда разработки для соответствующего типа ПЛИС.
Производители: Xilinx (некоторое время назад перекуплено AMD) и Altera (некоторое время назад перекуплено Intel).
"Самые хорошие и вместительные" - из последних серий, они обычно настолько дорогие (тысячи и десятки тысяч $ за чип), что для большинства проектов себя не оправдывают. Для больших проектов за более-менее вменяемую цену следует использовать FPGA ценовой категории 50-60$/чип. Как правило, это бюджетные либо устаревшие серии FPGA. Для Xilinx это будет, на сегодняшний день, что-то из серии Spartan-7, Artix-7. Но Спектрум полностью (включая процессор) можно с большим запасом реализовать и на Spartan-6. Для Altera это будет что-то из серии Cyclone (какие у них там актуальные), с ними я не работал.
Среды разработки поставляются производителем FPGA. Для Xilinx Spartan-6 и более ранних серий это ISE (для проектов со встроенными процессорами еще нужны платные пакеты XPS/SDK). Для более новых Artix-7, Spartan-7 это Vivado Design Studio. Для Altera не знаю - надо смотреть соответствующие серии FPGA, какие у них там инструменты разработки. Сторонних пакетов для разработки на FPGA не существует, так как внутренняя архитектура и формат данных конфигурации до конца не документированы. А без этого невозможно создать конкурирующую среду разработки.
Языки разработки - VHDL, Verilog. "System Verilog", о котором тут шла речь - не знаю, в чем его отличия от обычного Verilog.
В среде разработки обычно есть и симулятор. Программу для симуляции нужно создавать на том же языке, на котором разрабатывается проект (VHDL или Verilog). Дело в том, что оба упомянутых языка - это фактически языки симуляции, они так задумывались. На них задается поведение симулируемой схемы, а также входные сигналы для нее. Это уже потом появился софт, который описание поведения схемы на языке симуляции преобразует в собственно схему. А еще позже задание схемы на языке симуляции стало стандартом. Лишь небольшое подмножество возможностей языков (Verilog/VHDL) разрешается использовать для описания схем, которые подлежат "синтезу" (т.е. преобразованию в схемотехнический формат). Поэтому для схемотехника, для разработки на FPGA на упомянутых языках, нужно существенно перестроить мозги. Но ничего лучшего на сегодняшний день нет.
Также симуляции обычно подлежит не весь проект целиком, а отдельные его блоки. Лишь после отладки и симуляции блоков можно приступать к отладке проекта целиком в железе. Обычно допускаешь в проекте много ошибок, и без предварительной симуляции и отладки запускать проект на железе практически безнадежно.
Titus(28.08.2024)
0. Так можно, но лучше сделать удвоенную частоту и 1-битный счетчик. Тогда все триггеры будут переключаться по фронту, но одни при значении счетчика 0, другие при 1.
1. Я бы смотрел в сторону Cyclone4 (Intel). По другим сказать не могу
2. Я рекомендую Verilog. Симуляторы: iverilog (бесплатный, рекомендую), ModelSim(Questa Sim) - бесплатный StarterEdition, Aldec Active-HDL
3. https://iosifk.narod.ru/hdl_coding/verilog.htm https://marsohod.org/verilog
Референсный справочник по Verilog есть в Сети, еще советую почитать Gotcha's - типичные ошибки
4. Думаю, тут, в конференции есть. Opencores.org, GitHub - там можно поискать
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Titus(28.08.2024)
Barmaley_m
Согласен на 99.9%
Уточню что "System Verilog" это "работа над ошибками" языка "Verilog" (+ у него более продвинутая возможность по тестированию)
IanPo
Согласен на 25% (пункт 3 и 4)
"0. Так можно, но лучше сделать удвоенную частоту и 1-битный счетчик. Тогда все триггеры будут переключаться по фронту, но одни при значении счетчика 0, другие при 1."
Можно - но не нужно так делать. Будут дополнительные заморочки по быстродействию схемы.
Последний раз редактировалось AlexG; 28.08.2024 в 09:49.
Barmaley_m(30.08.2024), Titus(28.08.2024)
Если писать на Verilog, то для симуляции есть Icarus Verilog. Просмотр результата в GTKWave.
Titus(28.08.2024)
Barmaley_m(30.08.2024)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)