моап 2011 04
TRANSCRIPT
09.02.2011
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
1
ПараллельныеПараллельные и и последовательные операторыпоследовательные операторы
Языки описания аппаратуры
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Цель лекции: Изучение основных последовальных и параллельных операторов VHDL
Содержание:1. Последовательные и параллельные операторы 2. Создание VHDL-моделей триггеров 3. Оператор If4. VHDL-модель мультиплексора5. Условный и селективный параллельные операторы6. Оператор case7. Оператор Null8. Оператол Loop9. Процесс с оператором wait10. Cигналы11. Переменные12. Константы
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ПоследовательныеПоследовательные и параллельные операторы и параллельные операторы
ПараллельныеA <= B; -- оператор 1 B <= C; -- оператор 2 C <= D; -- оператор 3
time delta A B C D0 +0 1 2 3 010 +0 1 2 3 4 (оператор3 выполняется первым) 10 +1 1 2 4 4 (затем выполняется оператор 2) 10 +2 1 4 4 4 (затем выполняется оператор 1) 10 +3 4 4 4 4 (отсутствие выполняемых команд)
Последовательныеprocess (B, C, D) beginA <= B; -- оператор 1 B <= C; -- оператор 2 C <= D; -- оператор 3 end process;
time delta A B C D0 +0 1 2 3 010 +0 1 2 3 4 (выполняются операторы 1,2,3;
затем обновляются A,B,C)10 +1 2 3 4 4 (выполняются операторы 1,2,3;
затем обновляются A,B,C)10 +2 3 4 4 4 (выполняются операторы 1,2,3;
затем обновляются A,B,C)10 +3 4 4 4 4 (никаких действий не происходит)
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Последовательные и параллельные операторы (2)1. Заполнить таблицу, выполнив моделирование параллельных операторовA <= B after 5 ns; B <= C after 5 ns; C <= D after 5 ns;
2. Заполнить таблицу, выполнив моделирование последовательных операторовprocess (B, C, D) begin
A <= B after 5 ns; B <= C after 5 ns; C <= D after 5 ns;
end process;
time delta A B C D
time delta A B C D
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор назначения сигнала
Синтаксис: signal_name <= [delay_mechanism ] waveform ;
Форма сигнала:waveform_element ::= value_expression [ aftertime_expression ] { , ... }
Пример:signal D_OUT, E_OUT: BIT_VECTOR (3 downto 0);
............................. D_OUT <= "0000" after 2 ns; E_OUT <= "0000" after 2 ns, "1111" after 7 ns;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор If
if condition thensequential statements l
elsesequential statements 2
end if;
Примерif CLK = '1' then
Q <= D after 10 ns; QN <= not D after 10 ns;
end if;
if condition thensequential
statements{elsif condition then
sequential statements }[else
sequential statements]end if;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор case (1)
Синтаксис:case expression is
when choice1 => sequential statementslwhen choice2 => sequential statements2. . . [when others => sequential statements]
end case ;Первым вычисляется выражение expression. Если оно равно choice1, то выполняется последовательный statements1; если – choice2, то выполняется последовательный оператор statements2. Все возможные значения выражения должны быть включены в поля выбора. Если они явно не задаются, в case нужно использовать идентификатор when others.
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор case (2)
Type sel_type is range 0 to 3;Signal Sel: sel_type;case Sel is
when 0 => F <= I0;when 1 => F <= I1;when 2 => F <= I2;when 3 => F <= I3;
end case;
I
I
I
I
0
1
2
3
Sel
FMUX
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор Null Используется, если нет необходимости в каком
либо действии, но по правилам синтаксиса оператор должен присутствовать.
Синтаксис [label:] null;
Примерcase opcode is
when add => Ace := Ace + operand;when subtract => Ace := Ace - operand;when nop => null;
end case;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Условный и селективный параллельные операторы назначения сигнала (1) Условный оператор назначения сигнала
(conditional signal assignment statement):signal_name <= expression1 when condition1
else expression2 when condition2. . .
[else expressionN];
Селективный оператор назначения сигнала(selected signal assignment statement):
with expression selectsignal_name <= waveform1 when choices1,
waveform2 when choices2,. . .
[waveformN when choicesN,][waveformN+1 when others];
Условный и селективный операторы являются параллельными
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Условный и селективный параллельные операторы назначения сигнала (2)
Реализация мультиплексора « 4 в 1»1. С условным оператором:
F <= I0 when Sel = 0else I1 when Sel = 1 else I2 when Sel = 2 else I3;
2. С селективным оператором:with Sel selectF <= I0 when 0,
I1 when 1,I2 when 2,I3 when 3;
I
I
I
I
0
1
2
3
Sel
FMUX
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ДешифраторДешифратор
DECi0f0f1f2f3f4f5f6f7
i1i2
i2 i1 i0 f7 f6 f5 f4 f3 f2 f1 f00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0
library IEEE;use IEEE.std_logic_1164.all;
entity decoder isport (i : in std_logic_vector(2 downto 0);
f : out std_logic_vector(7 downto 0));end decoder ; architecture arch of decoder isbegin
with i selectF <= “00000001” when “000”,
“00000010” when “001”,“00000100” when “010”,“00001000” when “011”,“00010000” when “100”,“00100000” when “101”,“01000000” when “110”,“10000000” when others;
end arch;
Задание: создать модель декодера используя операторы if, case и условный параллельный оператор
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ШифраторШифратор
Coder f0i0i1i2i3i4i5i6i7
f1f2
i7 i6 i5 i4 i3 i2 i1 i0 f2 f1 f00 0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 1 0 0 0 10 0 0 0 0 1 0 0 0 1 00 0 0 0 1 0 0 0 0 1 10 0 0 1 0 0 0 0 1 0 00 0 1 0 0 0 0 0 1 0 10 1 0 0 0 0 0 0 1 1 01 0 0 0 0 0 0 0 1 1 1
library IEEE;use IEEE.std_logic_1164.all;
entity decoder isport(i : in std_logic_vector(7 downto 0);
f : out std_logic_vector(2 downto 0));end decoder ; architecture arch of decoder isbegin
with i selectF <= “000” when “00000001”,
“001” when “00000010” ,“010” when “00000100” ,“011” when “00001000” ,“100” when “00010000” ,“101” when “00100000” ,“110” when “01000000” ,“111” when others ;
end arch;
Задание: создать модель шифратора используя операторы if, case и условный параллельный оператор
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ПараллельныйПараллельный сдвигательсдвигательlibrary ieee;use ieee.std_logic_1164.all;entity barrel_shifter is
port(a: in std_logic_vector(7 downto 0);amt: in std_logic_vector(2 downto 0);y: out std_logic_vector(7 downto 0)
);end barrel_shifter ;
architecture sel_arch of barrel_shifter isbegin
with amt selecty<= a when "000",
a(0) & a(7 downto 1) when "001",a(1 downto 0) & a(7 downto 2) when "010",a(2 downto 0) & a(7 downto 3) when "011",a(3 downto 0) & a(7 downto 4) when "100",a(4 downto 0) & a(7 downto 5) when "101",a(5 downto 0) & a(7 downto 6) when "110",a(6 downto 0) & a(7) when others; -- 111
end sel_arch;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
DD--триггертриггерLatch
QD
En
Flip-flop
QD
Clk
D En Q+
0 1 01 1 1x 0 Q
D Clk Q+
0 r 01 r 1x 0 Qx 1 Qx f Q
r – передний фронт (0 -> 1),f – заданий фронт (1 -> 0),
library IEEE;use IEEE.std_logic_1164.all;entity DFF isport (D, CLK: in std_logic;
Q: out std_logic); end DFF;architecture SIMPLE of DFF is
beginprocess (CLK)begin
if CLK = '1' thenQ <= D;
end if;end process;
end SIMPLE;
library IEEE;use IEEE.std_logic_1164.all;entity DFF isport (D, En: in std_logic;Q: out std_logic); end DFF;architecture SIMPLE of DFF isbegin
process (D, En)beginif En = '1' then
Q <= D;end if;
end process;end SIMPLE;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
RSRS--триггертриггерR
S
Q
Q_
R S Q+
0 0 Q0 1 1 01 0 0 11 1 запрещенная
комбинация
library IEEE;use IEEE.std_logic_1164.all;entity RS_FF isport (R, S: in std_logic;
Q, nQ: out std_logic); end RS_FF ;architecture SIMPLE of RS_FF is
signal Qin, nQin: std_logic;begin
process (R,S)beginif R = '1' then
Qin <= '0' ; nQin <= '1' ;elsif S = '1' then
Qin <= '1' ; nQin <= '0' ;end if;
end process;Q <= Qin; nQ <= nQin;
end SIMPLE;
Задание: создать модель триггера, используя логические уравнения
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
R
S Q
Q_
_
_
Q+
0 00 1 0 11 0 1 01 1 Q
запрещеннаякомбинация
QR S
Q
library IEEE;use IEEE.std_logic_1164.all;entity nRnS_FF isport (nR, nS: in std_logic;
Q, nQ: out std_logic); end nRnS_FF ;architecture SIMPLE of nRnS_FF is
signal Qin : std_logic;begin
process (nR, nS)beginif nR = '0' then
Qin <= '0' ; elsif nS = '0' then
Qin <= '1' ; end if;
end process;Q <= Qin; nQ <= not Qin;
end SIMPLE;
R’S’R’S’--триггертриггер
Задание: создать модель триггера, используя логические уравнения
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
JKJK--триггертриггерQN Q
RN SN
K CLK J
JKFF
library IEEE;use IEEE.std_logic_1164.all;entity JKFF is
port (SN, RN, J, K, CLK: in std_logic; Q, QN : out std_logic);
end JKFF;architecture JKFF1 of JKFF is
signal Qin: std_logic;begin
process (SN, RN, CLK) beginif RN = '0' then
Qin <= '0' after 10 ns; -- сброс в 0elsif SN = '0' then
Qin<= '1' after 10 ns; -- установка в 1elsif CLK = '0' and CLK'event then
Qin<=(J and not Qin) or(not K and Qin) after 10ns;
end if;end process ; Q<=Qin; QN <= not Qin;
end JKFF1 ;
J K Q+
1 0 10 1 01 1 Q'0 0 Q
Уравнение:Q+ = JQ' + K'Q
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
СинхронныеСинхронные управляющие сигналыуправляющие сигналы
QD SClk Clk
QDS
Clk
Триггер с синхронизацией по переднему фронту и синхронной установкой
library ieee; useieee.std_logic_1164.all;
entity flop isport(Clk, D, S: in std_logic;
Q: out std_logic);end flop;architecture archi of flop isbeginprocess (Clk)begin
if Clk'event and Clk='1' thenif S='1' then Q <= '1';else Q <= D; end if;
end if;end process;end archi;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
СигналСигнал разрешения синхронизацииразрешения синхронизации
Триггер с синхронизацией по переднему фронту и разрешением синхронизации
library ieee; use ieee.std_logic_1164.all;entity flop is
port(Clk, D, CE: in std_logic;Q: out std_logic);
end flop;architecture archi of flop isbegin
process (Clk)begin
if Clk'event and Clk = '1' thenif CE='1' then
Q <= D;end if; end if;
end process;end archi;
QD
CEClk
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ЗаданиеЗадание1. Разработать модель n
разрядного счетчика
2. На основе созданной модели разработать структурную модель m*n разрядного счетчика
Описание N=номер в списке группы + 3
Все изменения состояния счетчика происходят по переднему фронту синхроимпульса. Счетчик генерирует перенос (Cout) в состоянии (2n-1), если T = 1, поэтому
Q
Cout
Dn nCounter
Clr
EnTLd
Clr Ld En T1 X X X 0 Cброс0 1 X X D Параллельная загрузка0 0 1 0 Q Сохранение состояния0 0 0 1 Q Сохранение состояния0 0 1 1 Q + 1 Счет на увеличение
ОписаниеУправляющие сигналы Q+
Q
Cout
Q
Cout Carry2
Q2D2Q1D1 D D
Clr Clr
EnTLd
EnTLd
ClrNLdNClk
Carry1EnT1
En
Можно использовать VHDL-модель счетчика 74163 [1,стр 77-79]
Группа 5 6 9m 2 3 4
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ЦиклыЦиклы:: LoopLoop Синтаксис:
[ loop_label: ] loop{ sequential_statement }
end loop [ loop_label ] ;
Для окончания цикла может использоваться оператор exit:
[ label: ] exit [ loop_label ][when boolean _expression];
Если метка не указана, то выполняется выход из цикла, содержащего оператор exit. Для прерывания текущей итерации – оператор next:
[ label:] next [ loop_label ] [when boolean _expression];
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ЦиклыЦиклы:: Loop. Loop. ПримерыПримеры Пример 1
signal Clock : BIT := '0'; ...
Clk_1: process (Clock) beginL1: loop
Clock <= not Clock after 5 ns; end loop L1; end process Clk_1;
Пример 2L2: loop
A:= A+1; exit L2 when A > 10;
end loop L2;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ЦиклыЦиклы:: While
Синтаксис:[ loop_label: ] while condition loop
{ sequential_statement } end loop [ loop_label ] ;
Пример:Shift_3: process (Input_X)
variable i : POSITIVE := 1; begin
L3: while i <= 8 loopOutput_X(i) <= Input_X(i+8) after 5 ns;i := i + 1;
end loop L3;end process Shift_3;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
ЦиклыЦиклы:: For
Синтаксис:[loop-label:] for loop-index in range loop
sequential statementsend loop [loop-label];
Пример:for count_value in 0 to 127 loop
count_out <= count_valueafter 5 ns;end loop;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Процесс
Со списком чувствительности:process(sensitivity-list) begin
sequential-statementsend process;
С оператором waitprocessbegin
sequential-statementswait-statementsequential-statementswait-statement
end process;
В процессе не может одновременно использоваться оператор wait и список чувствительности.
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Оператор wait Синтаксис:
[ label: ] wait | on signal _name {,...} | until boolean_expression |for time_expression ] ;
Пример 3:wait until clk = 1; wait for 1 ms; Оператор wait может содержать комбинацию из нескольких форм:
wait on clk until reset = '0';wait until trigger = '1' for 1 ms; Следующая форма выполняет приостановку процесса до окончания моделирования.
wait;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Сигналы Сигналы декларируются вне процесса, в начале архитектуры. Они предназначены для связи между процессами и могут использоваться в любом месте в пределах архитектуры.
Синтаксисsignal signal_name {, ...} : type_name [ := initial_value];
Оператор назначения для сигнала:Signal_name < = expression [after delay];
Пример:architecture ExDecl of DataTransm is
signal Temp: Std_Logic; signal FlagC, FlagZ: Bit;
begin
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Переменные Переменные могут применяться для локального хранения
данных в процессах, процедурах и функциях. Они должны быть объявлены в процессе, процедуре или функции в которых используются и являются локальными для них.
Синтаксис:variable variable_name {, ...} : type_name [ := initial_value];
Оператор присваивания для переменных:Variable_name: = expression;
Пример:variable FreeAccess : Boolean := true; variable E : BIT; variable I : INTEGER;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Различие между переменными и сигналами
Процесс с переменнымиentity dummy isport (trigger: in integer);
end dummy ;
architecture var of dummy issignal sum: integer:=0;
beginprocessvariable var1: integer:=1;variable var2: integer:=2;variable var3: integer:=3;
beginwait on trigger;var1 := var2 + var3;var2 := var1 ;var3 := var2 ;sum <= var1 + var2 + var3;
end process;end var;
Процесс c сигналамиentity dummy is
port (trigger: in integer);end dummy;
architecture sig of dummy issignal sum: integer:=0;signal sig1: integer:=1;signal sig2: integer:=2;signal sig3: integer:=3;
beginprocessbegin
wait on trigger;sig1 <= sig2 + sig3;sig2 <= sig1;sig3 <= sig2; sum <= sig1 + sig2 + sig3;
end process;end sig;
var1 2+3=5var2 5var3 5sum 5+5+5=15
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Константы
Синтаксис:constant constant_name {, ...} : type_name := constant_value [:=expression];
Постоянная задержка delay1 типа time, имеющая значение 5 ns, может быть определена как:constant delay1: time: =5 ns;
Пример:type WeekDay is (Mon,Tue,Wed,Thu,Fri,Sat,Sun); constant StartDay : WeekDay := Sat; constant LogicalGND : Bit := ‘0’;constant BusWidth, QueueLength : Integer := 16;constant CLKPeriod : Time := 15 ns;constant MaxSimTime : Time := 200 * CLKPeriod;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Выводы
Операторы в VHDL бывают параллельные и последовательные: Параллельные операторы:
паралельный оператор назначения сигнала условный оператор назначения сигнала селективный оператор назначения сигнала
Последовательные операторы: оператор if оператор case оператор цикла loop оператор цикла while оператор цикла for
Оператор process является параллельным оператором, содержит последовательные операторы. Существуют две формы оператора: со списком чувствительности и с операторами wait.
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Контрольные вопросы и задания (1)
1. Пусть сигнал s в текущий момент имеет значение '0'. Чему будут равны булевы переменные v1 и v2 после выполнения следующих операторов в процессе?
S<='1';v1 :=s;wait on s;v2:=s;
2. Создать процесс, эквивалентный параллельному оператору выбора назначения сигнала:with bit_vector’(s, r) select
q <= q when "00", '0' when "01", '1' when "10", 'Z' when "11";
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Контрольные вопросы и задания (1)1. Какой(какие) из следующих примеров содержит ошибку. a) A объект типа BITcase A is
when '0' => report "Error";when '1' => report "OK";
end case;b) A объект типа INTEGERcase A is
when 0|1|2 => report "Error#1";when 3|4 => report "Error#0";when others => report "OK";
end case;c)A объект типа STD_LOGICcase A is
when 'U'|'X'|'Z'|'W' => report "Unknown";when '1'|'H' => report "High";when '0'|'L' => report "Low";
end case;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
3. Создать процесс, эквивалентный условному оператору назначения сигнала:mux_logic:
z <= a and not b after 5 ns when enable='1' and sel='0' elsex or y after 6 ns when enable = '1' and sel := '1' else'0' after 4 ns;
4. Разработать поведенческую модель мультиплексора 4x1. Использовать тип std_logic для входных портов. Задержка распространения сигнала от входа до выхода равна 4,5 ns. Следует описать задержку как константу и использовать ее в архитектуре.
5. D-триггер с синхронизацией по уровню сохраняет свое значение, если G = 0, и Q=D, если G = 1. Используя оператор процесса, записать VHDL-код D-триггера.
Контрольные вопросы и задания (2)
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Контрольные вопросы и задания (3)
1. Нарисуйте диаграмму для сигнала Q.entity TEST isport (C, D:in BIT;
Q :out BIT);end entity TEST;
architecture BEHAVIORAL of TEST isbeginprocess (C)beginif C='1' thenQ <= D;
end if;end process;
end architecture BEHAVIORAL;
C
D
Q
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Контрольные вопросы и задания (4)Какой из следующих процессов содержит ошибку.a)process (A)
beginif FALLING_EDGE(A) then
Y <= A after 5 ns;elsif RISING_EDGE(A) then
Y <= A after 7 ns;end if;
end process;
c) process (A)begin
if FALLING_EDGE(A) thenY <= A after 5 ns;
elsif RISING_EDGE(A) thenY <= A after 7 ns;
end if;wait on A;
end process;
b)processbegin
if FALLING_EDGE(A) thenY <= A after 5 ns;
elsif RISING_EDGE(A) thenY <= A after 7 ns;
end if;wait on A;
end process;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Задания для самостоятельной работы (1)
1. Для следующего VHDL-кода пусть D изменяется на '1' в момент времени 5 ns. Описать значения A, B, C, D, E и F и время их формирования. Другими словами, указать значения сигналов во время 5 ns, 5 ns + , 5 ns + 2, ... . Опиcать первые 20 шагов моделирования или до исчезновения изменений сигналов, или до появления периодически повторяющейся последовательности значений сигналов:
entity prob4 isport (D: in bit);
end prob4 ;architecture q1 of prob4 issignal A, B, C, E, F: bit;
beginC <= A;A <= B or D;
P1: process (A) beginB <= A;
end process P1;P2: process
beginwait until A <= '1' ;wait for 0 ns;E <= B;F <= E;
end process P2 ;end architecture q1;
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
1. DD-триггер подобен D-триггеру с синхронизацией по фронту, за исключением того, что он может изменять состояние (Q+ = D) при появлении переднего и заднего фронтов синхроимпульса. Триггер имеет вход сброса R. При R = 0 триггер устанавливается в 0 независимо от синхронизации. Записать VHDL-код для DD-триггера.
2. Записать VHDL-код для SR-триггера, используя:a) условный оператор назначения сигналов;b) логические уравнения; Q+<=R' S+R'S'Qc) два логических элемента.
3. Записать интерфейс и поведенческую архитектуру для двухвходового мультиплексора с входными портами: a, b и sel; выходом – z. Когда sel='0', то z<=a. Иначе z<=b. Написать testbench для модели мультиплексора.
Задания для самостоятельной работы (2)
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Задания для самостоятельной работы (3)
1. Триггер-переключатель имеет входы I0, I1, T и Reset, а также выходы Q и QN. Сброс триггера происходит при Reset =1 независимо от значений сигналов на других входах. Триггер работает следующим образом. Если I0=1, он меняет состояние по переднему фронту сигнала T; а если I1 = 1 – по заднему. Если I0=I1= 0, то триггер сохраняет состояние. Пусть задержка передачи сигнала от T до выхода – 8 ns, и от сброса до выхода – 5 ns. a) Создать VHDL-модель триггера. b) Записать последовательность команд программы
моделирования для его тестирования. Подать на входы I1 = 1, I0 = 0. После двухкратногопереключения триггера подать набор I1 = 0, I0 = 1. Завершить моделирование после двух изменений на выходах.
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Контрольные вопросы и задания (2)
2. Записать декларацию константы размером 32 бита для числа ?
3. Записать декларации переменных: счетчик counterинициализированный 0; флаг-статуса flag-busyуказывающую занят модуль или нет; temp_result типа std_ulogic для хранения временных результатов.
4. Записать оператор if который устанавливает переменную odd в ‘1’, если n нечетно, и odd=’0’, если n – четно.
5. Написать модель тристабильного буффера, используя стандартную логику для входов data и enable и выхода output. enable data output
0' или 'L' Z'1' или 'H' 0' или 'L' 0'1' или 'H' 1' или 'H' 1'
X'иначе
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Задания для самостоятельной работы
1. Для каждого из следующих выражений определить является ли оносинтаксически правильным. Если да, то определить его значение.
2*3+6/4 3 + -4“cat”&character(‘0’) true and x and not t or zB”101110” sll 3 B”100010” sra 2 & X”2C”
2. Записать модель счетчика с синхровходом clk типа bit и выходом типа integer. Поведенческя архитектура должна содержать процесс в котором декларируется переменная count инициализируемая нулем. Процесс ожидает изменение clk. Когда clk переключается в ‘1’ процесс увеличивет count на 1 и передает значение на выход.
3. Записать модель АЛУ со входом и выходом типа integer и входом выбора функции select типа bit. Если select=’0’ на выход выдается сумма значений на входах; иначе на выходе ‘1’, если значение на входах совпадаюн и ‘0’, если –нет.
4. Записать модель цифрового интегратора имеющего: синхровход clock типа bit, вход данных и выход типа real. Интегратор выполняет сложение последовтельности входных данных. По переднему фронту на синхровходеустройство прибавляет число со входа к сумме и передает ее на выход.
5. Записать оператор case, который переводит переменную x типа std_ulogic в тип X01 ({‘X’, ‘0’, ‘1’}).
Тип std_ulogic Тип X010' или 'L' 0'1' или 'H' 1'
X', 'W', 'Z', 'U', '-' X'
09.02.2011Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: [email protected]
Задания для самостоятельной работы (2)
6. Записать оператор case, который устанавливает переменную character_cless типа integer 1, если переменная ch типа character содержит буквы, 2 , если переменная ch содержит цифры 3, если переменная ch содержит остальные печатные символы 4, если переменная ch содержит не печатные символы.
7. Записать цикл, зависящий от входа d. По переднему фронту синхровхода, если d=’0’ – цикл выполняется, если d=’1’ – выход из цикла.
8. Записать цикл while, вычисляющий экспоненциальную функцию, с точностью до 1/104.
9. Записать цикл for, вычисляющий экспоненциальную функцию, из предыдущей задачи, точностью до восьми первых слагаемых ряда.
10. Разработать поведенческую модель ограничителя (limiter) с тремя входами типа integer: data_on, lower и upper. Устройство также имеет выход data_out типа integer и выход out_of_limits типа bit. Данные со входа data_in поступают на выход data_out, если его значение находится в пределах lower и upper. Если data_in меньше lower, то data_out = lower. Если data_in больше upper, то data_out = upper. Выход out_of_limits=1, когда data_in выходит за пределы lowerи upper.
11. Разработать модель арифметического модуля для чисел с плавающей точкой.свходами данных: x и y, и выходом z. Также устройство имеет вход выбора функции типа перечисления со значениями: add.