Создание и отладка проекта в среде разработки XIlinx Vivado — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Создание и отладка проекта в среде разработки XIlinx Vivado

2019-08-03 526
Создание и отладка проекта в среде разработки XIlinx Vivado 0.00 из 5.00 0 оценок
Заказать работу

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ.. 1

ВВЕДЕНИЕ.. 2

1 СОЗДАНИЕ И ОТЛАДКА ПРОЕКТА В СРЕДЕ РАЗРАБОТКИ XILINX VIVADO.. 3

1.1 Теоретические данные. 3

1.2 Создание проекта в Xilinx Vivado. 4

2.3 Тестирование. 9

2 СОЗДАНИЕ МНОГОУРОВНЕВОГО ПРОЕКТА В XILINX ISE. ИМПОРТ ИЗ XILINX ISE В XILINX VIVADO.. 12

2.1 Теоретические данные. 12

2.2 Создание проекта в Xilinx ISE.. 14

2.3 Тестирование. 17

2.4 Перенос проекта в Xilinx Vivado. 19

ЗАКЛЮЧЕНИЕ.. 21

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 22

ПРИЛОЖЕНИЕ А.. 23

ТЕКСТ ПРОГРАММЫ ДЕШИФРАТОРА.. 23

И ТЕСТОВОГО МОДУЛЯ.. 23

ПРИЛОЖЕНИЕ Б.. 25

ТЕКСТ ПРОГРАММЫ АСИНХРОННОГО.. 25

ИНТЕРФЕЙСА И ТЕСТОВОГО МОДУЛЯ.. 25

 

 


Изм.
Лист
№ докум.
Подпись
Дата
Лист
2
 
Разраб.  
Кузнецов А.В.
Провер.  
Орлов В.П.
 
 
Н. Контр.
 
Зав.каф.
 
Описание прибора на языке Verilog
Лит.
Листов
31
ИВЗО ППБЗ-01-15  
ВВЕДЕНИЕ

В настоящее время проектирование больших систем осуществляется с применением так называемых языков описания высокого уровня (Hardware Description Languages – HDL) VHDL и Verilog. Язык описания аппаратуры Verilog был разработан фирмой Gateway Design Automation в 1984 г. После поглощения последней фирмой Caddence язык получил широкое распространение среди разработчиков и стал не менее популярен, чем VHDL.

В отличие от VHDL, структура и синтаксис которого напоминают такие «сложные» языки, как АДА или АЛГОЛ, Verilog обеспечивает более лаконичный и удобочитаемый синтаксис, характерный для очень популярного в среде программистов и разработчиков встроенных систем языка Си [1].

Vivado – САПР от компании Xilinx, предназначенная для создания цифровых устройств с применением языков высокого уровня.

В данной лабораторной работе необходимо ознакомиться со средами программирования ПЛИС Xilinx Vivado и Xilinx ISE, в процессе создания модели дешифратора и интерфейса RS-232.

 

 


СОЗДАНИЕ И ОТЛАДКА ПРОЕКТА В СРЕДЕ РАЗРАБОТКИ XILINX VIVADO

Цель работы: освоить среду разработки Xilinx Vivado. Разобрать пример с созданием дешифратора, его симуляцией, увидеть его схему. Разработать собственный проект в соответствии с заданием.

 

Теоретические данные

Дешифратор (декодер) – устройство, преобразующее кодовую комбинацию, поступающую на входы, в сигнал на одном из выходов. В общем случае это устройство с m входами и n выходами, причём число выходов n = 2m. Как правило, входы обозначаются весами двоичных разрядов, а выходы нумеруются от 0 до n­1. Условное графическое обозначение дешифратора представлено на рисунке 1.1.

 

Рисунок 1.1 – Условное графическое обозначение дешифратора

 

Работу дешифратора с тремя входами и восемью выходами можно представить следующей таблицей истинности (таблица 1.1).

 

Номер входного набора

Входы

Выходы

