ПЦУСБ/Лабораторная работа 4 — различия между версиями
ANA (обсуждение | вклад) м (→Порядок выполнения работы) |
ANA (обсуждение | вклад) м (→Порядок выполнения работы) |
||
(не показаны 7 промежуточных версий 1 участника) | |||
Строка 3: | Строка 3: | ||
== Цель работы == | == Цель работы == | ||
− | Получить базовые навыки работы в программе ISE (создание проекта, подключение файла конфигурации, синтез схемы, сохранение синтезированной схемы в VHDL формате, программирование ПЛИС). | + | Получить базовые навыки работы в программе ISE (создание проекта, подключение файла конфигурации, синтез схемы, сохранение синтезированной схемы в VHDL формате, программирование ПЛИС) и освоить моделирование VHDL-нетлиста схемы с учетом задержек после синтеза и размещения в ПЛИС. |
− | + | ||
== Задание == | == Задание == | ||
− | Реализовать заданный VHDL-моделью цифровой блок в ПЛИС, используя отладочную плату [http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,799&Prod=S3BOARD Spartan-3 Starter Kit], общий вид которой представлен на рисунке 1. | + | Реализовать заданный VHDL-моделью цифровой блок в ПЛИС, используя отладочную плату [http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,799&Prod=S3BOARD Spartan-3 Starter Kit], общий вид которой представлен на рисунке 1 и провести моделирование исходного VHDL-описания и синтезированной схемы с учетом задержек, подключаемых из SDF-файла. |
− | + | ||
== Порядок выполнения работы == | == Порядок выполнения работы == | ||
− | # Создать новый проект в программе ISE | + | # Подготовка к работе |
+ | #* Программы необходимые в работе: | ||
+ | #** файловый менеджер TotalCommander; | ||
+ | #** текстовый редактор Emacs; | ||
+ | #** ISE; | ||
+ | #** графический редактор для обработки скриншотов; | ||
+ | #** ModelSim. | ||
+ | #* Создать в файловой системе каталог для проекта (например, lab04_var01), в котором создать следующие подкатологи: vhd, work, ise, lib. | ||
+ | #** В папку vhd скопировать VHDL-модели заданного компонента, компонента верхнего уровня (top.vhd), файл конфигурации (top.ucf). | ||
+ | #** В папку lib распаковать архив библиотеки ([http://simhard.com/ftp/files/pcusb/simprim.zip simprim.zip]) логических элементов ПЛИС, необходимый для моделирования синтезированной схемы в программе ModelSim. | ||
+ | #** В папке work будут созданы библиотеки ModelSim. | ||
+ | #** В папке ise будет размещаться проект программы ISE. | ||
+ | # Используя программу Emacs, вставить заданный компонент в модуль верхнего уровня, используя операторы ''component'' и ''port map''. | ||
+ | # Создать новый проект в программе ISE (иконка для запуска программы на рабочем столе). | ||
#* Добавить в проект VHDL-модули (VHDL-файлы): | #* Добавить в проект VHDL-модули (VHDL-файлы): | ||
#** модифицированный модуль верхнего уровня (подключить через port map компонент из задания) | #** модифицированный модуль верхнего уровня (подключить через port map компонент из задания) | ||
Строка 19: | Строка 30: | ||
#* Добавить в проект описание конфигурации выводов (UCF-файл) | #* Добавить в проект описание конфигурации выводов (UCF-файл) | ||
# Провести все этапы синтеза до генерации прошивки ПЛИС включительно | # Провести все этапы синтеза до генерации прошивки ПЛИС включительно | ||
− | #* Задать временное ограничение: частоту синхросигнала | + | #* <s>Задать временное ограничение: частоту синхросигнала</s> |
+ | #* запрограммировать полученную прошивку в ПЛИС | ||
# Просмотреть | # Просмотреть | ||
− | #* синтезированную схему (RTL описание и реализацию в базисе ПЛИС) ''(вставить в отчет)'' | + | #* синтезированную схему (RTL описание и реализацию в базисе ПЛИС) ''(скриншоты вставить в отчет)'' |
#* отчет о синтезе схемы ''(вставить в отчет)'' | #* отчет о синтезе схемы ''(вставить в отчет)'' | ||
# Сохранить синтезированное описание схемы в формате VHDL | # Сохранить синтезированное описание схемы в формате VHDL | ||
Строка 27: | Строка 39: | ||
# Провести моделирование исходной VHDL-модели и синтезированной схемы с учетом задержек распространения сигнала, полученных после размещения схемы в ПЛИС | # Провести моделирование исходной VHDL-модели и синтезированной схемы с учетом задержек распространения сигнала, полученных после размещения схемы в ПЛИС | ||
#* Написать тестбенч, включающий синтезированную схему и исходную VHDL-модель | #* Написать тестбенч, включающий синтезированную схему и исходную VHDL-модель | ||
− | #* Провести моделирование тесбенча с подключением SDF-файла для синтезированной схемы | + | #* Провести моделирование тесбенча с подключением SDF-файла для синтезированной схемы (библиотека [http://simhard.com/ftp/files/pcusb/simprim.zip simprim]) |
# Подготовить отчет, включающий: | # Подготовить отчет, включающий: | ||
#* Описание задания | #* Описание задания | ||
− | #* Исходные коды заданного компонента, модифицированного модуля верхнего уровня | + | #* Исходные коды заданного компонента, модифицированного модуля верхнего уровня, тесбенч. |
− | #* Скриншот синетезированной схемы | + | #* Скриншот синетезированной схемы (RTL и в базисе ПЛИС) |
#* Отчет о синтезе | #* Отчет о синтезе | ||
#* Временные диаграммы моделирования тесбенча | #* Временные диаграммы моделирования тесбенча | ||
Строка 92: | Строка 104: | ||
{| | {| | ||
| <div style="border: 2px solid #AEA; padding: 0.4em; border-bottom: none; border-right: none; background: HoneyDew"> | | <div style="border: 2px solid #AEA; padding: 0.4em; border-bottom: none; border-right: none; background: HoneyDew"> | ||
− | '''Листинг 1''' — VHDL-описание компонента верхнего уровня | + | '''Листинг 1''' — VHDL-описание компонента верхнего уровня ([{{SERVER}}/ftp/files/pcusb/lab04/top.vhd top.vhd]) |
---- | ---- | ||
<big><source lang="vhdl"> | <big><source lang="vhdl"> | ||
Строка 154: | Строка 166: | ||
{| width=500px | {| width=500px | ||
− | |{{Hider|Листинг файла конфигурации выводов ПЛИС (top.ucf)}} | + | |{{Hider|Листинг файла конфигурации выводов ПЛИС (([{{SERVER}}/ftp/files/pcusb/lab04/top.ucf top.ucf]))}} |
{{Файл|top.ucf|<big><source lang="text"> | {{Файл|top.ucf|<big><source lang="text"> | ||
NET "CLK" LOC = "T9" | IOSTANDARD = LVCMOS33 ; | NET "CLK" LOC = "T9" | IOSTANDARD = LVCMOS33 ; | ||
Строка 277: | Строка 289: | ||
== Варианты заданий == | == Варианты заданий == | ||
− | === Преобразователь из кода Грея в двоичный код 8-разрядного числа === | + | === 1. Преобразователь из кода Грея в двоичный код 8-разрядного числа === |
− | * входы подключить к переключателям | + | * входы подключить к переключателям (SW) |
− | * выходы подключить к линейке светодиодов | + | * выходы подключить к линейке светодиодов (LED) |
{| width=400px | {| width=400px | ||
− | |{{Hider|Листинг VHDL-модели}}{{Файл|gray_to_binary.vhd|<big><source lang="vhdl"> | + | |{{Hider|Листинг VHDL-модели ([{{SERVER}}/ftp/files/pcusb/lab04/gray_to_binary.vhd gray_to_binary.vhd])}}{{Файл|gray_to_binary.vhd|<big><source lang="vhdl"> |
library ieee; | library ieee; | ||
use ieee.std_logic_1164.all; | use ieee.std_logic_1164.all; | ||
Строка 310: | Строка 322: | ||
|} | |} | ||
− | |||
− | * входы подключить к переключателям | + | === 2. Преобразователь из двоичного кода в код Грея 8-разрядного числа=== |
− | * выходы подключить к линейке светодиодов | + | |
+ | * входы подключить к переключателям (SW) | ||
+ | * выходы подключить к линейке светодиодов (LED) | ||
{| width=400px | {| width=400px | ||
− | |{{Hider|Листинг VHDL-модели}}{{Файл|binary_to_gray.vhd|<big><source lang="vhdl"> | + | |{{Hider|Листинг VHDL-модели ([{{SERVER}}/ftp/files/pcusb/lab04/binary_to_gray.vhd binary_to_gray.vhd])}}{{Файл|binary_to_gray.vhd|<big><source lang="vhdl"> |
library ieee; | library ieee; | ||
use ieee.std_logic_1164.all; | use ieee.std_logic_1164.all; | ||
Строка 347: | Строка 360: | ||
− | |||
<!-- | <!-- | ||
+ | === 3. Счетчик числа единиц и определение четности N-разрядного числа=== | ||
+ | |||
{| width=400px | {| width=400px | ||
|{{Hider|Листинг VHDL-модели}}{{Файл|Имя файла|<big><source lang="vhdl"> | |{{Hider|Листинг VHDL-модели}}{{Файл|Имя файла|<big><source lang="vhdl"> | ||
Строка 356: | Строка 370: | ||
|}--> | |}--> | ||
+ | === 3. Умножитель (4-разрядное число × 4-разрядное число)=== | ||
− | + | * входы подключить к переключателям (SW) | |
− | + | * выходы подключить к линейке светодиодов (LED) | |
− | * входы подключить к переключателям | + | |
− | * выходы подключить к линейке светодиодов | + | |
{| width=400px | {| width=400px | ||
− | |{{Hider|Листинг VHDL-модели}}{{Файл|Имя файла|<big><source lang="vhdl"> | + | |{{Hider|Листинг VHDL-модели ([{{SERVER}}/ftp/files/pcusb/lab04/mult_4_4.vhd mult_4_4.vhd])}}{{Файл|Имя файла|<big><source lang="vhdl"> |
library ieee; | library ieee; | ||
use ieee.numeric_std.all; | use ieee.numeric_std.all; | ||
Строка 389: | Строка 402: | ||
− | === Сумматор (4-разрядное число + 4-разрядное число)=== | + | === 4. Сумматор (4-разрядное число + 4-разрядное число)=== |
− | * входы подключить к переключателям | + | * входы подключить к переключателям (SW) |
− | * выходы подключить к линейке светодиодов | + | * выходы подключить к линейке светодиодов (LED) |
{| width=400px | {| width=400px | ||
− | |{{Hider|Листинг VHDL-модели}}{{Файл|Имя файла|<big><source lang="vhdl"> | + | |{{Hider|Листинг VHDL-модели ([{{SERVER}}/ftp/files/pcusb/lab04/sum_4_4.vhd sum_4_4.vhd])}}{{Файл|Имя файла|<big><source lang="vhdl"> |
library ieee; | library ieee; | ||
use ieee.numeric_std.all; | use ieee.numeric_std.all; | ||
Строка 421: | Строка 434: | ||
− | === Дешифратор из 3 в 8 === | + | === 5. Дешифратор из 3 в 8 === |
− | * входы подключить к кнопкам | + | * входы подключить к кнопкам (BTN) |
− | * выходы подключить к линейке светодиодов | + | * выходы подключить к линейке светодиодов (LED) |
{| width=400px | {| width=400px | ||
− | |{{Hider|Листинг VHDL-модели}}{{Файл|decoder_3_in_8.vhd|<big><source lang="vhdl"> | + | |{{Hider|Листинг VHDL-модели ([{{SERVER}}/ftp/files/pcusb/lab04/decoder_3_in_8.vhd decoder_3_in_8.vhd])}}{{Файл|decoder_3_in_8.vhd|<big><source lang="vhdl"> |
library ieee; | library ieee; | ||
use ieee.std_logic_1164.all; | use ieee.std_logic_1164.all; |
Текущая версия на 10:44, 6 декабря 2013
- Лабораторная работа 1
- Лабораторная работа 2
- Лабораторная работа 3
- Лабораторная работа 4
Содержание |
Цель работы
Получить базовые навыки работы в программе ISE (создание проекта, подключение файла конфигурации, синтез схемы, сохранение синтезированной схемы в VHDL формате, программирование ПЛИС) и освоить моделирование VHDL-нетлиста схемы с учетом задержек после синтеза и размещения в ПЛИС.
Задание
Реализовать заданный VHDL-моделью цифровой блок в ПЛИС, используя отладочную плату Spartan-3 Starter Kit, общий вид которой представлен на рисунке 1 и провести моделирование исходного VHDL-описания и синтезированной схемы с учетом задержек, подключаемых из SDF-файла.
Порядок выполнения работы
- Подготовка к работе
- Программы необходимые в работе:
- файловый менеджер TotalCommander;
- текстовый редактор Emacs;
- ISE;
- графический редактор для обработки скриншотов;
- ModelSim.
- Создать в файловой системе каталог для проекта (например, lab04_var01), в котором создать следующие подкатологи: vhd, work, ise, lib.
- В папку vhd скопировать VHDL-модели заданного компонента, компонента верхнего уровня (top.vhd), файл конфигурации (top.ucf).
- В папку lib распаковать архив библиотеки (simprim.zip) логических элементов ПЛИС, необходимый для моделирования синтезированной схемы в программе ModelSim.
- В папке work будут созданы библиотеки ModelSim.
- В папке ise будет размещаться проект программы ISE.
- Программы необходимые в работе:
- Используя программу Emacs, вставить заданный компонент в модуль верхнего уровня, используя операторы component и port map.
- Создать новый проект в программе ISE (иконка для запуска программы на рабочем столе).
- Добавить в проект VHDL-модули (VHDL-файлы):
- модифицированный модуль верхнего уровня (подключить через port map компонент из задания)
- модель блока из заданного варианта задания.
- Добавить в проект описание конфигурации выводов (UCF-файл)
- Добавить в проект VHDL-модули (VHDL-файлы):
- Провести все этапы синтеза до генерации прошивки ПЛИС включительно
-
Задать временное ограничение: частоту синхросигнала - запрограммировать полученную прошивку в ПЛИС
-
- Просмотреть
- синтезированную схему (RTL описание и реализацию в базисе ПЛИС) (скриншоты вставить в отчет)
- отчет о синтезе схемы (вставить в отчет)
- Сохранить синтезированное описание схемы в формате VHDL
- Сгенерировать VHDL-нетлист синтезированной схемы и SDF-файл задержек
- Провести моделирование исходной VHDL-модели и синтезированной схемы с учетом задержек распространения сигнала, полученных после размещения схемы в ПЛИС
- Написать тестбенч, включающий синтезированную схему и исходную VHDL-модель
- Провести моделирование тесбенча с подключением SDF-файла для синтезированной схемы (библиотека simprim)
- Подготовить отчет, включающий:
- Описание задания
- Исходные коды заданного компонента, модифицированного модуля верхнего уровня, тесбенч.
- Скриншот синетезированной схемы (RTL и в базисе ПЛИС)
- Отчет о синтезе
- Временные диаграммы моделирования тесбенча
Описание доступных ресурсов ПЛИС


На рисунке 1 представлен внешний вид отладочной платы Spartan-3 Starter Kit, включающей ПЛИС фирмы Xilinx Spartan-3 (документация по микросхеме XC3S1000). В таблице 1 представлены основные параметры, характеризующие ПЛИС XC3S1000. На рисунке 2 показаны основные компоненты и интерфейсы размещённые на отладочной плате:
- генератор синхросигнала на 50 МГц;
- вход внешней синхронизации;
- внешняя память инициализации ПЛИС (Flash PROM XCF04S)
- внешнее ОЗУ (512К × 16 бит)
- три 40-выводных разъёма, на которые выведены пользовательские выводы ПЛИС
- полоска из 8 светодиодов
- четыре семисегментных индикатора
- 4 кнопки
- 8 переключателей
- порты
- PS/2
- VGA
- RS232 (COM-порт)
Device | System Gates |
Logic Cells |
CLB Array (One CLB = Four Slices) | Distributed RAM (bits1) |
Block RAM (bits 1) |
Dedicated Multipliers |
DCMs | Maximum User I/O |
Maximum Differential I/O Pairs | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Rows | Columns | Total CLBs | |||||||||
XC3S1000 | 1M | 17,280 | 48 | 40 | 1,920 | 120K | 432K | 24 | 4 | 391 | 175 |
Описание интерфейса блока верхнего уровня (TOP-модуль)
Листинг 1 — VHDL-описание компонента верхнего уровня (top.vhd) library ieee; use ieee.std_logic_1164.all; entity top is port( CLK : in std_logic; -- синхросигнал 50 МГц (T9) BTN : in std_logic_vector(3 downto 0); -- кнопки (L14 L13 M14 M13) SW : in std_logic_vector(7 downto 0); -- переключатели (K13 K14 J13 J14 H13 H14 G12 F12) -- полоска светодиодов LED : out std_logic_vector(7 downto 0); -- P11 P12 N12 P13 N14 L12 P14 K12 -- семисегментный индикатор SEG : out std_logic_vector(7 downto 0); -- P16 N16 F13 R16 P15 N15 G13 E14 AN : out std_logic_vector(3 downto 0); -- E13 F14 G14 D14 -- выводы интерфейса RS232 RXD : in std_logic_vector(1 downto 0); -- N10 T13 TXD : out std_logic_vector(1 downto 0); -- T14 R13 -- выводы интерфейса VGA GRB : out std_logic_vector(2 downto 0); -- T12 R12 R11 VH : out std_logic_vector(1 downto 0); -- T10 R9 -- выводы интерфейса PS2 PS2 : inout std_logic_vector(1 downto 0); -- M16 M15 -- выводы подключения внешнего ОЗУ ADDR : out std_logic_vector(17 downto 0); -- L3 K5 K3 J3 J4 H4 H3 G5 E4 E3 F4 F3 G4 L4 M3 M4 N3 L5 DATA : inout std_logic_vector(31 downto 0); -- N1 M1 K2 C3 F5 G1 E2 D2 D1 E1 G2 J1 K1 M2 N2 P2 R1 P1 -- L2 J2 H1 F2 P8 D3 B1 C1 C2 R5 T5 R6 T8 N7 CE : out std_logic_vector(1 downto 0); -- N5 P7 OE : out std_logic; -- K4 WE : out std_logic; -- G3 BSEL : out std_logic_vector(3 downto 0)); -- R4 P5 T4 P6 end; architecture beh of top is begin -- отключение неиспользуемых выводов ADDR <= "000000000000000000"; DATA <= "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"; CE <= "11"; OE <= '1'; WE <= '1'; BSEL <= x"0"; TXD <= "11"; PS2 <= "ZZ"; GRB <= "000"; VH <= "00"; LED <= x"00"; SEG <= x"00"; AN <= x"F"; end architecture beh; |
Листинг файла конфигурации выводов ПЛИС ((top.ucf))
|
Варианты заданий
1. Преобразователь из кода Грея в двоичный код 8-разрядного числа
- входы подключить к переключателям (SW)
- выходы подключить к линейке светодиодов (LED)
Листинг VHDL-модели (gray_to_binary.vhd)
|
2. Преобразователь из двоичного кода в код Грея 8-разрядного числа
- входы подключить к переключателям (SW)
- выходы подключить к линейке светодиодов (LED)
Листинг VHDL-модели (binary_to_gray.vhd)
|
3. Умножитель (4-разрядное число × 4-разрядное число)
- входы подключить к переключателям (SW)
- выходы подключить к линейке светодиодов (LED)
Листинг VHDL-модели (mult_4_4.vhd)
|
4. Сумматор (4-разрядное число + 4-разрядное число)
- входы подключить к переключателям (SW)
- выходы подключить к линейке светодиодов (LED)
Листинг VHDL-модели (sum_4_4.vhd)
|
5. Дешифратор из 3 в 8
- входы подключить к кнопкам (BTN)
- выходы подключить к линейке светодиодов (LED)
Листинг VHDL-модели (decoder_3_in_8.vhd)
|