Каталог статей


Выбранная схема!!!


7577
Проектирование и реализация пути передачи данных микропроцессора

Проектирование и реализация пути передачи данных микропроцессора

Цифровые проекты можно точно и кратко описать с помощью языков описания аппаратного обеспечения (HDL), например Verilog и VHDL. Оба языка подходят для моделирования, проектирования и проверки цифровых схем, но имеют уникальный набор сильных и слабых сторон.

Цифровые схемы находят применение в самых разных областях: от систем управления и радиолокационных систем до средств связи. Широкий спектр областей применения стал возможен благодаря быстрому моделированию и прототипированию с использованием HDL и реконфигурируемого оборудования, такого как программируемые пользователем вентильные матрицы (FPGAs). FPGA — это море настраиваемых схем или логических блоков (CLB), встроенных в матрицу переключателей. CLB состоят из справочных таблиц, триггеров и мультиплексоров, которые можно подключать для реализации цифровой операции. Несколько CLB могут быть объединены в сеть для формирования целых цифровых систем. Одной из таких цифровых систем является микропроцессор.

Довольно популярны две микропроцессорные архитектуры: фон Неймана и Гарвардская. Архитектура фон Неймана использует одну и ту же память для хранения данных и инструкций, while архитектура Гарварда использует разные памяти для данных и инструкций. Тем не менее, обе архитектуры используют два блока: тракт данных и тракт управления. Путь данных работает с данными, путь управления while работает с инструкциями и, соответственно, генерирует сигналы управления для управления каналом данных.

Эта статья посвящена проектированию и реализации пути передачи данных микропроцессора. Здесь мы используем семейство FPGA Xilinx Artix 7 и VHDL. Для прототипирования доступны многочисленные макетные платы. Мы использовали плату Digilent Nexys 4 DDR.

Путь к данным

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

Рис. 1: Путь к данным и путь управления

Путь данных, показанный на рис. 1, имеет вход данных, вход управляющего слова, выход слова состояния и выход данных. Ширина слова данных указывается в битах. Для наших проектов у нас есть универсальный шаблон, который хранит ширину данных и может быть изменен глобально.

Важные компоненты пути данных включают мультиплексоры, шину данных, арифметико-логическое устройство (АЛУ), барабанный сдвиг, умножитель, файл регистров, универсальный регистр сдвига и выходные буферы.

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

Последовательные схемы имеют смысл прохождения времени и упорядочения операций по времени. У этих есть память. Их выходные данные зависят от текущих и предыдущих значений входов и предыдущих значений выходов. Последовательные схемы имеют тактовый сигнал, и все изменения состояния синхронизируются по фронтам тактового сигнала. Мультиплексор, шина данных, АЛУ, умножитель и буфер являются комбинационными схемами. Регистровый файл, бочкообразный сдвиговый регистр и универсальный сдвиговый регистр представляют собой последовательные схемы.

Архитектура пути к данным

Рис. 2 показана архитектура тракта данных. Строки управления, состояния и адреса для различных блоков не показаны. Шина данных — это многобитный интерфейс, к которому драйверы подключаются через свои выходные буферы. Входы различных блоков могут быть напрямую подключены к шине данных. Здесь ширина шины данных является общим названием «ширина».

Рис. 2. Архитектура пути к данным

Используются два мультибитных мультиплексора 2:1: один используется для выбора между входными данными и вычисленным результатом вывода пути данных для записи в файл регистров. Другой используется для выбора одного из выходов АЛУ и умножителя в качестве выхода пути данных.

Файл регистров — это набор локальных регистров, используемых путем передачи данных. Имеется один входной и два выходных порта. Два выхода являются двумя входными операндами для АЛУ или умножителя. Вход используется для записи в один из регистров. Регистр записи выбирается по адресу записи, а два регистра чтения выбираются по двум адресам чтения.

Один из двух операндов проходит через переключатель бочонка. Бочкообразный сдвигатель сдвигает биты на указанное количество влево или вправо. Новые биты слева и справа равны 0 или вращаются вокруг слова.

Два операнда помимо бочкообразного сдвига передаются в АЛУ и множитель в качестве входных данных. ALU способен выполнять одну из восьми операций. Множитель умножает два операнда и обеспечивает мультиплексированный вывод.

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

Различные части, показанные на рис. 2, обсуждаются вместе с кодами VHDL в следующих разделах.

Инструмент синтеза

В качестве инструмента синтеза используется Xilinx Vivado (рис. 3). Он управляет проектированием, синтезом, реализацией и конфигурацией устройства. Порядок действий следующий:

1. Создайте проект и выберите Artix 7 FPGA, который вы хотите использовать
2. Добавьте исходные файлы для дизайнов
3. Моделирование проектов и проверка результатов
4. Синтезируйте дизайны
5. Укажите ограничения ввода/вывода (I/O) и сгенерируйте файлы xsd
6. Повторно синтезируйте дизайны
7. Реализуйте дизайн
8. Сгенерировать битовые (конфигурационные) файлы устройства
9. Открыть (подключиться через UART) подключение устройства
10. Настройте устройство с помощью битовых файлов
11. Проверка конструкции с помощью переключателей и светодиодов на плате
Рис. 3. Инструмент синтеза и плата FPGA

