Язык Verilog, основные особенности. Сравнение с языком VHDL. Модель логического элемента на Verilog. ЛЕКЦИЯ N+1 02.06.09.

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



Advertisements
Похожие презентации
Язык описания аппаратуры Verilog ЛЕКЦИЯ N
Advertisements

Язык описания аппаратуры Verilog Особенности языка Verilog 1.Вычисления управляются потоком данных 2.Есть поддержка параллельных процессов,
2007Архитектура ЭВМ1 VII. Элементы и узлы ЭВМ Триггеры Одноступенчатый асинхронный RS-триггер Триггер – логический элемент, который может находиться в.
ОСНОВЫ ЯЗЫКА VHDL 1. Структурное представление проекта 2 Язык VHDL предоставляет возможность структуризации описания так называемые структурные архитектурные.
ЛЕКЦИЯ Экскурс в язык описания аппаратуры VHDL.
ЛЕКЦИЯ Язык описания аппаратуры VHDL.
ОСНОВЫ ЯЗЫКА VHDL 1. Описание цифровых автоматов 2 Общие сведения об автоматах Устройства, содержащие элементы памяти (ЭП), имеют некоторое внутреннее.
ЯЗЫКИ ОПИСАНИЯ ДИСКРЕТНЫХ УСТРОЙСТВ 1. HDL-программа как модель проектируемого устройства 2 Языковое описание устройства - это текст, сохраняемый в одном.
ОСНОВЫ ЯЗЫКА VHDL 1. Описание типовых дискретных устройств 2 Комбинационные логические схемы Представление функции в форме бинарного дерева решений основано.
Основы языка VHDL Московский Государственный Университет Приборостроения и Информатики.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
V.II Основы языка VHDL (Very high speed integration circuits Hardware Description Language) Стандарт VHDL-87, Стандарт VHDL-93, Стандарт VHDL-AMS Язык.
Date: Filename:SCL_3e.1 SIMATIC S7 Siemens AG All rights reserved. Создание и вызов блоков.
Встроенные Системы Часть 7. Технология разработки и производства ИС Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
ЛЕКЦИЯ Экскурс в язык описания аппаратуры VHDL.
Введение в Verilog. Стандартные этапы проектирования устройства на FPGA Ввод описания проекта Моделирование, преобразование пользовательского описания.
ОСНОВЫ ЯЗЫКА VHDL 1. Параллельные операторы 2 Параллельные операторы это такие, каждый из которых выполняется при любом изменении сигналов, используемых.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
Program [ ] ; (заголовок программы) Var [ ] ; (раздел описания переменных) Begin (начало) Раздел операторов ; (команды) End. (конец)
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Транксрипт:

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

История создания языка Verilog (Gateway Design Automation) Verilog (Cadence Design Systems) Verilog-95 (IEEE , Open Verilog International) Verilog-2001 (IEEE , Open Verilog International) Verilog-2005 (IEEE , Accellera) Время IEEE 1364 IEEE P Язык Verilog был разработан Филом Морби (Phil Morby) в 1985 году в фирме Gateway для внутреннего использования. В 1989 году компания Cadence приобрела Gateway и открыла Verilog для общественного пользования. В 1995 году Verilog стал стандартом IEEE.

Сравнение языков VHDL и Verilog ОсобенностиVHDLVerilog Объем кода100%75% Алфавит моделирования 9 значений {U, X, 0, 1, Z, W, L, H, - } 4 значения {0,1,X,Z} Логическая сила сигналов -8 значений Системные функции контроля временных соотношений assert8 функций Атрибуты сигналов+- Количество ключевых слов 9773 Внешние данные Для расширения языка используются внешние библиотеки и пакеты Не имеет подобных возможностей Различаются переменные и сигналы Только переменные, но разных типов: net или register

Сравнение языков VHDL и Verilog VHDLVerilog Объект проектаПроектный модуль Интерфейс + архитектураИнтегрированное тело модуля Раздел описания и исполняемый раздел не пересекаются Декларации и параллельные операторы размещаются в модуле произвольном порядке Пользователь может вводить свои типы данных Язык не позволяет создавать пользователем новые типы данных Язык строгой типизации Данные разных типов совместимы в одном выражении processalways Можно задать несколько архитектур- Не позволяет описывать одновременно минимальные, типичные и максимальные задержки Позволяет описывать все виды задержек

Структурная организация HDL – модели VHDL – объект проекта состоит из двух частей: интерфейса и архитектурного тела Verilog – проектный модуль объединяет интерфейс и исполняемый раздел в одном блоке, называемом телом модуля. library IEEE; use IEEE.STD_LOGIC_1164.all; entity nand2_my is -- интерфейс port( A : in STD_LOGIC; B : in STD_LOGIC; Y : out STD_LOGIC ); end nand2_my; architecture nand2_my of nand2_my is begin Y

