МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

САПР Altera Quartus II / Quartus Prime, язык Verilog HDL, ПЛИС Cyclone III, Cyclone IV, MAX II, MAX10.
Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Yosys Open SYnthesis Suite

yosys

Понадобилось мне средство создания схемы из Verilog файла. Самый понятный способ для меня - это использования самого Intel Quartus. В среде квартуса после компиляции проекта, а именно, после анализа и синтеза проекта, можно посмотреть результирующую схему устройства.

Делается так:
1) Меню Processing => Start => Start Analysis & Synthesis
2) Меню Tools => Netlist Viewers => RTL Viewers

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


module cnt(
  input wire clk,
  input wire rst,
  input wire ena,
  output reg [3:0]q
);

always @(posedge clk)
  if(rst)
    q <= 0;
  else
    if( ena )
  begin
    if( q==9 )
      q <= 0;
    else
      q <= q+1;
  end

endmodule


 

Квартус после синтеза покажет его в RTL Viewer вот так:

quartus rtl viewer


Все это очень хорошо, но мне хотелось найти средство попроще, желательно opensource и чтобы можно было бы запускать из скрипта. Самый подходящий вариант, который я нашел - это Yosis - Yosys Open SYnthesis Suite. Далее расскажу, что я знаю про него.

Разворот бит в шине на Verilog

Казалось бы простая задача: как развернуть биты в шине так, чтоб младший бит стал старшим, а старший самым младшим? Первое, что приходит на ум: написать вот так:


reg [7:0]src;
//reverse?
wire [0:7]re1; assign re1 = src; //does not work..


Но это так не работает!
Какие есть работающие варианты?

Modelsim под Windows и Verilog VPI

Когда-то давно я написал статью "Интерфейс Verilog VPI".
В ней рассказывалось, как во время симуляции проекта Verilog вызывать функции пользовательской библиотеки, написанной на языке C. В статье использовался симулятор Icarus Verilog под Ubuntu Linux.

Связка языка Verilog и языка C хоть и получается немного мудреная, но дает дополнительные возможности для симуляции. Получается можно определить свою системную функцию Verilog и делать в ней что хочешь: хоть читать файлы с произвольным доступом, хоть получать изображения из камеры и передавать их верилогу, хоть обращаться к какой-то плате для получения реальных данных, передаваемых симулятору.

Недавно мне самому потребовалось сделать доступ к двоичному файлу очень большого размера из тестбенча Verilog и я, чтобы сделать это, перечитывал свою же статью и брал ее за основу своей новой программы-библиотеки.

В этой статье я покажу:

  • как скомпилировать библиотеку C/С++ с использованием Verilog Procedural Interface (VPI) под Windows;
  • как использовать библиотеку с Icarus Verilog под Windows;
  • как использовать библиотеку с ModelSim под Windows.

Как вернуть скрипту результат симуляции Verilog?

result

Появилась простая задача - нужно из скрипта (batch/Windows или bash/Linux) проанализировать результат симуляции Verilog. Причем желательно, чтобы решение работало с разными симуляторами: icarus и modelsim (или другими). Как это сделать?

Проект FTDI-POF

ftdi pof

FTDI-POF - это наш экспериментальный проект для исследования возможностей пластикового оптического волокна (Plastic Optical Fiber). Плата сделана на основе нашего программатора MBFTDI, а значит использует ту же самую микросхему FT2232H. Теперь эта новая плата, конечно, никакого отношения к JTAG программированию не имеет. Плата FTDI-POF - это USB-to-COM, то есть устройство, которое представляет два последовательных порта на шине USB2. При этом первый последовательный порт оснащен оптическим приемником и передатчиком для POF. Далее подробное описание проекта.


facebook  GitHub  YouTube  Twitter
Вы здесь: Начало