examen dep 28/5/01 VM ===================== Ontwerp ------- Maak de goedkoopst mogelijke IC realisatie van volgende FSM met JK flip flops en NAND poorten. 00 01 11 10 s0 s0/10 s0/00 s7/00 s2/01 s1 s0/11 s4/11 s4/11 s5/11 s2 s1/01 s2/00 s2/10 s7/10 s3 s0/10 s3/00 s1/00 s2/01 s4 s5/00 s5/11 s2/01 s7/10 s5 s5/00 s4/11 s6/01 s1/10 s6 s7/01 s2/00 s2/10 s7/10 s7 s0/11 s4/11 s5/11 s4/11 Theorie ------- Leg uit hoe het gebruik van een grondvlak crosstalk in een PCB kan verminderen. examen DEP 28/5/01 NM ===================== 1. gegeven een FSM in tabelvorm (8 states, 2 inputbits, 2 outputbits) implementeer zo goedkoop mogelijk met T-flipflops en NOR-poorten noot: * NOR is eenvoudig via OR-AND (OR-INV-INV-AND => NOR-NOR) en dat doe je dus via duale methode met Kmaps (dus je groepeert 0'n) * na 1 slag was de vereenvoudiging v/d FSM al gedaan 2. geef alle adresseerwijzen v/e microprocessor en leg uit hoe je aan het adres van de data komt DEP 28/01/02 NM =============== * ontwerp een FSMD: LeesVanExtern(A) || LeesVanExtern(B) FOR I = 0 TO 999 X=(2*(A >> B) + 1) || SchrijfNaarExtern(X) || LeesVanExtern(A) || LeesVanExtern(B) vraag: ontwerp fsmd (one-hot encoding met SR flipflops)), controller tot op poortniveau met nandpoorten, de hele lus inclusief test moet in 1 klokcyclus, er bestaat een staat waarin het ding wacht op een 'start' signaal. A is 20 bits, A >= 1024 (volgens mij bedoelde de prof trouwens A veelvoud van 1024), 0 <= B <= 10 Zo goedkoop mogelijk die bewerking (2*(A >> B) + 1) maken * theorie welke uitbreidingen kan je maken op je controller voor FSM->FSMD. (opl: incrementor, omzetten naar one-hot, stack en mux) DEP 29/01/02 VM =============== Oefening: --------- LeesVanExtern(A) || LeesVanExtern(B) DO WHILE A > 0 IF 3A>B THEN SchrijfNaarExtern(A-2B-1) ELSE SchrijfNaarExtern(2B+1) || LeesVanExtern(A) || LeesVanExtern(B) A>=0 , B>=0 , beide zijn 8 bit. Ontwerp de controller en het datapad tot op poortniveau (beh. registers). Controller met D flip-flops en one-hot en gewone AND-OR schakelingen, belangrijkste is dus het datapad. Minimaliseer het aantal poorten voor het datapad. Hij zei ook nog dat je van een 'start' signaal mag uitgaan. De volledige while-lus, inclusief de testen, moet in één klokslag gebeuren. Theorie: -------- Wat zijn de voordelen en nadelen van het gebruik van VHDL ipv schematic entry? DEP 29/01/2002 NM ================= Ontwerp FSMD: ReadFromExternal(A) || ReadFromExternal(B) REPEAT WriteToExternal(A*B) || ReadFromExternal(A) || ReadFromExternal(B) UNTIL A=0 A is 8 bit, A >= 0 0 <= B <= 3 Ontwerp het datapad tot op RTL niveau. De controller tot op poortniveau (AND-OR gates voor combinatorisch gedeelte en D-flipflops voor statusregister). Gebruik one-hot encoding. Voer de ganse lus, inclusief de testen in 1 klokcyclus uit. Werk (A*B) uit als een generische vermenigvuldiging tot op poortniveau. Werk (A*B) een tweede maal uit als een selectie tussen A*0, A*1, A*2, A*3. Vergelijk de kost en snelheid van beide oplossingen. Theorie: Leg uit hoe een event-driven simulator werkt. DEP 02/02/02, VM ================ Ontwerp ------- Ontwerp de FSMD die volgende functie uitvoert: ReadFromExternal(A); WHILE (A veelvoud van 8) If (A>127) WriteToExternal(7A+195) Else If Aantal '1' in A is even WriteToExternal(0) Else WriteToExternal(3A+5) || ReadFromExternal(A); (A >= 0; A is 8 bit) Ontwerp het datapad tot op poort niveau componenten. Ontwerp ook de controller tot op poortniveau (NOR gates vor het combinatorische deel en SR flip-flops voor het status register). Gebruik minimum-bit-change encoding en ontwerp een state-based controller. Zorg ervoor dat je op poortniveau de goedkoopste oplossig bekomt. Wat is de maximum klokfrequentie als je ervan uitgaat dat onze poortdelay's (0.4 + 0.6*aantal inputs) in ns uitgedrukt staat. Theorie ------- Leg uit hoe een event-driven simulator werkt. dep 22/01/2003 vm ================= zie exdepvm220103.pdf Extra Uitleg ------------ ontwerp: ge krijgt dus een deel ascii karakters na mekaar aan uwen in. bv _ _ 1 5 2 q ... (natuurlijk als uwen load=1) de uitvoer op 't einde is dus een 16-bits voorstelling van 152. dep 22/01/2003 nm ================= zie dep220103nm.png Extra Uitleg ------------ ontwerp: en ja, ge kunt dus bv een register aan zichzelf koppelen met nen xor dertussen om A = A XOR blabla te realiseren (daar was ik nie meer zeker van) theorie: hij wou iets horen over de setup time en de hold time tov de clock flank blijkbaar... meta-stabiliteit erbij gesleept, ma da interesseerde hem precies nie zo DEP 21/01/04 vm =============== 1. Synchronisatie: wat is het probleem? Oplossingen? 2. Maak de goedkoopst mogelijke IC realisatie van onderstaande FSM met T flip-flops en NOR poorten. Maak gebruik van Karnaugh mappen om alle functies te bepalen, maar teken slechts voor één flip-flop ingang de combinatorische schakeling. | 00 01 10 ---|--------------------- S0 | S0/11 S0/10 S1/00 S1 | S0/10 S3/01 S2/00 S2 | S1/10 S3/01 S2/00 S3 | S0/10 S1/01 S2/00 3. Ontwerp zo compact mogelijk de FSMD die volgende functie uitvoert: entity fsmd is port(clk, start: in bit; i: in integer range -100 to +100; o: out integer range -4096 to 4095); end entity fsmd; architecture behav of fsmd is begin process is variable a: integer := 0; begin o <= a; wait until clk = '1'; if start = '1' then for j in 1 to 10 loop o <= 20 * i + j; wait until clk = '1'; end loop; end if; a := a + 1; end process; end architecture behav; (a) Teken een 'Mealy ASM-chart' voor deze schakeling. Probeer zo weinig mogelijk toestanden te gebruiken. (b) Ontwerp het datapad tot op RTL-niveau. (c) Beschrijf het controlegedeelte met een toestandsdiagramma. (d) Bepaal het kritisch pad. DEP 21/01/04 namiddag ===================== zie dep210104nm.png Extra uitleg: ------------- theorie: -afwisselen aarding/signaaldragers (slechts aan één kant aarden!) -Twisted pairs (en beste: twisted pairs met differentiaalsignalen) bijvraag: als ge één bit doorstuurt met over zo'n twist pair different, hoeveel draden hebt ge dan nodig en moet er daarvan één geaard zijn? (2 draden/ neen ; dat dacht ik toch :) ) DEP 27/01/04 VM =============== 1) Bespreek inductieve PCB crosstalk (gevolgen + oplossingen om probleem te reduceren) 2) Implementeer zo goedkoop mogelijk op een FPGA. Gebruik Karnaugh-mappen voor het bepalen van de uitgangen. (gegeven een state-based FSM dewelke ik mij niet meer juist herinner; het was iets zoals de volgende maar dan iets moeilijker te zien dat S2 en S4 samengenomen konden worden) 00 01 11 | Uit ---------------------- S0 | S3 S3 S1 | 11 S1 | S3 S4 S0 | 01 S2 | S3 S3 S2 | 11 S3 | S3 S3 S3 | 10 S4 | S3 S3 S2 | 11 3) Maak een FSMD voor het gegeven algoritme (VHDL) om de standaardafwijking op een set van 2^n getallen te berekenen. Om de hardware te beperken, mag slechts 1 vermenigvuldiger gebruikt worden. VHDL-code ken ik niet meer exact, maar het kwam hier op neer: clk, start: in bit, i: in integer range 0 to 255, o: out integer range 0 to 65536 process is variable d, e, n, s, s2, x, x2: integer := 0 begin o <= d; wait until clk='1'; if (start='1') then e := i mod 16; wait until clk='1'; n := 2**e; s=0; s2=0; for j in 1 to n loop x := i; s := s + x; x2 := x**2; s2 := s2 + x2; wait until clk='1'; end loop d := s2/n - (s/n)**2; end if end process a) Maak een ASM-chart. Gebruik zo weinig mogelijk toestanden (zonder te minimizeren) b) Ontwerp het datapad op RTL-niveau. Je moet niet optimalizeren ("mergen"), maar probeer zo weinig mogelijk hardware te gebruiken. c) Geef de controller als een toestandsdiagramma. d) Geef aan hoe het kritisch pad hier berekend kan worden. 19 januari 2005 (9u00) ====================== 1) Geef de definitie van de timing parameters van een flip flop 2) Wat is het verschil tussen VHDL-variabelen en VHDL-signalen ? 3) Maak de goedkoopst mogelijke realisatie van onderstaande FSM met T flipflops en NAND-poorten. De toestanden worden met one-hot encoding voorgesteld. Maak gebruik van Karnaugh kaarten om de uitgangen te realiseren: (.... typische tabel die ge moet minimizeren eerst) 4) Ontwerp een onderdeel van een zender voor zelfsynchroniserende transmissie met foutdetectie. Hierbij worden databytes di in groepen van 64 verstuurd en aan elke groep wordt een byte ci toegevoegd. ci = (sommatie van 1-->64 over di)mod 128 + (1/128)*(sommatie van 1--> 64) Voor zelfsynchronisatie wordt door de zender regelmatig een synchronisatiebyte FFh tussengevoegd. Dit moet zowel gebeuren als er geen data doorgestuurd wordt als wanneer het lang geleden is dat er nog een synchronisatiebyte doorgestuurd is. Opdat de ontvanger het onderscheid zou kunnen maken tussen de databyte FFh en de synchronisatiebyte FFh, wordt bijkomend de interpretatiebyte FEh gedefinieerd: deze geeft aan dat de volgende byte een databyte is en een controlebyte. Voor elke databyte FEh of FFh wordt dus een extra interpretatiebyte toegevoegd, maar niet voor een synchronisatiebyte FFh. Telkens de ingangsbit DAV 1 is, is een volgende databyte aan de ingang 'Data' aanwezig (HOOGSTENS 1 per 2 klokcycli). De bytes ci worden niet ingelezen, maar door de schakeling zelf berekend. Synchronisatiebytes moeten toegevoegd worden als (a) er gedurende 8 klokcycli geen enkele byte doorgestuurd is of (b) het 32 klokcycli geleden is dat er nog een FFh (synchronisatiebyte OF databyte) doorgestuurd is. Telkens er een byte om door te sturen beschikbaar is op de uitgangsbyte 'Out' wordt ook de uitgangsbit OAV 1. (a) Teken de ASM-chart voor deze schakeling, die de vereisten qua timing respecteert. Probeer zo weinig mogelijk toestanden te gebruiken. (b) Ontwerp het datapad tot op RTL-niveau. Minimisatie (merging) is niet nodig, maar probeer wel zo weinig mogelijk hardware te gebruiken, zonder evenwel nog de ASM chart te wijzigen. (c) Beschrijf het controlegedeelte met een toestandsdiagramma. 26/01/2005 NM ============= 1. Wat is een open-collector inverter en waarom wordt deze gebruikt? 2. Wat is de reflectiecoëfficiënt van een transmissielijn en hoe wordt hij berekend? 3. Maak de goedkoopst mogelijke IC-realisatie van onderstaande FSM met SR-flip-flops en NOR-poorten. Maak gebruik van Karnaugh mappen om alle functies te bepalen, maar teken slecht voor één flip-flop ingang de combinatorische schakeling. | 001 010 100 --+--------------------- S0| S0/11 S0/00 S1/01 S1| S0/10 S3/01 S2/00 S2| S1/10 S3/01 S2/00 S3| S0/10 S1/01 S2/00 4. Ontwerp een FSMD die sequentieel een 'checksum' berekent volgens onderstaand algoritme. entity fsmd is port(clk, start, LD: in bit; i: in integer range 0 to 65535; o: out integer range 0 to 65535; RDY: out bit); end entity fsmd; --xor has been overloaded elsewhere to work on integers too architecture behav of fsmd is begin process is variable a, n: integer; variable c: integer range 0 to 65535; begin if (start = '1') and (LD = '1') then n := i; a := 1; c := 0; RDY <= '0'; while a <= n loop wait until clk = '1'; if LD = '1' then c:= c xor i; for j in 1 to 16 loop wait until clk = '1'; if (c mod 2) = 0 then c := c/2 xor x"8084"; else c := c/2; end if; end loop; a := a + 1; end if; end loop; o <= c; end if; wait until clk = '1'; end process; end architecture behav; (a) Teken een 'ASM-chart' voor deze schakeling, die de vereisten qua timing respecteert. Probeer zo weinig mogelijk toestanden te gebruiken. (b) Ontwerp het datapad tot op RTL-niveau. Minimisatie ('merging') is niet nodig, maar probeer wel zo weinig mogelijk hardware te gebruiken, zonder evenwel nog de 'ASM-chart' te wijzigen. (c) Beschrijf het controlegedeelte met een toestandsdiagramma.