Мультибитный буфер

Рис. 4 показан многобитный буфер вместе с кодом MuBuff.vhd. Выход принимает то же значение, что и вход if. En имеет высокий уровень. В противном случае выходные биты имеют высокий импеданс. На светодиодах можно увидеть биты 1 и 0. На рис. 5 показана его реализация на плате Nexys 4.

Рис. 4: Код VHDL для многобитного буфера
Рис. 5: Моделирование и реализация буфера

Мультиплексор

Мультибитный мультиплексор 2:1 может быть спроектирован с использованием двух мультибитных буферов. На рис. 6 показан мультиплексор 2:1. На рис. 7 показано определение пакета с буфером в качестве компонента. Код иерархического стиля мультиплексора показан ниже (MUXnbit2to1.vhd.):
— n-битный мультиплексор 2:1 с использованием буферов с тремя состояниями
— MUXnbit2to1.vhd
библиотека IEEE;
используйте IEEE.STD_LOGIC_1164.ALL;
библиотека upcomp; используйте upcomp.SubComp.all;
объект Muxnbit2to1 – это
общий(ширина: целое число:=8);
Порт (I0,I1: в STD_LOGIC_VECTOR
(ширина от 1 до 0);
q: out STD_LOGIC_VECTOR (ширина-1
до 0);
sel : в STD_LOGIC);
завершить Muxnbit2to1;

Архитектура Mnb221 Muxnbit2to1
сигнал nsel:STD_LOGIC;
начало
nsel<=не выбрано;
TB1: Порт общей карты MuBuff (ширина)
map(I0,q,nsel);
TB2: Порт общей карты MuBuff (ширина)
map(I1,q,sel);
завершить Mnb221;

Рис. 6: Мультибитный мультиплексор 2:1
Определение пакета с буфером в качестве компонента
Рис. 7. Определение пакета с буфером в качестве компонента

Все компоненты проекта добавляются в библиотеку upcomp; SubComp — это пакет библиотеки, в котором описаны все компоненты иерархических проектов. Полный код SubComp.vhd включен в DVD EFY этого месяца. Код моделируется, синтезируется, реализуется и проверяется на плате Nexys 4.

Переключатель ствола

Бочковый сдвиговый регистр — это регистр сдвига, который можно спроектировать с использованием мультиплексоров. На рис. 8 показан барабанный переключатель. Биты сдвигаются влево или вправо на количество, подаваемое в качестве слова сдвига. В младшие биты подаются 0, когда бит rot имеет низкий уровень, и замещаются старшим битом, когда бит rot имеет высокий уровень. Описание поведения барабанного переключателя реализовано в BarrelShifter.vhd.

Рис. 8: Механизм переключения передач

АЛУ

Арифметико-логический блок — это сердце тракта данных. Он выполняет одну из нескольких арифметических и логических операций, выбранных строками выбора. В таблице I показаны различные операции, которые АЛУ выполняет над двумя операндами «a» и «b». Индекс «i» представляет i-й бит. Входные данные «a» и «b» преобразуются в «x» и «y» согласно таблице. Промежуточные биты «x» и «y» подаются в многобитный полный сумматор. Полный сумматор разработан с использованием половинных сумматоров.

Код Transform1bit.vhd объясняет схему преобразования битов согласно таблице истинности в таблице. АЛУ спроектирован с использованием схемы полного сумматора и преобразования битов. Реализация кода приведена в ALUnbit.vhd.

Для кода операции 101 ALU также действует как компаратор. Если equ=1 и agb=1, «a» и «b» равны. Если equ=0 и agb=1, «a» больше, чем «b». Если equ=0 и agb=0, «a» меньше, чем «b». Логика также справедлива для чисел со знаком.

Быстрый множитель

Цифровая обработка сигналов (DSP) требует быстрого умножения двух чисел. Если оба числа имеют определенную ширину, результат умножения будет в два раза больше ширины. Для этого требуются два слова, которые представляют низшую и высшую значимость. Вывод может быть мультиплексирован.

В коде Multiplier.vhd ниже показан код VHDL для многобитного множителя:
библиотека IEEE;
используйте IEEE.STD_LOGIC_1164.ALL;
библиотека upcomp; используйте upcomp.SubComp.all;
Множитель сущности:
общий(ширина: целое число:=8);
Порт (a,b: в STD_LOGIC_VECTOR
(ширина от 1 до 0);
OP: выход STD_LOGIC_VECTOR (ширина-1
до 0);
S0: в STD_LOGIC);
конечный множитель;
……………
……………
завершить FM;

Универсальный переключатель