A2 A1 A0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 0 0 1 0 0 3 0 1 1 0 0 0 0 1 0 0 0 4 1 0 0 0 0 0 1 0 0 0 0 5 1 0 1 0 0 1 0 0 0 0 0 6 1 1 0 0 1 0 0 0 0 0 0 7 1 1 1 1 0 0 0 0 0 0 0

Таблиц 1.1 – Таблица истинности для дешифратора

 

Тестирование

Далее нужно написать небольшой «Testbench» – ещё один модуль, который необходим для симуляции проекта. В нём мы зададим временные параметры, в которые происходят изменения сигналов. Важно: тестбенч не имеет входных и выходных параметров. После объявления модуля описываются переменные, с которыми работает тестбенч, затем объявляется объект класса «Decoder».

После того, как тестбенч написан, можно снова сохранить файл и запустить поведенческую симуляцию по кнопке «Run Simulation» в разделе «Flow Navigator». На симуляции можно увидеть временные диаграммы (рисунок 1.8) тех сигналов, которые описаны в тестбенче. Это важный и обязательный этап проверки описанной схемы (описали модуль – описали схему). Те сигналы, которые состоят из нескольких «проводов» (являются шинами), можно развернуть, также можно регулировать масштаб временных диаграмм.

 

Рисунок 1.8 – Временная диаграмма работы модуля

 

Также можно посмотреть, какую схему составил Vivado на основе написанного кода. Для этого в меню «Flow Navigator», в разделе «RTL Analysis» нажимаем «Schematic».

Изначально, схема находится в свернутом состоянии, в виде блока, имеющего входы и выходы (рисунок 1.9). Для просмотра внутреннего строения блока (рисунок 1.10) нужно нажать на крестик в верхнем левом углу.

Рисунок 1.9 – Блок модуля

 

Рисунок 1.10 – Схема модуля на основе написанного кода

 

Теоретические данные

Xilinx ISE – САПР, с помощью которой можно проводить реализацию различных проектов на ПЛИС до 7-го поколения включительно.

RS-232 (англ. Recommended Standard 232) – уровень асинхронного интерфейса. В настоящее время используется для устаревшего или специального оборудования, в данный момент вытеснен интерфейсом USB. Данный интерфейс обеспечивает передачу данных или каких-либо сигналов. На данный момент разъём имеется на некоторых персональных компьютерах, так как некоторые устройства используют или использовали RS-232, например, компьютерные мышки.

Асинхронный интерфейс (UART) предполагает последовательную передачу данных по одному биту в строго определённый промежуток времени. Существует ряд общепринятых скоростей (биттрейтов), с которыми передаются данные: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 бит в секунду.

Принято, что ждущим (неактивным) состоянием входа и выхода UART является логическая «1». Перед началом передачи информационной последовательности бит выдается сигнал о начале – стартовый бит, соответствующий логическому «0». После приёма стартового бита происходит приём ещё 9 бит (для 8-битных сигналов): 8 информационных и проверочный стоп-бит, соответствующий логической «1». В случае если стоп-бит оказывается неравен единице, UART фиксирует ошибку. В результате можно получить временную диаграмму, представленную на рисунке 2.1.

 

Рисунок 2.1 – Временная диаграмма

 

При передаче больших массивов информации важно обеспечить временное хранение данных. Для этого в информатике используется буфер. Часто буфер используется, если различны скорости приёма и передачи данных. На рисунке 2.2 изображён буфер, который может хранить m сигналов по n + 1 бит. Также в нём имеются входы сброса, загрузки и чтения: если на вход загрузки «load» приходит сигнал «1», буфер считывает информацию, приходящую по каналу «data», если на входе чтения «read» сигнал «1», то буфер выдаёт информацию на выход «out». При сбросе (на входе «reset» уровень «1») буфер очищается от информации.

 

Рисунок 2.2 – Пример буфера

