Intel Quartus Prime + Visual Studio Code

Нано-заметка о том, как использовать Visual Studio Code со всеми его достоинствами (и недостатками) в качестве продвинутого редактора кода, который будет вызываться по умолчанию из Intel Quartus Prime (любой версии).

B88-0

Заходим в Tools->Options, переходим в раздел General->Preferred Text Editor:

B88-1

Ставим Custom в качестве параметра Text Editor. Прописываем здесь путь к Visual Studio Code (заместо %PATH_TO_VSCODE%) со следующими параметрами:

"%PATH_TO_VSCODE%\Code.exe" -r -g %f:%l

Примечание: параметр -r задаёт открытие файлов в активном (единственном) окне Visual Studio Code, и его можно убрать, тогда, если уже была открыта Visual Studio Code с каким-либо проектом, файлы из Quartus Prime будут открываться в новом окне Visual Studio Code.

Вот и всё, теперь все операции с файлами будут передаваться Visual Studio Code, что, как по мне, намного удобнее.

Читать далее

Конфигурирование Cyclone V из S25FL128S — проблемы и решение

Подбирая флешку для Cyclone V или Cyclone 10 LP для платы с минимальными габаритами, можно прийти к решениям от Micron, Macronix или Cypress. Я остановился на последней компании и конкретной флешке — S25FL128S, которая есть во вполне удобном корпусе WSON-8 (только 3,3 В IO) или в FBGA-24 с дополнительным пином VCCIO для установки уровней IO (но 3,3 В всё равно нужны для ядра флешки). Так вот, вроде ничего не предвещало беды, эта флешка даже официально поддерживается программатором в Intel Quartus 18.0 и выше, но не работает с Cyclone V …

B86-0

Читать далее

Visual Studio Code и ModelSim

В заметке ниже описание того, как сделать быстро вызываемую симуляцию в ModelSim из Visual Studio Code для тестбенча самописного IP.

b85-0

Подготовка Visual Studio Code

Всё в целом аналогично Visual Studio Code и Icarus Verilog, только без установки Icarus Verilog, поэтому повторяться не вижу смысла.

Тестовый проект

В качестве тестового проекта будет выступать моё недоделанное IP для HyperRAM — HyperRAM_Controller. Симуляцию будем проводить на тестбенче оттуда же.

Читать далее

Quartus Prime и проблемы генерации проекта с EMIF в Platform Designer

Небольшая заметка с проблемой генерации проекта, в котором есть EMIF в Platform Designer, решение которой я нашёл для своего случая.

b80-0

Возможно, это поможет людям, столкнувшимся с аналогичной проблемой. Также помимо описания решения проблемы в моём случае приведу все другие решения, которые так или иначе помогали другим людям, чтобы всё было в одной заметке для удобства.

Итак, о чём речь-то? А о том случае, если вы, к примеру, делаете проект на Cyclone V и в Platform Designer (QSYS по-старому) добавляете EMIF для любой памяти (DDR2 или DDR2LP или DDR3), а при генерации HDL (или просто примера использования EMIF) у вас вылезает вот такая пичалька:

Читать далее

HyperRAM — это что за память?

Под катом небольшой обзор особенностей этой памяти, отличия от других типов памяти и в конце небольшой список того, что же взяла (позаимствовала) эта память из других типов.

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

B75-0

Читать далее

Visual Studio Code и Icarus Verilog

В этой статье попробую вкратце показать, как можно настроить Visual Studio Code для написания HDL кода на языках Verilog, SystemVerilog, настроить задачи для компиляции и симуляции работы, а также отображения результатов симуляции в GTKWave.

Написание HDL кода в Visual Studio Code по сравнению с Intel Quartus Prime порядком удобней и можно просто использовать Visual Studio Code как продвинутый редактор кода (если вам не нужна компиляция и симуляция из Icarus Verilog).

B67-0

Установка Visual Studio Code

Скачиваем Visual Studio Code для вашей ОС, в моём случае я скачал версию для Windows x64, ZIP архив (версия 1.27.1). Распаковываем\устанавливаем и запускаем, нас встречает главное окно редактора (да, да, это не полноценная IDE, как Visual Studio, а именно легкий редактор кода с возможностью кастомизации расширениями практически до уровня IDE) со стартовой страницей:

B67-1

Произведём минимальные настройки для удобства. Открываем настройки Visual Studio Code:

B67-2

В строке поиска вводим «theme» и переключаем на более приятную тему для вас (в моём случае это «Default Light+«):

B67-3

Далее в строке поиска вводим «titleBarStyle» и переключаем параметр Title Bar Style на «custom«:

B67-4

Этот параметр изменит вид меню и интегрирует само меню в заголовок окна, что экономит место и визуально редактор становится приятнее, пример этого решения в конце абзаца.

