MyHDL - MyHDL

MyHDL[1] это Python -основан язык описания оборудования (HDL).

Возможности MyHDL включают:

  • Возможность генерировать VHDL и Verilog код из дизайна MyHDL.[2]
  • Возможность создания тестового стенда (Конверсия тестовых стендов[3]) с тестовыми векторами в VHDL или Verilog на основе сложных вычислений в Python.
  • Возможность конвертировать списки сигналов.[4]
  • Возможность конвертировать вывод проверки.[5]
  • Возможность совместного моделирования с Verilog.[6]
  • Продвинутая система типов данных, не зависящая от традиционных типов данных. Инструмент переводчика MyHDL автоматически записывает функции преобразования, когда они требуются целевому языку.

MyHDL разработан Яном Декалуве.[7]

Примеры конверсии

Здесь вы можете увидеть несколько примеров преобразования проектов MyHDL в VHDL и / или Verilog.[8]

Небольшой комбинаторный дизайн

Примером является небольшая комбинаторная конструкция, в частности преобразователь двоичного кода в код Грея:

def bin2gray(B, г, ширина: int):    "" "Серый кодировщик.    B - входной сигнал intbv, двоичный кодированный    G - выходной сигнал intbv, закодированный серым    width - разрядность    """    @always_comb    def логика():        Bext = intbv(0)[ширина + 1 :]        Bext[:] = B        за я в ассортимент(ширина):            г.Следующий[я] = Bext[я + 1] ^ Bext[я]    вернуть логика

Вы можете создать экземпляр и преобразовать его в Verilog и VHDL следующим образом:

ширина = 8B = Сигнал(intbv(0)[ширина:])г = Сигнал(intbv(0)[ширина:])bin2gray_inst = toVerilog(bin2gray, B, г, ширина)bin2gray_inst = toVHDL(bin2gray, B, г, ширина)

Сгенерированный код Verilog выглядит следующим образом:

модуль bin2gray (    B,    г);Вход [7:0] B;вывод [7:0] г;рег [7:0] г;всегда @(B) начинать: BIN2GRAY_LOGIC    целое число я;    рег [9-1:0] Bext;    Bext = 9'h0;    Bext = B;    за (я=0; я<8; я=я+1) начинать        г[я] <= (Bext[(я + 1)] ^ Bext[я]);    конецконецконечный модуль

Сгенерированный код VHDL выглядит следующим образом:

библиотека IEEE;использовать IEEE.std_logic_1164.все;использовать IEEE.numeric_std.все;использовать std.textio.все;использовать work.pck_myhdl_06.все;юридическое лицо bin2gray является    порт (        B: в беззнаковый(7 вниз 0);        г: вне беззнаковый(7 вниз 0)    );конец юридическое лицо bin2gray;архитектура MyHDL из bin2gray являетсяначинатьBIN2GRAY_LOGIC: обработать (B) является    переменная Bext: беззнаковый(8 вниз 0);начинать    Bext := to_unsigned(0, 9);    Bext := изменить размер(B, 9);    за я в 0 к 8-1 петля        г(я) <= (Bext((я + 1)) xor Bext(я));    конец петля;конец обработать BIN2GRAY_LOGIC;конец архитектура MyHDL;

Смотрите также

Рекомендации