32bit_me: (Default)

Продолжение. Часть 2.

Структурная схема видеоадаптера приведена на рис. 1 (кликабельно)

Рис. 1. Структурная схема видеоадаптера.

Пояснения к схеме:

В первой версии видеоадаптер будет иметь только текстовый режим EGA, 80 * 25 символов 8 * 14 пикселов каждый символ. Таким образом, экранное разрешение составит 8 * 80 = 640 пикселов по горизонтали и 14 * 25 = 350 пикселов по вертикали. Частота пикселов в этом режиме составляет, по стандарту 25,175 МГц, фактическая частота будет 25 МГц, в связи с тем, что частота тактирования ПЛИС составляет 50 МГц. При этом на любом мониторе происходит нормальная синхронизация.

Read more... )

Я всячески приветствую всякие комментарии, пожелания, советы (если они дельные) и всё прочее, что мои уважаемые френды захотят сообщить мне в комментариях. Пишите, не стесняйтесь!

Эту запись вы также можете прочитать в моём блоге http://32bit.me/?p=2174

32bit_me: (Default)
Продолжение. Начало.

Проект видеоадаптера переделан под использование видео ЦАП ADV7123. Схема подключения приведена на рисунке:


(по клику откроется полный размер).

Код проекта приведён на гитхабе (ссылка). Это тестовый код, который выводит на монитор поле разноцветных квадратов.

По сравнению с предыдущей версией, в которой использовался резистивный ЦАП, увеличена разрядность с 2-х до 8-и бит на цвет, и существенно улучшилось качество изображения.

Фото тестовой картинки:

32bit_me: (Default)
Модуль расчёта хэша MD5 на Verilog, тест:

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал и освоил на практике воркбенч SoCKit Lab, две части, Hardware и Software.

Данная программа лабораторных работ основана на системе на кристалле (SoC) Altera Cyclone V. SoC состоит из двух процессорных ядер ARM Cortex A9 и FPGA, которые соединены мостами и могут взаимодействовать друг с другом. Первое руководство, Hardware, выполняется в Quartus II, и описывает конфигурирование и подключение периферии к процессору, а также симуляцию системы в ModelSim.

Вторая часть, Software, описывает процесс загрузки Linux, компиляцию простейшей программы (мигание светодиодом), отладку программы в ARM DS-5 Embedded Development Suite, и основы работы с SignalTap II Logic Analyzer в режиме совместной отладки программного кода и FPGA-проекта.


pic1

Надо сказать, что это совсем не просто, и все лабораторные работы получилось далеко не с первого раза. Но тем они и интересны.

PS: где скачать: http://rocketboards.org/foswiki/Documentation/ArrowSoCKitEvaluationBoard, здесь куча материалов по SoCKit, в том числе zip-ы

SoCKIT_Materials_13.1.zip, SoCKIT_Materials_14.0.zip, SoCKIT_Materials_14.1.zip. Скачиваем, распаковываем, там лежат pdf-ы с описанием лабораторных и с файлами проектов Quartus II, DS-5, Signal Tap II и пр. Они отличаются, в зависимости от версии Quartus II. Я делал для версии 14.0.
32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Пусть в проекте FPGA необходимо ПЗУ, в которое записана определённая информация, имеющаяся у нас в виде бинарного файла. ПЗУ, как правило, реализуются на блоках BRAM, в которые при инициализации FPGA записывается требуемое содержимое.
Файлы инициализации памяти BRAM для FPGA, могут иметь формат MIF (Memory Initialization File) или формат HEX.

DSC_0522_EDIT

Нужный модуль памяти можно сгенерировать в Quartus II с помощью MegaWizard, в ISE — с помощью Xilinx Core Generator. Кроме этого, в QuartusII возможно использование специальной директивы:

1
reg [7:0] mem[0:2047] /* synthesis ram_init_file = "test.mif" */;

Эта директива позволяет создать RAM, инициированную значениями из файла .MIF. Использование RAM с предустановленными значениями, это очень плохая идея, но в качестве ROM такую память использовать вполне можно. Проблема в том, что эту директиву понимает только Quartus II, никакой кроссплатформенности.

