Задача
Выполнять над двумя 8-битными числами одну из операций (+, −, И, ИЛИ) и защёлкивать результат по кнопке.
Тип схемы и среда
Комбинационное вычисление + регистр результата, защёлкиваемый по фронту eq.
Алгоритм работы
CASE op[] выбирает операцию, результат вычисляется комбинационно. По фронту eq он фиксируется в выходном регистре.
Код на AHDL
% Проект 44: простой калькулятор (+ - & #) 8 бит % SUBDESIGN ahdl_44_kalkulyator ( clk, clrn : INPUT; a[7..0] : INPUT; b[7..0] : INPUT; op[1..0] : INPUT; eq : INPUT; result[7..0] : OUTPUT; ) VARIABLE reg[7..0] : DFF; eqp : DFF; y[7..0] : NODE; BEGIN reg[].clk = clk; reg[].clrn = clrn; eqp.clk = clk; eqp.clrn = clrn; eqp.d = eq; CASE op[] IS WHEN 0 => y[] = a[] + b[]; WHEN 1 => y[] = a[] - b[]; WHEN 2 => y[] = a[] & b[]; WHEN 3 => y[] = a[] # b[]; END CASE; IF eq & !eqp.q THEN reg[].d = y[]; ELSE reg[].d = reg[].q; END IF; result[] = reg[].q; END;
Пояснения
Фронт кнопки eq детектируется через триггер eqp, чтобы одно нажатие давало одну фиксацию. Расширяется до многоразрядного ввода и индикации.
Инструменты и справочники по теме
📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.
Что дальше
Скачайте ahdl_44_kalkulyator.tdf, создайте проект в MAX+PLUS II или Quartus,
назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в
разделе проектов на AHDL.