Буфер может быть организован по принципам FIFO (First In First Out) или LIFO (Last In First Out). В первом случае первый информационный блок, который в буфер вошёл, будет выдан первым при сигнале на чтение. А во втором на чтение будет выдан последний блок, вошедший в буфер.

 

Тестирование

Для тестирования создается новый модуль. Алгоритм его создания ничем не отличается от создания рабочего модуля за одним не большим исключением: тип рекомендуется указывать «Verilog Test Fixture» (рисунок 2.9). В этом случае, в фале, сразу генерируется основной код тестового модуля.

Рисунок 2.9 – Меню создания тестового модуля

 

Затем, по требованию программы, привязываем тестовый модуль к верхнему модулю в дереве.

После того, как тестовый модуль написан, можно запустить симуляцию. Для этого, в разделе «Design» должен стоять флажок на пункте «Simulation», в разделе «Hierarchy» выделен тестовый модуль. После щелчка по пункту «Simulate Behavioral Model» из раздела «ISim Simulator» запуститься симуляция.

Симуляция проходит в несколько этапов. Сначала, всегда, запускается процесс проверки синтаксиса (Behavioral Check Syntax). Если ошибок не обнаружено происходит симуляция модели. В дополнение нужно сказать, что процесс проверки ошибок синтаксиса (Behavioral Check Syntax) можно запускать отдельно.

В результате появляется окно «ISim» (рисунок 2.10). В нем можно увидеть диаграмму входных и выходных сигналов. Также, в разделе «Instance and Process Name» можно увидеть другие сигналы, не попавшие на диаграмму. Чтобы увидеть уровень напряжения нужного сигнала, необходимо перетащить его на панель «Name».

Рисунок 2.10 – Окно результатов симуляции

 

ЗАКЛЮЧЕНИЕ

В ходе выполнения работы были изучены среды программирования Vivado и ISE от фирмы Xilinx.

С помощью САПР Vivado была построена модель работы дешифратора.

С помощью САПР ISE, была построена модель работы асинхронного интерфейса RS-232, состоящего из таких модулей, как: дешифратор, мультиплексор, счетчик, буфер. Затем, данный проект был импортирован в среду Xilinx Vivado.

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


 

ПРИЛОЖЕНИЕ А

ТЕКСТ ПРОГРАММЫ ДЕШИФРАТОРА

И ТЕСТОВОГО МОДУЛЯ

 


