Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

RS-триггер: s – 80 нс с начальным уровнем 1, r – 50нс с начальным уровнем 0.




D – триггер: для сигналов синхронизации – 20нс, информационного D-входа – 90нс с начальным уровнем 1, для s – входа при базовом уровне 1 короткий 0 от 110 до 130 нс, для r – входа при базовом уровне 1 короткий 0 от 270 до 290 нс.

JK – триггер: для сигналов синхронизации – 20нс, информационных JK-входов J– 110нс с начальным уровнем 1 и K - 70 нс с начальным уровнем 0,, для s – входа при базовом уровне 1 короткий 0 от 150 до 170 нс, для r – входа при базовом уровне 1 короткий 0 от 30 до 50 нс.

.

Порядок выполнения работы.

 

1.Загрузить Quartus, создать проект.

2. Открыть VHDL файл, записать программу 4.1, отражающую работу асинхронного RS- триггера.

3. Сохранить файл, установить его старшим в иерархии и откомпилировать.

4. Открыть редактор временных диаграмм. Построить диаграммы работы. Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

5. Открыть новый VHDL файл, записать программу 4.2, отражающую работу D – триггера.

6. Сохранить файл под другим именем, установить его старшим в иерархии и откомпилировать.

7. Открыть редактор временных диаграмм. Построить диаграммы работы. Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

8. Открыть новый VHDL файл, записать программу 4.3, отражающую работу JK – триггера.

9. Дать имя файлу и сохранить его, установить старшим в иерархии и откомпилировать.

10.. Открыть редактор временных диаграмм. Построить диаграммы работы. Интервалы выбрать из списка рекомендованных. Зарисовать диаграммы в отчет.

При получении временных диаграмм для каждого типа триггера результаты демонстрировать преподавателю.

Отчет должен содержать программы работы устройств, подкрепленные проверкой на временной диаграмме.

Программа 4.1

library ieee;

use ieee.std_logic_1164.all;

 

entity trs is

generic (delay:time:=2 ns);

port(

r,s: in std_logic;

q,nq: out std_logic

);

end trs;

architecture arch of trs is

signal p,np: std_logic;

begin

process (r,s)

begin

if r='0' and s='0' then p<='1' after delay;

np<='1' after delay;

elsif r='0' and s='1' then p<='0' after 2*delay;

np<='1' after delay;

elsif r='1' and s='0' then p<='1' after delay;

np<='0' after 2*delay;

elsif r='1' and s='1'then p<='X'; np<='X';

end if;

end process;

q<=p;

nq<=np;

end arch;

 

Программа 4.2

library ieee;

use ieee.std_logic_1164.all;

 

entity tr is

port(

data_i: in std_logic;

clk_i: in std_logic;

s: in std_logic;

r: in std_logic;

data_out: out std_logic

);

end tr;

architecture arch of tr is

begin

process (clk_i,s,r)

begin

if r='0' then

data_out<='0';

elsif s='0' then

data_out<='1';

elsif(rising_edge(clk_i)) then

data_out <= data_i;

end if;

end process;

end arch;

 

 

Программа4.3

library ieee;

use ieee.std_logic_1164.all;

 

entity trjk2 is

port(

clk,s,r,j,k: in std_logic;

data_out: out std_logic

);

end trjk2;

architecture arch of trjk2 is

signal q: std_logic;

begin

process (clk,r,s)

begin

if r='0' then

q<='0';

elsif s='0' then

q<='1';

elsif(rising_edge(clk)) then

if(j='1') then

if(k='0') then q<='1';

elsif(k='1')then q<=(not(q));

end if;

 

 

elsif (j='0') then

if(k='0') then q<=(q or '0');

elsif (k='1') then q<='0';

end if;

end if;

end if;

end process;

data_out<=q;

end arch;

 

Лабораторная работа № 5.

Исследование счетчиков.

Цель работы: изучение функционирования схем синхронных счетчиков. Сравнительный анализ синхронных счетчиков.

