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 , G , width : int ):
"""Кодер серого цвета.
B — входной сигнал intbv, двоичное кодирование
G — выходной сигнал intbv, кодирование серого
width — разрядность
"""
@always_comb
def Logic () :
Bext = intbv ( 0 )[ ширина + 1 :]
Bext [:] = B
для i в диапазоне ( ширина )
G. : next [ i ] = Bext [ i + 1 ] ^ Bext [ i ]
возврата логика
Вы можете создать экземпляр и преобразовать его в Verilog и VHDL следующим образом:
ширина = 8
B = Сигнал ( intbv ( 0 )[ ширина :])
G = Сигнал ( intbv ( 0 )[ ширина :])
bin2gray_inst = toVerilog ( bin2gray , B , G , ширина )
bin2gray_inst = toVHDL ( bin2gray , B , G , ширина )
Сгенерированный код Verilog выглядит следующим образом:
модуль bin2gray (
B ,
G
);
вход [ 7 : 0 ] Б ;
выход [ 7 : 0 ] G ;
рег [ 7 : 0 ] Г ;
всегда @( B ) начало : BIN2GRAY_LOGIC
целое число i ;
рег [ 9-1 : 0 ] Фортуна ;
Фортуна = 9'h0 ;
Удача = Б ;
for ( я знак равно 0 ; я < 8 ; я = я + 1 ) начать
G [ я ] <= ( Удача [( я + 1 )] ^ Удача [ я ]);
конец,
конец
, конец модуля
Сгенерированный код VHDL выглядит следующим образом:
библиотека IEEE ;
используйте IEEE.std_logic_1164. все ;
используйте IEEE.numeric_std. все ;
используйте std.textio. все ;
используйте work.pck_myhdl_06. все ;
сущность bin2gray — это
порт (
B : вход без знака ( от 7 до 0 );
G : выход без знака ( от 7 до 0 )
);
конечный объект bin2gray ;
архитектура MyHDL bin2gray от начинается
BIN2GRAY_LOGIC
; : процесс ( B ) является
переменной Bext : без знака ( 8 до 0 )
начать
Bext := to_unsigned ( 0 , 9 );
Bext := изменить размер ( B , 9 );
для i в от 0 до 8 - 1 цикле
G ( i ) <= ( Bext (( i + 1 )) xor Bext ( i ));
конец цикла ;
завершить процесс BIN2GRAY_LOGIC ;
конечная архитектура MyHDL ;
См. также [ править ]
- Сравнение бесплатного программного обеспечения EDA
- Сравнение программного обеспечения EDA
- Автоматизация электронного проектирования (EDA)
- C в HDL Компиляторы
Ссылки [ править ]
- ^ "Дом" . myhdl.org .
- ^ «Преобразование в Verilog и VHDL — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Совместное моделирование с Verilog — документация MyHDL 0.11» .
- ^ «MyHDL: язык описания оборудования на основе Python | Журнал Linux» .
- ^ «Примеры преобразования — документация MyHDL 0.11» .