logo
Отчёт_Курсач

6 Компиляция и верификация проекта в среде Quartus II

В ЦВУ предусмотрен блок преобразователя кода, который преобразует двоичный код содержимого выбранной ячейки памяти RAM в ASCII-коды шестнадцатеричной системы счисления и передает их на блок lcd_controller, который формирует управляющие сигналы на дисплей. В приложении В приведено AHDL-описание ЦВУ верхнего иерархического уровня.

ЦВУ должно выполнять программу, хранящуюся в ПЗУ. Загрузочный код программы необходимо сформировать в виде файла ROM.mif. Составим тестовую программу для ЦВУ

WIDTH=12;

DEPTH=256;

ADDRESS_RADIX=HEX;

DATA_RADIX=HEX;

CONTENT BEGIN

000 : 000;

001 : 005;

002 : 801;

003 : 00A;

004 : 803;

005 : 301;

006 : E08;

007 : 20A;

008 : E0A;

[009..00a] : 000;

00b : 503;

00c : 611;

00d : A33;

00e : FFF;

[00f..0ff] : 000;

END;

Таким образом, ЦВУ должно последовательно выполнить заданную программу. Чтобы на стадии компиляции выполнить загрузку данных в ячейки ОЗУ, необходимо сформировать файл загрузки RAM.mif:

WIDTH=8;

DEPTH=256;

ADDRESS_RADIX=UNS;

DATA_RADIX=HEX;

CONTENT BEGIN

0 : 00;

1 : 01;

2 : 02;

3 : 03;

4 : 04;

5 : 05;

6 : 06;

7 : 07;

8 : 08;

9 : 09;

10 : 0A;

11 : 0B;

12 : 0C;

13 : 0D;

14 : 0E;

15 : 0F;

16 : 10;

17 : 11;

18 : 12;

19 : 13;

20 : 14;

21 : 15;

22 : 16;

23 : 17;

24 : 18;

25 : 19;

26 : 1A;

27 : 1B;

28 : 1C;

29 : 1D;

30 : 1E;

31 : 1F;

32 : 20;

33 : 21;

34 : 22;

35 : 23;

36 : 24;

37 : 25;

38 : 26;

39 : 27;

40 : 28;

41 : 29;

[42..170] : 00;

171 : AB;

[172..255] : 00;

END;

Для проверки правильности работы ЦВУ при выполнении тестовой программы выполняем анализ его работы методом имитационного моделирования в среде симулятора системы Quartus II с помощью сигнального редактора (Waveform Editor).

Анализ результатов моделирования позволяет оценить правильность работы проекта. На рисунке 6 приведены полученные временные диаграммы сигналов. Анализ полученных результатов позволяет сделать вывод, что данную тестовую программу ЦВУ выполняет правильно. Полученные результаты полностью совпадают с ожидаемыми.

Рисунок 3 – Результат работы ЦВУ

Данная проверка еще не полная. Симулятор Quartus II не может найти все ошибки. Поэтому сформируем файл с расширением «.rbf», который можно загрузить на стенд SDK 6.1 и на нем сделать полную проверку ЦВУ при выполнении данной микропрограммы. Одна из возможностей симулятора Quartus II – определение максимальной частоты синхронизации. Для нашего ЦВУ эта частота составляет 77,44 MHz, так как на стенде используется синхросигнал с частотой 40 MHz, то наше устройство должно работать корректно..

Окончательное тестирование на стенде SDK 6.1 показывает, что наше ЦВУ правильно выполняет заданную тестовую программу, так как полученные результаты полностью совпадают с ожидаемыми.

Список использованных источников

  1. Хлуденев А.В. Цифровое вычислительное устройство: Методические указания. – Оренбург: ГОУ ОГУ, 2005. - 67 с.

  2. Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах программируемой логики. – С-П.: БХВ-Петербург, 2002. - 606 с.

Приложение А

(обязательное)

Функциональная схема ЦВУ

Приложение Б

(Справочное)

AHDL-описание управляющего автомата Мура

Subdesign co

(

c,rst,en,cop[3..1]:input;

y[4..0] :output;

)

variable

code : machine with states

(s0,s1,s2,s3,s4,s5,s6,s7,wait);

begin

code.clk=c;

code.ena=vcc;

code.reset = rst;

case code is

when s0 => code=wait;

when wait =>

if en then code=s7;

else code=wait;

end if;

when s7 => y[0]=vcc; code=s1;

when s1 =>

if !cop[3] then code = s2;

else

CASE cop[2..1] IS

WHEN 0 => code = s3;

when 1 => code = s4;

WHEN 2 => code = wait;

WHEN 3 => code = s5;

END CASE;

end if;

WHEN s2 =>

code = wait;

if Cop[2..1]==01 then y[1]=b"0";

else y[1]=vcc;

end if;

WHEN s3 => -- gpr

code = wait; y[4]=vcc;

WHEN s4 => -- ram

code = wait; y[3]=vcc;

WHEN s5 => -- jz

code = wait; y[2]=vcc;

when s6 => code=wait;

END CASE;

end;