моап 2011 04

888 views
826 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
888
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

моап 2011 04

  1. 1. Параллельные ипоследовательные операторы Языки описания аппаратуры Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: 1 hahanova@mail.ru 09.02.2011
  2. 2.  Цель лекции: Изучение основных последовальных и параллельных операторов VHDL Содержание: 1. Последовательные и параллельные операторы 2. Создание VHDL-моделей триггеров 3. Оператор If 4. VHDL-модель мультиплексора 5. Условный и селективный параллельные операторы 6. Оператор case 7. Оператор Null 8. Оператол Loop 9. Процесс с оператором wait 10. Cигналы 11. Переменные 12. Константы 2Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  3. 3. Последовательные и параллельные операторы Параллельные time delta A B C DA <= B; -- оператор 1 0 +0 1 2 3 0B <= C; -- оператор 2 10 +0 1 2 3 4 (оператор3 выполняется первым)C <= D; -- оператор 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) time delta A B C Dbegin 0 +0 1 2 3 0A <= B; -- оператор 1 10 +0 1 2 3 4 (выполняются операторы 1,2,3;B <= C; -- оператор 2 затем обновляются A,B,C)C <= D; -- оператор 3 10 +1 2 3 4 4 (выполняются операторы 1,2,3;end process; затем обновляются A,B,C) 10 +2 3 4 4 4 (выполняются операторы 1,2,3; затем обновляются A,B,C) 10 +3 4 4 4 4 (никаких действий не происходит) 3 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  4. 4. Последовательные и параллельныеоператоры (2) 1. Заполнить таблицу, выполнив моделирование параллельных операторов A <= B after 5 ns; B <= C after 5 ns; time delta A B C D C <= D after 5 ns; 2. Заполнить таблицу, выполнив моделирование последовательных операторов process (B, C, D) begin A <= B after 5 ns; time delta A B C D B <= C after 5 ns; C <= D after 5 ns; end process; 4Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  5. 5. Оператор назначения сигнала Синтаксис: signal_name <= [delay_mechanism ] waveform ; Форма сигнала: waveform_element ::= value_expression [ after time_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; 5Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  6. 6. Оператор Ifif condition then if condition then sequential statements l sequentialelse statements sequential statements 2 {elsif condition thenend if; sequential statements } [elseПример sequential statements]if CLK = 1 then end if; Q <= D after 10 ns; QN <= not D after 10 ns;end if; 6Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  7. 7. Оператор case (1) Синтаксис: case expression is when choice1 => sequential statementsl when choice2 => sequential statements2 ... [when others => sequential statements] end case ; Первым вычисляется выражение expression. Если оно равно choice1, то выполняется последовательный statements1; если – choice2, то выполняется последовательный оператор statements2. Все возможные значения выражения должны быть включены в поля выбора. Если они явно не задаются, в case нужно использовать идентификатор when others. 7Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  8. 8. Оператор case (2) Type sel_type is range 0 to 3; Signal Sel: sel_type; case Sel is I when 0 => F <= I0; 0 I when 1 => F <= I1; 1 MUX F when 2 => F <= I2; I 2 when 3 => F <= I3; I 3 end case; Sel 8Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  9. 9. Оператор Null  Используется, если нет необходимости в каком либо действии, но по правилам синтаксиса оператор должен присутствовать. Синтаксис [label:] null; Пример case opcode is when add => Ace := Ace + operand; when subtract => Ace := Ace - operand; when nop => null; end case; 9Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  10. 10. Условный и селективный параллельныеоператоры назначения сигнала (1)  Условный оператор назначения сигнала (conditional signal assignment statement): signal_name <= expression1 when condition1 else expression2 when condition2 ... [else expressionN];  Селективный оператор назначения сигнала (selected signal assignment statement): with expression select signal_name <= waveform1 when choices1, waveform2 when choices2, ... [waveformN when choicesN,] [waveformN+1 when others]; Условный и селективный операторы являются параллельными 10Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  11. 11. Условный и селективный параллельныеоператоры назначения сигнала (2)  Реализация мультиплексора « 4 в 1» 1. С условным оператором: F <= I0 when Sel = 0 else I1 when Sel = 1 I0 else I2 when Sel = 2 else I3; I1 2. С селективным оператором: MUX F with Sel select I2 F <= I0 when 0, I1 when 1, I3 I2 when 2, I3 when 3; Sel 11Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  12. 12. library IEEE;Дешифратор use IEEE.std_logic_1164.all; entity decoder is f0 port (i : in std_logic_vector(2 downto 0); i0 DEC f1 f : out std_logic_vector(7 downto 0)); i1 f2 i2 f3 end decoder ; f4 architecture arch of decoder is f5 begin f6 with i select f7 F <= “00000001” when “000”,i2 i1 i0 f7 f6 f5 f4 f3 f2 f1 f0 “00000010” when “001”,0 0 0 0 0 0 0 0 0 0 1 “00000100” when “010”,0 0 1 0 0 0 0 0 0 1 0 “00001000” when “011”,0 1 0 0 0 0 0 0 1 0 0 “00010000” when “100”,0 1 1 0 0 0 0 1 0 0 0 “00100000” when “101”,1 0 0 0 0 0 1 0 0 0 0 “01000000” when “110”,1 0 1 0 0 1 0 0 0 0 0 “10000000” when others;1 1 0 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0 end arch;Задание: создать модель декодера используя операторы if, case и условный параллельный оператор 12 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  13. 13. library IEEE;Шифратор use IEEE.std_logic_1164.all; entity decoder is i0 port(i : in std_logic_vector(7 downto 0); i1 Coder f0 f : out std_logic_vector(2 downto 0)); i2 f1 i3 f2 end decoder ; i4 architecture arch of decoder is i5 begin i6 with i select i7 F <= “000” when “00000001”,i7 i6 i5 i4 i3 i2 i1 i0 f2 f1 f0 “001” when “00000010” ,0 0 0 0 0 0 0 1 0 0 0 “010” when “00000100” ,0 0 0 0 0 0 1 0 0 0 1 “011” when “00001000” ,0 0 0 0 0 1 0 0 0 1 0 “100” when “00010000” ,0 0 0 0 1 0 0 0 0 1 1 “101” when “00100000” ,0 0 0 1 0 0 0 0 1 0 0 “110” when “01000000” ,0 0 1 0 0 0 0 0 1 0 1 “111” when others ;0 1 0 0 0 0 0 0 1 1 01 0 0 0 0 0 0 0 1 1 1 end arch;Задание: создать модель шифратора используя операторы if, case и условный параллельный оператор 13 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  14. 14. Параллельный сдвигатель 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 is begin with amt select y<= 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; 14Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  15. 15. + Flip-flop D Clk Q 0 r 0 D-триггер D Q 1 x r 0 1 Q Clk x 1 Q Latch x f Q D En Q+ D r – передний фронт (0 -> 1), Q 0 1 0 f – заданий фронт (1 -> 0), 1 1 1 En x 0 Q library IEEE;use IEEE.std_logic_1164.all; entity DFF islibrary IEEE;use IEEE.std_logic_1164.all; port (D, CLK: in std_logic;entity DFF is Q: out std_logic);port (D, En: in std_logic;Q: out std_logic); end DFF;end DFF; architecture SIMPLE of DFF isarchitecture SIMPLE of DFF is beginbegin process (CLK) process (D, En) begin begin if CLK = 1 then if En = 1 then Q <= D; Q <= D; end if; end if; end process; end process; end SIMPLE;endХаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru SIMPLE; 15 09.02.2011
  16. 16. RS-триггер library IEEE;use IEEE.std_logic_1164.all; entity RS_FF isR Q port (R, S: in std_logic; Q, nQ: out std_logic); end RS_FF ; architecture SIMPLE of RS_FF is _ Q signal Qin, nQin: std_logic; S begin process (R,S) Q + R S Q begin 0 0 Q Q if R = 1 then 0 1 1 0 Qin <= 0 ; nQin <= 1 ; 1 0 0 1 elsif S = 1 then запрещенная Qin <= 1 ; nQin <= 0 ; 1 1 комбинация end if; end process; Q <= Qin; nQ <= nQin; end SIMPLE; Задание: создать модель триггера, используя логические уравнения 16Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  17. 17. R’S’-триггер library IEEE;use IEEE.std_logic_1164.all; _ entity nRnS_FF is S Q port (nR, nS: in std_logic; Q, nQ: out std_logic); end nRnS_FF ; architecture SIMPLE of nRnS_FF is _ Q signal Qin : std_logic; _ R begin process (nR, nS) Q + R S Q begin запрещенная if nR = 0 then 0 0 комбинация Qin <= 0 ; 0 1 0 1 elsif nS = 0 then 1 0 1 0 Qin <= 1 ; 1 1 Q Q end if; end process; Q <= Qin; nQ <= not Qin; end SIMPLE; Задание: создать модель триггера, используя логические уравнения 17Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  18. 18. library IEEE;use IEEE.std_logic_1164.all; entity JKFF is JK-триггер port (SN, RN, J, K, CLK: in std_logic; Q, QN : out std_logic); QN Q end JKFF; architecture JKFF1 of JKFF is signal Qin: std_logic;RN JKFF SN begin process (SN, RN, CLK) + begin K CLK J J K Q if RN = 0 then 1 0 1 Qin <= 0 after 10 ns; -- сброс в 0Уравнение: 0 1 0 elsif SN = 0 thenQ+ = JQ + KQ 1 1 Q Qin<= 1 after 10 ns; -- установка в 1 0 0 Q elsif CLK = 0 and CLKevent then Qin<=(J and not Qin) or (not K and Qin) after 10ns; end if; end process ; Q<=Qin; QN <= not Qin; end JKFF1 ; 18 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  19. 19. Синхронные управляющие сигналы library ieee; useТриггер с синхронизацией по ieee.std_logic_1164.all;переднему фронту и синхронной entity flop isустановкой port(Clk, D, S: in std_logic; Q: out std_logic); D S Q k l C end flop; k l C S D Q architecture archi of flop is begin Clk process (Clk) begin if Clkevent and Clk=1 then if S=1 then Q <= 1; else Q <= D; end if; end if; end process; end archi; 19 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  20. 20. Сигнал разрешения синхронизации 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 is D Q begin CE process (Clk) begin Clk if Clkevent and Clk = 1 then if CE=1 then Q <= D; end if; end if; end process; end archi; 20 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  21. 21. Задание 1. Разработать модель n Описание разрядного счетчика Counter  N=номер в списке группы + 3 n n D Q En Группа 5 6 9 T Cout m 2 3 4 Ld Clr  Все изменения состояния счетчика происходят по переднему фронту синхроимпульса. Счетчик 2. На основе созданной модели генерирует перенос (Cout) в разработать структурную состоянии (2n-1), если T = 1, модель m*n разрядного поэтому счетчика Управляющие сигналы Q+ Описание D Q Q1 D2 D Q Q2 Clr Ld En T D1 En En 1 X X X 0 Cброс En Carry1 En T1 T Cout T Cout Carry2 0 1 X X D Параллельная загрузка Ld Ld 0 0 1 0 Q Сохранение состояния Clr Clr 0 0 0 1 Q Сохранение состоянияClrN 0 0 1 1 Q+1 Счет на увеличениеLdNClkМожно использовать VHDL-модель счетчика 74163 [1,стр 77-79] 21 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  22. 22. Циклы: Loop  Синтаксис: [ 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]; 22Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  23. 23. Циклы: Loop. Примеры  Пример 1 signal Clock : BIT := 0; ... Clk_1: process (Clock) begin L1: loop Clock <= not Clock after 5 ns; end loop L1; end process Clk_1;  Пример 2 L2: loop A:= A+1; exit L2 when A > 10; end loop L2; 23Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  24. 24. Циклы: 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 loop Output_X(i) <= Input_X(i+8) after 5 ns; i := i + 1; end loop L3; end process Shift_3; 24Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  25. 25. Циклы: For  Синтаксис: [loop-label:] for loop-index in range loop sequential statements end loop [loop-label];  Пример: for count_value in 0 to 127 loop count_out <= count_valueafter 5 ns; end loop; 25Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  26. 26. Процесс Со списком  С оператором wait чувствительности: process process(sensitivity-list) begin begin sequential-statements sequential-statements wait-statement end process; sequential-statements wait-statement end process; В процессе не может одновременно использоваться оператор wait и список чувствительности. 26Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  27. 27. Оператор 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; 27Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  28. 28. Сигналы  Сигналы декларируются вне процесса, в начале архитектуры. Они предназначены для связи между процессами и могут использоваться в любом месте в пределах архитектуры.  Синтаксис 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 28Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  29. 29. Переменные  Переменные могут применяться для локального хранения данных в процессах, процедурах и функциях. Они должны быть объявлены в процессе, процедуре или функции в которых используются и являются локальными для них.  Синтаксис: variable variable_name {, ...} : type_name [ := initial_value];  Оператор присваивания для переменных: Variable_name: = expression;  Пример: variable FreeAccess : Boolean := true; variable E : BIT; variable I : INTEGER; 29Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  30. 30. Различие между переменными и сигналами Процесс с переменными  Процесс c сигналами entity dummy is entity dummy is port (trigger: in integer); port (trigger: in integer); end dummy ; end dummy; architecture sig of dummy is architecture var of dummy is signal sum: integer:=0; signal sum: integer:=0; signal sig1: integer:=1; begin signal sig2: integer:=2; process variable var1: integer:=1; signal sig3: integer:=3; variable var2: integer:=2; begin process variable var3: integer:=3; begin begin wait on trigger; wait on trigger; sig1 <= sig2 + sig3; var1 := var2 + var3; sig2 <= sig1; var2 := var1 ; var3 := var2 ; sig3 <= sig2; sum <= var1 + var2 + var3; sum <= sig1 + sig2 + sig3; end process; end process; end var; end sig; var1 2+3=5 var2 5 var3 5 sum 5+5+5=15 30Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  31. 31. Константы  Синтаксис: 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; 31Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  32. 32. Выводы  Операторы в VHDL бывают параллельные и последовательные:  Параллельные операторы:  паралельный оператор назначения сигнала  условный оператор назначения сигнала  селективный оператор назначения сигнала  Последовательные операторы:  оператор if  оператор case  оператор цикла loop  оператор цикла while  оператор цикла for  Оператор process является параллельным оператором, содержит последовательные операторы. Существуют две формы оператора: со списком чувствительности и с операторами wait. 32Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  33. 33. Контрольные вопросы и задания (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"; 33Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  34. 34. Контрольные вопросы и задания (1) 1. Какой(какие) из следующих примеров содержит ошибку. a) A объект типа BIT case A is when 0 => report "Error"; when 1 => report "OK"; end case; b) A объект типа INTEGER case A is when 0|1|2 => report "Error#1"; when 3|4 => report "Error#0"; when others => report "OK"; end case; c)A объект типа STD_LOGIC case A is when U|X|Z|W => report "Unknown"; when 1|H => report "High"; when 0|L => report "Low"; end case; 34 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  35. 35. Контрольные вопросы и задания (2)3. Создать процесс, эквивалентный условному оператору назначения сигнала: mux_logic: z <= a and not b after 5 ns when enable=1 and sel=0 else x 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-триггера. 35 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  36. 36. Контрольные вопросы и задания (3)1. Нарисуйте диаграмму для сигнала Q. entity TEST is C port (C, D:in BIT; D Q :out BIT); Q end entity TEST; architecture BEHAVIORAL of TEST is begin process (C) begin if C=1 then Q <= D; end if; end process; end architecture BEHAVIORAL; 36Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  37. 37. Контрольные вопросы и задания (4)Какой из следующих процессов содержит ошибку.a)process (A) begin b)process if FALLING_EDGE(A) then begin Y <= A after 5 ns; elsif RISING_EDGE(A) then if FALLING_EDGE(A) then Y <= A after 7 ns; Y <= A after 5 ns; end if; elsif RISING_EDGE(A) then end process; Y <= A after 7 ns; end if;c) process (A) wait on A; begin if FALLING_EDGE(A) then end process; Y <= A after 5 ns; elsif RISING_EDGE(A) then Y <= A after 7 ns; end if; wait on A; end process; 37Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  38. 38. Задания для самостоятельной работы (1) 1. Для следующего VHDL-кода пусть D изменяется на 1 в момент времени 5 ns. Описать значения A, B, C, D, E и F и время их формирования. Другими словами, указать значения сигналов во время 5 ns, 5 ns + , 5 ns + 2, ... . Опиcать первые 20 шагов моделирования или до исчезновения изменений сигналов, или до появления периодически повторяющейся последовательности значений сигналов: P1: process (A) begin entity prob4 is B <= A; port (D: in bit); end process P1; end prob4 ; P2: process architecture q1 of prob4 is begin signal A, B, C, E, F: bit; wait until A <= 1 ; wait for 0 ns; begin E <= B; C <= A; F <= E; A <= B or D; end process P2 ; end architecture q1; 38 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  39. 39. Задания для самостоятельной работы (2) 1. DD-триггер подобен D-триггеру с синхронизацией по фронту, за исключением того, что он может изменять состояние (Q+ = D) при появлении переднего и заднего фронтов синхроимпульса. Триггер имеет вход сброса R. При R = 0 триггер устанавливается в 0 независимо от синхронизации. Записать VHDL-код для DD-триггера. 2. Записать VHDL-код для SR-триггера, используя: a) условный оператор назначения сигналов; b) логические уравнения; Q+<=R S+RSQ c) два логических элемента. 3. Записать интерфейс и поведенческую архитектуру для двухвходового мультиплексора с входными портами: a, b и sel; выходом – z. Когда sel=0, то z<=a. Иначе z<=b. Написать testbench для модели мультиплексора. 39 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  40. 40. Задания для самостоятельной работы (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. Завершить моделирование после двух изменений на выходах. 40Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  41. 41. Контрольные вопросы и задания (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 41 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  42. 42. Задания для самостоятельной работы 1. Для каждого из следующих выражений определить является ли оно синтаксически правильным. Если да, то определить его значение. 2*3+6/4 3 + -4 “cat”&character(‘0’) true and x and not t or z B”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 Тип X01 0 или L 0 1 или H 1 X, W, Z, U, - X 42 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  43. 43. Задания для самостоятельной работы (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. 43Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011

×