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.