Суть функции - альтернативный метод описания состояния. Связь java методов которые собраны в Electric. Так как количество методов ограничено, а правка исходного кода не такое простое занятие, применение функций очень актуально. Возможности очень велики и могут применятся для эффективного моделирования комплекса схем. Это позволяет проектировщику работать на высоком уровне абстракции т.к. глобальная система может разробатыватся до появления элементной базы. примеры содержатся в арифметическо-логических устойствах в RAM и ROM, и других устройствах которые легче описать програмными алгоритмами, чем описанием компанентов. Для добавления функций к модели, редактируйте модуль "com.sun.electric.tool.simulation.als.UserCom.java".
Функция объявляется как function, ниже приводится список и имена экспортов. Формат представлен ниже:

Format:
function name(signal1, signal2, signal3, ... signalN)
Example:
function JK_FF(ck, j, k, out)

function DFFLOP(data_in, clk, data_out)

function BUS_TO_STATE(b7,b6,b5,b4,b3,b2,b1,b0, output)

function STATE_TO_BUS(input, b7,b6,b5,b4,b3,b2,b1,b0)
Имена согласованы с Java методом, который будет обрабатывать параметры функции в порядке приведения их в списке. В настоящее врея доступно четыре функции, которые приведины в списке. Это два тригера (JK и D) и два числовах преобразователя, которые приобразуют сигнал восми разрядной шины в шеснацетеричное число.

Объявление входных и выходных портов

Аргументы i: и o: которые следуют после объявления функции, нужны для того чтобы сообщить симулятору какие сигналя ответственны за управление функцией, а какие управляют другими событиями. Формат объявления входной функции приведен ниже:

Format:
i: signal1 signal2 signal3 ... signalN
Example:
i: b7 b6 b5 b4 b3 b2 b1 b0

i: input phi phi_bar set reset
Формат объявления выходной функции:

Format:
o: signal1 signal2 signal3 ... signalN
Example:
o: out1 out2 out3

o: q q_bar

Остальная спецификация

Существует набор команд способных влият на описываемые функции. Аргумент t: используется для определения задержки между входом и выходом. Аргумент load используется для указания емкосного сопротивления входа и выхода. Аргумент priority нужен для определения списков приоритетов. Аргумент set требуется для установления какого-ибо логического состояния до начала симуляции.

Пример использования функции
Описание 3 битного регистра на базе D тригера:
model main(input, ck, q2, q1, q0)
stage0: DFFLOP(input, ck, q0)
stage1: DFFLOP(q0, ck, q1)
stage2: DFFLOP(q1, ck, q2)

function DFFLOP(data_in, clock, output)
i: clock
o: output
t: delta=10e-9
load clock=2.0
Обратите внимание, что единственный управляющий сигнал для тригера это clock. Если сигнал "data_in" будет сробатывать при изменени состояния управляющего сигнала clock, то нет необходимости обращятся к функции. Таким образом проектировщик может писать функцию так, что данные обрабатываются только когда идет обращение к функции и сигнал clock утвержден в высоком уросне(нарастающий фронт сигнала). Если при обращении к функции, сигнал clock низкого уровня(падающий фронт), то процедура проигнорирует информацию и вернет управление обратно програме симуляции.
Вызаваемвй аргумент к java устанавливается связанным списком сигнальных точек. Симулятор помещяет в этот список аргументы в порядке их появления при обявлении функции. Для корректной выборки информации из этого списка и составления нового, программисту потребуется знания о "внутренностях" симулятора. Обсуждение програмной сущности написания функций выходят за рамки этой документации.

Яндекс.Метрика