Главная страница

Лабораторная работа 6 автоматическая генерация топологии с языка высокого уровня счетчика с произвольным коэффициентом счета


Скачать 89.69 Kb.
НазваниеЛабораторная работа 6 автоматическая генерация топологии с языка высокого уровня счетчика с произвольным коэффициентом счета
Дата28.11.2018
Размер89.69 Kb.
Формат файлаdocx
Имя файлаShaternikov_Artyom_MP-38_LR-6.docx
ТипЛабораторная работа
#58079

ЛАБОРАТОРНАЯ РАБОТА №6

АВТОМАТИЧЕСКАЯ ГЕНЕРАЦИЯ ТОПОЛОГИИ С ЯЗЫКА ВЫСОКОГО УРОВНЯ СЧЕТЧИКА С ПРОИЗВОЛЬНЫМ КОЭФФИЦИЕНТОМ СЧЕТА.
Цель работы: необходимо разработать на вентильном уровне счетчик с произвольным коэффициентом счета согласно варианту. Написать структурное описания счетчика на языке высокого уровня (Verilog HDL). Произвести синтез топологии с языка высокого уровня. Подать тестовые воздействия для проверки правильности синтеза.
Вариант 15

Исходные данные:

Счетная последовательность №1:



Рисунок 1 - Счетная последовательность.

Таблица 1 – Вариант задания

Вариант

Разряд счётчика

Счётная последовательность

Старший (4)

(3)

(2)

Младший (1)




15

JK

RS

JK

D

7


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

Для начала составим таблицу переходов состояний по нашей счетной последовательности:

Таблица 2 - Таблица переходов состояний.




A

B

C

D

A*

B*

C*

D*

0

0

0

0

0

0

1

1

0

1

0

0

0

1

0

0

1

0

2

0

0

1

0

1

1

0

1

3

0

0

1

1

0

1

1

1

4

0

1

0

0

1

0

0

1

5

0

1

0

1

1

0

1

1

6

0

1

1

0

0

1

0

0

7

0

1

1

1

0

1

1

0

8

1

0

0

0

0

0

0

0

9

1

0

0

1

0

0

0

1

10

1

0

1

0

1

1

1

0

11

1

0

1

1

1

0

1

0

12

1

1

0

0

0

1

0

1

13

1

1

0

1

0

1

0

1

14

1

1

1

0

0

0

1

1

15

1

1

1

1

1

1

0

0


Составляем карты Карно.

  1. JK-триггер 4 разряд.

Таблица 3 - Сигнал AJ.

AB/CD

00

01

11

10

00

0

0

0

1

01

1

1

0

0

11

х

х

х

х

10

х

х

х

х


Полученная функция:
Таблица 4 - Сигнал AK.

AB/CD

00

01

11

10

00

х

х

х

х

01

х

х

х

х

11

1

1

0

1

10

1

1

0

0


Полученная функция:

  1. RS-триггер 3 разряд.

Таблица 5 - Сигнал BS.

AB/CD

00

01

11

10

00

1

0

1

1

01

0

0

х

х

11

х

х

х

0

10

0

0

0

1


Полученная функция: .

Таблица 6 - Сигнал BR.

AB/CD

00

01

11

10

00

0

х

0

0

01

1

1

0

0

11

0

0

0

1

10

х

х

х

0


Полученная функция: .



  1. JK-триггер 2 разряд.

Таблица 7 - Сигнал CJ.

AB/CD

00

01

11

10

00

1

1

х

х

01

0

1

х

х

11

0

0

х

х

10

0

0

х

х

Полученная функция: .
Таблица 8 - Сигнал CK.

AB/CD

00

01

11

10

00

х

х

0

1

01

х

х

0

1

11

х

х

0

0

10

х

х

0

0


Полученная функция:


  1. D-триггер 1 разряд.

Таблица 9 - Сигнал DD.

AB/CD

00

01

11

10

00

0

0

1

1

01

1

1

0

0

11

1

1

0

1

10

0

1

0

0


Полученная функция:
Опишем счетчик на языке Verilog:

module counter(A, B, C, D, a, b, c, d, Clk);

input Clk;

input a;

input b;

input c;

input d;

output A;

output B;

output C;

output D;

wire e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17;

wire y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15, y16;

wire A, B, C, D, nA, nB, nC, nD, Dd, Cj, Ck, Br, Bs, Aj, Ak;

//инверторы

not (na, a);

not (nb, b);

not (nc, c);

not (nd, d);

//D-триггер 1 разряд

nand (e1, nc, b);

nand (e2, na, nb, c);

nand (e3, a, b, nd);

nand (e4, a, nc, d);

nand (Dd, e1, e2, e3, e4);

nand (y1, Dd, Clk);

nand (y2, y1, Clk);

nand (D, y1, nD);

nand (nD, D, y2);

//JK-триггер 2 разряд

nand (e5, na, nb, nc);

nand (e6, na, d);

nand (Cj, e5, e6);

nand (e7, na, nd);

nand (e8, a, b, d);

nand (Ck, e7, e8);

nand (y3, Cj, nC, Clk);

nand (y4, Ck, C, Clk);

nand (y5, y6, y3);

nand (y6, y5, y4);

nand (y7, y3, y5);

nand (y8, y4, y6);

nand (C, y7, nC);

nand (nC, y8, C);

//RS-триггер 3 разряд

nand (e9, na, b, nc);

nand (e10, a, b, c, nd);

nand (Br, e9, e10);

nand (e11, na, c);

nand (e12, na, nb, nd);

nand (e13, nb, c, nd);

nand (Bs, e11, e12, e13);

nand (y9, Bs, Clk);

nand (y10, Br, Clk);

nand (B, nB, y9);

nand (nB, B, y10);

//JK-триггер 1 разряд

nand (e14, b, nc);

nand (e15, nb, c, nd);

nand (Aj, e14, e15);

nand (e16, a, nc);

nand (e17, b, c, nd);

nand (Ak, e16, e17);

nand (y11, Aj, nA, Clk);

nand (y12, Ak, A, Clk);

nand (y13, y14, y11);

nand (y14, y13, y12);

nand (y15, y11, y13);

nand (y16, y12, y14);

nand (A, y15, nA);

nand (nA, y16, A);

endmodule
Скомпилируем написанный код в программе Microwind и получим топологию нашего счетчика:
c:\users\анастасия\desktop\длорп.png

Рисунок 2 - Топология счетчика.
Запустим моделирование и проверим правильность работы счетчика:


Рисунок 3 - Результаты моделирования.
Вывод:

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


написать администратору сайта