Pull to refresh

Comments 4

1. Подсветка кода ужасная.

2. Вы делаете FIFO на базе RAM-блоков FPGA. Можно воспользоваться генератором CORE, что будет корректнее и эффективнее для реализации в конкретной платформе с точки зрения экономии логических элементов. Но переносимости кода с такими блоками не будет, ведь в разных платформах разные корки.
Для создания кода, переносимого между разными FPGA, или придется создавать HDL-код, не использующий в разводке проекта все возможности платформы и, как следствие, неэффективно укладывающийся в кристалл. Или создавать код, в котором анализируются текущая платформа и используются соответствующие вставки из Language Templates.

3. Требовать от FIFO возможности за один такт вытащить два значения — это не минус. Сдвиг за два такта — необычно для FIFO, но тоже все-таки не минус.

Посмотрите, как сделан FIFO: www.asic-world.com/examples/vhdl/syn_fifo.html#Synchronous_FIFO
Спасибо за критику, но, откровенно говоря, это недописанная статья, и я не хотел, чтобы ее кто-то читал в таком виде. Поэтому возникают вопросы, которых не должно быть. И тема тут не ФИФО раскрывается, хотя конечно рядом.
Тема — как раз контроль verilog`ом за ресурсами, которые нужно задействовать. В данном случае это RAM.
Итогом топика должен был стать сдвиговый регистр на RAM за 1 такт на чистом verilog с минимальными вставками логики и регистров. И конечный продукт — цифровой фильтр, который в FPGA занимает не более 100 LE (slice) + RAM.
Раз уж топик всплыл по непонятным для меня причинам, придется дописывать.
1. Да, статья не дописана. Не понятно какое в итоге описание памяти используете. То что привели из примера классическое описание памяти, которое инферится правильно в всех САПРах для FPGA.
А если правильно написать Verilog под архитектуру блоков ПЛИС, то синтезатор сам вставит блоки память РАМ/ROM вместо массива regs на триггерах.
2. Режет глаза «input wire, output wire». Verilog приятен по сравнению с VHDL, тем что соблюдая несколько правил аналогичных код занимает в 2 раза меньшее строк. Имеет смысл только писать «output reg», чтобы сэкономить еще 1 строчку в Verilog2001.
3. У вас FSM вообще без какого-либо ресета. Если проверяли, то это будет работать только во встроенном симуляторе Квартуса. Для нормального симулятора (ModelSim и т.п.) должен использоваться синхронный/асинхронный ресет для всех типов reg. Иначе ничего нормально не промоделируете.
Sign up to leave a comment.

Articles