Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
17.04.2013
Размер:
75.78 Кб
Скачать

2. Задание на курсовой проект

Вариант №31

Вход

Вход

Вход

Выход

Выход

С

D

R

Q

Qn

/

H

H

H

Qn-1

/

B

H

B

Qn-1

X

X

B

H

H

Примечание: Схема содержит два независимых четырехразрядных регистра сдвига. Каждый регистр имеет четыре выхода Qот каждого триггера. Все триггеры регистра двухступенчатые,D-типа. Данные в регистр вводятся через последовательный входD. Регистр имеет вход тактовых импульсовC, причем данные принимаются от входаDпервого триггера и сдвигаются на один такт вправо после каждого положительного тактового интервала на входеC. Сброс в нуль данных на выходеqрегистра получится, еслиyfвход асинхронного сбросаRподать напряжение высокого логического уровня. Состояния каждого регистра представлены в таблице. Четыре выхода регистра позволяют преобразовывать последовательный код, принимаемый по входуD, в параллельный, на выходахQ0..Q3, отображаемый через четыре такта.

3.Описание курсовой работы.

Библиотека элементов lib.vhd

entity dcrtt is

port(d,c,r: in bit; q,nq: out bit);

end dcrtt;

architecture trig of dcrtt is

signal stored,intsig: bit;

begin

process

begin

if r = '1' then

intsig <= '0'; stored <= '0';

elsif c = '0' and not c'stable then

intsig <= stored;

elsif c = '1' then

stored <= d;

end if;

if intsig'event then

q <= intsig;

nq <= not intsig;

end if;

end process;

end trig;

entity inv is

port(x:in bit;y:out bit);

end inv;

architecture inv_pov of inv is

begin

y<=not x;

end inv_pov;

Архитектура регистра registr.vhd

library lib;

use lib.all;

entity kurs is

port(r,d,c:in bit_vector(1 to 2);q1,q2:out bit_vector(1 to 4));

end kurs;

architecture kurs_log of kurs is

component dcrtt

port(d,c,r:in bit;q,qnot:out bit);

end component;

component inv

port(x:in bit;y:out bit);

end component;

for all: dcrtt use entity lib.dcrtt(trig);

for all: inv use entity lib.inv(inv_pov);

signal x2: bit_vector(1 to 6);

signal x1,xq1,xq2,xq3,xq4: bit_vector(1 to 4);

begin

d1: inv port map(d(1),x1(1));

d2: inv port map(r(1),x1(2));d3: inv port map(d(2),x1(3));

d4: inv port map(r(2),x1(4));d5: inv port map(x1(1),x2(1));

d6: inv port map(c(1),x2(2));d7: inv port map(x1(2),x2(3));

d8: inv port map(x1(3),x2(4));d9: inv port map(c(2),x2(5));

d10: inv port map(x1(4),x2(6));

d11: dcrtt port map(x2(1),x2(2),x2(3),xq1(1),xq1(2));

d12: dcrtt port map(x2(4),x2(5),x2(6),xq1(3),xq1(4));

d13: dcrtt port map(xq1(1),x2(2),x2(3),xq2(1),xq2(2));

d14: dcrtt port map(xq1(1),x2(2),x2(3),xq2(3),xq2(4));

d15: dcrtt port map(xq2(1),x2(2),x2(3),xq3(1),xq3(2));

d16: dcrtt port map(xq2(1),x2(2),x2(3),xq3(3),xq3(4));

d17: dcrtt port map(xq3(1),x2(2),x2(3),xq4(1),xq4(2));

d18: dcrtt port map(xq3(1),x2(2),x2(3),xq4(3),xq4(4));

d19: inv port map(xq1(2),q1(1));

d20: inv port map(xq2(2),q1(2));

d21: inv port map(xq3(2),q1(3));

d22: inv port map(xq4(2),q1(4));

d23: inv port map(xq1(4),q2(1));

d24: inv port map(xq2(4),q2(2));

d25: inv port map(xq3(4),q2(3));

d26: inv port map(xq4(4),q2(4));

end kurs_log;

architecture kurs_reg of kurs is