В работе предлагаются для изучения VHDL - программы двоичных четырехразрядных счетчиков: суммирующего, вычитающего и реверсивного. По диаграммам работы проверяется порядок счета счетчиков. Реверсивный счетчик проектируется для работы в кристалле Cyclone EP1C6T144C8.

Порядок выполнения работы.

Создать новый проект, открыть VHDL- файл и записать программу 5.1, отражающую функционирование синхронного суммирующего счетчика. Сохранить файл и установить его старшим в иерархии. Откомпилировать файл.

Построить временные диаграммы работы счетчика, задав интервал синхроимпульсов 20нс. Сохраненный временной(.vwf) файл не хранится по умолчанию в корзине симулятора, поэтому симуляция должна следовать по пути: Processing – Simulator Tool – через поиск … находите необходимый файл – Start. По окончании симуляции нажмите Report и проанализируйте результат..

Открыть новый VHDL - файл и записать программу 5.2, отражающую функционирование синхронного вычитающего счетчика. Сохранить файл под новым именем, установить его старшим в иерархии и откомпилировать.

По методике, изложенной в п.2 построить временные диаграммы работы счетчика, задав интервал синхроимпульсов 20нс.

Открыть новый VHDL - файл и записать программу 5.3, отражающую функционирование синхронного реверсивного счетчика. Сохранить файл под новым именем, установить его старшим в иерархии и откомпилировать.

Построить временные диаграммы работы счетчика. Тактовая частота аналогична первому варианту, интервал реверса – 650нс.

Вернувшись в файл VHDL, cоздать библиотечный модуль реверсивного счетчика.

Из папки материалы, пользуясь методикой, описанной в п. лабораторной работы №3 записать в свой проект 3 файла antiring, multiplexor и decoder и создать для каждого библиотечный модуль. В новом файле графического редактора объединить модули счетчика с вновь созданными модулями периферийных устройств. Синхросигнал завести от кнопки через модуль antiring, выходы счетчика соединить со входами data0[..] модуля multiplexor, вход clk модуля multiplexor обозначить теми же буквами, что записаны в примитиве input для входа clock модуля antiring. Выходы columns модуля multiplexor поименовать col[3..0], отдельно вывести output, назвав его col[0]. В таблице изменить WIDTH на 4, выходы данных модуля multiplexor связать со входами данных модуля decoder. Выходы модуля decoder вывести через output. Реверс установить от любого тумблера через input. Сохранить файл, установить его старшим в иерархии и откомпилировать.

Произвести разводку в кристалл для полученного проекта. Контакты кнопки – pin 59, 60.

Запрограммировать кристалл и убедиться в правильности работы схемы.

 

Отчёт должен содержать: программы функционирования счётчиков и временные диаграммы их работы.

 

 

Программа 5.1

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity cnt44 is

port(

clk: in std_logic;

ena: in std_logic;

res: in std_logic;

q: out std_logic_vector(3 downto 0)

);

end cnt44;

architecture arch of cnt44 is

signal cnt: std_logic_vector(3 downto 0);

begin

process (clk,res)

begin

if (res = '0') then cnt<=(others=>'0');

elsif(rising_edge(clk)) then

if(ena ='1') then

cnt <=cnt + "0001";

end if;

end if;

end process;

q <= cnt;

end arch;

Программа 5.2

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity cnt441 is

port(

clk: in std_logic;

ena: in std_logic;

res: in std_logic;

q: out std_logic_vector(3 downto 0)

);

end cnt441;

architecture arch of cnt441 is

signal cnt: std_logic_vector(3 downto 0);

begin

process (clk,res)

begin

if (res = '0') then cnt<=(others=>'0');

elsif(rising_edge(clk)) then

if(ena ='1') then

cnt <=cnt - "0001";

end if;

end if;

end process;

q <= cnt;

end arch;

Программа 5.3

llibrary ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity cnt442 is

port(

clk: in std_logic;

ena: in std_logic;

res: in std_logic;

rev: in std_logic;

q: out std_logic_vector(3 downto 0)

);