Моделирование задержек library IEEE; use IEEE.STD_LOGIC_1164.all; entity nand2_my is -- интерфейс port( A : in STD_LOGIC; B : in STD_LOGIC; Y : out STD_LOGIC ); end nand2_my; architecture nand2_my of nand2_my is begin Y

Моделирование разных задержек library IEEE; use IEEE.STD_LOGIC_1164.all; entity nand2_my is -- интерфейс port( A : in STD_LOGIC; B : in STD_LOGIC; Y : out STD_LOGIC ); end nand2_my; architecture nand2_my of nand2_my is begin Y

Моделирование разных задержек

Модель D - триггера D R Q С DFF

Модель сумматора VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.std_logic_unsigned.all; entity adderN_B is generic (n : integer := 10); port (a, b: in std_logic_vector (n downto 1); cin: in std_logic; sum: out std_logic_vector (n downto 1); cout: out std_logic); end adderN_B; architecture behavior of adderN_B is begin process variable vsum, a1: std_logic_vector(n+1 downto 1); begin wait on a, b, cin; a1 := 0 & a; vsum :=a1 + b + cin; sum

Алфавит моделирования {0, 1, Z, X} 0 – логический ноль или результат сравнения false 1 – логическая единица или результат сравнения true Z – состояние высокого импеданса Х – неопределенное состояние Strength1: supply1, strong1, pull1, large1, weak1, medium1, small1, highz1 Strength0: supply0, strong0, pull0, large0, weak0, medium0, small0, highz0 Силы сигналов

Присваивание значений Виды присваиваний Непрерывные (соединения) Процедурные (соединения, переменные) Блокирующие `= Не блокирующие `

Непрерывное присваивание wire [15:0] sum, a, b; wire cin, cout; assign {cout, sum} = a + b + cin;

Процедурное присваивание module block; reg a, b, c, d, e, f; initial begin a = #10 1; // модельное время = 10 b = #2 0; // модельное время = 12 c = #4 1; // модельное время = 16 end initial begin d

Процедурное присваивание module block; reg a, b, c, d, e, f; initial begin #10 a = 1; // модельное время = 10 #2 b = 0; // модельное время = 12 #4 c = 1; // модельное время = 16 end initial begin #10 d

Управление задержками #10 rega = regb; #d rega = regb; // d определен как параметр #((d+e)/2) rega = regb; #regr regr = regr + 1; // задержка равна содержимому regr reg enable, a, b; initial begin wait (!enable) #10 a = 1; // модельное время = 110 #10 b = 1; // модельное время = 120 end initial #100 enable = 0;

Управление задержками a = #5 b; // эквивалентно: begin temp = b; #5 a = temp; end a clk) b; // эквивалентно: begin temp = clk) a = temp; end

Параллельные и последовательные блоки begin #10 a = 1; // #10 #20 a = 0; // #30 end r = 1; #250 r = 0; end clock) q = 0; // posege clock) q = 1; // следующий end // posege fork #30 a = 0; // #30 #10 a = 1; // #10 join clock) q = clock) w = 1; join join areg = breg; end

Системные функции $monitor (строка форматирования, список переменных); $monitor(%h, output); $display и $write (строка форматирования, список переменных); $display(Output in %h hex and %d decimal, output, output); $finish #1000 $finish;

Модульная структура // Файл lazy.v: module lazy (out, in, clk); parameter size = 1, delay = 1; input [0:size-1] in; input clk; output [0:size-1] out; reg [0:size-1] out; clk) #delay out = in; endmodule // Файл main.v: `include lazy.v module main; reg clk; wire [1:10] out_a, in_a; wire [1:5] out_b, in_b; lazy #(10, 15) mod_a (out_a, in_a, clk); lazy mod_b (out_b, in_b, clk); #800 $finish; always #100 clk = ~clk; initial begin clk = 0; in_a = 10b11111_01011; in_b = 5b10101; end endmodule

Преимущества и недостатки + Прост для изучения + Активно поддерживается сообществом + Существует богатая инструментальная и библиотечная база + Подходит для синтеза FPGA и ASIC, т.е. создавался специально для вентильного уровня + Функционал языка расширяем при помощи VPI (ранее PLI) - Слабые возможности для проектирования на системном уровне - Сложности в использовании библиотек и вообще больших проектов - Более медленный в сравнении с VHDL, так как является интерпретируем языком