module Decoder _1(

input [2:0] A, //трехразрядная шина входа А

Begin

//только при разрешении работы

If (EN)

Begin

X =0; //обнулить шину

X [ A ]=1; //А-тому разряду положить "1"

End

End

Endmodule


module Testbench_1;

//!Тестбенч не имеет входных и выходных параметров.

//После объявления модуля описываются переменные

//с которыми работает тестбенч

reg [2:0] A;

reg EN;

wire [7:0] X;

//зетем объявляется объект класса decoder

Decoder _1 dc _1(A, EN, X);

Initial

Begin

A=2;

EN=1;

#5;

A=3;

#4;

A=7;

#9;

EN=0;

A=0;

#7

EN=1;

#6

A=5;

End

Endmodule


module Decoder_2(

input [2:0] A,

Input EN,

output [7:0] X

);

Generate

//цикл по переменной i, определяющей число выходных

//разрядов модуля

for(i = 0;i < 8;i = i+1)

Begin

//если работа разрешена

// и входной операнд равен номеру выхода

//присвоить выходному разряду (X [ i ]) 1 иначе(?) 0

assign X[i]=EN & A==I? 1:0;

End

Endgenerate

Endmodule


module Testbench_2();

wire [7:0] x;

reg en;

reg [2:0] a;

Decoder_2 dc_2(.a(a),.en(en),.x(x));

Initial

Begin

en = 0;

a = 0;

#5

en = 1;

Forever

#5

a = a+1;

#50

$finish;

End

Endmodule



ПРИЛОЖЕНИЕ Б

Module Decoder(

input [2:0] A,

Input CLK,

output [7:0] X

);

wire CLK;

wire [2:0] A;

reg [7:0] X;

always @*

Begin

X=8'b00000000; //=0

X[A] = 1;

End

Endmodule

Module Counter(

Input CLK,

Input CE,

output [2:0] Q

);

wire CLK;

wire CE;

reg [2:0] Q = 0;

always @(posedge CLK)

If(CE)

Begin

Q=Q+1;

End

Endmodule


Module Multiplexer(

Input CLK,

Input CE,

input [2:0] A,

input [7:0] D,

Output F

);

wire CLK;

wire CE;

wire [2:0] A;

wire [7:0] D;

wire [7:0] DD;

reg F;

Decoder DC_1(CLK, A, D);

always @*

If(CE)

Begin

F=D[A]&&DD[A];

End

Endmodule


Module BuferFIFO(

Input RST,

Input LOAD,

Input READ,

input [7:0] DATA,

output [7:0] OUT

);

wire RST;

wire LOAD;

wire READ;

wire [7:0] DATA;

reg [7:0] OUT;

reg [3:0] i;

reg [7:0] database [6:0];

Initial

Begin

i=0;

OUT = 0;

End

always @ (

Posedge READ or

Posedge RST or

Posedge LOAD)

Begin

If (RST)

Begin

for(i=0; i<=6; i=i+1)

Begin

database[i] = 8'HXX;

End

End

Else

If(LOAD)

Begin

for(i=0; i<=6; i=i+1)

Begin

database[6-i] = database[6-(i+1)];

End

database[0]=DATA;

End

Else

If(READ)

Begin

OUT=database[6];

for(i=0; i<=6; i=i+1)

Begin

database[6-i] = database[6-(i+1)];

End

End

End

Endmodule

Module Transmitter(

input [7:0] DATA,

input RST_buf,

input LOAD_buf,

input READ_buf,

Input CLK,

Output WORD

);

wire [7:0] DATA;

wire RST_buf;

wire LOAD_buf;

wire READ_buf;

wire CLK;

wire WORD;

wire [7:0] out_buf;

wire [2:0] timer;

Counter CT_1(CLK, READ_buf, timer);

BuferFIFO BF_1(RST_buf, LOAD_buf, READ_buf, DATA, out_buf);

Multiplexer MUX_1(CLK, READ_buf, timer, out_buf, WORD);

Endmodule


module Testbench;

//Входы (Inputs)

reg [7:0] DATA;

reg RST_buf;

reg LOAD_buf;

reg READ_buf;

reg CLK;

//Выходы (Outputs)

wire WORD;

//Instantiate the Unit Under Test (UUT)

Transmitter uut (

DATA(DATA),

.RST_buf(RST_buf),

.LOAD_buf(LOAD_buf),

.READ_buf(READ_buf),

CLK(CLK),

WORD(WORD)

);

Initial

Forever

Begin

#5;

CLK = ~CLK;

End

Initial

Begin

// Инициализация входов

DATA = 83;

RST _ buf = 0;

LOAD_buf = 1;

READ_buf = 0;

CLK = 0;

#10;

LOAD_buf =0;

#10;

LOAD_buf =1;

DATA = 80;

#10;

LOAD_buf = 0;

#10;

LOAD_buf = 1;

DATA = 65;

#10;

LOAD_buf = 0;

#10;

LOAD_buf = 1;

DATA = 82;

#10;

LOAD_buf = 0;

#10;

LOAD_buf = 1;

DATA = 84;

#10;

LOAD_buf = 0;

#10;

LOAD_buf = 1;

DATA = 65;

#10;

LOAD_buf = 0;

#10;

LOAD_buf = 1;

DATA = 75;

#10;

LOAD_buf = 0;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#5;

READ_buf = 1;

#80;

READ_buf = 0;

#100;

End

Endmodule

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ.. 1

ВВЕДЕНИЕ.. 2

1 СОЗДАНИЕ И ОТЛАДКА ПРОЕКТА В СРЕДЕ РАЗРАБОТКИ XILINX VIVADO.. 3

1.1 Теоретические данные. 3

1.2 Создание проекта в Xilinx Vivado. 4

2.3 Тестирование. 9

2 СОЗДАНИЕ МНОГОУРОВНЕВОГО ПРОЕКТА В XILINX ISE. ИМПОРТ ИЗ XILINX ISE В XILINX VIVADO.. 12

2.1 Теоретические данные. 12

2.2 Создание проекта в Xilinx ISE.. 14

2.3 Тестирование. 17

2.4 Перенос проекта в Xilinx Vivado. 19

ЗАКЛЮЧЕНИЕ.. 21

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 22

ПРИЛОЖЕНИЕ А.. 23

ТЕКСТ ПРОГРАММЫ ДЕШИФРАТОРА.. 23

И ТЕСТОВОГО МОДУЛЯ.. 23

ПРИЛОЖЕНИЕ Б.. 25

ТЕКСТ ПРОГРАММЫ АСИНХРОННОГО.. 25

ИНТЕРФЕЙСА И ТЕСТОВОГО МОДУЛЯ.. 25

 

 


Изм.
Лист
№ докум.
Подпись
Дата
Лист
2
 
Разраб.  
Кузнецов А.В.
Провер.  
Орлов В.П.
 
 
Н. Контр.
 
Зав.каф.
 
Описание прибора на языке Verilog
Лит.
Листов
31
ИВЗО ППБЗ-01-15  
ВВЕДЕНИЕ

В настоящее время проектирование больших систем осуществляется с применением так называемых языков описания высокого уровня (Hardware Description Languages – HDL) VHDL и Verilog. Язык описания аппаратуры Verilog был разработан фирмой Gateway Design Automation в 1984 г. После поглощения последней фирмой Caddence язык получил широкое распространение среди разработчиков и стал не менее популярен, чем VHDL.

В отличие от VHDL, структура и синтаксис которого напоминают такие «сложные» языки, как АДА или АЛГОЛ, Verilog обеспечивает более лаконичный и удобочитаемый синтаксис, характерный для очень популярного в среде программистов и разработчиков встроенных систем языка Си [1].

Vivado – САПР от компании Xilinx, предназначенная для создания цифровых устройств с применением языков высокого уровня.

В данной лабораторной работе необходимо ознакомиться со средами программирования ПЛИС Xilinx Vivado и Xilinx ISE, в процессе создания модели дешифратора и интерфейса RS-232.

 

 


СОЗДАНИЕ И ОТЛАДКА ПРОЕКТА В СРЕДЕ РАЗРАБОТКИ XILINX VIVADO

Цель работы: освоить среду разработки Xilinx Vivado. Разобрать пример с созданием дешифратора, его симуляцией, увидеть его схему. Разработать собственный проект в соответствии с заданием.

 

Теоретические данные

Дешифратор (декодер) – устройство, преобразующее кодовую комбинацию, поступающую на входы, в сигнал на одном из выходов. В общем случае это устройство с m входами и n выходами, причём число выходов n = 2m. Как правило, входы обозначаются весами двоичных разрядов, а выходы нумеруются от 0 до n­1. Условное графическое обозначение дешифратора представлено на рисунке 1.1.

 

Рисунок 1.1 – Условное графическое обозначение дешифратора

 

Работу дешифратора с тремя входами и восемью выходами можно представить следующей таблицей истинности (таблица 1.1).

 

Номер входного набора

Входы

Выходы

A2 A1 A0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 0 0 1 0 0 3 0 1 1 0 0 0 0 1 0 0 0 4 1 0 0 0 0 0 1 0 0 0 0 5 1 0 1 0 0 1 0 0 0 0 0 6 1 1 0 0 1 0 0 0 0 0 0 7 1 1 1 1 0 0 0 0 0 0 0

Таблиц 1.1 – Таблица истинности для дешифратора

 


Поделиться с друзьями:

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.