Скачиваний:
4
Добавлен:
29.12.2022
Размер:
426.53 Кб
Скачать

Лабораторная работа. Разработка мультиплексоров и

сумматоров на ПЛИС

  1. Разработка мультиплексоров на ПЛИС

Задание на выполнение лабораторной работы

1. Описать схемы исследуемых цифровых устройств на языке Verilog.

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

4. Сделать выводы по результатам исследований.

Выполнение работы

  1. Описать схему мультиплексора на языке Verilog.

1-й способ (поведенческий):

module MULTIPLEXOR (A0, A1, D0, D1, D2, D3, Y);

input A0, A1, D0, D1, D2, D3;

output Y;

assign Y=(D0 & !A1& !A0) | (D1 & !A1& A0) | (D2 & A1& !A0) | (D3 & A1 & A0);

endmodule

2-й способ (описание мультиплексора через wire):

module MULTIPLEXOR (input A0, input A1, input D0, input D1, input D2, input D3,

output Y);

wire S1, S2, S3, S4, S5, S6;

NOT my_1_not ( .OUT(S1), .IN1(A0));

NOT my_2_not ( .OUT(S2), .IN1(A1));

AND3 my_1_and ( .OUT(S3), .IN1(S1), .IN2(S2), .IN3(D0));

AND2 my_2_and ( .OUT(S4), .IN1(A0), .IN2(D1));

AND3 my_3_and ( .OUT(S5), .IN1(S1), .IN2(A1), .IN3(D2));

AND3 my_4_and ( .OUT(S6), .IN1(A0), .IN2(A1), .IN3(D3));

OR4 my_or ( .OUT(Y), .IN1(S3), .IN2(S4), .IN3(S5), .IN4(S6));

endmodule

b) Компилировать проекты и получить экспериментальные данные в виде временных диаграмм, подтверждающие правильность работы исследуемого цифрового устройства. Представить результаты преподавателю.

c) Сделать выводы по результатам исследований.

  1. Разработка модулей высокого уровня на ПЛИС

на примере одно и 4-х битного сумматоров

  1. Основные сведения о сумматорах и их реализации на языке Verilog

Мы знаем про основные базовые логические элементы – и это тоже модули. Используем их в модуле более высокого уровня. Сделаем однобитный сумматор, а на его основе много битный сумматор (более высокого уровня).

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

Однобитный сумматор складывает два однобитных числа a и b. При выполнении сложения однобитных чисел может случиться «переполнение», то есть результат уже будет двухбитным (1+1=2 или в двоичном виде 1’b1+1’b1=2’b10). Поэтому включим в сумматор выходной сигнал переноса c_out.

Дополнительный входной сигнал c_in служит для приема сигнала переноса от сумматоров младших разрядов (при построении многобитных сумматоров).

Таблица истинности работы однобитного сумматора.

п/п

a

b

c_in

sum

c_out

Примечание

0

0

0

0

0

0

1

0

1

1

0

1

Перенос

2

1

0

0

1

0

3

1

1

1

1

1

Перенос

Примечание: С целью упрощения таблицы не все события в таблице перечислены для c_in, sum, c_out.

Структурные формулы работы однобитного сумматора с учетом минимизации учитывает все возможные события.

sum=(a^b) ^ c_in

c_out=((a^b) & c_in) ^ (a &b),

где символ «^» - сложение по модулю 2, символ «&» - логическая операция конъюнкция (and).

Схема в графическом виде имеет вид:

Опишем эту схему на языке Verilog, устанавливая в теле модуля экземпляры

других модулей. Мы установим в наш модуль 3 экземпляра модуля XOR и два экземпляра модуля AND2.

Порядок описания экземпляра модуля такой:

• название модуля, тип которого нам нужен (adder1) с указанием входов и выходов;

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

/*

* modul sum

* Cernov

* odnobitnyi summator

* rev:

* 0.1 ot 27_09_2014 pervaya versiya

*/

module sum

(

input a,

input b,

input c_in,

output sum,

output c_out

);

wire s1,s2,s3;

XOR

my_1_xor

(

.OUT (s1),

.IN1 (a),

.IN2 (b)

);

AND2 my_1_and2( .OUT (s3), .IN1 (a), .IN2 (b) );

XOR my_2_xor( .OUT (sum), .IN1 (s1), .IN2 (c_in) );

AND2 my_2_and2( .OUT (s2), .IN1 (s1), .IN2 (c_in) );

XOR my_3_xor( .OUT (c_out), .IN1 (s2), .IN2 (s3) );

endmodule

Опишем на языке Verilog однобитный сумматор на поведенческом уровне, то есть на основе структурных формул:

module adder1(input a, input b, input

c_in, output sum, output c_out);

assign sum = (a^b) ^ c_in;

assign c_out = ((a^b) & c_in) ^ (a&b);

endmodule

Следует понимать, что существуют разные методы описания и нужно уметь ими всеми пользоваться.

Итак, мы создали однобитный сумматор. На его основе можно создать n-битный сумматор. Рассмотрим четырехбитный сумматор (с

последовательным переносом).

Блочную схему 4-х битного сумматора представим в виде:

Опишем эту схему на языке Verilog:

module adder4(output [3:0]sum, output c_out, input [3:0]a, input

[3:0]b, input c_in );

wire c0, c1, c2;

adder1 my0_adder1( .sum (sum[0]) , .c_out (c0), .a (a[0]), .b

(b[0]), .c_in (1’b0) );

adder1 my1_adder1( .sum (sum[1]) , .c_out (c1), .a (a[1]), .b

(b[1]), .c_in (c0));

adder1 my2_adder1( .sum (sum[2]) , .c_out (c2), .a (a[2]), .b

(b[2]), .c_in (c1));

adder1 my3_adder1( .sum (sum[3]) , .c_out (c_out), .a (a[3]), .b

(b[3]), .c_in (c2) );

endmodule

Таким образом, мы реализовали четырехбитный сумматор. Мы получили его как модуль верхнего уровня adder4, состоящий из модулей adder1, которые, в свою очередь состоят из модулей примитивов AND2 и XOR.

2. Задание на выполнение лабораторной работы по исследованию сумматоров

1. Создать проекты одно- и четырех сумматоров на языке Verilog с использованием САПР QuartusII.

2. Компилировать проекты одно и чет и получить экспериментальные данные в виде временных диаграмм (в режиме симуляции), подтверждающие правильность работы исследуемого цифрового устройства. Представить результаты преподавателю.

3. Сделать выводы по результатам исследований.

Отчет

Отчет по лабораторной работе должен содержать:

1. Схемы исследуемых цифровых устройств.

3. Временные диаграммы входных и выходных сигналов исследуемых схем.

4. Выводы по результатам исследований.