FPGA chips

Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика  FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.


Hardware Freedom Day

20 апреля 2013 во всём мире состоится Hardware Freedom Day. В России HFD 2013 пройдет в Москве и в Новосибирске.

Hardware Freedom Day — это международное событие, призванное объединить разработчиков открытого аппаратного обеспечения.

Подробности о каждом из мероприятий ниже.

ternary logic
Внимание! Эта статья была написана 1-го апреля и я вляется не больше чем шуткой...
Известно, что большинство современных вычислительных систем использует двоичную логику. Однако, так же известно, что основание двойки для представления чисел не является оптимальным при выполнении математических операций над этими числами. Существуют и другие, более эффективные способы представления информации использующие троичную систему счисления.

После некоторых исследований и экспериментов мы выпустили новую версию программатора MBFTDI2.
Новый программатор немного отличается от предыдущего. Изменения есть и в схеме и разводке платы и в драйверах Altera Quartus II.

Внешний вид программатора, вид сверху:

Программатор MBFTDI2

Вид снизу:

Программатор MBFTDI2

Основное отличие нового программатора: добавлены линии управления для режимов работы Passive Serial и Active Serial.

bug

Возможно немного странная тема, но думаю кому нибудь будет интересно. Недавно набрел в интернетах на статьи авторов – это Stuart Sutherland, Don Mills и Chris Spear. Сами статьи на английском можно взять вот тут:

Gotcha – это ошибка в программе, но не такая, которая выявляется компилятором. И не такая, которая появляется из-за неудачного дизайна проекта. Это ошибка в программе возникающая из-за несовершенства или особенностей языка программирования или даже компилятора, либо из-за неполного понимания программистом синтаксиса и смысла языковых конструкций. Такие ошибки очень трудно искать. Кажется вроде бы все правильно написано, компилятор успешно откомпилировал и синтезировал, но проект не работает, работает не правильно. Или еще хуже – результат симуляции проекта Verilog один, а в железе проект работает совсем не так.

Некоторые самые простые примеры я приведу прямо из упомянутых выше статей (хотя конечно, лучше почитать в оригинале).

Как на языке Verilog HDL реализовать сумматор или вычитатель с переносом ? Вопрос кажется очень простым для тех, кто давно использует язык Verilog, но почему-то оказывается абсолютно непонятным для новичков – это видно из писем, которые к нам приходят.

Все очень просто.
Вот такой код Verilog описывает модуль сумматора с переносом:


module adder(
  input wire [7:0]a,
  input wire [7:0]b,
  output wire [7:0]out,
  output wire carry
);

assign {carry, out} = a + b;

endmodule


Ключевая фраза здесь: assign {carry, out} = a + b;

Фигурные скобки описывают группу сигналов подключенных к выходу сумматора. В данном примере входные сигналы a и b восьмибитные. При суммировании восьмибитных чисел результат должен быть девятибитный. Так и в этом примере: выходной сигнал уже девятибитный и состоит из старшего бита carry, он слева внутри фигурных скобок, и восьмибитного результата out.