Я очень рекомендую сначала пойти с платой CPLD (что-то вроде этого ), или иглу на основе Actel Flash Igloo Nano, или что-то маленькое в этом роде. Большие ПЛИС могут быть довольно подавляющими, и у них так много выводов довольно что это требует много времени, чтобы все правильно подключить. Кроме того, как только вы захотите интегрировать один в свой дизайн, вы поймете, что они поставляются в очень больших пакетах с десятками выводов питания. Большинству из них требуется несколько напряжений для работы, не говоря уже о том, что большинство ПЛИС основаны на SRAM, а не на флэш-памяти, поэтому, как только вы отключите питание, они потеряют свой дизайн. Таким образом, вы должны, по крайней мере, иметь микросхему Active Serial Flash Memory, но многие люди используют CPLD или микроконтроллеры с коляской для загрузки проектов в FPGA.
Это все ошеломляет. CPLD, с другой стороны, великолепны! Обычно они работают от одного источника питания, и если вы хотите 5V-совместимость, вы все равно можете купить старые чипы Altera MAX 7000. Кроме того, у них есть встроенная флэш-память, поэтому им не нужны другие компоненты для их начальной загрузки. А CPLD функционируют более или менее так же, как FPGA, поэтому вы программируете их, написав VHDL / Verilog или используя редактор схем. Тот же джаз о тактировании (не забывайте использовать кварцевые осцилляторы, а не кристаллы!) И тот же способ программирования через JTAG. У CPLD гораздо меньше логических элементов, чем у FPGA, поэтому вы не можете бросить на них мягкие процессоры или сделать что-то слишком сумасшедшее. Но если вы только начинаете, они определенно идут своим путем - и они стоят по пару баксов каждый и поставляются в достаточно больших пакетах, которые можно паять вручную,
Еще один вариант - бюджетные ПЛИС на базе Flash от Actel. Я недавно поиграл с набором иглу Nano Starter Kit, который стоит около 100 долларов. Эти устройства достаточно большие, чтобы в них можно было установить ядро 8051 вместе с некоторой настраиваемой цифровой логикой, поэтому они являются отличным вариантом, когда вы смешиваете состояния потока программы с настраиваемой логикой.