Что делать, если нужно разместить большой цифровой фильтр на FPGA? А если плата уже разведена? Железо старое? В проекте осталось мало места? В этом топике будет рассмотрена одна из возможных реализаций цифрового КИХ фильтра на FPGA Altera Cyclone II EP2C15. По сути это продолжение вот этой темы из песочницы.
Будет рассказано, как сделать сдвиговый регистр на RAM, уменьшив при этом затраты LE, и как из этого получить цифровой фильтр.
Дело в том, что моему знакомству с FPGA два года. В студенческие годы, читая code examples от Altera и Xilinx, я мало уделял внимания описанию RAM и ROM, ведь в этом не было необходимости. Я знал, что существует FIFO, но даже не догадывался, зачем оно мне нужно. Так я защитил диплом, сделав свой проект «в лоб».
Работу я нашел благодаря своим «знаниям» в области FPGA. Тут же вылезли проблемы, о которых я не подозревал: существующие проекты занимали под 90% логических элементов, а моей работой было разместить в проектах цифровые фильтры. Понятно, что «в лоб» решить эту проблему было невозможно. Переписать существующий код? Помогло, но не сильно. И только тогда я понял, как можно играть с RAM, чтобы решить поставленные задачи.
Внимание! Здесь не будут моргать светодиоды. Вместо этого будет рассмотрена реализация сдвигового регистра в виде обертки для M4K. Данная публикация предполагает минимальное знакомство с FPGA и языком Verilog.