Скачиваний:
196
Добавлен:
08.06.2016
Размер:
635.39 Кб
Скачать
      1. Использование шин

Шина, которая может включать до 256 членов (битов), трактуется как коллекция узлов и работает как одно целое. Имя шины можно определить с помощью имени с одним диапазоном, имени с двумя диапазонами или именем в последовательном формате.

В булевых уравнениях шина может приравниваться булеву выражению, другой шине, единственному узлу, VCC, GND, 1 или 0. В каждом из этих случаев значение шины различно. Оператор Optionsможно использовать для определения того, каким будет самый младший бит: наиболее значимым битом(MSB) или наименее значимым битом(LSB) или каким-либо другим.

Как только шина определена, скобки [ ] являются коротким способом определения всего диапазона. Например, a[4..1] можно также указать как a[]; b[5..4][3..2] можно представить как b[][].

Файл group1.tdf, приведенный ниже, демонстрирует булевы выражения, которые определяют несколько шин.

OPTIONS BIT0 = MSB;

CONSTANT MAX_WIDTH = 1+2+3-3-1;

% MAX_WIDTH = 2 %

SUBDESIGN group1

(

a[1..2], use_exp_in[1+2-2..MAX_WIDTH] : INPUT;

d[1..2],use_exp_out[1+2*2-4..MAX_WIDTH] : OUTPUT;

dual_range[5..4][3..2] : OUTPUT;

)

BEGIN

d[] = a[] + B"10";

use_exp_out[] = use_exp_in[];

dual_range[][] =VCC;

END;

В этом примере оператор Optionsиспользуется для определения того, что самый правый бит шины будет MSB, а десятичная 1 прибавляется к шине a[]. Если ко входу a[] прикладывается 00, то результатом этой программы будет d[] == 1. Шины use_exp_in[] и use_exp_out[] показывают как константы и арифметические выражения можно использовать для ограничения диапазонов шин.

Следующие примеры иллюстрируют использование шин:

  • Когда шина приравнивается к другой шине того же самого размера, то каждый член справа приравнивается каждому члену слева в соответствующей позиции.

  • Когда шина приравнивается к VCC или GND, все биты шины соединяются с этим значением.

  • Когда шина приравнивается к 1, только наименее значимый бит шины соединяется со значением VCC. Остальные биты шины соединяются с GND.

  • Когда приравниваются шины не одинакового размера, количество битов шины с левой стороны уравнения должно точно делиться на количество битов шины с правой стороны уравнения. Например, уравнение

a[4..1] = b[2..1] правильно.

В этом уравнении биты отображаются следующим образом:

a4 = b2

a3 = b1

a2 = b2

a1 = b1

      1. Реализация условной логики

Операторы If ThenиCaseидеально подходят для реализации условной логики. ОператорыIf Thenоценивают одно или несколько булевых выражений и описывают поведение для различных значений выражения. ОператорыCaseявляются списком альтернатив, которые доступны для каждого значения выражения. Они оценивают выражение, а затем выбирают направление действия на основе значения выражения.

Условную логику, реализуемую с помощью операторов If ThenиCase, не следует путать с логикой, создаваемой условно операторомIf Generate. Эта логика не обязательно является условной.

        1. Оператор If Then

Файл priority.tdf, приведенный ниже, демонстрирует приоритетный шифратор, который преобразует уровень активного входа с наивысшим приоритетом в значение.

SUBDESIGN priority

(

low, middle, high : INPUT;

highest_level[1..0] : OUTPUT;

)

BEGIN

IF high THEN

highest_level[] = 3;

ELSIF middle THEN

highest_level[] = 2;

ELSIF low THEN

highest_level[] = 1;

ELSE

highest_level[] = 0;

END IF;

END;

В этом примере входы high, middle, и low оцениваются для определения того, является ли их уровни равными VCC. Оператор If Thenактивизирует уравнения, которые следуют за активной IF или ELSE областями и, если вход high высокий, то highest_level[] равен 3.

Если активизируется более одного входа, то оператор If Thenоценивает приоритет входов в порядке следования областей IF и ELSIF ( первая область имеет наивысший приоритет).

Если ни один из входов не активизирован, по срабатывает уравнение, следующие за ключевым словом ELSE.

Соседние файлы в папке Минина 2014
  • #
    08.06.2016338.77 Кб291113PV1.pdf
  • #
    08.06.2016635.39 Кб196ahdl.doc
  • #
    08.06.20167.32 Кб22Digital term.vi
  • #
    08.06.201651 б22L8.asv
  • #
    08.06.201645 б22L8.m
  • #
    08.06.201613.4 Кб24temp. analis.vi
  • #
    08.06.201616.62 Кб23temp. control.vi