end cnt442;

architecture arch of cnt442 is

signal cnt: std_logic_vector(3 downto 0);

begin

process (clk,res)

begin

if (res = '0') then cnt<=(others=>'0');

elsif(rising_edge(clk)) then

if(ena ='1') then

if (rev ='0') then

cnt <=cnt + "0001";

elsif (rev='1') then

cnt <=cnt - "0001";

end if;

end if;

end if;

end process;

q <= cnt;

end arch;

 

 

Лабораторная работа № 6.

Исследование регистров.

Цель работы: знакомство с работой параллельных и последовательных регистров.

 

В работе предлагаются для изучения регистры сдвига на 8 разрядов последовательный и последовательно-параллельный. А также параллельный четырехразрядный регистр (буферный и защелка).

Порядок выполнения работы.

 

Последовательные регистры.

 

Создать проект. Открыть новый VHDL- файл и записать программу 6.1, отражающую функционирование последовательного регистра на 8 разрядов. Сохранить файл, установить его старшим в иерархии и откомпилировать.

Открыть редактор временных диаграмм. Изобразить диаграммы при интервалах синхроимпульса – 20нс, данные –при базовом уровне «0» на интервалах от 10нс до 50 нс уровень «1» и от 130нс до 200нс уровень «1». Зарисовать полученные диаграммы, записать задержки. (для изображения отдельных интервалов необходимо воспользоваться иконкой бокового меню, показанной на рисунке)

 

 

19. Открыть новый VHDL- файл и записать программу 6.2, отражающую функционирование последовательно-параллельного регистра на 8 разрядов. Сохранить файл под новым именем, установить его старшим в иерархии и откомпилировать.

20. По методике, изложенной в п.2, построить временные диаграммы для последовательно-параллельного регистра.

21. Открыть новый VHDL- файл и записать программу 6.3, отражающую функционирование параллельного регистра на 4 разряда. Сохранить файл под новым именем, установить его старшим в иерархии и откомпилировать.

22. Построить диаграмму работы устройства при следующих параметрах: синхронизация – 20нс; данные – D0,D2 – 35нс, D1,D3 – 50нс; ena – 170нс; ctrl – 200нс.

23. Создать библиотечный модуль устройства.

Отчет должен содержать программы работы исследуемых устройств и их временные диаграммы.

 

 

Программа 6.1

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity regsdv is

port(clk,d_in:in std_logic;

d_out:out std_logic);

end regsdv;

architecture bb of regsdv is

signal shift: std_logic_vector (6 downto 0);

begin

process (clk)

variable i: integer range 7 downto 0;

begin

if(rising_edge(clk)) then

shift(0)<=d_in;

for i in 1 to 6 loop

shift(i)<=shift(i-1);

end loop;

d_out<=shift(6);

end if;

end process;

end bb;

 

Программа 6.2

 

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity regsdv1 is

port(clk,d_in:in std_logic;

d_out:out std_logic_vector (7 downto 0));

end regsdv1;

architecture bb of regsdv1 is

signal shift: std_logic_vector (7 downto 0);

begin

process (clk)

variable i: integer range 7 downto 0;

begin

 

if(rising_edge(clk)) then

shift(0)<=d_in;

for i in 1 to 7 loop

shift(i)<=shift(i-1);

end loop;

 

end if;

end process;

d_out<=shift;

end bb;

 

 

Программа 6.3

 

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

 

entity reg4 is

port(

data_i: in std_logic_vector(3 downto 0);

clk_i: in std_logic;

ena: in std_logic;

ctrl: in std_logic;

data_out: out std_logic_vector(3 downto 0)

);

end reg4;

architecture arch of reg4 is

signal regist: std_logic_vector(3 downto 0);

begin

process (clk_i)

begin

if(rising_edge(clk_i)) then

if(ena ='1') then

regist <= data_i;

end if;

end if;

end process;

data_out <= regist when ctrl = '1' else "ZZZZ";

end arch;

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...