component dcrtt

port(d,c,r:in bit;q,qnot:out bit);

end component;

for all:dcrtt use entity lib.dcrtt(trig);

signal x2: bit_vector(1 to 6);

signal x1,xq1,xq2,xq3,xq4: bit_vector(1 to 4);

begin

d1: x1(1)<=not d(1);d2: x1(2)<=not r(1);

d3: x1(3)<=not d(2);d4: x1(4)<=not r(2);

d5: x2(1)<=not x1(1);d6: x2(2)<=not c(1);

d7: x2(3)<=not x1(2);d8: x2(4)<=not x1(3);

d9: x2(5)<=not c(2);d10: x2(6)<=not x1(4);

d11: dcrtt port map(x2(1),x2(2),x2(3),xq1(1),xq1(2));

d12: dcrtt port map(x2(4),x2(5),x2(6),xq1(3),xq1(4));

d13: dcrtt port map(xq1(1),x2(2),x2(3),xq2(1),xq2(2));

d14: dcrtt port map(xq1(1),x2(2),x2(3),xq2(3),xq2(4));

d15: dcrtt port map(xq2(1),x2(2),x2(3),xq3(1),xq3(2));

d16: dcrtt port map(xq2(1),x2(2),x2(3),xq3(3),xq3(4));

d17: dcrtt port map(xq3(1),x2(2),x2(3),xq4(1),xq4(2));

d18: dcrtt ort map(xq3(1),x2(2),x2(3),xq4(3),xq4(4));

d19: q1(1)<=not xq1(2);d20: q1(2)<=not xq2(2);

d21: q1(3)<=not xq3(2);d22: q1(4)<=not xq4(2);

d23: q2(1)<=not xq1(4);d24: q2(2)<=not xq2(4);

d25: q2(3)<=not xq3(4);d26: q2(4)<=not xq4(4);

end kurs_reg;

Процедурное моделирование: файл kurs.vhd

library registr;

use registr.all;

use STD.TEXTIO.all;

entity test_kurs is

end test_kurs;

architecture test of test_kurs is

signal ir,id,ic:bit_vector(1 to 2);

signal iq1,iq2:bit_vector(1 to 4);

component kur

port(r,d,c:in bit_vector(1 to 2);q1,q2:out bit_vector(1 to 4));

end component;

for all:kur use entity registr.kurs(kurs_reg);

begin

device : kur port map(ir,id,ic,iq1,iq2);

ic<=('1','1') after 0ns,('1','1') after 20ns,('0','0') after

30ns, (‘1’,’1’) after 40ns;

id(2)<='1' after 10ns,'0' after 40ns;

id(1)<='1' after 10ns,'0' after 20ns;

ir<=('1','1') after 0ns,('0','0') after 10ns,('1','1') after

40ns;

process

variable l:line;

begin

write(l,"--------------------------------------------------------

---------------------");

writeline(output,l);

write(l,"time d1,2 r1,2 c1,2 q11 q12 q13 q14 q21

q22 q23 q24 ");

writeline(output,l);

write(l,"--------------------------------------------------------

---------------------");

writeline(output,l);

wait for 1100ns;

end process;

process

variable t:time;

variable l:line;

begin

t:=now;

if t>1ns then

write(l,t);write(l," ");write(l,id(1));write(l,id(2));

write(l," ");

write(l,ir(1));write(l,ir(2));write(l," ”);write(l,ic(1));

write(l,ic(2));write(l," ");

write(l,iq1(1));write(l," ");write(l,iq1(2));write(l," ");

write(l,iq1(3));write(l," ");

write(l,iq1(4));write(l," ");write(l,iq2(1));write(l," ");

write(l,iq2(2));write(l," ");write(l,iq2(3));

write(l," ");write(l,iq2(4));writeline(output,l);

end if;

if t<200ns then wait for 10ns;else wait for 9ns; end if;

end process;

end test;

Содержание bat файла:

vhdl kurs.vhd

link kurs kurs test_kurs

sv 50ns kurs

ТАБЛИЦА ИСТИННОСТИ

Соседние файлы в папке курсов 33