И последнее, в строке поиска вводим «minimap» и, собственно, отключаем её отображение:

B67-5

Миникарта — это вот что:

B67-6

Справа сверху отображается представление файла в мини-превью, иногда это удобно, иногда это место лучше освободить от этого превью (к примеру, открываете вертикально 2-3 файла, и это превью уже ощутимо кушает место) — тут кому как удобнее. :)

Итак, перезапускаем редактор и видим следующие визуальные изменения:

B67-7

Установка расширений для Visual Studio Code

Далее, чтобы удобно (подсветка, автодополнение) работать с Verilog, SystemVerilog, TCL файлами, нам необходимо установить расширения, поддерживающие эти типы файлов.

Открываем панель расширений (Ctrl+Shift+X):

B67-8

И в строке поиска вводим «ext:v«, ставим расширение Verilog HDL:

B67-9

Далее в строке поиска вводим «ext:sv«, ставим расширение SystemVerilog:

B67-10

Последнее, в строке поиска вводим «ext:tsl«, ставим расширение TSL:

B67-11

Вот и всё. После перезапуска Visual Studio Code установленные расширения будут активны. Да, ставить именно указанные расширения не обязательно, возможно, расширения от других авторов будут более удобны или с более богатым функционалом — не бойтесь пробовать (и пишите в комментариях, какие расширения Вам больше понравились и чем).

Пример работы расширения:

B67-12

Установка Icarus Verilog

Теперь нужно установить компилятор\симулятор HDL кода — Icarus Verilog. Скачиваем установщик под Windows (для остальных платформ смотрим Installation Guide), я скачал последнюю версию iverilog-10.1.1-x64.

При установке в целом сложностей не возникает, главное — ставьте полную версию с библиотеками:

B67-13

И не убирайте галочки добавления путей к GTKWave и в PATH:

B67-14

Ярлычки в меню Пуск и на рабочий стол я не ставил. Перезагружаем ПК или просто разлогиниваемся и снова заходим под рабочим пользователем — этого должно хватить, чтобы подхватились изменения в системной переменной PATH.

Примечание: у меня установщик никаких правок в PATH не внёс и я не сразу понял, почему не работает. Пришлось вручную внести в пользовательский PATH следующие две строки (Icarus Verilog установлен в C:\Data\iverilog\):

B67-19

Настройка проекта под Visual Studio Code

В качестве проекта возьмём counter.v и counter_tb.v из прошлой статьи «Запускаем ModelSim с Quartus Prime и без«, чего будет более чем достаточно.

Приведу их ещё раз. counter.v :

