Forum Semestry Semestr 7 tec pomocy « previous next » Pages: [1

Transkrypt

Forum Semestry Semestr 7 tec pomocy « previous next » Pages: [1
Forum
Semestry
Semestr 7
tec pomocy
« previous next »
Pages: [1]
Author
tarapatl
WIT
Sępie Sępie
Sępie.
Posts: 5
Topic: tec pomocy (Read 124 times)
tec pomocy
« on: October 25, 2007, 06:46:10 PM »
Witam serdecznie kolegów może ktoś wie jak przekształcić poniższe
zadanko żeby było ok.
Witam,
Prosze zmodyfikowac MUX parametryzowany, aby zrealizowal fukcje
DEMUX.
-------------- mux parametryzowany
CONSTANT n=3; -- szerokosc danych wejsciowych/wyjsciowych
CONSTANT k=4; -- liczba wejsc
CONSTANT m�il(log2(k)); -- liczba bitow adresowych
SUBDESIGN cw2_4
(
a[m-1..0], d[k-1..0][n-1..0] : INPUT;
y[n-1..0] : OUTPUT;
)
BEGIN
FOR i IN 0 TO k-1 GENERATE
IF a[]==i THEN
y[] = d[];
END IF;
END GENERATE;
END;
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Posts: 42
Logged
Re: tec pomocy
« Reply #1 on: December 01, 2007, 09:24:20 PM »
Cześć.
Treść zadania (http://tomaszewicz.zpt.tele.pw.edu.pl/node/105):
Quote
Proszę zmodyfikować MUX parametryzowany, aby realizował funkcję
DEMUX. Odpowiedzi proszę wysyłać do piątku poprzedzającego następny
wykład, czyli do 26.10.
Emaile proszę wysyłać do prowadzącego zajęcia laboratoryjne (w emailu
proszę zaznaczyć grupę dziekańską, ponieważ jeszcze nie mamy
kompletnych list ćwiczeniowych).
Zadanie jest za 3 pkt.
Code:
-- mux parametryzowany
CONSTANT n=3; -- szerokosc danych
wejsciowych/wyjsciowych
CONSTANT k=4; -- liczba wejsc
CONSTANT m=CEIL(LOG2(k)); -- liczba bitow adresowych
SUBDESIGN cw2_4
(
a[m-1..0], d[k-1..0][n-1..0] : INPUT;
y[n-1..0] : OUTPUT;
)
BEGIN
FOR i IN 0 TO k-1 GENERATE
IF a[]==i THEN
y[] = d[i][];
END IF;
END GENERATE;
END;
Rozwiązanie:
Code:
-- mux parametryzowany
CONSTANT n=3; -- szerokosc danych wejsciowych/wyjsciowych
CONSTANT k=4; -- liczba wyjsc
CONSTANT m=ceil(log2(k)); -- liczba bitow adresowych
SUBDESIGN pd1rozw
(
a[m-1..0], d[n-1..0] : INPUT;
y[k-1..0][n-1..0] : OUTPUT;
)
BEGIN
FOR i IN 0 TO k-1 GENERATE
IF a[]==i THEN
y[i][] = d[];
END IF;
END GENERATE;
END;
Pozdrawiam.
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Logged
Praca domowa 2
« Reply #2 on: December 01, 2007, 09:27:20 PM »
Cześć.
Treść zadania (http://tomaszewicz.zpt.tele.pw.edu.pl/node/116):
Posts: 42
Quote
Proszę zapisać blok rejestru szeregowo/równoległego, który realizuje 4
tryby pracy:
tryb=3 (Shift Right): rejestr nie czyta z wejść (WE i RWE), przesuwa dane
w prawo (na najstarszym bicie wstawia 0)
tryb=2 (Serial Load): rejestr czyta z wejścia szeregowego WE i przesuwa
dane w prawo
tryb=1 (Parallel Load): rejestr czyta z wejścia równoległego RWE
tryb=0 (Hold): rejestr podtrzymuje tylko swoją zawartość (funkcja stop)
W każdym z tych trybów ma wyjściu szeregowym WY podawana jest
zawartość najmłodszego bitu rejestru R[0].
Realizacja w domu i przesłana emalią 3pkt. (do piątku poprzedzającego
kolejny zjazd).
Rozwiązanie:
Code:
CONSTANT n=4;
SUBDESIGN pd2rozw
(
%
we - serial input
werown - parallel input
wy - output
tryb - mode
%
we, zegar, tryb[1..0], werown[n-1..0] : INPUT;
wy : OUTPUT;
)
VARIABLE
rej[n-1..0] : DFF;
BEGIN
rej[].clk = zegar;
%
00 - hold
01 - Parallel Load
10 - Serial Load
11 - Shift Right
%
IF tryb[] == B"00" THEN -- hold
rej[] = rej[];
wy = rej[0];
ELSIF tryb[] == B"01" THEN -- Parallel Load
rej[] = werown[];
wy = rej[0];
ELSIF tryb[] == B"10" THEN -- serial load
(rej[], wy) = (we, rej[]);
ELSE -- shift right
(rej[], wy) = (B"0", rej[]);
END IF;
END;
Pozdrawiam.
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Logged
Praca domowa 3
« Reply #3 on: December 01, 2007, 09:29:50 PM »
Cześć.
Treść zadania (http://tomaszewicz.zpt.tele.pw.edu.pl/node/133):
Posts: 42
Quote
Na poniższej stronie jest schemat układu sumującego/odejmującego.
Proszę zmodyfikować plik "cw4_1.tdf" tak, aby układ realizował poniższe
zadanie, wykorzystując do tego funkcję XOR, czyli programowalny
negator.
http://tomaszewicz.zpt.tele.pw.edu.pl/files/bloki_0.pdf
strona 36
Rozwiązanie zadania (za 4 pkt.) proszę przesłać na emalie do piątku
poprzedzające kolejny zjazd.
Rozwiązanie:
Code:
-- sumator liczb dodatnich za pomoca XOR
CONSTANT N = 4;
SUBDESIGN pd4
(
a[N-1..0], b[N-1..0], op
: INPUT;
-- wejscie op: 0 - dodawanie, 1 - odejmowanie
s[N-1..0]
: OUTPUT;
)
BEGIN
s[] = a[] + (b[] $ (op)) + (0, op);
END;
Pozdrawiam.
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Logged
praca domowa 4
« Reply #4 on: December 14, 2007, 11:51:28 PM »
Cześć.
Treść zadania (http://tomaszewicz.zpt.tele.pw.edu.pl/node/140):
Posts: 42
Quote
Proszę napisać automat z funkcją STOP, który generuje na wyjściu kolejne
wartości liczbowe:
2, 12, 20, 07, 14, 50, 23. (dzisiejsza data i godzina)
Jeżeli na STOP jest jedynka to automat nie przechodzi dalej, podtrzymując
wartość.
Należy zakodować stany automatu według wartości podanych powyżej.
Wartość zakodowanych przerzutników należy wypisać na wyjście.
Praca za 4 pkt. do piątku przed kolejnym zjazdem.
Rozwiązanie:
Code:
CONSTANT n=6; -- do zapisania 50 (najwieksza z liczb)
potrzebujemy 6 bitow
SUBDESIGN pd5
(
zegar, reset, stop : INPUT;
wy[n-1..0] : OUTPUT;
)
VARIABLE
aut
: MACHINE OF BITS (q[n-1..0])
WITH STATES (s1 = 2, s2 = 12, s3 = 20, s4 = 7,
s5 = 14, s6 = 50, s7 = 23);
BEGIN
aut.clk = zegar;
aut.reset = reset;
IF !stop THEN
CASE aut IS
WHEN
WHEN
WHEN
WHEN
WHEN
WHEN
WHEN
WHEN
END CASE;
END IF;
wy[] = aut.q[];
s1 => aut
s2 => aut
s3 => aut
s4 => aut
s5 => aut
s6 => aut
s7 => aut
OTHERS =>
= s2;
= s3;
= s4;
= s5;
= s6;
= s7;
= s1;
aut = s1;
END;
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Posts: 42
Logged
Re: tec pomocy
« Reply #5 on: December 30, 2007, 08:30:22 PM »
Cześć.
To robiliśmy na 6 laborkach: http://info.wsisiz.edu.pl/~korzen/tec/teclab6.zip.
Może komuś się przyda. ;-)
Pozdrawiam.
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Logged
Re: tec pomocy
« Reply #6 on: January 11, 2008, 11:24:24 PM »
Cześć.
Praca domowa z 6 zjazdu.
Posts: 42
Treść zadania (http://tomaszewicz.zpt.tele.pw.edu.pl/node/148):
Quote
Zadanie: zbudować sumator 8-bitowy, korzystając z podanych w
materiałach wykładowych modułów dla sumatora 1-bitowego FA oraz
sumatora 4-bitowego ADDER4.
Sumator 8-bitowy ma być zbudowany z kaskady dwóch sumatorów 4bitowych.
Zadanie proszę wykonać w dwóch wersjach:
1. wersja kombinacyjna,
2. wersja potokowa wg schematu podanego na laborce (schemat także w
postaci pliku jako załącznik na dole strony).
Zadanie do dokończenia jako zadanie domowe, każda wersja za 4 pkt.
Rozwiązanie:
plik fa.tdf:
Code:
SUBDESIGN fa
(
a, b, cin : INPUT;
s, cout : OUTPUT;
)
BEGIN
s = a XOR b XOR cin;
cout = a AND b OR a AND cin OR b AND cin;
END;
Plik fa.inc:
Code:
FUNCTION fa (a, b, cin)
RETURNS (s, cout);
Plik adder4.tdf:
Code:
INCLUDE "fa.inc";
SUBDESIGN adder4
(
a[3..0], cin : INPUT;
b[3..0] : INPUT;
s[3..0], cout : OUTPUT;
)
VARIABLE
c[3..1] : NODE;
BEGIN
(s[3],
(s[2],
(s[1],
(s[0],
cout)
c[3])
c[2])
c[1])
=
=
=
=
fa(.a=a[3],
fa(.a=a[2],
fa(.a=a[1],
fa(.a=a[0],
.b=b[3],
.b=b[2],
.b=b[1],
.b=b[0],
END;
Plik adder4.inc:
Code:
FUNCTION adder4 (a[3..0], cin, b[3..0])
RETURNS (s[3..0], cout);
Rozwiązanie w wersji kombinacyjnej:
Code:
INCLUDE "adder4.inc";
SUBDESIGN adder8v1
.cin=c[3]);
.cin=c[2]);
.cin=c[1]);
.cin=cin);
(
a[7..0], b[7..0] : INPUT;
s[7..0], cout : OUTPUT;
)
VARIABLE
c1 : NODE;
BEGIN
(s[7..4], cout) = adder4(.a[3..0]=a[7..4], .cin=c1,
.b[3..0]=b[7..4]);
(s[3..0], c1)
= adder4(.a[3..0]=a[3..0], .cin=B"0",
.b[3..0]=b[3..0]);
END;
Rozwiązanie w wersji potokowej:
Code:
INCLUDE "adder4.inc";
SUBDESIGN adder8v2
(
a[7..0], b[7..0], clock : INPUT;
s[7..0], cout : OUTPUT;
)
VARIABLE
maf1[3..0], mbf1[3..0], saf1[3..0], sbf1[3..0],
smf2[3..0],
pmf2, saf2[3..0], sbf2[3..0], smf3[3..0], ssf3[3..0],
psf3 : DFF;
BEGIN
(maf1[3..0], mbf1[3..0], saf1[3..0], sbf1[3..0],
smf2[3..0],
pmf2, saf2[3..0], sbf2[3..0], smf3[3..0], ssf3[3..0],
psf3).clk = clock;
maf1[3..0]
mbf1[3..0]
saf1[3..0]
sbf1[3..0]
=
=
=
=
a[3..0];
b[3..0];
a[7..4];
b[7..4];
(smf2[], pmf2) = adder4(.a[]=maf1[], .cin=B"0",
.b[]=mbf1[]);
saf2[] = saf1[];
sbf2[] = sbf1[];
smf3[] = smf2[];
(ssf3[], psf3) = adder4(.a[]=saf2[], .cin=pmf2,
.b[]=sbf2[]);
(cout, s7, s6, s5, s4, s3, s2, s1, s0) = (psf3,
ssf3[], smf3[]);
END;
Pozdrawiam.
Report to moderator
Logged
nexroth
WIT
Ba jestem
lepszy od
sępów.
Posts: 42
Re: tec pomocy
« Reply #7 on: January 28, 2008, 12:46:08 PM »
Na siódmym zjeździe mieliśmy takie zadanie
(http://tomaszewicz.zpt.tele.pw.edu.pl/node/205):
Quote
Proszę rozbudować projekt cw7.tdf o wskazaną funkcję.
Dokumentacja do płytki w UPDS.PDF .
Dokumentacja do wskazanej funkcji w Help systemu MP2.
Realizowana funkcja jest wskazana przez prowadzącego.
0 - lpm_divide : realizacja typu instancja
1 - lpm_divide : realizacja typu referencja w linii
2 - lpm_add_sub dodawanie : realizacja typu instancja
3 - lpm_add_sub odejmowanie : realizacja typu instancja
4 - lpm_mult : realizacja typu instancja
5 - lpm_compare : realizacja typu instancja - nie trzeba użyć dekoderów
6 - lpm_add_sub dodawanie : realizacja typu referencja w linii
7 - lpm_add_sub odejmowanie : realizacja typu referencja w linii
8 - lpm_mult : realizacja typu referencja w linii
9 - lpm_compare : realizacja typu referencja w linii - nie trzeba użyć
dekoderów
Praca za 10pkt.:
5 pkt. za napisanie oraz
5 pkt. za skonfigurowanie, zaprogramowanie i prezentację działania układu.
Jeśli ktoś się nie wyrobił na zajęciach, to mógł skończyć to w domu albo
nawet i na następnych zajęciach.
Rozwiązanie wersji 1:
Code:
include "7segment";
include "lpm_divide";
subdesign cw7
(
m[3..0], n[3..0] : input;
a0,b0,c0,d0,e0,f0,g0 : output;
a1,b1,c1,d1,e1,f1,g1 : output;
)
variable
dek[1..0] : 7segment;
s[7..0] : LCELL;
begin
s[] = lpm_divide(.numer[]=m[3..0], .denom[]=n[3..0])
WITH (LPM_WIDTHN=4, LPM_WIDTHD=4);
dek[0].i[] = s[3..0];
dek[1].i[] = s[7..4];
(a0,b0,c0,d0,e0,f0,g0) = !dek[0].(a,b,c,d,e,f,g);
(a1,b1,c1,d1,e1,f1,g1) = !dek[1].(a,b,c,d,e,f,g);
end;
Report to moderator
nexroth
WIT
Ba jestem
lepszy od
sępów.
Posts: 42
Logged
Re: tec pomocy
« Reply #8 on: January 28, 2008, 12:50:35 PM »
Na ostatnim zjeździe mieliśmy takie zadanie
(http://tomaszewicz.zpt.tele.pw.edu.pl/node/212):
Quote
Na zajęciach tworzymy węża na diodach wyświetlacza 7segm.
Dokumentacja do płytki w UPDS.PDF .
Realizowana funkcja jest wskazana przez prowadzacego np. małe kółko
kręcące się w lewo/prawo, zapalanie poziomych diód, itp.
Podpowiedzi: wszystkie diody oprócz wskazanej mają być wygaszone,
realizacja na automacie 4-stanowym, zastosować dzielnik zegara.
Plik lab8.tdf:
Code:
constant N=23;
subdesign lab8
(
zegar : INPUT;
wa, wb, wc, wd,
wn, wo, wp : output;
)
we, wf, wg, wh, wi, wj, wk, wl, wm,
variable
aut : MACHINE OF BITS (q[1..0]) WITH STATES (s1=0,
s2=1, s3=2, s4=3);
licznik[N..0] : DFF;
begin
licznik[].clk = zegar;
aut.clk = licznik[N];
licznik[] = licznik[] + 1;
(we, wf, wg, wh, wi, wj, wk, wl,
(B"1");
CASE aut IS
WHEN s1 => aut = s2;
wa = B"0";
(wb, wc, wd)
WHEN s2 => aut = s3;
wd = B"0";
(wa, wb, wc)
WHEN s3 => aut = s4;
wc = B"0";
(wa, wb, wd)
WHEN s4 => aut = s1;
wb = B"0";
(wa, wc, wd)
WHEN OTHERS => aut = s1;
(wa, wb, wc,
wm, wn, wo, wp) =
= B"1";
= B"1";
= B"1";
= B"1";
wd) = B"1";
END CASE;
end;
Przypisanie PIN-ów na początku pliku lab8.acf:
Code:
CHIP lab8
BEGIN
|wb :
OUTPUT_PIN = 7;
|wd :
OUTPUT_PIN = 12;
|wk :
OUTPUT_PIN = 21;
|wj :
OUTPUT_PIN = 20;
|wf :
OUTPUT_PIN = 19;
|we :
OUTPUT_PIN = 24;
|wc :
OUTPUT_PIN = 13;
|wa :
OUTPUT_PIN = 6;
DEVICE = EPF10K70RC240-4;
|zegar :
INPUT_PIN = 91;
|wp :
OUTPUT_PIN = 25;
|wo :
OUTPUT_PIN = 23;
|wn :
OUTPUT_PIN = 18;
|wm :
OUTPUT_PIN = 17;
|wl :
OUTPUT_PIN = 14;
|wi :
OUTPUT_PIN = 11;
|wh :
OUTPUT_PIN = 9;
|wg :
OUTPUT_PIN = 8;
END;
Report to moderator
Logged
Pages: [1]
« previous next »
Jump to:
=> Semestr 7
Powered by SMF 1.1.6 | SMF © 2006-2008, Simple
Machines LLC
Page created in 0.052 seconds with 20 queries.