Quartus II предоставляет редактор файлов памяти, и возможность загрузки файлов .mif и .hex, Xilinx Core Generator требует загрузки файла .coe, имеющего другой формат, нежели MIF. Однако хочется иметь кроссплатформенное решение, которое не зависело бы от платформы. Таким вариантом является генерация ROM в виде case-конструкции:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
always@(posedge clk)
begin
  case(in)
  ...
  11'h00d: out = 8'h99;
  11'h00e: out = 8'h81;
  11'h00f: out = 8'h7e;
  11'h010: out = 8'h7e;
  11'h011: out = 8'hff;
  11'h012: out = 8'hdb;
  11'h013: out = 8'hff;
  11'h014: out = 8'hc3;
  11'h015: out = 8'he7;
  11'h016: out = 8'hff;
  ...
  endcase
end

Полезная ссылка: различные конструкции для генерации разных типов RAM, ROM и других модулей можно найти в руководстве Altera «Recommended HDL Coding Styles»: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/qts_qii51007.pdf
Я написал две простые утилиты, которая преобразует бинарный файл в MIF и в тело конструкции case.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Итак, сумматор чисел в формате IEEE 754 с разрядностью 32 или 64 бита.

Исходники можно скачать на Github: https://github.com/arktur04/FPU.

КДПВ (кликабельно, та же картинка, что и в предыдущем посте):

Read the rest of this entry »

32bit_me: (Default)
Временная диаграмма, развёрнутая на трёх мониторах. Картика кликабельна.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

В задачах, связанных с арифметическими функциями, часто необходимо подсчитать количество нулей в старших разрядах числа. Эту функцию можно реализовать по-разному.

Итак, вариант 1:

1
2
3
4
5
6
7
8
9
10
11
12
function [ZERO_DATA_WIDTH - 1: 0] zero_cnt;
input [DATA_WIDTH - 1: 0] in;
integer i;
begin
  zero_cnt = DATA_WIDTH;
  for(i = DATA_WIDTH - 1; i >= 0; i = i - 1)
  begin
    if(in[i] && zero_cnt == DATA_WIDTH)
	   zero_cnt = DATA_WIDTH - i - 1;
  end
end
endfunction

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Это не совсем книга, впрочем, это просто документ, стилевой гайд по Verilog  фирмы Cisco System.

pic

Объём небольшой, всего 17 страниц. Описывается стиль кода, отступы, именование сигналов и регистров, и т.п.

Лично мне не вполне нравится тот стиль, который описан в документе, например, документ рекомендует выравнивать все декларации сигналов, комментарии и т.п. «в столбик», да ещё с использованием табуляций.  Но наличие любого стайлгайда лучше, чем отсутствие такового, тем более при командной работе.

Любой стиль кодирования есть всего лишь отражение чьих-то вкусов, не существует «единственно верного» стиля.

Такой документ, даже если вы придерживаетесь другого стиля кодирования, может послужить образцом для составления вашего собственного стилевого руководства.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал книгу »FPGA prototyping by Verilog examples», очень понравилось.
Обычно в таких книгах приводится синтаксис языка и какие-либо примеры проектов, часто далёкие от практики. В этой книге описываюься примеры взаимодействия с периферийными устройствами: клавиатурой, мышью, VGA-мониторм, памятью SRAM. Примеры приведены в расчёте на плату фирмы Digilent с FPGA семейства Spartan-3, но приведённые примеры практически не содержат чего-то специфического именно для данного семейства FPGA.

fpga_vlog_front

Во второй половине книги рассмотрен встраиваемый микроконтроллер PicoBlaze, его ассемблер, и приводятся примеры программ на нём.

В книге рассматривается метод синтеза RTL-кода из ASMD-диаграмм (представление алгоритма, сочетающее в себе графическую блок-схему алгоритма и граф конечного автомата).

Также в книге рассматривается проект простой видеоигры, которую можно сделать на плате Digilent (или на любой другой, если позволяют аппаратные возможности).

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Целью проекта является разработка видеоадаптера на FPGA. Выходом видеоадаптера является VGA, на данный момент поддерживается глубина цвета 6 бит (по 2 бита на цвет RGB).
Разъём VGA подключен к FPGA по следующей схеме:

schematics

 

Резисторы R1-R6 образуют простейший ЦАП, для начала хватит такого, если нужна большая глубина цвета, то лучше использовать специализированные микросхемы видеоЦАП, например ADV7123.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Предыдущая часть здесь.

pic

Продолжим разработку FPU. В предыдущих частях был рассмотрен делитель вещественных чисел Деление является самым сложным в реализации арифметическим действием. Следующим по сложности идёт сложение, а самой простой операцией является умножение. В этой части рассмотрен умножитель.

Read the rest of this entry »

32bit_me: (Default)
В процессе чтения разных форумов по ретротемам, заинтересовался этим процессором. Я его раньше никогда не изучал и как-то не приходилось сталкиваться на практике, а сейчас заинтересовался.

микро к1801вм1 м
Read more... )
32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Представляю вашему вниманию модель микросхемы памяти IS61WV102416 на verilog с учетом задержек.Модель предназначена для построения тестов устройств, содержащих SRAM. Модель не синтезируема.


wave1


is61wv102416bll-10tl-102416-tssop48


Микросхема IS61WV102416 является асинхронной быстродействующей статической памятью объемом 16М и организацией 1М х 16. Имеются варианты с временем доступа 8, 10 и 20нс. В данной модели установлены тайминги для варианта 10нс.


Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: часть 1, часть 2.

Итак, тест готов, теперь можно написать сам код делителя.

Для удобства нарисуем интерфейс модуля в таком виде:


pic1

Read more... )

32bit_me: (Default)

Итак, продолжим разработку FPU.

Первая часть статьи находится здесь: http://32bit.me/?p=1902. Напомню также, что все исходники, приведенные в статье, можно скачать на гитхабе.

waveform-1

Картинка для привлечения внимания (кликабельно)

Read more... )
В следующей статье мы нарисуем остальную сову напишем сам модуль div_float.

Комментарии, вопросы и пожелания приветствуются. Не стесняйтесь.
P.S. Если кто-либо знает, как в ЖЖ вставлять исходники с подсветкой синтаксиса, подобно тому, как это делается в Wordpress, напишите, пожалуйста.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Не задумывались ли вы о том, как работает FPU процессора? Казалось бы, там всё довольно просто. Есть стандарт представления чисел с плавающей точкой, IEEE754, а сама реализация арифметических операций очевидна.
Но на самом деле, за кажущейся простотой скрыто множество нюансов.

Read more... )

Ссылка на гитхаб: https://github.com/arktur04/FPU

В репозитории содержится исходный текст программы генерации тестового файла (на C++, разработана в Linux, однако не содержит ничего Linux-специфического и должна собираться в любом компиляторе под Windows, возможно, с минимальными изменениями), сам тестовый файл, и программа-калькулятор, позволяющая переводить числа из hex-вида во float и наоборот и производить с числами арифметические действия (на С#, разработана в среде Visual Studio 2012).

По мере продвижения я буду пополнять репозиторий.

В следующий раз мы напишем простой тестбенч для операции деления.

Продолжение следует.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прекрасная книга, просто лучшая на эту тему! Однозначно, это должен прочитать каждый!

1193755

 

В книге рассматриваются разные аспекты проектирования систем на FPGA: от правильного стиля кодирования на Verilog и преимуществ/недостатков синхронного и асинхронного сброса до грамотной организации питания микросхем и разводки PCB.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал книгу «Advanced Digital Design with the Verilog HDL».

0130891614

Книга не очень понравилась. Объем очень большой (> 1000 страниц), но очень много воды, и сведения самого начального уровня. Может быть, некоторый интерес представляет глава 10, где описываются реализации различной арифметики: сложения, умножения и деления. Но опять же, только самые простейшие вещи, и очень многословно.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Хорошая книга по методологии разработки SoC. Приводится много полезных советов по кодингу на Verilog, в том числе.

0014c897

Profile

32bit_me: (Default)
32bit_me

April 2017

S M T W T F S
      1
2 34 5678
9101112 1314 15
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:43 pm
Powered by Dreamwidth Studios