`timescale 1ns/1ns

module counter (
input wire reset,
input wire clk,
input wire [7:0]wdata,
input wire wr,
output reg [7:0]data
);
always @ (posedge clk or posedge reset)
if (reset)
data <= 8'h00;
else
if(wr)
data <= wdata;
else
data <= data + 8'h01;

endmodule

counter_tb.v :

`timescale 1ns/1ns
`include "counter.v"
module counter_tb();

reg reset, clk, wr;
reg [7:0]wdata;
wire [7:0] data_cnt;

counter DUT(reset, clk, wdata, wr, data_cnt);

always
#10 clk = ~clk;

initial begin
clk = 0;
reset = 0;
wdata = 8'h00;
wr = 1'b0;

#10 reset = 1;
#5 reset = 0;
#50;

end

initial begin
#400 $stop;
end

initial
begin
$dumpfile("out.vcd");
$dumpvars(0,DUT);
end

initial
$monitor($stime,, reset,, clk,,, wdata,, wr,, data_cnt);

endmodule

Итак, открываем корневую папку проекта, в которой и находятся файлы counter.v и counter_tb.v:

B67-15

Редактор теперь показывает открытую папку TEST и файлы в ней:

B67-16

Далее необходимо создать задачи компиляции и симуляции проекта (точнее Test Bench). Переходим в меню по пункту Terminal -> Configure Tasks, откроется следующий диалог:

B67-17

Потом:

B67-18

Создаём файл .vscode\Tasks.json из шаблона Others (нижний пункт). Собственно, после создания файла он должен открыться в редакторе — копируем туда следующий текст:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile Verilog File",
            "type": "shell",
            "command": "cd ${fileDirname} ; iverilog -o ${fileBasename}.vvp ${fileBasename} ; vvp -N ${fileBasename}.vvp"
        },
        {
            "label": "Run GTKWave",
            "type": "shell",
            "command": "cd ${fileDirname} ; gtkwave out.vcd"
        }
    ]
}

Сохраняем. Это создание двух команд, первая — для компиляции, вторая — для отображения результатов симуляции.

Закрываем редактор, чтобы он подхватил изменения файла .vscode\Tasks.json при следующем запуске.

Примечание: Можно еще хоткеи настроить для задач, но это уже оставлю на вашу любознательность. ;)

Тест

Ну а теперь самое простое… Запускаем Visual Studio Code, папка с проектом будет открыта уже в воркспейсе (если не перемещали). Открываем файл counter_tb.v
т. к. это основной файл, с которого будет произведена компиляция и симуляция. Переходим в меню по пункту Terminal -> Run Task…, откроется следующий диалог с ранее объявленными задачами:

B67-20

Вначале выбираем Compile Verilog File и потом выбираем запуск задачи без сканирования лога выполнения:

B67-21

Успешно откомпилировано и создан файл для отображения симуляции работы (на идеальных компонентах):

B67-22

После успешной компиляции аналогичным образом вызываем Run GTKWave для просмотра результатов. Откроется основное окно GTKWave:

B67-23

Раскрываем слева экземпляр тестбенча и выделяем экземпляр DUT тестируемого модуля counter, внизу появятся его сигналы, просто перетаскиваем их в колонку Signals:

B67-24

Вот и всё! Надеюсь это будет полезно начинающим. ;)

Ссылки

  • Visual Studio Code — официальная страничка редактора кода;
  • Tasks in Visual Studio Code — полезное описание, как создавать свои команды;
  • Icarus Verilog — официальный сайт компилятора и симулятора Verilog;
  • Icarus Verilog Installation Guide — как скомпилировать и установить Icarus Verilog на любой платформе;
  • Icarus Verilog for Windows — откомпилированные бинарники Icarus Verilog (вариант для ленивых как я :D) в виде установщика под Windows.

Выбор стандартного интерфейса для обмена данными

В этой заметке будет краткий обзор различных распространённых интерфейсов, которые используются в качестве канала обмена данными между персональным компьютером (ПК) и разрабатываемым\проектируемым устройством (или в пределах устройств только). Заметка, скорее, для начинающих схемотехников \ программистов, которая поможет определиться с начальным выбором, оценив возможности и ограничения описанных интерфейсов.

B69-0

Фото взято отсюда.

Заметка не претендует на полноту изложения или обстоятельный подход к каждому интерфейсу, могут быть ошибки или неточности, это скорее заметка с авторскими пометками и моё мнение может не совпадать с вашим. :) Если интересно — прошу под кат:

Читать далее

Замена EPCQ-L для Intel Cyclone 10 GX

Небольшая заметка для разработчиков, которые при проектировании устройств на Intel Cyclone 10 GX столкнулись с такой досадной ситуацией, когда единственная рекомендуемая для них конфигурационная память линейки EPCQ-L является Obsolete и её покупка является затруднительной задачей в данный момент, и будет невозможна в скором будущем…

B72-0

Что с этим делать и на что можно заменить рекомендуемую конфигурационную память EPCQ-L — разберёмся в небольшой заметке под катом.

Читать далее

Cyclone 10 LP, WS2812, SK6812RGBW

Небольшая статья о простом тесте управляемых светодиодов WS2812 и SK6812RGBW, как их правильно подключить к 3,3 В IO ПЛИС и как этим всем крайне просто можно управлять из приложения на ПК.

Посмотрев OpenSource драйверы для WS2812, я несколько удивился — на Verilog нашелся только один и тот показался не шибко оптимальным, поэтому было решено написать свой. Со своими костылями и багами. :)

Так как под рукой есть неплохая отладочная плата Intel Cyclone 10 LP FPGA Evaluation Kit, то на ней и буду тестировать. В закромах нашлась ардуиновская плата-щит-шилд для прототипирования (крайне паршивой разводки, покупать себе такую не советую! Выиграл пару штук на аукционе eBay, но вот покупать такое я точно больше не буду и вам не советую!) — ардуино-стайл проект по морганию светодиодами на ПЛИС должен удасться на славу! ;D

B64-0

Читать далее

Настраиваем и запускаем Nios II в Intel Quartus Prime 18.0

В статье будет рассмотрен весь процесс от создания проекта с синтезируемым процессором Nios II до запуска прошивки на нём в ПЛИС, а также описаны возможные проблемы, возникающие в процессе, и способ их решения. Получившийся проект доступен для свободного скачивания (под Cyclone 10 LP) и любой может повторить все описанные ниже действия как самостоятельно с нуля, так и подсмотрев в проекте.

Здесь не будет рассмотрен процесс создания файла прошивки для конфигурационной памяти (для автономного запуска проекта), т. к. статья и так вышла довольно объемной и логично будет эту часть отделить.

Статья будет полезна новичкам, осваивающим ПЛИСы, и если вас заинтересовало, добро пожаловать под кат:

B65-0

Читать далее