Введение в Verilog. Стандартные этапы проектирования устройства на FPGA Ввод описания проекта Моделирование, преобразование пользовательского описания.

Презентация:



Advertisements
Похожие презентации
Язык Verilog, основные особенности. Сравнение с языком VHDL. Модель логического элемента на Verilog. ЛЕКЦИЯ N
Advertisements

Verilog Tutorial Ando KI Spring Copyright © by Ando KiVerilog tutorial ( 2 ) Contents Design flow overview Hello world GUI based Command.
1. Определить последовательность проезда перекрестка
Урок повторения по теме: «Сила». Задание 1 Задание 2.
2007Архитектура ЭВМ1 VII. Элементы и узлы ЭВМ Триггеры Одноступенчатый асинхронный RS-триггер Триггер – логический элемент, который может находиться в.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Язык описания аппаратуры Verilog ЛЕКЦИЯ N
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
ОСНОВЫ ЯЗЫКА VHDL 1. Структурное представление проекта 2 Язык VHDL предоставляет возможность структуризации описания так называемые структурные архитектурные.
Date: Filename:SCL_3e.1 SIMATIC S7 Siemens AG All rights reserved. Создание и вызов блоков.
Рисуем параллелепипед Известно, что параллельная проекция тетраэдра, без учета пунктирных линий, однозначно определяется заданием проекций его вершин (рис.

Программирование на Pascal. Темы Повторение. Составные логические условия Повторение. Составные логические условия Повторение. Составные логические условия.
1 Лекция 3 ЭВМ – средство обработки информации. Комбинационные схемы и конечные автоматы. Информатика 2 Министерство образования и науки Российской Федерации.
Школьная форма Презентация для родительского собрания.
ЛЕКЦИЯ Экскурс в язык описания аппаратуры VHDL.
© 2007 Cisco Systems, Inc. All rights reserved.SMBE v Cisco SMB University for Engineers Настройка маршрутизаторов Cisco с интегрированными услугами.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Встроенные Системы Часть 7. Технология разработки и производства ИС Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Транксрипт:

Введение в Verilog

Стандартные этапы проектирования устройства на FPGA Ввод описания проекта Моделирование, преобразование пользовательского описания в компоненты и примитивы, входящие в состав библиотеки FPGA. RTL – Registr Transport Level (Уровень регистровых пересылок) Размещение полученных вентилей в ячейки Временной анализ Непосредственное размещение на микросхему и разводка связей Временной анализ с учетом параметров микросхемы и пользовательских ограничений Конец разработки Создание файла с конфигурацией устройства Программирование микросхемы Пользовательские ограничения Логический синтез, преобразование файлов в схему соединений Моделирование на логическом уровне САПР

Verilog tutorial ( 3 ) Contents Етапы проектирования Модули Объявление Создание экземпляров Подключение портов Test-bench файлы Adder (разработка сумматора) Проектирование RTL -моделирование Синтез Gate-level моделирование Приложение: создание проекта adder в GUI (ModelSim)

Verilog tutorial ( 4 ) Объявление модуля Модуль – базовая единица проекта. Модуль должен быть задекларирован (объявлен). подготовка Mодуль может быть конкретизирован (создан экземпляр) использование Определение модуля должно вкладывается между ключевыми словами module и endmodule. module module_name (список портов); // in, out, inout объявление портов // signal/wire/reg объявление сигналов // data variable объявление переменных // sub-module создание экземпляров и // подключение // initial, always, function, task функциональные блоки, // описывающие логику работы компонента endmodule module ModF (A, B, C); input A; inout [7:0] B; output [7:0] C; // описания // описания f endmodule ModF f f A B C

Verilog tutorial ( 5 ) Создание экземпляра модуля module ModG (AA, BB, CC); input AA; inout [7:0] BB; output [7:0] CC; wire a; wire [7:0] b; // описание g // создание екземпляра f ModF Umodf (.A(a),.B(b),.C(CC)); endmodule ModG g g AA BB CC f f a b ModF f f A B C создание экземпляра Соединение портов Имя экземпляра Имя модуля

Соединение портов Позиционный принцип – сопоставление портов в объявлении модуля и в его экземпляре: module ModF (A, B, C); ModF Umod f (a, b, cc); Ключевой принцип - явное указание, какой сигнал подключить к какому порту модуля module ModF (A, B, C); ModF Umodf (.A(a),.B(b),.C(CC)); // в любом порядке Порт Сигнал ModG g g AA BB CC f f a b ModF f f A B C

Типы данных Типы данных Verilog Net - соединение (связь, цепь) wire – простой провод wand, wor – монтажное И/ИЛИ tri, tri0, tri1, triand, trior, trireg - соединения с третьим состоянием supply0 – постоянный 0 (GND) supply1 – постоянная 1 (VCC/VDD) Variable - переменная Reg - регистр

Introduction to Verilog Basic ( 8 ) Nets (2/2) A B Y wire Y; // declaration assign Y = A & B; B A Y wand Y; // declaration assign Y = A; assign Y = B; wor Y; // declaration assign Y = A; assign Y = B; AY dr tri Y; // declaration assign Y = (dr) ? A : z; z or Z means high-impedance.

Verilog значения Verilog tutorial ( 9 ) Integer constants Decimal (123, 4d15) Hexadecimal (h12F, 4haBcD) Octal (o763, 3o7) Binary (b1010, 4b1100) // Unsized constant numbers 659 // is a decimal number d659 'h837FF // is a hexadecimal number 'o7460 // is an octal number 4af // is illegal (hexadecimal format requires 'h) – 'h4af // Sized constant numbers 4'b1001 // is a 4-bit binary number 5'D3 // is a 5-bit decimal number 3'b01x // is a 3-bit number with the least significant bit unknown 12'hx // is a 12-bit unknown number 16'hz // is a 16-bit high-impedance number reg [7:0] my_vector_reg; reg [3:0] a, b, c, d;

Verilog tutorial ( 10 ) Правила соединения портов Входной порт модуля должен иметь тип соединение (связь) Выходной порт модуля может иметь тип или соединение или регистр (переменная) Двунаправленные порты должны иметь только тип соединения input output inout reg or net net reg or net

Четырехзначный алфавит Verylog Значение 0Низкий логический уровень или ложно 1Высокий логический уровень или истинно X, x Неопределенный логический уровень Z, z Высокоимпедансный логический уровень, третье состояние Символ «?» так же используется для альтернативного представления «Z» состояния

Verilog tutorial ( 12 ) Test-bench файлы «Тest-bench» это специальный уровень кода, который создает пользовательские входные параметры (stimulus) для тестируемого проекта (DUT, design under test) и определяет, производит ли DUT ожидаемые (golden) выходные сигналы «Тest-vector» установка значений для всех входных портов DUT(stimuli) и ожидаемых значений (образцов) выходных портов тестируемого модуля «Тest-bench», который создает пользовательские входные сигналы, образцы выходных сигналов DUT и сравнивает выходные сигналы с ожидаемыми (golden) результатами называется однородно-проверяющим. Golden model – идеальная модель, на выходе выдает идеальные ожидаемые результаты Reference model – базовая модель, взятая за основу, работает идентично, но может быть создана с помощью других функций, например математических или аппаратная реализация, созданная сторонними разработчиками.

Verilog tutorial ( 13 ) Разработка структурной схемы сумматора Сумматор цифровая схема которая выполняет сложение чисел Одноразрядный полусумматор складывает два однобитных двоичных числа (А и В). На выходе формируется значение суммы (S) и переноса (C). Полный одноразрядный сумматор складывает три однобитный значения (C, A and B). На выходе формируется значение суммы (S) и переноса (C). Многоразрядный сумматор Суммирование с распространением переносов Перенос из младшего полусумматора учитывается старшим полусумматором Picture has been adopted from Wikipedia (

Структура директории adder design sim syn sim.gate Папка с исходными кодами проекта Папка с результатами симуляции Папка с результатами синтеза Папка с результатами Gate-level симуляции

Проект adder - сумматор Содержимое папки design top.v full_adder.v half_adder_gate.v half_adder_rtl.v stimulus.v full_adder_ref.v checker.v

full_adder clk reset Начальные установки Запись входных значений во входные регистры, формирование результата reset clk cin in1 in2 sum cout A B S C half_adder module half_adder (S, C, A, B); output S, C; input A, B; // описание модуля endmodule Модуль full_adder

Verilog tutorial ( 17 ) Модуль full_adder (1/3) module full_adder(sum,cout,in1,in2,cin,clk,resetb); output sum, cout; /выходные сигналы input in1, in2, cin; /входные сигналы input clk, resetb; /входные сигналы / объявление типов связей, сигналов и соединений wire sum, cout; /соединение (проводник) reg rin1, rin2, rcin; /переменная (регистр) wire s1, c1, s2, c2; /соединение (проводник) /процедурный блок - процесс (posedge clk or negedge resetb) begin if (resetb==1'b0) begin rin1

Verilog tutorial ( 18 ) Full adder (2/3) module full_adder(sum,cout,in1,in2,cin,clk,resetb); output sum, cout; input in1, in2, cin; input clk, resetb; wire sum, cout; reg rin1, rin2, rcin; wire s1, c1; wire s2, c2; (posedge clk or negedge resetb) begin if (resetb==1'b0) begin rin1

Verilog tutorial ( 19 ) Full adder (3/3) module full_adder(sum,cout,in1,in2,cin,clk,resetb); output sum, cout; input in1, in2, cin; input clk, resetb; wire sum, cout; reg rin1, rin2, rcin; wire s1, c1; wire s2, c2; (posedge clk or negedge resetb) begin if (resetb==1'b0) begin rin1

Структурная модель полусумматора (gate level) module half_adder_gate (S, C, A, B); output S, C; input A, B; and UAND (C, A, B); xor UXOR (S, A, B); endmodule A B S C Структурное описание – структура объекта, как композиция компонентов, соединенных между собой и обменивающихся сигналами. Структурная модель - создание экземпляров примитивов и модулей (использование библиотечных модулей, или создание собственных) использование библиотечных модулей and и xor

Поведенческое описание объектов Полусумматор. Процессная форма описания поведения (Behavior model) module half_adder_beh1 (S, C, A, B); output S, C; input A, B; wire S, C; (A or B) begin if ((A==0) or (B==1)) and ((A==0) or (B==1)) begin S

Поведенческое описание объектов Полусумматор. Потоковое описание архитектуры (Data-flow model (RTL-модель)) (RTL, Register Transfer Level, Уровень регистровых передач) module half_adder_rtl (S, C, A, B); output S, C; input A, B; wire S, C; assign C = A & B; assign S = A ^ B; endmodule A B S C Data-flow модель – модель потоков данных Описывает поведение архитектуры объекта, потоки данных функционирующие на уровне архитектуры объекта и их преобразование. Поведение архитектуры описывается с помощью операторов непрерывных назначений (присваиваний), которые представляют собой параллельные процессы. Объект представлен архитектурным описанием, где минимальная видимая единица примитив RTL уровня - RTL модель

Модели мультиплексора (Behavior model) (sel or a or b or c or d) if (sel == 2b00) out = a; else if (sel == 2b01) out = b; else if (sel == 2b10) out = d; else out = d; (sel or a or b or c or d) case (sel) 2b00: out = a; 2b01: out = b; 2b10: out = c; default: out = d; endcase assign c = (s) ? b : a; sel[1]sel[0]out 00a 01b 10c 11d MX a b out d c sel[0] sel[1] module mx_beh (sel, a, b, c, d, out); output out; input sel, a, b, c, d; wire a, b, c, d; wire [1:0]sel; / description endmodule

Test-bench: stimulus module stimulus(out1,out2,out3,clk,resetb); output out1,out2,out3; input clk,resetb; reg out1,out2,out3; initial begin out1

Verilog tutorial ( 25 ) Test-bench: full_adder_ref module full_adder_ref(sum,cout,in1,in2,cin,clk,resetb); output sum, cout; input in1, in2, cin; input clk, resetb; wire sum, cout; reg rin1, rin2, rcin; (posedge clk or negedge resetb) begin if (resetb==1'b0) begin rin1

Verilog tutorial ( 26 ) Test-bench: checker module checker(in1,in2,cin,sum,cout,sumr,coutr,clk,resetb); input in1,in2,cin,sum,cout,sumr,coutr,clk,resetb; (clk) begin if ({cout,sum}=={coutr,sumr}) $display($time,,"correct"); else $display($time,,"error result=%b expect=%b", {cout, sum}, {coutr,sumr}); end endmodule Time – системная функция возвращает текущее модельное время, целое 64-битное значение времени, масштабируемое соответственно единице временного масштаба модуля ( timescale ), установленной в нем $time ; Di splay – системная задача, вывод информации с новой строки на экран. $display ( «текст с символами форматирования», list_of_arguments );

Verilog tutorial ( 27 ) Test-bench: top module top; wire in1, in2, cin; wire sum, cout, sumr, coutr; reg clk, resetb; full_adder Ufa (.sum(sum),.cout(cout),.in1(in1),.in2(in2),.cin(cin),.clk(clk),.resetb(resetb)); full_addr_ref Urf (.sum(sumr),.cout(coutr),.in1(in1),.in2(in2),.cin(cin),.clk(clk),.resetb(resetb)); stimulus Ust (.out1(in1),.out2(in2),.out3(cin),.clk(clk),.resetb(resetb)); checker Uck (.in1(in1),.in2(in2),.cin(cin),.sum(sum),.cout(cout),.clk(clk),.resetb(resetb)); / генератор синхроимпульсов с периодом 5ns initial begin clk

Verilog tutorial ( 28 ) Contents Design flow overview Hello world GUI based Command based Module Declaration Instantiation Port Test-bench Adder example What is adder Directory structure Example design Simulation Synthesis Gate-level simulation

Verilog tutorial ( 29 ) Contents Adder example What is adder Directory structure Example design Simulation Synthesis Gate-level simulation Map & PnR Static timing analysis FPGA-based co-simulation Использование САПР

Результаты моделирования

Verilog tutorial ( 32 ) Моделирование с использованием ModelSim GUI Invoking ModelSim form start menu Create new project Add design files Compile Wave setting Simulation Invoking ModeSim project

Verilog tutorial ( 33 ) Invoking ModelSim from start menu

Verilog tutorial ( 34 ) File->New->Project

Verilog tutorial ( 35 ) Specify project name and location

Verilog tutorial ( 36 ) File->Add to Project->Existing File

Verilog tutorial ( 37 ) Add files

Verilog tutorial ( 38 ) After adding files

Verilog tutorial ( 39 ) Compile->Compile All

Verilog tutorial ( 40 ) After compilation

Verilog tutorial ( 41 ) View->Debug Windows->Wave

Verilog tutorial ( 42 ) After adding wave window

Verilog tutorial ( 43 ) Select Library tab

Verilog tutorial ( 44 ) Run simulation with top-level

Verilog tutorial ( 45 ) After simulation

Verilog tutorial ( 46 ) Selecting signals to be view

Verilog tutorial ( 47 ) After selection

Verilog tutorial ( 48 ) Run-All

Verilog tutorial ( 49 ) Create a new project Invoke ModelSim File New Project Specify Project Name and Project Location DIY

Verilog tutorial ( 50 ) Add existing file Add the Verilog design file DIY

Verilog tutorial ( 51 ) Compile DIY

Verilog tutorial ( 52 ) Compile DIY

Verilog tutorial ( 53 ) Compile DIY

Verilog tutorial ( 54 ) Simulation DIY

Verilog tutorial ( 55 ) Quit There should be hello.mpf, which is ModelSim project file. DIY

Схема до лабораторної роботи 4 Verilog tutorial ( 56 )