Выходной сигнал умножителя или АЛУ передается через мультиплексор в универсальный сдвиговый регистр. Универсальный регистр сдвига способен выполнять побитовый сдвиг влево и вправо с опцией поворота или без нее. Базовым элементом регистра является триггер D-типа с асинхронным сбросом. В приведенном ниже коде показан триггер D-типа с асинхронным сбросом:
<эм> — D-шлепок с прозрачным —DFlipflop.vhd
библиотека IEEE;
используйте IEEE.STD_LOGIC_1164.ALL;
сущность Dflipflop — это
Порт ( d,clk,clr : в STD_LOGIC;
q :inout STD_LOGIC:=’0’);
завершить Dflipflop;

Архитектура DFF Dflipflop
начало
q<=’0’ if clr=’1’ else
d if (clk’event и clk=’0’ и
clr=’0’) else
q;
завершить DFF;

Сдвиговому регистру также необходимы мультиплексоры 2:1 и 4:1. В приведенном ниже коде показан мультиплексор 2:1:
— MUX 2:1 — MUX2to1.vhd
библиотека IEEE;
используйте IEEE.STD_LOGIC_1164.ALL;
объект MUX2to1 — это
Порт (I0,I1,S0: в STD_LOGIC;
q : out STD_LOGIC);
завершить MUX2to1;

архитектура MUX221 для MUX2to1

начать
q<=I0, когда S0=’0’ else
I1, когда S0=’1’ else
‘Z’;
завершить MUX221;
В приведенном ниже коде показан мультиплексор 4:1:
–4:1 MUX—MUX4to1.vhd
библиотека IEEE;
используйте IEEE.STD_LOGIC_1164.ALL;

объект MUX4to1 — это
Порт (I0,I1,I2,I3,S0,S1: в STD_
ЛОГИКА;
q : out STD_LOGIC);
завершить MUX4to1;

архитектура M421 MUX4to1
signal sel:STD_LOGIC_VECTOR(от 1 до 0);
начать
sel<=(S1,S0);
q<=I0 if sel="00" else I1 if
sel="01" else
I2, когда sel="10" else I3, когда
sel="11" else
‘Z’;
конец M421;
Код UniShiftReg.vhd реализует код VHDL для универсального регистра сдвига.

Зарегистрировать файл

Путь данных имеет набор адресных регистров, управляющие сигналы, а также входные и выходные данные которых подключены к общим портам ввода и вывода соответственно. Такой набор называется регистровым файлом. Ширина регистра задается общей «шириной». Ширина адреса равна «n», что дает 2n=m регистров. Имеется один входной порт и два выходных порта (порт A и порт B). Адрес записи выбирает регистр, в который записывается входное слово по заднему фронту тактового сигнала. Адрес записи декодируется декодером адреса. Порт A получает выходные данные регистра, на который ссылается адрес порта A. Порт B получает выходные данные регистра, на который ссылается адрес порта B. Для чтения слова используются два декодера адреса. Каждый регистр состоит из нескольких триггеров D-типа. Триггер D-типа модифицирован и включает сигнал включения, который управляет тактовым входом. Код DFFEn.vhd реализует триггер D-типа с сигналом включения.

Декодер адреса имеет входной сигнал шириной n бит и выходной бит 2n=m. Все выходные биты равны «0», за исключением одного, на который ссылается входной сигнал и который равен «1». Код AddrDec.vhd реализует код VHDL для декодера адреса.

Для хранения слова можно использовать несколько триггеров типа D. Такая схема называется регистром. Код Reg.vhd реализует код VHDL для регистра. Блок-схема файла регистра показана на рис. 9. Код RegFile.vhd реализует код VHDL для файла регистра.

Рис. 9: Зарегистрируйте файл

Интеграция путей данных

Теперь, когда у вас есть все компоненты пути данных, как показано на рис. 2, напишите код VHDL в структурном стиле для пути данных, как показано ниже:
–Путь к данным –DataPath.vhd
библиотека IEEE; используйте IEEE.STD_LOGIC_1164.
ВСЕ;
библиотека upcomp; используйте upcomp.SubComp.all;
DataPath объекта
………………
………………
конец DP;

Рис. 10 показана реализация пути данных на FPGA. На рис. 11 показана схема пути передачи данных.

Рис. 10: Реализация данных
Рис. 11: Схема пути к данным

Тестирование пути к данным

Путь данных требует большого количества операций ввода-вывода, которые плата Nexys 4 не поддерживает. Для этого требуется интеграция виртуального ввода-вывода и логического анализатора IP в проект. Дальнейшее развитие процессора выходит за рамки данной статьи, но заинтересованные читатели могут обратиться к соответствующему материалу в Интернете.

Эта статья познакомила читателей с проектированием путей передачи данных микропроцессора. Архитектура открыта для модификаций, и читатели могут придумать инновационные идеи по реализации путей передачи данных для современных микропроцессоров.


Категория: Железо | Добавил: Администратор (19.05.2026)
Просмотров: 78 | Рейтинг: 0.0/0


Всего комментариев: 0

Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов! Подробно тут!
Жалоба

ьте свои комментарии !!!!

Имя *:
Email:
Код *:

Copyright Zloy Soft (Company) © 2008 - 2026